OpenCores
URL https://opencores.org/ocsvn/common/common/trunk

Subversion Repositories common

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 47 to Rev 48
    Reverse comparison

Rev 47 → Rev 48

/trunk/220_edif-1_usage.pdf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
trunk/220_edif-1_usage.pdf Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/ddr_2_dimm_for_debugging.v =================================================================== --- trunk/ddr_2_dimm_for_debugging.v (revision 47) +++ trunk/ddr_2_dimm_for_debugging.v (nonexistent) @@ -1,94 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// ddr_2_dimm //// -//// //// -//// This file is part of the general opencores effort. //// -//// //// -//// //// -//// Module Description: //// -//// A fake DDR DIMM containing a number of fake DDR DRAMs. //// -//// Useful in getting a DDR DRAM controller working. //// -//// //// -//// Author(s): //// -//// - Anonymous //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 Anonymous and OPENCORES.ORG //// -//// //// -//// This source file may be used and distributed without //// -//// restriction provided that this copyright statement is not //// -//// removed from the file and that any derivative work contains //// -//// the original copyright notice and the associated disclaimer. //// -//// //// -//// This source file is free software; you can redistribute it //// -//// and/or modify it under the terms of the GNU Lesser General //// -//// Public License as published by the Free Software Foundation; //// -//// either version 2.1 of the License, or (at your option) any //// -//// later version. //// -//// //// -//// This source 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 Lesser General Public License for more //// -//// details. //// -//// //// -//// You should have received a copy of the GNU Lesser General //// -//// Public License along with this source; if not, download it //// -//// from //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// $Id: ddr_2_dimm_for_debugging.v,v 1.2 2001-10-29 13:37:57 bbeaver Exp $ -// -// CVS Revision History -// -// $Log: not supported by cvs2svn $ -// Revision 1.1 2001/10/29 13:45:02 Blue Beaver -// no message -// -// Revision 1.1 2001/10/28 11:15:47 Blue Beaver -// no message -// - -`timescale 1ns / 1ps - -module ddr_2_dimm ( - DQ, DQS, - DM, - A, BA, - RAS_L, - CAS_L, - WE_L, - CS_L, - CKE, - clk_p, clk_n -); - -// Constant Parameters -parameter num_addr_bits = 13; -parameter num_col_bits = 11; -parameter num_data_bits = 4; -parameter num_words_in_test_memory = 32; - - inout [num_data_bits - 1 : 0] DQ; - inout DQS; - input DM; - input [num_addr_bits - 1 : 0] A; - input [1 : 0] BA; - input RAS_L; - input CAS_L; - input WE_L; - input CS_L; - input CKE; - input clk_p; - input clk_n; - - -// Storage - reg [num_data_bits - 1 : 0] bank0 [0 : num_words_in_test_memory - 1]; - reg [num_data_bits - 1 : 0] bank1 [0 : num_words_in_test_memory - 1]; - reg [num_data_bits - 1 : 0] bank2 [0 : num_words_in_test_memory - 1]; - reg [num_data_bits - 1 : 0] bank3 [0 : num_words_in_test_memory - 1]; - -endmodule Index: trunk/220_count4_example.vhd =================================================================== --- trunk/220_count4_example.vhd (revision 47) +++ trunk/220_count4_example.vhd (nonexistent) @@ -1,44 +0,0 @@ --------------------------------------------------------------------------- --- Copyright (c) 1996 Altera Corporation, all right reserved --- --- This VHDL file may be copied and/or distributed at no cost as long as --- this copyright notice is retained. --- ------------------------------------------------------------------- --- Four-bit Loadable Up-Down Counter with synchronous set, load and clear ------------------------------------------------------------------- --- Version 1.0 Date 05/20/96 ------------------------------------------------------------------- --- -library IEEE; -use IEEE.std_logic_1164.all; -use work.lpm_components.all; - -entity COUNT4 is - port (DATA : in std_logic_vector(3 downto 0); - CLOCK : in std_logic; - CLK_EN : in std_logic; - CNT_EN : in std_logic; - UPDOWN : in std_logic; - SLOAD : in std_logic; - SSET : in std_logic; - SCLR : in std_logic; - ALOAD : in std_logic; - ASET : in std_logic; - ACLR : in std_logic; - EQ : in std_logic; - Q : out std_logic_vector(3 downto 0)); -end COUNT4; - -architecture LPM of COUNT4 is - -begin - - U1: LPM_COUNTER - generic map (LPM_WIDTH => 4) - port map (DATA => DATA, CLOCK => CLOCK, CLK_EN => CLK_EN, - CNT_EN => CNT_EN, UPDOWN => UPDOWN, SLOAD => SLOAD, - SSET => SSET, SCLR => SCLR, ALOAD => ALOAD, ASET => ASET, - ACLR => ACLR, Q => Q); -end; - Index: trunk/220_convert_hex2ver_pli.c =================================================================== --- trunk/220_convert_hex2ver_pli.c (revision 47) +++ trunk/220_convert_hex2ver_pli.c (nonexistent) @@ -1,319 +0,0 @@ -#include -#include -#include -#include "veriuser.h" -#include "acc_user.h" - -#define TRUE 1 -#define FALSE 0 -#define MAX_BUFFER_SZ 2048 -#define MAX_NAME_SZ 128 -#define OUT_FILE_EXT ".ver" -#define COLON ':' -#define OFFSET 9 -#define H10 0x10L -#define AWORD 8 -#define WORDS_PER_LINE 8 -#define MASK15 0x000000FFL -#define EXT_STR ".ver" - -typedef enum { - OK = 0, - WARNING = 1, - ERROR = 2 -}STATUS; -static int line_no = 0; -/******************************************************************** - * char* trimAlteraExt(char* oldName, char* newName) - * oldName : original file name. - * newName : new file name which doesnt have file extension. - * - * This function trims the file extension - * Looks for first "." and trims the file name afterwords. -********************************************************************/ - -char* trimAlteraExt(oldName, newName) -char* oldName; -char* newName; -{ - char tempStr[MAX_BUFFER_SZ]; - char* tempPtr=NULL; - - newName[0]='\0'; - if(oldName[0]=='\0') - return NULL; - strcpy(tempStr, oldName); - if(tempPtr = strstr(tempStr, ".")) - { - *tempPtr = '\0'; - } - strcpy(newName, tempStr); - return newName; -} - -/****************************************************************/ -int display_msg(status, str, data_file) -STATUS status; -char *str; -char *data_file; -{ - switch(status) - { - case WARNING: - printf("WARNING: %s, %s\n\n", data_file, str); - break; - case ERROR: - printf("ERROR:%s, line %d, %s\n\n", data_file, line_no, str); - break; - default: - break; - } - return(TRUE); -} -/**************************************************************** - char *ltrim(str) - char *str; - Deletes leading blanks in string 'str' -****************************************************************/ -char *ltrim(str) -char *str; -{ - int i = 0,j = 0; - - /* Illeagal application. Returns NULL. */ - if (str == 0) return(0); - /* Deletes leading blanks */ - while (*(str + i) == ' ' || *(str + i) == '\n' || *(str + i) == '\t' || *(str + i) == '\b') i++; - for (; *(str + i) != '\0'; i++,j++) *(str + j) = *(str + i); - /* Appends a NULL character to the end of the string */ - *(str + j) = '\0'; - - return(str); -} - -/**************************************************************** - * Function: write_ver_data - * Description: This function ensures that each char (in hex) - * represents a nibble of the data. - * For example if (width<5) we need to output only 1 char hex. -****************************************************************/ -void write_ver_data(ofp, width, data) -FILE *ofp; -int width; -char *data; -{ - int num_nibbles; - int num_hex; - - num_nibbles = (width%4?(width/4 + 1):width/4); - num_hex = num_nibbles/2; - - while (num_hex--) - { - fprintf(ofp, "%c%c", data[0], data[1]); - data +=2; - } - /* NB: we skip the leading '0' in data[0]. */ - if (num_nibbles&1) fprintf(ofp, "%c", data[1]); -} - -/**************************************************************** -Function: write_data -Description: Write ROM data in the verilog format so that - it can be read using readmemh(infile, rom) -Format: example data format for the 8 bit data - @1 - 01 02 03 04 05 06 07 08 - @a - 0a 0b 0c -****************************************************************/ -int write_data(ofp, nn, aaaa, off_addr, dddd, width) -FILE *ofp; -long nn, aaaa, off_addr; -char *dddd; -int width; -{ - int count, i; - char data[MAX_BUFFER_SZ +1]; - int num_hexs, nibbles ; - - - if((width % AWORD) == 0) - { - num_hexs = width/AWORD; - } - else - { - num_hexs = (width/AWORD) + 1; - } - - fprintf(ofp, "@%x\n", aaaa + off_addr); - - nibbles = num_hexs*2; - count = 1; - while(nn > 0) - { - if(nn >= num_hexs) - { - strncpy(data, dddd, nibbles); - data[nibbles] = '\0'; - } - else - { - for(i = 0; i < (num_hexs - nn); i++) - { - sprintf(data + i*2, "%s", "00"); - } - strcat(data + (num_hexs - nn), dddd); - } - write_ver_data(ofp, width, data); - if(count < WORDS_PER_LINE) - { - count ++; - } - else - { - fprintf(ofp, "\n"); - count = 1; - } - dddd = dddd + nibbles; - nn -= num_hexs; - } - if(count > 1) - fprintf(ofp, "\n"); - - -} -/****************************************************************/ -/* Convert Intel-hex format data to verilog format data */ -/* Intel-hex format :nnaaaaattddddcc */ -/****************************************************************/ -convert_hex2ver() -{ - char buffer[MAX_BUFFER_SZ +1]; - char out_file[MAX_NAME_SZ +1]; - char init_filename[MAX_NAME_SZ +1]; - char dddd[MAX_BUFFER_SZ +1]; - char *in_file, *out_str; - - FILE *ifp, *ofp; - int i ; - int done = FALSE; - int first_rec = FALSE; - int last_rec = FALSE; - int width ; - long off_addr, nn, aaaa, tt, cc, aah, aal, dd, sum ; - handle wrk; - static s_setval_value user_s = {accStringVal}; - static s_setval_delay delay ; - - off_addr= nn= aaaa= tt= cc= aah= aal= dd= sum = 0; - - in_file = (char *)tf_getcstringp(1); - width = tf_getp(2); - trimAlteraExt(in_file, out_file); - strcat(out_file, OUT_FILE_EXT); - if ((ifp = fopen(in_file, "r")) == NULL) - { - printf("cannot read %s\n", in_file); - fclose(ifp); - return; - } - if ((ofp = fopen(out_file, "w")) == NULL) - { - printf("cannot write %s\n", out_file); - fclose(ofp); - return; - } - while(!done) - { - if(fgets(buffer, MAX_BUFFER_SZ, ifp) == NULL) - { - if(!first_rec) - done = display_msg(WARNING, "Intel-hex data file is empty.", in_file); - else if(!last_rec) - done = display_msg(ERROR, "Missing the last record.", in_file); - } - else if(strlen(ltrim(buffer)) == 0) - { - line_no++; - } - else if(buffer && (buffer[0] == COLON)) - { - line_no++; - first_rec = TRUE; - sscanf(buffer+1,"%02x%04x%02x", &nn, &aaaa, &tt); - if((tt == 2) && (nn != 2) ) - { - done = display_msg(ERROR, "Invalid data record.", in_file); - } - else - { - sscanf(buffer+3,"%02x%02x", &aah, &aal); - sum = nn + aah + aal + tt ; - for(i = 0; i < nn; i++) - { - sscanf(buffer+OFFSET+i*2, "%02x", &dd); - sprintf(dddd+i*2, "%02x", dd); - sum += dd; - } - sscanf(buffer+OFFSET+i*2, "%02x\n", &cc); - - switch(tt) { - case 0x00: /* normal_record */ - first_rec = TRUE; - if(((~sum + 1)& MASK15) == cc) - { - write_data(ofp, nn, aaaa, off_addr, dddd,width); - off_addr = 0; - } - else - { - done = display_msg(ERROR, "Invalid checksum.", in_file); - } - break; - case 0x01: /* last record */ - last_rec = TRUE; - if(((~sum+1)&MASK15) != cc) - { - display_msg(ERROR, "Invalid checksum.", in_file); - } - done = TRUE; - break; - case 0x02: /* address base record */ - sscanf(dddd,"%x\n", &off_addr); - if(((~sum +1)& MASK15) == cc) - { - off_addr *= H10; - } - else - { - done = display_msg(ERROR, "Invalid checksum.", in_file); - } - break; - default: - done = display_msg(ERROR, "Unknown record type.", in_file); - break; - } /* switch */ - } - } - else - { - line_no++; - display_msg(ERROR, "Invalid INTEL HEX record", in_file); - done = TRUE; - } - } - fclose(ifp); - fclose(ofp); - /* append EXT_STR to the input string and pass it back in arg 1 */ - delay.model = accNoDelay; - wrk = acc_handle_tfarg(3); - trimAlteraExt(in_file, init_filename); - strcat(init_filename, EXT_STR); - user_s.value.str = init_filename; - acc_set_value(wrk, &user_s, &delay); - - return(0); -} - Index: trunk/opencores_coding_guidelines.doc =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/opencores_coding_guidelines.doc =================================================================== --- trunk/opencores_coding_guidelines.doc (revision 47) +++ trunk/opencores_coding_guidelines.doc (nonexistent)
trunk/opencores_coding_guidelines.doc Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/encode_8b_10b.v =================================================================== --- trunk/encode_8b_10b.v (revision 47) +++ trunk/encode_8b_10b.v (nonexistent) @@ -1,1760 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// encode_8b_10b #(N), decode_10b_8b #(N) //// -//// //// -//// This file is part of the general opencores effort. //// -//// //// -//// //// -//// Module Description: //// -//// Example of how to convert 8B data to 10B data. //// -//// Example of how to convert 10B data to 8B data. //// -//// //// -//// NOTE: //// -//// The IBM Patent grew up in a world where the Least //// -//// Significant Bit of a word was written to the Left. //// -//// These modules use the LSB as Bit 0, and it will //// -//// typically be written as the Rightmost bit in a field. //// -//// //// -//// NOTE: //// -//// These modules are based on information contained in //// -//// "Implementing an 8B/10B Encoder/Decoder for Gigabit //// -//// Ethernet" by Daniel Elftmann and Jing Hua Ma of Altera. //// -//// The paper was given in the International IC Tiapei //// -//// conferance in 1999. //// -//// //// -//// A second source of information is XAPP336 titled "Design //// -//// of a 16B/20B Encoder/Decoder using a Coolrunner CPLD" //// -//// found on the Xilinx web sire www.xilinx.com //// -//// //// -//// The best article describing this is at wildpackets.com //// -//// http://www.wildpackets.com/compendium/GB/L1-GbEn.html //// -//// //// -//// Finally, this is covered in US patent 4,665,517. //// -//// Unfortunately the US Patent Office online copy has //// -//// missing figures and the tables are un-readable. //// -//// //// -//// Author(s): //// -//// - Anonymous //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 Anonymous and OPENCORES.ORG //// -//// //// -//// This source file may be used and distributed without //// -//// restriction provided that this copyright statement is not //// -//// removed from the file and that any derivative work contains //// -//// the original copyright notice and the associated disclaimer. //// -//// //// -//// This source file is free software; you can redistribute it //// -//// and/or modify it under the terms of the GNU Lesser General //// -//// Public License as published by the Free Software Foundation; //// -//// either version 2.1 of the License, or (at your option) any //// -//// later version. //// -//// //// -//// This source 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 Lesser General Public License for more //// -//// details. //// -//// //// -//// You should have received a copy of the GNU Lesser General //// -//// Public License along with this source; if not, download it //// -//// from //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// $Id: encode_8b_10b.v,v 1.6 2001-11-29 09:22:08 bbeaver Exp $ -// -// CVS Revision History -// -// $Log: not supported by cvs2svn $ -// Revision 1.19 2001/11/29 09:31:11 Blue Beaver -// no message -// -// Revision 1.18 2001/10/26 10:39:43 Blue Beaver -// no message -// -// Revision 1.17 2001/10/26 10:38:05 Blue Beaver -// no message -// -// Revision 1.16 2001/10/25 11:43:03 Blue Beaver -// no message -// -// Revision 1.14 2001/10/25 11:33:51 Blue Beaver -// no message -// -// Revision 1.13 2001/10/24 11:38:02 Blue Beaver -// no message -// -// Revision 1.12 2001/10/24 09:47:40 Blue Beaver -// no message -// -// Revision 1.11 2001/10/24 08:49:02 Blue Beaver -// no message -// -// Revision 1.10 2001/10/24 07:28:08 Blue Beaver -// no message -// -// Revision 1.9 2001/10/23 10:34:50 Blue Beaver -// no message -// -// Revision 1.8 2001/10/23 08:12:37 Blue Beaver -// no message -// -// Revision 1.7 2001/10/22 12:36:12 Blue Beaver -// no message -// -// Revision 1.6 2001/10/22 11:54:58 Blue Beaver -// no message -// -// Revision 1.5 2001/10/21 11:37:28 Blue Beaver -// no message -// -// Revision 1.4 2001/10/21 10:17:34 Blue Beaver -// no message -// -// Revision 1.3 2001/10/21 03:40:52 Blue Beaver -// no message -// -// Revision 1.2 2001/10/21 02:27:39 Blue Beaver -// no message -// -// Revision 1.1 2001/10/21 01:36:14 Blue Beaver -// no message -// -// -// - -`timescale 1ns/1ps - - -// These are the codes which are valid to use as control codes. -// I believe that they have names, but I don't know them. -// Note K_28_1, K_28_5, and K_28_7 contain Singular Commas. -`define K_28_0 8'b000_11100 -`define K_28_1 8'b001_11100 -`define K_28_2 8'b010_11100 -`define K_28_3 8'b011_11100 -`define K_28_4 8'b100_11100 -`define K_28_5 8'b101_11100 -`define K_28_6 8'b110_11100 -`define K_28_7 8'b111_11100 - -`define K_23_7 8'b111_10111 -`define K_27_7 8'b111_11011 -`define K_29_7 8'b111_11101 -`define K_30_7 8'b111_11110 - -// Convert 8-bit binary or 8-bit control code to 10-bit code - -module encode_8b_10b ( - eight_bit_data_or_control_in, - input_is_control, - mess_up_link_disparity, - ten_bit_encoded_data_out, - invalid_control, - clk, - reset -); - - input [7:0] eight_bit_data_or_control_in; - input input_is_control; - input mess_up_link_disparity; - output [9:0] ten_bit_encoded_data_out; - output invalid_control; - input clk, reset; - -// Data is treated as 2 fields. The 3 MSB bits are treated as 1 field, and -// the 5 LSB bits are treated as another field. -// The 5 LSB bits are encoded as 6 bits. The 3 MSB bits are encoded as 4 bits. -// The encodings are chosen so that the 10 bits together have either -// 1) 5 1's and 5 0's, -// 2) 4 1's and 6 0's, -// 3 6 1's and 4 0's -// There are alternative encodings for the cases that the number of 1's and 0's -// are not balanced. The 8B/10B encoder keeps track of the running disparity -// between the number of 1's and 0's, and uses alternate encodings to keep -// the serial signal balanced with no disparity on average. -// -// TABLE I 5B/6B ENCODING (NOTE LSB TO LEFT) -// NAME ABCDE K D-1 abcdei DO ALTERNATE -// ______________________________________ -// D.0 00000 0 + 011000 - 100111 -// D.1 10000 0 + 100010 - 011101 ! -// D.2 01000 0 + 010010 - 101101 ! -// D.3 11000 0 x 110001 0 ! -// D.4 00100 0 + 001010 - 110101 ! -// D.5 10100 0 x 101001 0 ! -// D.6 01100 0 x 011001 0 ! -// D.7 11100 0 - 111000 0 000111 ! -// D.8 00010 0 + 000110 - 111001 ! -// D.9 10010 0 x 100101 0 ! -// D.10 01010 0 x 010101 0 ! -// D.11 11010 0 x 110100 0 ! -// D.12 00110 0 x 001101 0 ! -// D.13 10110 0 x 101100 0 ! -// D.14 01110 0 x 011100 0 ! -// D.15 11110 0 + 101000 - 010111 -// D.16 00001 0 - 011011 + 100100 -// D.17 10001 0 x 100011 0 ! -// D.18 01001 0 x 010011 0 ! -// D.19 11001 0 x 110010 0 ! -// D.20 00101 0 x 001011 0 ! -// D.21 10101 0 x 101010 0 ! -// D.22 01101 0 x 011010 0 ! -// D.23 11101 x - 111010 + 000101 ! -// D.24 00011 0 + 001100 - 110011 -// D.25 10011 0 x 100110 0 ! -// D.26 01011 0 x 010110 0 ! -// D.27 11011 x - 110110 + 001001 ! -// D.28 00111 0 x 001110 0 ! -// D.29 10111 x - 101110 + 010001 ! -// D.30 01111 x - 011110 + 100001 ! -// D.31 11111 0 - 101011 + 010100 -// -// K.23 11101 x - 111010 + 000101 ! -// K.27 11011 x - 110110 + 001001 ! -// K.28 00111 1 - 001111 + 110000 ! -// K.29 10111 x - 101110 + 010001 ! -// K.30 01111 x - 011110 + 100001 ! -// -// TABLE II 3B/4B ENCODING (NOTE LSB TO LEFT) -// NAME FGH K D-1 fghj DO ALTERNATE -// ______________________________________ -// D.x.0 000 x + 0100 - 1011 -// D.x.1 100 0 x 1001 0 ! -// D.x.2 010 0 x 0101 0 ! -// D.x.3 110 x - 1100 0 0011 ! -// D.x.4 001 x + 0010 - 1101 ! -// D.x.5 101 0 x 1010 0 ! -// D.x.6 011 0 x 0110 0 ! -// D.x.P7 111 0 - 1110 + 0001 ! Primary -// D.x.A7 111 x - 0111 + 1000 Alternate -// -// K.28.0 000 x + 0100 - 1011 -// K.28.1 100 1 + 1001 0 0110 ! Singular Comma -// K.28.2 010 1 + 0101 0 1010 ! -// K.28.3 110 x - 1100 0 0011 ! -// K.28.4 001 x + 0010 - 1101 ! -// K.28.5 101 1 + 1010 0 0101 ! Singular Comma -// K.28.6 011 1 + 0110 0 1001 ! -// K.28.7 111 x - 0111 + 1000 Singular Comma -// -// K.23.7 111 x - 0111 + 1000 -// K.27.7 111 x - 0111 + 1000 -// K.29.7 111 x - 0111 + 1000 -// K.30.7 111 x - 0111 + 1000 -// -// The alternate Data encoding D.x.A7 is used in the case -// that e = i = 1 and negative running disparity, -// or e = i = 0 and positive running disparity, -// or a Control signal is being sent, -// all while encoding 7 in the MSB. -// -// This exception to the simple rule guarantees that there -// aren't a run of 5 1's or 5 0's in the first 6 bits -// concatinated with the last 4 bits. -// -// The special sequence starting at "a" of 2 0's followed by -// 5 1's, or 2 1's followed by 5 0's, is called a -// "Singular Comma". -// A Singular Comma does not occur in any valid code EXCEPT -// K.28.1 or K.28.5 or K.28.7. -// -// The web says K.28.5 is the Fiber Channel Comma Character. -// -// NOTE that K.28.7 is a bad comma character, because it -// can be followed by a FALSE comma character when followed -// by any character starting with 2 1's or 0's, like K.11 -// The false comma character is part in the K.28.7 and part -// in the following data byte. Bad. -// -// The following info is found in www.wildpackets.com/compendium/GB/L1-GbEn.html, -// in a document headed: -// "Gigabit Ethernet is Closely Related to Fibre Channel Technology, -// going back to 1988!" -// -// 8B-10B characters are described as Dn.m, where n gives the low order -// 5 bits in decimal, and m gives the top 3 bits. -// -// Configuration data is transferred as an alternating sequence of: -// (flips disparity: "C1") K28.5/D21.5/Config_reg[7:0]/Config_reg[15:8] -// (leaves disparity: "C2") K28.5/D2.2/Config_reg[7:0]/Config_reg[15:8] -// -// Idle status is transmitted when ther eis nothing else to send. -// The link is left in negative disparity. If it is positive, first -// "I1" K28.5/D5.6 is sent, which knocks the displarity to negative -// "I2" K28.5/D16.2 is sent repeatitively to maintain the negative disparity -// -// Start of Packet delimiter "S" K27.7 -// End of Packet delimiter "T" K29.7 -// Carrier Extend "R" K23.7 -// -// An End Of Packet consists of either T/R/I or T/R/R -// The second is used when a packet follows the previous packet in a burst. -// "R" is also sent so that a subsequent "I" follows on an even-numbered -// code boundry. -// -// Error propagation "V" K30.7 - - -// Accumulate the new data. First, calculate ignoring the running disparity; - wire [9:0] first_level_encoded_data; - -// Calculate the values for the 5 -> 6 encoding - -// Discover important details about the incoming numbers. - wire [1:0] LSB_02_Population = eight_bit_data_or_control_in[0] // half adder - + eight_bit_data_or_control_in[1]; - wire [1:0] LSB_34_Population = eight_bit_data_or_control_in[2] // half adder - + eight_bit_data_or_control_in[3]; - wire [2:0] LSB_Population = {1'b0, LSB_02_Population[1:0]} - + {1'b0, LSB_34_Population[1:0]}; - -// As can be seen, in many of the LSB encodings the bottom -// 4 of the encoded data are identical to the input -// data. (These are noted with a trailing "!") -// -// There are several exceptions to this in the LSB. Decode these. - wire LSB_all_zero = (LSB_Population[2:0] == 3'h0); - wire LSB_contains_one_one = (LSB_Population[2:0] == 3'h1); - wire LSB_contains_two_ones = (LSB_Population[2:0] == 3'h2); - wire LSB_contains_three_ones = (LSB_Population[2:0] == 3'h3); - wire LSB_all_one = (LSB_Population[2:0] == 3'h4); - - wire LSB_is_7 = (eight_bit_data_or_control_in[4:0] == 5'h07); // 7 - wire LSB_is_24 = (eight_bit_data_or_control_in[4:0] == 5'h18); // 24 - wire LSB_is_28 = (eight_bit_data_or_control_in[4:0] == 5'h1C); // 28 - wire LSB_is_23_27_29_30 = (eight_bit_data_or_control_in[4:0] == 5'h17) // 23 - | (eight_bit_data_or_control_in[4:0] == 5'h1B) // 27 - | (eight_bit_data_or_control_in[4:0] == 5'h1D) // 29 - | (eight_bit_data_or_control_in[4:0] == 5'h1E); // 30 - wire LSB_contains_other_i = (eight_bit_data_or_control_in[3:0] == 4'h0) - | (eight_bit_data_or_control_in[3:0] == 4'h1) - | (eight_bit_data_or_control_in[3:0] == 4'h2) - | (eight_bit_data_or_control_in[3:0] == 4'h4); - -// Notice that the bottom bit of the encoded LSB data is the same as -// the input LSB data. - assign first_level_encoded_data[0] = eight_bit_data_or_control_in[0]; - -// If the bottom 4 bits are 0s, force 0110 (LSB is the left bit) -// If the bottom 5 bits are 24, force 0011 (LSB is the left bit) -// If the bottom 4 bits are 1s, force 1010 (LSB is the left bit) - assign first_level_encoded_data[1] = ( eight_bit_data_or_control_in[1] - & ~LSB_all_one) - | LSB_all_zero; - assign first_level_encoded_data[2] = eight_bit_data_or_control_in[2] - | LSB_all_zero - | LSB_is_24; - assign first_level_encoded_data[3] = ( eight_bit_data_or_control_in[3] - & ~LSB_all_one); - -// Bits "e" and "i" are chosen to guarantee that there are enough transitions, -// and to control the disparity caused by each pattern. - - assign first_level_encoded_data[4] = - (LSB_contains_one_one | eight_bit_data_or_control_in[4]) - & ~LSB_is_24; - - assign first_level_encoded_data[5] = - (LSB_contains_two_ones & ~eight_bit_data_or_control_in[4]) - | ( ( LSB_contains_other_i | LSB_all_one) - & eight_bit_data_or_control_in[4]) - | (input_is_control & LSB_is_28); - -// Now calculate the other information needed to produce the LSB output data - wire LSB_code_has_positive_disparity = - | ( ( LSB_all_zero - | LSB_contains_three_ones - | LSB_all_one) - & (eight_bit_data_or_control_in[4] == 1'b1) ) - | (input_is_control & LSB_is_28); - - wire LSB_code_has_negative_disparity = - ( ( LSB_all_zero - | LSB_contains_one_one - | LSB_all_one) - & (eight_bit_data_or_control_in[4] == 1'b0) ) - | LSB_is_24; - - wire invert_LSB_if_input_disparity_is_positive = - LSB_code_has_positive_disparity - | LSB_is_7; - - wire invert_LSB_if_input_disparity_is_negative = - LSB_code_has_negative_disparity; - - wire LSB_toggle_running_disparity = - LSB_code_has_positive_disparity - | LSB_code_has_negative_disparity; - -// Calculate the values for the 3 -> 4 encoding - -// An alternate encoding of the MSB for an input of 0x7 is used to -// prevent accidental use of a pattern with 5 0's or 1's in a row. -// The alternate Data encoding D.x.A7 is used in the case -// that e = i = 0 and positive running disparity, -// or e = i = 1 and negative running disparity, -// or a Control signal is being sent, -// all while encoding 7 in the MSB. - - reg Running_Disparity; // forward reference - - wire use_alternate_encoding = - ( input_is_control - | ( (Running_Disparity == 1'b0) - & ( (eight_bit_data_or_control_in[4:0] == 5'h11) // 17 - | (eight_bit_data_or_control_in[4:0] == 5'h12) // 18 - | (eight_bit_data_or_control_in[4:0] == 5'h14) // 20 - )) - | ( (Running_Disparity == 1'b1) - & ( (eight_bit_data_or_control_in[4:0] == 5'h0B) // 11 - | (eight_bit_data_or_control_in[4:0] == 5'h0D) // 13 - | (eight_bit_data_or_control_in[4:0] == 5'h0E) // 14 - )) - ) - & (eight_bit_data_or_control_in[7:5] == 3'h7); - -// The low bit of the MSB is a pass-through, except when the alternate -// encoding of the value is used to prevent unintentional long runs. - assign first_level_encoded_data[6] = eight_bit_data_or_control_in[5] - & ~use_alternate_encoding; - -// The second bit of the MSB is a pass-through except when the input -// is all 0's. - assign first_level_encoded_data[7] = eight_bit_data_or_control_in[6] - | (eight_bit_data_or_control_in[7:5] == 3'h0); - -// The top bit of the encoded MSB data is the same as the input MSB data. - assign first_level_encoded_data[8] = eight_bit_data_or_control_in[7]; - -// Bit "j" is chosen to guarantee that there are enough transitions, -// and to control the disparity caused by each pattern. - assign first_level_encoded_data[9] = - (eight_bit_data_or_control_in[7:5] == 3'h1) - | (eight_bit_data_or_control_in[7:5] == 3'h2) - | use_alternate_encoding; - -// Now calculate the other information needed to produce the MSB output data - wire invert_MSB_if_LSB_disparity_is_positive = - (eight_bit_data_or_control_in[7:5] == 3'h3) - | (eight_bit_data_or_control_in[7:5] == 3'h7); - - wire invert_MSB_if_LSB_disparity_is_negative = - (eight_bit_data_or_control_in[7:5] == 3'h0) - | (eight_bit_data_or_control_in[7:5] == 3'h4) - | ( input_is_control - & ( (eight_bit_data_or_control_in[7:5] == 3'h1) - | (eight_bit_data_or_control_in[7:5] == 3'h2) - | (eight_bit_data_or_control_in[7:5] == 3'h5) - | (eight_bit_data_or_control_in[7:5] == 3'h6) - ) - ); - - wire MSB_toggle_running_disparity = - (eight_bit_data_or_control_in[7:5] == 3'h0) - | (eight_bit_data_or_control_in[7:5] == 3'h4) - | (eight_bit_data_or_control_in[7:5] == 3'h7); - -// Keep track of the running disparity. If 1'b1, the disparity is positive. - always @(posedge clk) - begin - if (reset == 1'b1) - begin - Running_Disparity <= 1'b0; // start negative - end - else - begin - Running_Disparity <= Running_Disparity - ^ LSB_toggle_running_disparity - ^ MSB_toggle_running_disparity; - end - end - -// Decide whether to invert the encoded data; - wire Invert_LSB = ( (Running_Disparity == 1'b1) - & (invert_LSB_if_input_disparity_is_positive == 1'b1) ) - | ( (Running_Disparity == 1'b0) - & (invert_LSB_if_input_disparity_is_negative == 1'b1) ); - - wire Invert_MSB = ( ((Running_Disparity ^ LSB_toggle_running_disparity) == 1'b1) - & (invert_MSB_if_LSB_disparity_is_positive == 1'b1) ) - | ( ((Running_Disparity ^ LSB_toggle_running_disparity) == 1'b0) - & (invert_MSB_if_LSB_disparity_is_negative == 1'b1) ); - -// Calculate the actual encoded data. - reg [9:0] ten_bit_encoded_data_out; - reg invalid_control; - - always @(posedge clk) - begin - if (reset == 1'b1) - begin - ten_bit_encoded_data_out[9:0] <= 10'h000; - invalid_control <= 1'b0; - end - else - begin - ten_bit_encoded_data_out[5:0] <= - {6{Invert_LSB}} ^ first_level_encoded_data[5:0]; - ten_bit_encoded_data_out[9:6] <= - {4{Invert_MSB}} ^ first_level_encoded_data[9:6]; - invalid_control <= input_is_control - & ~( LSB_is_28 // all MSB bits are valid - | ( LSB_is_23_27_29_30 - & (eight_bit_data_or_control_in[7:5] == 3'h7) // MSB must be 7 - ) - ); - end - end -endmodule - -// Convert 10-bit code to 8-bit binary or 8-bit control code - -module decode_10b_8b ( - ten_bit_encoded_data_in, - eight_bit_data_or_control_out, - output_is_control, - invalid_encoded_data, - clk, - reset -); - input [9:0] ten_bit_encoded_data_in; - output [7:0] eight_bit_data_or_control_out; - output output_is_control; - output invalid_encoded_data; - input clk, reset; - -// Data is encoded as described in the encode_8b_10b module above. -// This module tries to extract valid data or control info from the -// encoded input data. -// -// This module depends on the data being correctly 10-bit aligned. -// the LSB of the input must be the "a" bit as described above. -// -// This module tries to detect errors in the code sequence as it arrives. -// Errors are when an illegal bit sequence arrives, or when the disparity -// of the input data goes beyond 1 bit. This would happen if the sender -// did not correctly use alternate encodings of output data. - -// Accumulate the new data. Calculate ignoring the running disparity; - wire [7:0] decoded_data; - -// Calculate the values for the 6 -> 5 decoding - -// Discover important details about the incoming numbers. - wire [1:0] LSB_02_Population = ten_bit_encoded_data_in[0] // full adder - + ten_bit_encoded_data_in[1] - + ten_bit_encoded_data_in[2]; - wire [1:0] LSB_35_Population = ten_bit_encoded_data_in[3] // full adder - + ten_bit_encoded_data_in[4] - + ten_bit_encoded_data_in[5]; - wire [2:0] LSB_bottom_4_Population = {1'b0, LSB_02_Population[1:0]} - + {2'b00, ten_bit_encoded_data_in[3]}; - wire [2:0] LSB_Population = {1'b0, LSB_02_Population[1:0]} // allowed: 2, 3, 4 - + {1'b0, LSB_35_Population[1:0]}; // illegal: 0, 1, 5, 6 - -// As can be seen, in many of the LSB encodings the bottom -// 4 of the decoded data are identical to the input -// data. (These are noted with a trailing "!") -// -// The bottom 4 bits can be used directly in these cases (which are all cases -// where the number of bits in the input are equil to 3 except for 7): -// 3 5 6 9 10 11 12 13 14 17 18 19 20 21 22 25 26 28 - -// The bottom 4 bits must be inverted before use in these cases: (MSB right) -// 011101 101101 110101 111001 000101 001001 010001 100001 000111 110000 - wire LSB_Invert_Before_Use = ( (ten_bit_encoded_data_in[5:4] == 2'b10) - & ( (LSB_bottom_4_Population[2:0] == 3'h1) - | (LSB_bottom_4_Population[2:0] == 3'h3) ) - ) - | (ten_bit_encoded_data_in[5:0] == 6'b111000) // LSB to right - | (ten_bit_encoded_data_in[5:0] == 6'b000011); - -// Values must be substituted in these cases: - wire LSB_is_0_16_a = (ten_bit_encoded_data_in[5:0] == 6'b000110) // LSB to right - | (ten_bit_encoded_data_in[5:0] == 6'b110110); - - wire LSB_is_0_16_b = (ten_bit_encoded_data_in[5:0] == 6'b111001) // LSB to right - | (ten_bit_encoded_data_in[5:0] == 6'b001001); - - wire LSB_is_15_31_a = (ten_bit_encoded_data_in[5:0] == 6'b000101) // LSB to right - | (ten_bit_encoded_data_in[5:0] == 6'b110101); - - wire LSB_is_15_31_b = (ten_bit_encoded_data_in[5:0] == 6'b111010) // LSB to right - | (ten_bit_encoded_data_in[5:0] == 6'b001010); - - wire LSB_is_24_a = (ten_bit_encoded_data_in[5:0] == 6'b001100); // LSB to right - wire LSB_is_24_b = (ten_bit_encoded_data_in[5:0] == 6'b110011); // LSB to right - -// Notice when these codes occur. They are the only time Alternate D.x.7 data -// can be used. This is looked for below to detect errors. - wire LSB_is_11_13_14 = (ten_bit_encoded_data_in[5:0] == 6'b001011) // LSB to right - | (ten_bit_encoded_data_in[5:0] == 6'b001101) - | (ten_bit_encoded_data_in[5:0] == 6'b001110); - - wire LSB_is_17_18_20 = (ten_bit_encoded_data_in[5:0] == 6'b110001) // LSB to right - | (ten_bit_encoded_data_in[5:0] == 6'b110010) - | (ten_bit_encoded_data_in[5:0] == 6'b110100); - -// Control signals must be called out when recognized. - wire LSB_is_23_27_29_30 = ( (ten_bit_encoded_data_in[5:4] == 2'b01) - & (LSB_bottom_4_Population[2:0] == 3'h3) ) - | ( (ten_bit_encoded_data_in[5:4] == 2'b10) - & (LSB_bottom_4_Population[2:0] == 3'h1) ); - - wire LSB_is_K28 = (ten_bit_encoded_data_in[5:0] == 6'b111100) // LSB to right - | (ten_bit_encoded_data_in[5:0] == 6'b000011); - -// calculate the bottom 4 bits of decoded data - wire [3:0] LSB_XOR_Term = {4{LSB_Invert_Before_Use}} // invert all signals with alternate values - | {1'b0, LSB_is_0_16_a, LSB_is_0_16_a, 1'b0} // make 0, 16 into 0 - | {LSB_is_0_16_b, 1'b0, 1'b0, LSB_is_0_16_b} // make 0, 16 into 0 - | {LSB_is_15_31_a, 1'b0, LSB_is_15_31_a, 1'b0} // make 15, 31 into 15 - | {1'b0, LSB_is_15_31_b, 1'b0, LSB_is_15_31_b} // make 15, 31 into 15 - | {1'b0, LSB_is_24_a, 1'b0, 1'b0} // make 24 into 24 - | {LSB_is_24_b, 1'b0, LSB_is_24_b, LSB_is_24_b}; // make 24 into 24 - - assign decoded_data[3:0] = ten_bit_encoded_data_in[3:0] ^ LSB_XOR_Term[3:0]; - -// The next bit is harder. I don't know if this is minimal - assign decoded_data[4] = (ten_bit_encoded_data_in[5:0] == 6'b001001) // LSB to right - | (ten_bit_encoded_data_in[5:0] == 6'b001010) - | (ten_bit_encoded_data_in[5:0] == 6'b001100) - | (ten_bit_encoded_data_in[5:3] == 3'b110) - | ( (ten_bit_encoded_data_in[5:4] == 2'b01) - & (LSB_bottom_4_Population[2:0] == 3'h2) ) - | LSB_is_23_27_29_30 - | LSB_is_K28; - -// Calculate the values for the 4 -> 3 decoding - -// The bottom 2 bits of the MSB must always be inverted before use in these -// cases: (MSB right) 0011, 1101, 0001 -// When the LSB indicate that the byte contains a K28, and the bottom 6 bits -// have a negative disparity, invert these before using: (MSB right) -// 0110, 1010, 0101, 1001 -// Only 2 of these are needed to greate singular commas. I don't understand -// why they made the other special cases. Very odd - - wire MSB_Invert_Before_Use = (ten_bit_encoded_data_in[9:6] == 4'b1100) // LSB to right - | (ten_bit_encoded_data_in[9:6] == 4'b1011) - | (ten_bit_encoded_data_in[9:6] == 4'b1000) - | ( (ten_bit_encoded_data_in[5:0] == 6'b000011) - & ( (ten_bit_encoded_data_in[9:6] == 4'b0110) - | (ten_bit_encoded_data_in[9:6] == 4'b0101) - | (ten_bit_encoded_data_in[9:6] == 4'b1010) - | (ten_bit_encoded_data_in[9:6] == 4'b1001) - ) - ); - -// Values must be substituted in these cases: - wire MSB_0_value_a = (ten_bit_encoded_data_in[9:6] == 4'b0010); // LSB to right - wire MSB_0_value_b = (ten_bit_encoded_data_in[9:6] == 4'b1101); - - wire alternate_MSB_a = (ten_bit_encoded_data_in[9:6] == 4'b1110); // LSB to right - wire alternate_MSB_b = (ten_bit_encoded_data_in[9:6] == 4'b0001); - - wire primary_MSB_a = (ten_bit_encoded_data_in[9:6] == 4'b0111); // LSB to right - wire primary_MSB_b = (ten_bit_encoded_data_in[9:6] == 4'b1000); - - wire [2:0] MSB_XOR_Term = {3{MSB_Invert_Before_Use}} - | {1'b0, MSB_0_value_a, 1'b0} - | {MSB_0_value_b, 1'b0, MSB_0_value_b} - | {1'b0, 1'b0, alternate_MSB_a} - | {alternate_MSB_b, alternate_MSB_b, 1'b0}; - - assign decoded_data[7:5] = ten_bit_encoded_data_in[8:6] ^ MSB_XOR_Term[2:0]; - - wire decoded_control = ( LSB_is_23_27_29_30 - & (alternate_MSB_a | alternate_MSB_b)) - | LSB_is_K28; - -// Keep track of the running disparity. If 1'b1, the disparity is positive. - - wire [1:0] MSB_01_Population = ten_bit_encoded_data_in[6] // half adder - + ten_bit_encoded_data_in[7]; - wire [1:0] MSB_23_Population = ten_bit_encoded_data_in[8] // half adder - + ten_bit_encoded_data_in[9]; - wire [2:0] MSB_Population = {1'b0, MSB_01_Population[1:0]} // 1, 2, 3 - + {1'b0, MSB_23_Population[1:0]}; - - wire [3:0] Code_Population = {1'b0, LSB_Population[2:0]} // 4, 5, 6 - + {1'b0, MSB_Population[2:0]}; - - reg Running_Disparity; - - always @(posedge clk) - begin - if (reset == 1'b1) - begin - Running_Disparity <= 1'b0; // start negative - end - else - begin - Running_Disparity <= (Code_Population[3:0] == 4'h6) - ? 1'b1 - : ( (Code_Population[3:0] == 4'h4) - ? 1'b0 - : Running_Disparity); - end - end - -// Detect invalid code values. - - wire too_many_bits_in_first_nibble = - (LSB_bottom_4_Population[2:0] > 3'h3); - wire too_few_bits_in_first_nibble = - (LSB_bottom_4_Population[2:0] < 3'h1); - - wire too_many_bits_in_LSB = (LSB_Population[2:0] > 3'h4); - wire too_few_bits_in_LSB = (LSB_Population[2:0] < 3'h2); - - wire too_many_bits_in_MSB = (MSB_Population[2:0] > 3'h3); - wire too_few_bits_in_MSB = (LSB_Population[2:0] < 3'h1); - - wire too_many_bits_in_entire_code = (Code_Population[3:0] > 4'h6); - wire too_few_bits_in_entire_code = (Code_Population[3:0] < 4'h4); - - wire LSB_inconsistent_with_running_disparity = - ( (Running_Disparity == 1'b1) - & ( (LSB_Population[2:0] == 3'h4) - | (ten_bit_encoded_data_in[5:0] == 6'b000111) // X.7 negative disparity - ) ) - | ( (Running_Disparity == 1'b0) - & ( (LSB_Population[2:0] == 3'h2) - | (ten_bit_encoded_data_in[5:0] == 6'b111000) // X.7 positive disparity - ) ); - - wire LSB_code_7_positive_but_MSB_inconsistent = - (ten_bit_encoded_data_in[5:0] == 6'b111000) // X.7 positive disparity - & ( (MSB_Population[2:0] == 3'h3) // too many bits in MSB - | (ten_bit_encoded_data_in[9:6] == 4'b0011) // Y.3 negative disparity - ); - - wire LSB_code_7_negative_but_MSB_inconsistent = - (ten_bit_encoded_data_in[5:0] == 6'b000111) // X.7 negative disparity - & ( (MSB_Population[2:0] == 3'h1) // too few bits in MSB - | (ten_bit_encoded_data_in[9:6] == 4'b1100) // Y.3 positive disparity - ); - - wire MSB_code_3_positive_but_LSB_inconsistent = - (ten_bit_encoded_data_in[9:6] == 4'b1100) // X.7 positive disparity - & (LSB_Population[2:0] == 3'h2); // too few bits in LSB - - wire MSB_code_3_negative_but_LSB_inconsistent = - (ten_bit_encoded_data_in[9:6] == 4'b0011) // X.7 negative disparity - & (LSB_Population[2:0] == 3'h4); // too many bits in LSB - - wire alternate_encoding_not_used_when_required = - ((Running_Disparity == 1'b1) & (LSB_is_11_13_14) & primary_MSB_b) - | ((Running_Disparity == 1'b0) & (LSB_is_17_18_20) & primary_MSB_a) - | (LSB_is_K28 & (primary_MSB_a | primary_MSB_b)); - - wire primary_encoding_not_used_when_required = - ((Running_Disparity == 1'b0) & (LSB_is_11_13_14) & alternate_MSB_b) - | ((Running_Disparity == 1'b1) & (LSB_is_17_18_20) & alternate_MSB_a); - - wire detected_invalid_8b_10b_sequence = too_many_bits_in_first_nibble - | too_few_bits_in_first_nibble - | too_many_bits_in_LSB - | too_few_bits_in_LSB - | too_many_bits_in_MSB - | too_few_bits_in_MSB - | too_many_bits_in_entire_code - | too_few_bits_in_entire_code - | LSB_inconsistent_with_running_disparity - | LSB_code_7_positive_but_MSB_inconsistent - | LSB_code_7_negative_but_MSB_inconsistent - | MSB_code_3_positive_but_LSB_inconsistent - | MSB_code_3_negative_but_LSB_inconsistent - | alternate_encoding_not_used_when_required - | primary_encoding_not_used_when_required; - -// Calculate the actual decoded data. - reg [7:0] eight_bit_data_or_control_out; - reg output_is_control; - reg invalid_encoded_data; - - always @(posedge clk) - begin - if (reset == 1'b1) - begin - eight_bit_data_or_control_out[7:0] <= 8'h00; - output_is_control <= 1'b0; - invalid_encoded_data <= 1'b0; - end - else - begin - eight_bit_data_or_control_out[7:0] <= decoded_data[7:0]; - output_is_control <= decoded_control; - invalid_encoded_data <= detected_invalid_8b_10b_sequence - & (ten_bit_encoded_data_in[9:0] != 10'b0000_000000) // NOTE TEMPORARY - ; - end - end -endmodule - -// `define TEST_8B_10B -`ifdef TEST_8B_10B -// This simulates in between 6 and 7 minutes on a 400 MHz Ultra using verilog XL. -// This does not complete before filling up the disk on a 300 MHz K6 using Verilogger PRO. -module test_8b_10b; - reg [8:0] test_data; - reg [8:0] test_data_second; - reg [8:0] limit; - reg [7:0] control_byte; - reg [7:0] control_byte_second; - reg test_control; - - reg [7:0] eight_bit_data_or_control_in; - reg input_is_control; - reg mess_up_link_disparity; - wire [9:0] ten_bit_encoded_data_out; - wire invalid_control; - - wire [7:0] eight_bit_data_or_control_out; - wire output_is_control; - wire invalid_encoded_data; - - reg clk, reset; - - reg found_singular_comma; - -task set_to_negative_disparity; - begin - clk = 1'b0; reset = 1'b1; #1; - clk = 1'b1; reset = 1'b1; #1; // do reset, setting sender to negative disparity - clk = 1'b0; reset = 1'b1; #1; - clk = 1'b0; reset = 1'b0; #1; - end -endtask - -task set_to_positive_disparity; - begin - clk = 1'b0; reset = 1'b1; #1; - clk = 1'b1; reset = 1'b1; #1; // do reset, setting sender to negative disparity - clk = 1'b0; reset = 1'b1; #1; - clk = 1'b0; reset = 1'b0; #1; - - eight_bit_data_or_control_in[7:0] = 8'b111_00011; #1; - clk = 1'b1; #1; // switch to a positive running disparity - clk = 1'b0; #1; - end -endtask - -task check; - input disparity; - input [7:0] test_data; - input do_control; - reg [9:0] latched_code; - begin - if (disparity == 1'b1) - set_to_positive_disparity; - else - set_to_negative_disparity; - - input_is_control = do_control; - eight_bit_data_or_control_in[7:0] = test_data[7:0]; #1; // inputs settle - clk = 1'b1; #1; // encoded data available - clk = 1'b0; #1; - - latched_code[9:0] = ten_bit_encoded_data_out[9:0]; - - input_is_control = 1'b0; - eight_bit_data_or_control_in[7:0] = 8'b010_00011; #1; - clk = 1'b1; #1; // decoded data available - clk = 1'b0; #1; - - if ( (eight_bit_data_or_control_out[7:0] !== test_data[7:0]) - | (output_is_control !== do_control) - | (invalid_encoded_data !== 1'b0) - ) - begin - $display ("!!! test data, result %d %d %b_%b %x %d %b %b", - test_data[7:5], test_data[4:0], - latched_code[9:6], latched_code[5:0], - eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], - output_is_control, invalid_encoded_data); - end - end -endtask - -function look_for_singular_comma; - input [6:0] data; - begin - if ( (data[0] == data[1]) - & (data[0] == ~data[2]) - & (data[0] == ~data[3]) - & (data[0] == ~data[4]) - & (data[0] == ~data[5]) - & (data[0] == ~data[6]) - ) - begin - look_for_singular_comma = 1'b1; - end - else - begin - look_for_singular_comma = 1'b0; - end - end -endfunction - -task check_pair; // Data then Data or Control then Data - input disparity; - input [7:0] test_data; - input [7:0] test_data_second; - input do_control; - input want_singular_comma; - reg [9:0] latched_code; - reg [19:0] two_bytes_of_codes_back_to_back; - - begin - if (disparity == 1'b1) - set_to_positive_disparity; - else - set_to_negative_disparity; - - input_is_control = do_control; - eight_bit_data_or_control_in[7:0] = test_data[7:0]; #1; // inputs settle - clk = 1'b1; #1; // encoded data available - clk = 1'b0; #1; - - latched_code[9:0] = ten_bit_encoded_data_out[9:0]; - two_bytes_of_codes_back_to_back[9:0] = ten_bit_encoded_data_out[9:0]; - - input_is_control = 1'b0; - eight_bit_data_or_control_in[7:0] = test_data_second[7:0]; #1; // inputs settle - clk = 1'b1; #1; // decoded data available - clk = 1'b0; #1; - - if ( (eight_bit_data_or_control_out[7:0] !== test_data[7:0]) - | (output_is_control !== do_control) - | (invalid_encoded_data !== 1'b0) - ) - begin - $display ("!!! test data, result %d %d %b_%b %x %d %b %b", - test_data[7:5], test_data[4:0], - latched_code[9:6], latched_code[5:0], - eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], - output_is_control, invalid_encoded_data); - end - - latched_code[9:0] = ten_bit_encoded_data_out[9:0]; - two_bytes_of_codes_back_to_back[19:10] = ten_bit_encoded_data_out[9:0]; - - input_is_control = 1'b0; - eight_bit_data_or_control_in[7:0] = 8'b010_00011; #1; - clk = 1'b1; #1; // decoded data available - clk = 1'b0; #1; - - if ( (eight_bit_data_or_control_out[7:0] !== test_data_second[7:0]) - | (output_is_control !== 1'b0) - | (invalid_encoded_data !== 1'b0) - ) - begin - $display ("!!! test data second, result %d %d %b_%b %x %d %b %b", - test_data_second[7:5], test_data_second[4:0], - latched_code[9:6], latched_code[5:0], - eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], - output_is_control, invalid_encoded_data); - end - - if (~want_singular_comma) - begin - if ( look_for_singular_comma (two_bytes_of_codes_back_to_back[6:0]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[7:1]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[8:2]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[9:3]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[10:4]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[11:5]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[12:6]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[13:7]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[14:8]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[15:9]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[16:10]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[17:11]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[18:12]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[19:13]) ) - begin - $display ("!!! unexpected singular comma, result %d %d %b_%b %b_%b %b %b %b %b", - test_data[7:0], test_data_second[7:0], - two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], - two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], - eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], - output_is_control, invalid_encoded_data); - end - end - else // want a singular comma - begin - if (!look_for_singular_comma (two_bytes_of_codes_back_to_back[6:0])) - begin - $display ("!!! missing singular comma, result %d %d %b_%b %b_%b %b %b %b %b", - test_data[7:0], test_data_second[7:0], - two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], - two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], - eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], - output_is_control, invalid_encoded_data); - end - if ( look_for_singular_comma (two_bytes_of_codes_back_to_back[7:1]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[8:2]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[9:3]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[10:4]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[11:5]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[12:6]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[13:7]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[14:8]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[15:9]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[16:10]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[17:11]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[18:12]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[19:13]) ) - begin - $display ("!!! unexpected singular comma, result %d %d %b_%b %b_%b %b %b %b %b", - test_data[7:0], test_data_second[7:0], - two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], - two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], - eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], - output_is_control, invalid_encoded_data); - end - end - end -endtask - -task check_pair_2; // Data followed by Control or Control followed by Control - input disparity; - input [7:0] test_data; - input [7:0] test_data_second; - input first_control; - input want_first_singular_comma; - input second_control; - input want_second_singular_comma; - reg [9:0] latched_code; - reg [19:0] two_bytes_of_codes_back_to_back; - - begin - if (disparity == 1'b1) - set_to_positive_disparity; - else - set_to_negative_disparity; - - input_is_control = first_control; - eight_bit_data_or_control_in[7:0] = test_data[7:0]; #1; // inputs settle - clk = 1'b1; #1; // encoded data available - clk = 1'b0; #1; - - latched_code[9:0] = ten_bit_encoded_data_out[9:0]; - two_bytes_of_codes_back_to_back[9:0] = ten_bit_encoded_data_out[9:0]; - - input_is_control = second_control; - eight_bit_data_or_control_in[7:0] = test_data_second[7:0]; #1; // inputs settle - clk = 1'b1; #1; // decoded data available - clk = 1'b0; #1; - - if ( (eight_bit_data_or_control_out[7:0] !== test_data[7:0]) - | (output_is_control !== first_control) - | (invalid_encoded_data !== 1'b0) - ) - begin - $display ("!!! test data, result %d %d %b_%b %x %d %b %b", - test_data[7:5], test_data[4:0], - latched_code[9:6], latched_code[5:0], - eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], - output_is_control, invalid_encoded_data); - end - - latched_code[9:0] = ten_bit_encoded_data_out[9:0]; - two_bytes_of_codes_back_to_back[19:10] = ten_bit_encoded_data_out[9:0]; - - input_is_control = 1'b0; - eight_bit_data_or_control_in[7:0] = 8'b010_00011; #1; - clk = 1'b1; #1; // decoded data available - clk = 1'b0; #1; - - if ( (eight_bit_data_or_control_out[7:0] !== test_data_second[7:0]) - | (output_is_control !== second_control) - | (invalid_encoded_data !== 1'b0) - ) - begin - $display ("!!! test data second, result %d %d %b_%b %x %d %b %b", - test_data_second[7:5], test_data_second[4:0], - latched_code[9:6], latched_code[5:0], - eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], - output_is_control, invalid_encoded_data); - end - - if (~want_first_singular_comma) - begin - if ( look_for_singular_comma (two_bytes_of_codes_back_to_back[6:0]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[7:1]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[8:2]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[9:3]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[10:4]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[11:5]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[12:6]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[13:7]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[14:8]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[15:9]) ) - begin - $display ("!!! unexpected singular comma, result %d %d %b_%b %b_%b %b %b %b %b", - test_data[7:0], test_data_second[7:0], - two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], - two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], - eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], - output_is_control, invalid_encoded_data); - end - end - else // want a singular comma in the first byte - begin - if (!look_for_singular_comma (two_bytes_of_codes_back_to_back[6:0])) - begin - $display ("!!! missing singular comma, result %d %d %b_%b %b_%b %b %b %b %b", - test_data[7:0], test_data_second[7:0], - two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], - two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], - eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], - output_is_control, invalid_encoded_data); - end - if ( look_for_singular_comma (two_bytes_of_codes_back_to_back[7:1]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[8:2]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[9:3]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[10:4]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[11:5]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[12:6]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[13:7]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[14:8]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[15:9]) ) - begin - $display ("!!! unexpected singular comma, result %d %d %b_%b %b_%b %b %b %b %b", - test_data[7:0], test_data_second[7:0], - two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], - two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], - eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], - output_is_control, invalid_encoded_data); - end - end - if (~want_second_singular_comma) - begin - if ( look_for_singular_comma (two_bytes_of_codes_back_to_back[16:10]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[17:11]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[18:12]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[19:13]) ) - begin - $display ("!!! unexpected singular comma, result %d %d %b_%b %b_%b %b %b %b %b", - test_data[7:0], test_data_second[7:0], - two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], - two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], - eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], - output_is_control, invalid_encoded_data); - end - end - else // want a singular comma in the second byte - begin - if (!look_for_singular_comma (two_bytes_of_codes_back_to_back[16:10])) - begin - $display ("!!! missing singular comma 2, result %d %d %b_%b %b_%b %b %b %b %b", - test_data[7:0], test_data_second[7:0], - two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], - two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], - eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], - output_is_control, invalid_encoded_data); - end - if ( look_for_singular_comma (two_bytes_of_codes_back_to_back[17:11]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[18:12]) - | look_for_singular_comma (two_bytes_of_codes_back_to_back[19:13]) ) - begin - $display ("!!! unexpected singular comma 2, result %d %d %b_%b %b_%b %b %b %b %b", - test_data[7:0], test_data_second[7:0], - two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], - two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], - eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], - output_is_control, invalid_encoded_data); - end - end - end -endtask - -function [7:0] pick_control_byte; - input [3:0] index; - begin - case (index[3:0]) - 0: pick_control_byte[7:0] = `K_23_7; - 1: pick_control_byte[7:0] = `K_27_7; - 2: pick_control_byte[7:0] = `K_28_0; - 3: pick_control_byte[7:0] = `K_28_1; - 4: pick_control_byte[7:0] = `K_28_2; - 5: pick_control_byte[7:0] = `K_28_3; - 6: pick_control_byte[7:0] = `K_28_4; - 7: pick_control_byte[7:0] = `K_28_5; - 8: pick_control_byte[7:0] = `K_28_6; - 9: pick_control_byte[7:0] = `K_28_7; - 10: pick_control_byte[7:0] = `K_29_7; - default: pick_control_byte[7:0] = `K_30_7; - endcase - end -endfunction - - initial - begin - mess_up_link_disparity = 1'b0; - - $display ("test 32 LSB data values starting with negative disparity"); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h020; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - check (0, test_data[7:0], 1'b0); - end - - $display ("test 8 MSB data values starting with negative disparity"); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - check (0, (test_data[2:0] << 5) | 5'h03, 1'b0); - end - - $display ("test 8 MSB data values starting with negative disparity"); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - check (0, (test_data[2:0] << 5) | 5'h0B, 1'b0); // 11 - end - - $display ("test 8 MSB data values starting with negative disparity"); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - check (0, (test_data[2:0] << 5) | 5'h11, 1'b0); // 17 - end - - $display ("test control starting with negative disparity"); - check (0, `K_23_7, 1'b1); - check (0, `K_27_7, 1'b1); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - check (0, `K_28_0 | (test_data[2:0] << 5), 1'b1); - end - check (0, `K_29_7, 1'b1); - check (0, `K_30_7, 1'b1); - -// $display ("invalid control character with negative disparity"); -// check (0, 8'h0, 1'b1); - - - $display ("test 32 LSB data values starting with positive disparity"); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h020; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - check (1, test_data[7:0], 1'b0); - end - - $display ("test 8 MSB data values starting with positive disparity"); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - check (1, (test_data[2:0] << 5) | 5'h03, 1'b0); - end - - $display ("test 8 MSB data values starting with positive disparity"); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - check (1, (test_data[2:0] << 5) | 5'h0B, 1'b0); // 11 - end - - $display ("test 8 MSB data values starting with positive disparity"); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - check (1, (test_data[2:0] << 5) | 5'h11, 1'b0); // 17 - end - - $display ("test control starting with positive disparity"); - check (1, `K_23_7, 1'b1); - check (1, `K_27_7, 1'b1); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - check (1, `K_28_0 | (test_data[2:0] << 5), 1'b1); - end - check (1, `K_29_7, 1'b1); - check (1, `K_30_7, 1'b1); - -// $display ("invalid control character with positive disparity"); -// check (1, 8'h0, 1'b1); - - limit[8:0] = 9'h100; # 1; - - $display ("trying all byte pairs starting with negative disparity"); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h100; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - for (test_data_second[8:0] = 9'h000; test_data_second[8:0] < limit[8:0]; - test_data_second[8:0] = test_data_second[8:0] + 9'h001) - begin - check_pair (0, test_data[7:0], test_data_second[7:0], 1'b0, 1'b0); - end - end - - $display ("trying all controls then bytes with negative disparity"); - $display ("This finds 24 unexpected extra singular commas when sending K_28_7"); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h100; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - for (test_data_second[3:0] = 4'h0; test_data_second[3:0] < 4'hC; - test_data_second[3:0] = test_data_second[3:0] + 4'h1) - begin - check_pair (0, pick_control_byte(test_data_second[3:0]), test_data[7:0], 1'b1, - (test_data_second[3:0] == 4'h3) - | (test_data_second[3:0] == 4'h7) - | (test_data_second[3:0] == 4'h9) ); - end - end - - $display ("trying all bytes then controls with negative disparity"); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h100; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - for (test_data_second[3:0] = 4'h0; test_data_second[3:0] < 4'hC; - test_data_second[3:0] = test_data_second[3:0] + 4'h1) - begin - check_pair_2 (0, test_data[7:0], pick_control_byte(test_data_second[3:0]), - 1'b0, 1'b0, - 1'b1, (test_data_second[3:0] == 4'h3) - | (test_data_second[3:0] == 4'h7) - | (test_data_second[3:0] == 4'h9) ); - end - end - - $display ("trying all controls then controls with negative disparity"); - $display ("This finds 8 unexpected extra singular commas when sending K_28_7"); - for (test_data[3:0] = 9'h000; test_data[3:0] < 4'hC; - test_data[3:0] = test_data[3:0] + 4'h1) - begin - for (test_data_second[3:0] = 4'h0; test_data_second[3:0] < 4'hC; - test_data_second[3:0] = test_data_second[3:0] + 4'h1) - begin - check_pair_2 (0, pick_control_byte(test_data[3:0]), - pick_control_byte(test_data_second[3:0]), - 1'b1, (test_data[3:0] == 4'h3) - | (test_data[3:0] == 4'h7) - | (test_data[3:0] == 4'h9), - 1'b1, (test_data_second[3:0] == 4'h3) - | (test_data_second[3:0] == 4'h7) - | (test_data_second[3:0] == 4'h9) ); - end - end - - $display ("trying all byte pairs starting with positive disparity"); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h100; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - for (test_data_second[8:0] = 9'h000; test_data_second[8:0] < limit[8:0]; - test_data_second[8:0] = test_data_second[8:0] + 9'h001) - begin - check_pair (1, test_data[7:0], test_data_second[7:0], 1'b0, 1'b0); - end - end - - $display ("trying all controls then bytes with positive disparity"); - $display ("This finds 24 unexpected extra singular commas when sending K_28_7"); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h100; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - for (test_data_second[3:0] = 4'h0; test_data_second[3:0] < 4'hC; - test_data_second[3:0] = test_data_second[3:0] + 4'h1) - begin - check_pair (1, pick_control_byte(test_data_second[3:0]), test_data[7:0], 1'b1, - (test_data_second[3:0] == 4'h3) - | (test_data_second[3:0] == 4'h7) - | (test_data_second[3:0] == 4'h9) ); - end - end - - $display ("trying all bytes then controls with positive disparity"); - for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h100; - test_data[8:0] = test_data[8:0] + 9'h001) - begin - for (test_data_second[3:0] = 4'h0; test_data_second[3:0] < 4'hC; - test_data_second[3:0] = test_data_second[3:0] + 4'h1) - begin - check_pair_2 (1, test_data[7:0], pick_control_byte(test_data_second[3:0]), - 1'b0, 1'b0, - 1'b1, (test_data_second[3:0] == 4'h3) - | (test_data_second[3:0] == 4'h7) - | (test_data_second[3:0] == 4'h9) ); - end - end - - $display ("trying all controls then controls with positive disparity"); - $display ("This finds 8 unexpected extra singular commas when sending K_28_7"); - for (test_data[3:0] = 9'h000; test_data[3:0] < 4'hC; - test_data[3:0] = test_data[3:0] + 4'h1) - begin - for (test_data_second[3:0] = 4'h0; test_data_second[3:0] < 4'hC; - test_data_second[3:0] = test_data_second[3:0] + 4'h1) - begin - check_pair_2 (1, pick_control_byte(test_data[3:0]), - pick_control_byte(test_data_second[3:0]), - 1'b1, (test_data[3:0] == 4'h3) - | (test_data[3:0] == 4'h7) - | (test_data[3:0] == 4'h9), - 1'b1, (test_data_second[3:0] == 4'h3) - | (test_data_second[3:0] == 4'h7) - | (test_data_second[3:0] == 4'h9) ); - end - end - end - -encode_8b_10b encode_8b_10b ( - .eight_bit_data_or_control_in (eight_bit_data_or_control_in[7:0]), - .input_is_control (input_is_control), - .mess_up_link_disparity (mess_up_link_disparity), - .ten_bit_encoded_data_out (ten_bit_encoded_data_out[9:0]), - .invalid_control (invalid_control), - .clk (clk), - .reset (reset) -); - -decode_10b_8b decode_10b_8b ( - .ten_bit_encoded_data_in (ten_bit_encoded_data_out[9:0]), - .eight_bit_data_or_control_out (eight_bit_data_or_control_out[7:0]), - .output_is_control (output_is_control), - .invalid_encoded_data (invalid_encoded_data), - .clk (clk), - .reset (reset) -); -endmodule -`endif // TEST_8B_10B - -// `define DISCOVER_WHICH_CODES_ARE_ILLEGAL -`ifdef DISCOVER_WHICH_CODES_ARE_ILLEGAL -module figure_out_error_patterns; - -// NOTE: For the purpose of comparing with the patent, this exploration -// module uses the notation that the LEFTMOST BIT is the LSB. -// All other modules use the more normal Rightmost Bit == bit 0 == LSB - - reg [10:0] i; - - reg [9:0] full_addr; - reg [4095:0] valid; // storage - reg [4095:0] invalid; // storage - -task do_one; - input [3:0] high_addr; - begin - full_addr[3:0] = high_addr[3:0]; // note LSB to left - valid[full_addr[9:0]] = 1'b1; - end -endtask - -task mark_both; - begin -// both - do_one (4'b1001); - do_one (4'b0101); - do_one (4'b1010); - do_one (4'b0110); - end -endtask - -// The alternate Data encoding D.x.A7 is used in the case -// that e = i = 0 and positive running disparity, -// or e = i = 1 and negative running disparity, -// or a Control signal is being sent, -// all while encoding 7 in the MSB. - -task mark_positive; - begin -// positive list - do_one (4'b0100); - do_one (4'b0011); - do_one (4'b0010); - if (full_addr[5:4] != 2'b00) - do_one (4'b0001); // P - else - do_one (4'b1000); // A - end -endtask - -task mark_negative; - begin -// negative list - do_one (4'b1011); - do_one (4'b1100); - do_one (4'b1101); - if (full_addr[5:4] != 2'b11) - do_one (4'b1110); // P - else - do_one (4'b0111); // A - end -endtask - -task mark_all; - begin - mark_positive; - mark_negative; - mark_both; - end -endtask - -task mark; - input [5:0] val; - input type; - integer type; - - begin - full_addr[9:4] = val[5:0]; // note LSB to left - if (type == 0) - begin - mark_all; - end - else if (type == 1) - begin - mark_positive; - mark_both; - end - else - begin - mark_negative; - mark_both; - end - end -endtask - -initial - begin - -// Clear all bits - for (i[10:0] = 11'h000; i[10:0] < 11'h400; i[10:0] = i[10:0] + 11'h001) - begin - valid[i[9:0]] = 1'b0; - invalid[full_addr[9:0]] = 1'b0; - end - -// Mark patterns which are parts of valid codes - mark (6'b110001, 0); - mark (6'b101001, 0); - mark (6'b011001, 0); - mark (6'b100101, 0); - mark (6'b010101, 0); - mark (6'b110100, 0); - mark (6'b001101, 0); - mark (6'b101100, 0); - mark (6'b011100, 0); - mark (6'b100011, 0); - mark (6'b010011, 0); - mark (6'b110010, 0); - mark (6'b001011, 0); - mark (6'b101010, 0); - mark (6'b011010, 0); - mark (6'b100110, 0); - mark (6'b010110, 0); - mark (6'b001110, 0); - - mark (6'b011000, -1); - mark (6'b100010, -1); - mark (6'b010010, -1); - mark (6'b001010, -1); - mark (6'b111000, -1); - mark (6'b000110, -1); - mark (6'b101000, -1); - mark (6'b100100, -1); - mark (6'b000101, -1); - mark (6'b001100, -1); - mark (6'b001001, -1); - mark (6'b010001, -1); - mark (6'b100001, -1); - mark (6'b010100, -1); - - mark (6'b100111, +1); - mark (6'b011101, +1); - mark (6'b101101, +1); - mark (6'b110101, +1); - mark (6'b000111, +1); - mark (6'b111001, +1); - mark (6'b010111, +1); - mark (6'b011011, +1); - mark (6'b111010, +1); - mark (6'b110011, +1); - mark (6'b110110, +1); - mark (6'b101110, +1); - mark (6'b011110, +1); - mark (6'b101011, +1); - -// Mark patterns which are control codes. - valid[ 10'b111010_1000] = 1'b1; - valid[ 10'b110110_1000] = 1'b1; - valid[ 10'b101110_1000] = 1'b1; - valid[ 10'b011110_1000] = 1'b1; - - valid[ 10'b001111_0100] = 1'b1; - valid[ 10'b001111_1001] = 1'b1; - valid[ 10'b001111_0101] = 1'b1; - valid[ 10'b001111_0011] = 1'b1; - valid[ 10'b001111_0010] = 1'b1; - valid[ 10'b001111_1010] = 1'b1; - valid[ 10'b001111_0110] = 1'b1; - valid[ 10'b001111_1000] = 1'b1; - - valid[~10'b111010_1000] = 1'b1; - valid[~10'b110110_1000] = 1'b1; - valid[~10'b101110_1000] = 1'b1; - valid[~10'b011110_1000] = 1'b1; - - valid[~10'b001111_0100] = 1'b1; - valid[~10'b001111_1001] = 1'b1; - valid[~10'b001111_0101] = 1'b1; - valid[~10'b001111_0011] = 1'b1; - valid[~10'b001111_0010] = 1'b1; - valid[~10'b001111_1010] = 1'b1; - valid[~10'b001111_0110] = 1'b1; - valid[~10'b001111_1000] = 1'b1; - - for (i[10:0] = 11'h000; i[10:0] < 11'h400; i[10:0] = i[10:0] + 11'h001) - begin -// Get rid of patterns in the 6 LSB with less than 2 or greater than 4 bits set. - if ((i[9] + i[8] + i[7] + i[6] + i[5] + i[4]) < 2) - begin - invalid[i[9:0]] = 1'b1; - end - if ((i[9] + i[8] + i[7] + i[6] + i[5] + i[4]) > 4) - begin - invalid[i[9:0]] = 1'b1; - end -// Get rid of patterns in the 4 MSB with less than 1 or greater than 3 bits set. - if ((i[3:0] == 4'h0) | (i[3:0] == 4'hF)) - begin - invalid[i[9:0]] = 1'b1; - end -// Get rid of total patterns with less than 4 or greater than 6 bits set. - if ((i[0] + i[1] + i[2] + i[3] + i[4] + i[5] + i[6] + i[7] + i[8] + i[9]) < 4) - begin - invalid[i[9:0]] = 1'b1; - end - if ((i[0] + i[1] + i[2] + i[3] + i[4] + i[5] + i[6] + i[7] + i[8] + i[9]) > 6) - begin - invalid[i[9:0]] = 1'b1; - end -// Get rid of patterns with the 4 LSB all 0 or all 1 - if ((i[9:6] == 4'b0000) | (i[9:6] == 4'b1111)) - begin - invalid[i[9:0]] = 1'b1; - end -// Get rid of patterns which use D.7.y with the wrong disparity. 8 - if ((i[9:4] == 6'b111000) & (i[3] + i[2] + i[1] + i[0] == 1)) // minus then minus - begin - invalid[i[9:0]] = 1'b1; - end - if ((i[9:4] == 6'b000111) & (i[3] + i[2] + i[1] + i[0] == 3)) // plus then plus - begin - invalid[i[9:0]] = 1'b1; - end -// Get rid of patterns which use D.x.3 with the wrong disparity. 28 - if ( (i[3:0] == 4'b0011) - & ((i[9] + i[8] + i[7] + i[6] + i[5] + i[4]) == 2)) - begin - invalid[i[9:0]] = 1'b1; - end - if ( (i[3:0] == 4'b1100) - & ((i[9] + i[8] + i[7] + i[6] + i[5] + i[4]) == 4)) - begin - invalid[i[9:0]] = 1'b1; - end - end - -// Get rid of case when D.x.3 and D.7.y are used together as D.7.3 - valid[10'b111000_0011] = 1'b1; - valid[10'b000111_1100] = 1'b1; - - for (i[10:0] = 11'h000; i[10:0] < 11'h400; i[10:0] = i[10:0] + 11'h001) - begin -// Get rid of non-control codes which use alternate encoding inappropriately. 32 -// These are all the data items except 23, 27, 29, and 30 which do not end in -// 00 or 11 as the MSB. This excludes control codes, which use alternate encoding. - if ( (i[9:4] != 6'b111010) & (i[9:4] != 6'b000101) // 23 - & (i[9:4] != 6'b110110) & (i[9:4] != 6'b001001) // 27 - & (i[9:4] != 6'b101110) & (i[9:4] != 6'b010001) // 29 - & (i[9:4] != 6'b011110) & (i[9:4] != 6'b100001) // 30 - & (i[9:4] != 6'b001111) & (i[9:4] != 6'b110000) // K28 - & (i[9:4] != 6'b110100) // 11 - & (i[9:4] != 6'b101100) // 13 - & (i[9:4] != 6'b011100) // 14 - & (i[9:4] != 6'b100011) // 17 - & (i[9:4] != 6'b010011) // 18 - & (i[9:4] != 6'b001011) // 20 - ) - begin - if ((i[3:0] == 4'b0111) | (i[3:0] == 4'b1000)) - begin - invalid[i[9:0]] = 1'b1; // not a candidate for alternate D7 at all - end - end - - if ( (i[9:4] == 6'b110000) // K28 - | (i[9:4] == 6'b001111) // K28 - | (i[9:4] == 6'b110100) // 11 - | (i[9:4] == 6'b101100) // 13 - | (i[9:4] == 6'b011100) // 14 - ) - begin - if (i[3:0] == 4'b0001) // cant use normal + - begin - invalid[i[9:0]] = 1'b1; - end - end - - if ( (i[9:4] == 6'b100011) // 17 - | (i[9:4] == 6'b010011) // 18 - | (i[9:4] == 6'b001011) // 20 - ) - begin - if (i[3:0] == 4'b1000) // cant use alternate + - begin - invalid[i[9:0]] = 1'b1; - end - end - - if ( (i[9:4] == 6'b110000) // K28 - | (i[9:4] == 6'b001111) // K28 - | (i[9:4] == 6'b100011) // 17 - | (i[9:4] == 6'b010011) // 18 - | (i[9:4] == 6'b001011) // 20 - ) - begin - if (i[3:0] == 4'b1110) // cant use normal - - begin - invalid[i[9:0]] = 1'b1; - end - end - - if ( (i[9:4] == 6'b110100) // 11 - | (i[9:4] == 6'b101100) // 13 - | (i[9:4] == 6'b011100) // 14 - ) - begin - if (i[3:0] == 4'b0111) // cant use alternate - - begin - invalid[i[9:0]] = 1'b1; - end - end - end - - $display ("LSB is to the left"); - for (i[10:0] = 11'h000; i[10:0] < 11'h400; i[10:0] = i[10:0] + 11'h001) - begin - if ((valid[i[9:0]] !== 1'b1) & (invalid[i[9:0]] !== 1'b1)) - begin - $display ("not set %b", i[9:0]); - end - if ((valid[i[9:0]] === 1'b1) & (invalid[i[9:0]] === 1'b1)) - begin - $display ("both set %b", i[9:0]); - end - end - - end -endmodule -`endif // DISCOVER_WHICH_CODES_ARE_ILLEGAL Index: trunk/Readme =================================================================== --- trunk/Readme (revision 47) +++ trunk/Readme (nonexistent) @@ -1,49 +0,0 @@ -// This directory contains files which are too small to be projects in themselves. -// -// Examples of such files might be: -// prototype copyright files -// parameterizable cell libraries -// files which implement some interesting low-level function -// files which are used as components in several projects -// -// Each file should be self-documenting so that a quick glance would serve -// to explain what it is and why it is here. -// -// As a courtesy, each file could also have a small entry here to make it -// easy to browse the directory looking for interesting stuff. -// -// "opencores_copyright.v" is an example of a copyright file one might -// include to control the use and abuse of a file stored in this web site. -// -// "synchronizer_flop.v" is a behaviorial description of a 1-bit flop. -// It should be manually instantiated in EACH AND EVERY MODULE which -// uses a flop to synchronize a signal from one clock domain to another. -// In real use, the user of this file will generate a simulation module -// which will behave like a normal flop when presented with 1, 0, X, or Z. -// This special-purpose module will NOT have setup and hold tests. It will -// NOT convert a valid value into an X due to setup timing being violated. -// This module makes it possible to simulate gate-level netlists with -// multiple clock domains without fear of making inappropriate X's. -// -// "grey_to_binary.v" is an example of code which takes a binary number -// and converts it to grey code, and vice versa. -// This module has a parameter which describes how wide the operands -// are. -// This module does not use for-loops to generate the functions. Instead, -// it manually does the translation for widths up to 16 bits. -// If the user wants fewer bits, the synthesis tool removes the extra. -// -// "plesiochronous_fifo.v" is an example of a FIFO which transfers packets -// between two clock domains. -// The clocks are REQUIRED to be close to one-another in frequency. -// The Writer is REQUIRED to skip writes every so often, to make sure that -// the FIFO doesn't overflow. -// This file instantiates the synchronizer_flop mentioned above. -// -// "hamming_ecc_64.v" is an example of how to use 8 bits of redundant data to -// correct single-bit errors and detect double-bit errors in 64 bits of data. -// There are probably better ways to reorder the terms to reduce loads, and -// to change the formulas to detect a larger percentage of likely errors. -// - - Index: trunk/220_vhdl_declarations.htm =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/220_vhdl_declarations.htm =================================================================== --- trunk/220_vhdl_declarations.htm (revision 47) +++ trunk/220_vhdl_declarations.htm (nonexistent)
trunk/220_vhdl_declarations.htm Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/specification_template.dot =================================================================== --- trunk/specification_template.dot (revision 47) +++ trunk/specification_template.dot (nonexistent) @@ -1,1259 +0,0 @@ -ÐÏࡱá>þÿ ÊÌþÿÿÿÈÉÏÐÑÒÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì¥ÁY  ¿³bjbjóWóW }‘=‘=¨ôÿÿÿÿÿÿ]2222‚‚‚4¶¶¶¶h,J¼¶^1nZ6ÊZZpjé¼¥`#1%1%1%1%1%1%1$Ì2ôÀ4¬I1‚ ?@  I1y#22ZpÏZy#y#y# Þ28Z‚p#1¶¶2222 #1y#€y#ù%29/¼j‚#1pTñCs©ZÁ¶¶ã!–õ0. -Sample IP Core Specification - - - -Author: Lior Shtram -lior.shtram@flextronicssemi.com - - - - -Rev. 0.8 - TIME \@ "MMMM d, yyyy" October 22, 2001 - - - - - - - - - - - - - - -This page has been intentionally left blank. - Revision History -Rev.DateAuthorDescription0.130/1/01Lior ShtramFirst Draft0.22/201Rudolf UsselmannRemoved Header and Footer on Title Page. -Changed Page numbering to start after Title Page. -Changed Document Title Font to Times.0.306/02/01Richard HerveilleChanged OpenCores.com to OpenCores.org. -Changed tables so WISHBONE signals fit into cells, centered width column. -Changed page-numbering, start counting from Introduction page using Arabic numbers. Use Roman numbers for other pages. -Changed date on title page to autoupdate. -Added Contents page, used crosslinks for automatic header and page number generation.0.413/3/01Yair AmitayAdded “Clocks” section.0.53/5/01Jeanne WiegelmannCapitalized and modified headings. -Added shadings to tables. -Saved template as ‘dot’.0.613/5/01Jeanne WiegelmannModified document styles. -Created new Table of Contents.0.615/5/01Jeanne WiegelmannAdded Appendix and Index.0.729/5/01Damjan LampretChanged chapter order. Added OC logo.0.822/10/01Damjan LampretChanged all port names as per new coding guidelines convention. - Contents - TOC \t "Heading 3,2,Index,1,Appendix A,1,Heading 2 name,1,Appendix B,1" Introduction  PAGEREF _Toc518887500 \h 3 -Architecture  PAGEREF _Toc518887501 \h 3 -Operation  PAGEREF _Toc518887502 \h 3 -Registers  PAGEREF _Toc518887503 \h 3 -List of Registers  PAGEREF _Toc518887504 \h 3 -Register 1 – Description  PAGEREF _Toc518887505 \h 3 -Clocks  PAGEREF _Toc518887506 \h 3 -IO Ports  PAGEREF _Toc518887507 \h 3 -Appendix A  PAGEREF _Toc518887508 \h 3 -Appendix B  PAGEREF _Toc518887509 \h 3 -Index  PAGEREF _Toc518887510 \h 3 - - -Introduction -This section contains the introduction to the core, describing its use and features. - - -Architecture -This section describes the architecture of the block. A block diagram should be included describing the top level of the design. - - - -Operation -This section describes the operation of the core. Specific sequences, such as startup sequences, as well as the modes and states of the block should be described. - - -Registers -This section specifies all internal registers. It should completely cover the interface between the core and the host as seen from the software view. -List of Registers -NameAddressWidthAccessDescriptionTable  SEQ Table \* ARABIC 1: List of registers -Register 1 – Description -(You shall choose the style of register you prefer. Do not use both options in one and the same document.) -Bit #AccessDescriptionReset Value: - Reg_Name: 0000h - -31302928...876543210Table  SEQ Table \* ARABIC 2: Description of registers -Reset Value: - Reg_Name: 0000h - -Clocks -This section specifies all the clocks. All clocks, clock domain passes and the clock relations should be described. - -NameSourceRates (MHz)RemarksDescriptionMaxMinResolutionclk_pad_iInput Pad1040.1Duty cycle 70/30.For external interface.wb_clk_IPLL200--Must be synchronized to sm_clk_iSystem clock.sm_clk_iInput port55401There are multi-clocks paths.Clock 55MHz for State machine.Table  SEQ Table \* ARABIC 3: List of clocks - - -IO Ports -This section specifies the core IO ports. - -PortWidthDirectionDescriptionwb_clk_i1InputBlock’s WISHBONE Clock Inputwb_rst_i1InputBlock’s WISHBONE Reset Inputwb_sel_i4InputBlock’s WISHBONE Select Inputsfoo_pad_o1OutputBlock’s foo output to output pad…Table  SEQ Table \* ARABIC 4: List of IO ports - - -Name -This section may be added to outline different specifications. - -Name -This section may be added to outline different specifications. - - -This section contains an alphabetical list of helpful document entries with their corresponding page numbers. - OpenCores  TITLE \* MERGEFORMAT Specifications Template  DATE \* MERGEFORMAT 10/22/01 - - - -HYPERLINK "http://www.opencores.org/"www.opencores.org Rev 0.8 Preliminary  PAGE ii - - OpenCores  TITLE \* MERGEFORMAT Specifications Template  DATE \* MERGEFORMAT 10/22/01 - - - -HYPERLINK "http://www.opencores.org/"www.opencores.org Rev 0.8 Preliminary  PAGE iv - - - - - -HYPERLINK "http://www.opencores.org/"www.opencores.org Rev 0.8 Preliminary  PAGE 9 of  SECTIONPAGES9 - - - EMBED PBrush  - - - -"UVZcd|}Ž’ŸÌÍÞû<ì$D{}¾¿  ' ( q r  € š › œ ž ¬ ­ Ç È É Ê Ë Ö × ñ ò ó ô õ - - -úöòòîåîåßåîòÙÖÎÌÉÉÉÉÉÁúú¾·¾­·¾·¾·¾£·¾·¾·¾™·¾·¾·¾júUmHj}UmHjUmH -jUmHmH5CJHOJQJmH55CJ$OJQJCJ( -6B*CJ 5CJ mHj5CJ U5CJ 6CJ 5CJ4 jU: !"6VWXYZc‘’“”•–—˜™š›œžýûôôôññôôôôôôôôýýýýýýýýïýýý3$$ -Æf! !"6VWXYZc‘’“”•–—˜™š›œžŸÌÞãèïûü !%+<e—½¾ÂýûùöóðéâÛÔÐÉ»´°©¢›”†‚{ " -àþÿÿáþÿÿ " -ÿÿÿ " -9ÿÿÿ " -bÿÿÿ " -sÿÿÿ " -yÿÿÿ " -}ÿÿÿ~ÿÿÿ " -Šÿÿÿ " -–ÿÿÿ " -žÿÿÿ " -¢ÿÿÿ£ÿÿÿ " -¯ÿÿÿ " -¶ÿÿÿ " -»ÿÿÿ " -ÀÿÿÿÒÿÿÿÿÿÿÿ3 0žŸÌÞãèïûü ýúóðððð¢”ððððM$$–l4 -t¯Ö    Ö\”ÿÐ3¶ -À!< c ƒ  -  Ö˜˜˜˜"$$¤à¤ð$ !%+<e—½¾ÂËݸtµµµµµµn$µµµµF$$–l -t¯Ö    Ö\”ÿÐ3¶ -À!<cƒ -"$F$$–l -t¯Ö    Ö\”ÿÐ3¶ -À!<ÿÿÿÿcÿÿÿÿƒÿÿÿÿ -ÿÿÿÿ ÂËÝOÆðFGKS_wx|ƒ•¸Òëìðø -$CDHPùòëäÝÖÏËĽ¶¯«¤–ˆ}vohaZVOH " -Vüÿÿ " -Züÿÿ[üÿÿ " -züÿÿ " -”üÿÿ " -¦üÿÿ " -®üÿÿ " -²üÿÿ³üÿÿ " -Ìüÿÿ " -æüÿÿ " - ýÿÿ " -ýÿÿ " -"ýÿÿ " -&ýÿÿ'ýÿÿ " -?ýÿÿ " -Kýÿÿ " -Sýÿÿ " -WýÿÿXýÿÿ " -®ýÿÿ " -Øýÿÿ " -Oþÿÿ " -™þÿÿ " -Áþÿÿ " -Óþÿÿ " -ÜþÿÿOÆðFGKS_wx|ƒ•¸Òëìðø -$üüüüµÄüüüüµÐüüüüüüµ`üüüüF$$–l -t¯Ö    Ö\”ÿÐ3¶ -À!<cƒ -"$$CDHPb|}‰˜¾¿ÃÌÛ   ' üµäüüüüµüüüüµtüüüüµ³¬$¤à¤ðF$$–l -t¯Ö    Ö\”ÿÐ3¶ -À!<cƒ -"$Pb|}‰˜¾¿ÃÌÛ   ' Ÿ Ì ö -R -‹ -² -Û - 1 W Y Z [ h ½ ¾ ùòîçàÙÒÎÇÀ¹²®«¨£ž™”Š…€{vqlf`[XUÿÿÿòÿÿÿcÿÿÿÿ -  -Eùÿÿ !Gùÿÿmùÿÿ˜ùÿÿÃùÿÿìùÿÿúÿÿLúÿÿ~úÿÿ¨úÿÿÒúÿÿÿúÿÿwûÿÿûÿÿ‚ûÿÿƒûÿÿ " -Ãûÿÿ " -Òûÿÿ " -Ûûÿÿ " -ßûÿÿàûÿÿ " -üÿÿ " -üÿÿ " -üÿÿ " -!üÿÿ"üÿÿ " -<üÿÿ " -Nüÿÿ ' Ÿ Ì ö -R -‹ -² -Û - 1 W Y Z [ h ½ ¾ ¿ Ì M N P Q [ þ ÿ ùùùùóóùùùùùîåãáßßãáßßßãáßßc  -Æ àÀ!3Ë!dh -ƶ! - -ƶ! - - - - - -2 -3 -M -N -O -P -Q -k -l -† -‡ -ˆ -‰ -Š -’ -“ -­ -® -¯ -° -± -» -¼ -Ö -× -Ø -Ù -Ú -æ -ç -       , - . / 0 7 8 R S T U V W X N O ² -Ø -ñ -õîëîëîëáîëîëîë×îëîëîëÍîëîëîëÃîëîëîë¹îëîëîë¯îëîëîë¥îëîëžîœ5 -jCJUjâUmHjeUmHjèUmHjkUmHjîUmHjqUmHjôUmHmH -jUmHjwUmH<¾ ¿ Ì M N P Q [ þ ÿ - - -  -² -· -¿ -Å -Ì -Ø -Ù -Ú -Û -Ü -Ý -Þ -ß -à -á -â -ã -ä -å -÷òïìéáòÞÛÓòÞÍÆ¿¸±ª¦Ÿ˜‘Šƒxqjc\X¼ÿÿÿ " -½ÿÿÿ " -¾ÿÿÿ " -¿ÿÿÿ " -Àÿÿÿ " -ÁÿÿÿÂÿÿÿ " -Ãÿÿÿ " -Äÿÿÿ " -Åÿÿÿ " -Æÿÿÿ " -ÇÿÿÿÈÿÿÿ " -Ôÿÿÿ " -Ûÿÿÿ " -áÿÿÿ " -éÿÿÿ " -îÿÿÿ -_ÿÿÿ  -Rÿÿÿõÿÿÿ  -pÿÿÿqÿÿÿòÿÿÿcÿÿÿÿ  -ÿ - - -  -² -· -¿ -Å -Ì -Ø -Ù -Ú -Û -Ü -Ý -Þ -ýûù÷ôôôôôšôôôôôY$$–l4 -t¯ÖÖr”ÿÐŒ -jf!<8„Þü Ö -”””””"$cÞ -ß -à -á -â -ã -ä -å -æ -ç -è -é -ê -ë -7¢¨¯­ªªªªª­ªªªª¥­£¡Ÿªª "$$"$Q$$–l -t¯ÖÖr”ÿÐŒ -jf!<8„Þüå -æ -ç -è -é -ê -ë -7¢¨¯»¼½¾¿ÀÁÂÃÄÅÆÇÈÕæçêíùòëäÝÙÔÎËĽ¶²«¤™’‹„€yrkgda\UN " -4ÿÿÿ " -7ÿÿÿ38ÿÿÿIÿÿÿVÿÿÿWÿÿÿ " -Xÿÿÿ " -Yÿÿÿ " -Zÿÿÿ[ÿÿÿ " -\ÿÿÿ " -]ÿÿÿ " -^ÿÿÿ_ÿÿÿ " -`ÿÿÿ " -aÿÿÿ " -bÿÿÿcÿÿÿ " -oÿÿÿ " -vÿÿÿ " -|ÿÿÿçÿÿÿ -áþÿÿ µÿÿÿ¶ÿÿÿ " -·ÿÿÿ " -¸ÿÿÿ " -¹ÿÿÿ " -ºÿÿÿ " -»ÿÿÿñ -ò -  -¢»ÈÕç ./DEFGboý),?/0EFGH°‚—˜™š¨©ª³´µÌÍäåæçýþ   123DENZ[úú÷úõóõúú÷úóõõúú÷úõúú÷úêåõúúúúú÷úßÔßÆÔ¿Ôº´©j0JOJQJU B*OJQJOJQJ 0JOJQJj‚ -B*OJQJUjB*OJQJU B*OJQJOJQJj_OJQJU65mH jU@¯»¼½¾¿ÀÁÂÃÄÅÆÇÈüºüüü~üüü~üüü~;$$–l -t¯ÖÖF”ÿÐf!<8^A$$–l4 -t¯ÖÖF”ÿÐf!<8^ Ö”””"$ÈÕæçêíðó÷ùûýÿ ù÷õòòòòòòòòòòòòòò"$3¤x¤íðó÷ùûýÿ  -   -ùòëäÝÖÏÈÁº³¬¨¡š“Œ…~wpib[TMF " -ÿÿÿ " -ÿÿÿ " - ÿÿÿ " - -ÿÿÿ " - ÿÿÿ " - ÿÿÿ " - -ÿÿÿ " -ÿÿÿ " -ÿÿÿ " -ÿÿÿ " -ÿÿÿ " -ÿÿÿ " -ÿÿÿ " -ÿÿÿÿÿÿ " -ÿÿÿ " -ÿÿÿ " -ÿÿÿ " -ÿÿÿ " -ÿÿÿ " -!ÿÿÿ " -#ÿÿÿ " -%ÿÿÿ " -'ÿÿÿ " -+ÿÿÿ " -.ÿÿÿ " -1ÿÿÿ  -   -<<99999"$Â$$–l4ÖÖ8”ÿÂÙúüj†¢¾Úö.Jf!.!|€ ֘˜˜˜˜˜˜˜˜˜˜˜˜˜üüüüüüüüü"$  !"#$%&'(bo€ˆüý )*ûôíæßØÑÊüµ®§ ™•Š‚}zwpib[TPWÿÿÿ " -cÿÿÿ " -kÿÿÿ " -wÿÿÿ " -~ÿÿÿ " -ƒÿÿÿ„ÿÿÿøÿÿÿcÿÿÿÿ  -¯þÿÿ¼þÿÿ öþÿÿ÷þÿÿ " -øþÿÿ " -ùþÿÿ " -úþÿÿ " -ûþÿÿ " -üþÿÿ " -ýþÿÿ " -þþÿÿ " -ÿþÿÿ " -ÿÿÿ " -ÿÿÿ " -ÿÿÿ " -ÿÿÿ " -ÿÿÿ " -ÿÿÿÿÿÿ M<JJJJJJJ"$±$$–lÖÖ8”ÿÂÙúüj†¢¾Úö.Jf!.!| !"#$%&'üüüüüü÷"$$"$'(bo€ˆüMKGECAEc¤ ±$$–lÖÖ8”ÿÂÙúüj†¢¾Úö.Jf!.!|ÂÂÂÂÂÂÂÂÂüý )*+,04?@Aýúúúúú¢`úúúúúúúX$$–l44ÖÖr”ÿ8ül"`¿`à» -`p`¼ Ö -”””””"$*+,04?@ABLVY[_q‰Š“—›ŸÀÎÏØãæùòëäÝÖÏËĽ¶¯¨¡š–ˆzsleaZSL " -þÿÿ " -¨þÿÿ " -±þÿÿ²þÿÿ " -Àþÿÿ " -áþÿÿ " -ãþÿÿ " -åþÿÿ " -éþÿÿ " -íþÿÿ " -öþÿÿ÷þÿÿ " -ÿÿÿ " -!ÿÿÿ " -%ÿÿÿ " -'ÿÿÿ " -*ÿÿÿ " -4ÿÿÿ " ->ÿÿÿ?ÿÿÿ " -@ÿÿÿ " -Aÿÿÿ " -Lÿÿÿ " -Pÿÿÿ " -Tÿÿÿ " -Uÿÿÿ " -VÿÿÿABLVY[_q‰‘ ŽŽŽŽŽŽŽ"$n$$–l44ÖÖž”ÿ8æ -¶ -ül" ¼ ¼ÅÅ1 1 1 Ö -‰Š“—›ŸÀÎÏØãæéë (š———————šh——————’"$$"$d$$–lÖÖž”ÿ8æ -¶ -ül"¿àÅÅ1p¼æéë ()YZ[dŽ”š¤°±º¼Âßàéëñ ùòëäàÛØÐËÈž·°©¥ž—‰…~wpie^WP " -@ÿÿÿ " -Bÿÿÿ " -KÿÿÿLÿÿÿ " -iÿÿÿ " -oÿÿÿ " -qÿÿÿ " -zÿÿÿ{ÿÿÿ " -˜ÿÿÿ " -žÿÿÿ " - ÿÿÿ " -©ÿÿÿªÿÿÿ " -¶ÿÿÿ " -Àÿÿÿ " -Æÿÿÿ " -ËÿÿÿÌÿÿÿöÿÿÿcÿÿÿÿ  -'þÿÿ WþÿÿXþÿÿ " -wþÿÿ " -•þÿÿ " -—þÿÿ " -šþÿÿ()YZ[dŽ”š¤°š˜–”’––"$c d$$–lÖÖž”ÿ8æ -¶ -ül"¿àÅÅ1p¼ °±º¼Âßàéëñ±¼®®®®g¼®®®®gÄF$$–l -t¯ÖÖ\”ÿüʶ -À!hSn"$M$$–l4 -t¯ÖÖ\”ÿüʶ -À!hSn Ö””””  ?@JLStuwxyz{­®¯´üüü÷°Ôüüü÷°üüü÷°®¬ª¨$) F$$–l -t¯ÖÖ\”ÿüʶ -À!hSn"$$"$ ?@JLStuwxyz{­®¯´óôù89:¨Íäþ ENbdgÇÈÉÊ -!#&')*+š›œ²³ùõîçàÙÕÎÇÀ¹µ°­§¢Ÿ™—‘Œ‰‰‰‰‰ - - -# $ -d úÿÿÿ$ÿÿÿÿ -) ­þÿÿ ßþÿÿàþÿÿ " -áþÿÿ " -âþÿÿ " -ãþÿÿ " -åþÿÿæþÿÿ " -ÿÿÿ " -ÿÿÿ " -ÿÿÿ " -ÿÿÿÿÿÿ " -:ÿÿÿ3´óôù89:¨  - fgÇÈÉÊ&'()*+š›œ°ýûùýý÷óñýìììýñýìììýýýêêêýýý$d¤#$d[abdefghirst‹Œ£¤¥¦¼½ÅÆÈÊËðñò - !#$%&+,QRSdenz{‚ƒ„ˆ‰–—˜ùîåîà×ÒÐËËËËËÈË·©·¢·àœîùîåîùà˔ˢ˒îùîåîùîùîåB*jïU B*OJQJ 0JOJQJjJB*OJQJUjB*OJQJU B*OJQJmH jU5OJQJj' OJQJUOJQJ0JOJQJmHj0JOJQJU 0JOJQJ9˜™œ¬­®¯³ôïçâï j”UjNÓ> -UV jUj0JOJQJU°±²³ýýù¤8 -000€0&PP/R °Ð/ °à=!°"°# $ %°. 00€&P/R °Ð/ °à=!°"°# $ %°+0€P/R °Ð/ °à=!°"°# $ %°nðE -³LZ­d7T6Z/•Ûvï7¶ÿ‰PNG - - -IHDRÇc'gAMA±ˆ•˜ô¦ pHYsÃĈ.>£ ÖIDATxœíÝ;–ã¶Pô[Nô|z¾<€zAµËe}HÄçØ;êU-‘H#R”ôããã#À¡ÿМӜӜӜӜӜûmô&ðó÷?>ÿñ×ߎ À(Ž-N|UÅÿ¶¢-Ž<׃Âö¤-ÞzW -ضxí¸°mñBN( `+ÚâQ~ -( `Úâ?®€Â6¡-þUý -ضøåNè+ `yÚ"¥q¯0€µi‹jA¯0€…íÞu#^a«Úº-Z„»Â–´o[´‹u…¬gÓ¶hè -XÌŽmÑ'Ê°’£Ç0L‡@÷JÀ¶n‹/MkCa ÐÿѨ60;mñB‹ÎPÀÔ´Å[Õ;CaóÒ'êv†Â&µã´—ÔÍw—Õ“rl‘«bÐ;¦ãØ"Wňw„LG[\ 0€mi‹k°'mq™Â6¤-J( `7ڢ¶¢-Ê) `Úâ…lB[Ü¥0€ü6zuäçlðÏQÿüýà#ö4÷7Üy1ù  ͬmQ+ÞGR@(óµEØŸ*ò{ÀÂ&{—»ÑûÀU[=ܽé -Ä1ͱEŸè¼™øa{nšãØ¢Û«ì›+j‘ìŽ0€&h‹Îq0 ØMô¶”q.Ìý¢0€±¢·_0P趘1£9樀Äm‹áÉX<€¦W1 -Ÿ`OqÛ‚wÐ_жˆA†ñ,ìÀ€Um‹ÙuøHÂzŠØ¡r0Ô`D°˜ˆmA>…ô¡-¦§0€µEÀì 8¤ñGÌ.\[PFaMi‹VúÓ¸ÂÚÑKQ@#Úb5 -hA[,HaÕi‹5)  .m±,…T¤-V¦0€Z´ÅâP…¶XŸÂîÓ[PÀMÚ¢•hm<À\´ÅFP,\[ôÿz¥S‡TLae¶…`ŠÉv -´j ‘™­\Õ¤-n†Q¨3?¡S‘Â.©ßßchÛHšâO1H ˆÊmQ+€‚¼¢2Œv©f[ˆžÙj@Žjmñ.tŠÃhøëúâL—¿Ó -è¯N[4Š›…1¼«:SÀ± -m!hÖ`;î¶ENÄ܉¡!¯ñï¬têÌzð@S·Ú¢O¸t.ŒÝÎA=PÀKåmq)Vfù¼ÞÍ­µk< - ®w+”*‰ß.ȺÒ,Y¼ù1ð ¤-Æ^Û"m&cäòPÀ—Ëmä-ëÅ>4ž¢ÖFœùƺÖ÷­nú©®º¢ÕF؉zºÐ‘_Îçm–ì Õ³LÐNn[T /Ñ“/NgØj°¹¬+hëfVœŒ/NFÛj°¹óc‹õ¾jFAÂÚVƒm[´ © ñ7‹ 1m«Á¶ŽŽ-:DCœH„¼¶Õ`Co-ú¤R„ì›K„¤¶Õ`C¯Û¢gˆž«Ðß‹¶è¢ç*…tVów¹ï=3j·Õ~¼Òh]ë1{q¬´-¢´ERª~ˆsütšýÉÖšÙ‹cÉmñúš¨±Áá4Kpšµîf*xæ”}Ùþª®N Ùkdá=ùõ±ÅؼŽ…‘E˜ŸáUQ|¯%L…Ùkaí=yðç-Ž9Èx6|£¤Uñe–×eíÜ™@³WÑò{òÉ7¬—M¼œ´°¿uUŸªx¹[^ºñ&^ÎÉ󄘺ÖvØ“‡}OÔUÁ;ãÒ,•=–b`Uß+øÓ¬‘«SaêÙdOÎúÆò9õ%ZmôùE¦› ÅPÏÌÙ!Ÿïù9ÖÎÕy˜.žf±Éž<à÷-j^Ý~*ÂäÇ©Š›÷}¹‚§èê<ɯ.³` u§ýæ£Îß7g»é™Ÿ±{ræÞÜÛ-¤ÿoçµÓ­?ªOÅÁÈ#L{‹‰½=9w1w²ãô̲Ô;Xì»–M`Yj?ꂇ|óí–ÌUç,!s9—VÑgO®õ–U~÷þ]îjE^»Ixa„ oÔÁ¡žc™c¸=Cz·À>'1Z<ä̶®¾êâå²'çÌaæ~•ß×>Ë=üäO±øUñ¼ð…«âYŸÓµ§ÏŸƒäGϥʹqÎmVEúçÃÉw–YV·¼z=k­=tØ“«TEæm¾»üÍóÆ}âûkkWÅýgæýw.ݬQôDþXÖÀOüµ˜í'÷×[v—çÝ\Â×^Ù”5B–å[æ³=5}YPå,ÊéB2ß (8³®;ÚŸž’îpª` /‡QpBéþlgž]¹?Ã÷ä—÷ÊÙ4ïÞ~«ànGªbϯ+O.'ŠSòå}‡Ë‰››/Ïß½Ìo=Ûǃ¹³þŽ•nyú—SåßA»p åÏa-·¾±|ŠX¹9HU±’ºA¿‚4æÇ7£ÇÒVþɱ«Ûîîï[¬.»±5ŸÝ —Iƒ©õ°k]ózpßÓ+¡g¯!%]á׎˜­,ÞŽŽ/¥}§çê;MgÛ†»¤Îoç-4ª¢¯Œf9%BWßØ(댭öäj¿´³0bŽ*³´•}^J‡ÝIÕü]n¡3£ [­ÑÇßVuóÒ}N¿\ºä©ÖÙ­¦·¨f[¤0Ñsß&§¡–Ù^==*øÀèÁ>úžMÎÚ×}ÔUf;ìæ˜Kå¶HhѶT~lux9¶O²¼h±'çw^]{ý¶Hñbˆg÷QõW 97+xÚôy³´@Áɨâ±_!V¶Ì—ªÏöÁmjm Ù“‡hÒ)@ݱüi¨°[çôùá„ûiå ¼¦¶]¬¿¼{‡X0Û®²½´Ìh{òóº -ÖÞª-R€H>€˜âLËÕ³/óWZåi“¹Ö¯_.ÿR¬¿aÎ’»=䫳]pÔõ¼K†ìÉWÇSÐy¶EŠL|Š¶Ežf™¯é -ž`§‹}XfÙsoà)…>SWe™ ¹?Û/+§â«û!{rgmÛ"Å‹§ÅÜwž$-ž`/—ö™\<°Ó;|È÷W=¤àCíÉ9 ¼ºÒæm‘¢†Ôn"o…º‡ÿÕWTpßžQÛnò—\ýúÔû³=¤íºíÉ™‹=¾ªøê{´EŠU;ˆ?ÿ—âæN6^•_vßü…´puöê.¹]ØåܦJ VÜjÝöäâU¯´S[¤kUÍüÇ? -þ÷êZŽÿR0ÂÌ`}pÿ–9c;ýßœ%çÿýåz ps¶—pú¿·¹4þºÛâÎ>/áê}¿ôk‹4Ul-cÒ9~zÜÙËOWQe„u‡wG£ÙøëÆeÏñ÷_oÝwï¿ëÚiÚðš”Ù†=å\…õì¸Éz·EêaËÈ>½,Œ«‡ Ú"…²àÃ˱ÀC -¼;>ÈüØÇ1m‘ÄYKæ¸êô -•am‘„Zf6WvÀémF¶E -mavlÒau]ºø*ó–ƒÛ" ¸zÌäƒÈ¹BÇ{þÕçÅø¶H-cnŸË¢TðN•}„h‹2ì鉆 -L*J[¤‘pHϦ$0»@m‘ßuf è#V[¤ñwó­‹ÈqylÀbµEŠ‚ÑÆó)樀UEl‹$ -Ϙ ³ m‘ªâýëh{¦ó_ÿy¼:Uô·-R°X< -ñZkyøÇ»ôº-R½p¬õ1½¦aý°ðçu© -`”èm‘âEd‹ñ¼;pùþÇhólåÇ,_žSåà nàv;^ùùûªkš¶HQ߬¾3*Ìb¦¶HQ #]˜’¦3Y[¤À…ñåå50µùÚ"-ýe1MpMÔ³›q¿Ï^Ô2e[$…Ð׬m‘@G·ER½ÌÝIat1}[$…ÐÞ -m‘@c‹´ER-­ÓIa43åg¹Åÿj€é,ulñé~Ö;Èx°à±Å§€¿‡0¯eÛ"MòëªSX¹-RÕsJ:ØÙâm‘j¿ ¡3€=­ß©Ù»ÖšØÇm‘Ú_æ¤9€µíÒièu±º˜Ý‚Ÿ·xgTd« -`µEܪXÃ^m‘úÆ·ª–±][¤^!®*€•ìØ©}”« -`1›¶EjèªXϾm‘Úĺª–´u[¤Úá®*€UíÞ©^Ä« -`aÚ"¥A¯*€µi‹_îĽª–§-þUúªضø«Ñ¯*€Mh‹Gù *€}h‹rj@U[ѯ—ªv£-ÞzW ªض8ò\ ªØ“¶8ñ½T°­~—€bŽ-8§-8§-8§-8§-8÷I_ÿµiÏFCIEND®B`‚`!ð2˜)f’D"ùy¯u“Tšü‹ü&ç|ÄÃ,êþxœì½[o£I– –Ý;Þ1ËN,~4 |3ëZdŽ]É;%S–(±:·»ªrKÕ3Ý.´LŠ’XE‘j’ÊTŽ,?~Ø¿aß 0°?À/ù0ü²o?ùÁH€Žs‹8'">’R*«+gšÌOÉ/.'Î-Nœ¸ÿâAåÁƒvóßüòÁ?{ðõ§Üç¿pÏõKùõ_ÿòyðŸüs÷ë_ýóõà—~¡âÿÜ=où‹ôù3÷|â^¼ÿÝ?ÿËÿÏÈÒ=x°\.}º_àÿþ *µû/ŠoÜ»äÿ¹ç?ãûWò‰aÿîâAøpáM÷œ¸çµ{Þp@Ó='îyíž7îYr¢¦{NÜóÚ=oܳäŒM÷œ¸çµ{Þ¸gÉÀšî9qÏk÷¼qÏÂ!'îyíž7K*¾'îyíž7îY2M÷œ¸çµ{Þ¸gɈ5Ýsâž×îyãž%#Ûtω{^»ç{–L@Ó='îyíž7îY2QM÷œ¸çµ{Þ¸gÉ„6ð}íž7îY2ñM÷œ¸çµ{Þ¸gÉ iºçÄ=¯ÝóÆ=KfRÓ='îyíž7îY2ãšî9qÏk÷¼qÏ’™Ùtω{^»ç{–Ìà&bò¿oܳd¦7Ýsâž×îyãž% ¢éž÷¼vÏ÷,Y8M÷œ¸çµ{Þ¸gÉkºçÄ=¯ÝóÆ=KbÓ='îyíž7îY²`›È•7ˆ -|—,ì¦{NÜóÚ=oܳdhºçÄ=¯ÝóÆ=KVŠ¦{NÜóÚ=oܳdEiºçÄ=¯ÝóÆ=KVž¦{NÜóÚ=oܳ\’¶œ G–ˆ (XÓ='îyíž7îY²Ò5Ýsâž×îyãž%+bÓ='îyíž7îY²r6Ýsâž×îyãž%„¹šxâž×îyƒµò/ä߃¿ø øûWòïÁ_ýüÝ—ö÷áïoå߃ßþþ¾”^¾„¿ÿ^þ=ø÷ÿþþù÷à?üøûå߃ÿøáï’þÓ‚¿ÿ ÿüÃ?üÖñ%ÿYò%¿,éI??¾…o6êýäè|û£úþ佟OJço3ß?f÷ûIèô„eÈýc xOŸ˜ÎXzÿXˆè,QÒ_‘-+åõAké È—ó*²¡Ó“µ–˜N¶†Îr2?xb5LŠEy-1†"k:Å 1ë%÷s—m$Ïå*›û!+r"ϵŠ÷a*²¢“PÞL -w ö+[Eç-È 9>E¶òÌ©íZ?EÎÈÓÄoŠÞÏØŒC`*OGç³05ÂqÚ’Ï»»BžFeý/ãQ0¬’÷eœO7@Q®êíí9¢ómFžÚEàÿ“E‘¹„“¨ yT¯ìŠÍ÷Zk -dÉö[bµUh[…Uù -ÒK5fLÙ犬èÌ©mâ6h‡=ðQ™¡¥!ÆËSœ8 -jDÂ2e})1yÙú° Ïœº¨ŒÆl,5™ÁûQŽ<¥Œë»u—Z'–Ažo•>lRsWËyWÊÓ‚“€¥èß´·kkóÒ³Áš6CØ2ü/7"uYn‚(çjy.…”–[&NÉÓ(¹'t©â,©Ï•ÖoH½ŠÚLÅ_4ºyŠ:•6;1j¶Y)ó€­Ïås.—KYàDðÖò=Ÿ‰ -UþÌRË!"ZI˶¤–ÌØkÊÉSJÎJ¬œXÿë° ™¶&h -Ñ‘w›s—‘å2b—–§uc§ñÇ2E6Zd幡yò -Ñ?„3õ2£¨úíÇK3DcùÖW¸RÛÂÿßEž%DÇJq~i–¥VÛHž–$[¿ãØXä$ÎC¸›¦m-UÛŒ<—ºRä-·",z_y¾“Ú¦ä -W³n¤5*a*Ü’¤ë·VæŒ"›÷Džï ¶éÇ#å­B!¯ð«ê§Qà2vZLÞ<rK¡¥n 5z† 0HOiE¤ÈQ.á{‘§EÍš‡Ô©Ð5ímª¶å%_¦Š;¦^žo7‘ç;©­È©ˆæ›e"ÏT‘¸´<}c» -ÓÒÆø¶Åõ5ŠË9ñˆ—’Rkc¬¶FžkÕV)ß;*¸âzÊ6S[£_Jm³ò̉AÈynª¶±ñ¸ë'¨b\›!oSɦҋŸ˜ -/˜ -åi‹×fåˆÍ©ÄÁ{["ã@Š…—â -Ð7”gÎkÕ¨Þ•Ò¥%¶Ì e]AÁ(iFâw–ç&f(çµ$ßPAˆà„š[î6¦f(ÿfåy µ]S -Ñ·$Q¢‡œÛø6#OÁ+¼i¼Y„n¥¶ÊÙ×*£rÒUv=ãÙp -•:ä)7C›É3d«$kÿ¾Me~ä*#´Ê _9†ÁØo$Ïàž•ËÓòXKøh5&ªÄŠC¢ü·“çR³ãG¦»KÐå=Ô×-g8NÊU-O±råèxéhåQþihT;,§jÞ•â”u¦²$ehyn®¶?zûµÔÄ*~›¶NÛâ¸}¼ë'!&nVRïöÇ ÏÕj”P§5òTí¨V倈örî£Öªß® æ”zy*¹¨´±YHMEl‘­w|/5×ÔÝPNxóbÙHžKÕÁY¾ÍÉSºJžë Ç­?Y{0ò|»NžJm=1K/M„F}…<-’ïJh†Xîåi¬bˆEIqNy'‰yøñ­Ujþý6Ãq•ã]OªÂÛHžËUòTöÒgò\ú_ 'µ‹Z¿¬£}ïµVÁ~»¡<ƒÚZ…ÔòLò¿Uj«ëlfŠªýRÞ}ª-Ïòä¿‘LŒ<-™?¾5JmTØ„.—mHÛâ»~´å ò\á!ZIxyÆ.Ç+Å¡$E\ >uïÁ"ç器€€Ö2'á¶DC¬ª—iCäˆÈ·¦3#ÏRBW#™¤V²4cX‘¬–ŽµqƒtÙþ¨Z{i?7p䃬¬<”‚DS¤²ÆIlêläk…Z¿1ÁZmQžª†UÉK‡¬¬škKª¥H² -üUï¡I+w òø†¼<Å›+FI -Ê_Ö¬$n·I陑01T…`MÖkåjæíTÂ)}Ò¶¦ÍŠ/Ñ:q3¦jØ2°vés¯jxRy¾Õ7o·Ê¬kP»eP¾Ä -C0¤{òlž2}(G/’§6AVNÉ6RÙàUú¢Òv64cÇÃÿÔoSz ™jœÄÏ—éè[»LêŒVÆ 1%;Ÿ*R[ÃS¾5xš-Ù­P2ÿ™6ÕÑw=¥†1ù¿që™ÈSiGâ¾$nãj¼ŒÚ.ýz“\¦»ÊV¡Ñä_±<5™±¦Ùš~3¤×Sß+±yÙªº–ñxÓš¬ë÷Û(4ä*Å –ç2£¨Q®»(²iíBëg Z{«å%ñ¢¼‰Ú®-[×F盬&&ßÌ"ÿHc¬«»!UÞïZ]ª®ß›œß%¸+±‰;îM€ÊáZòº–Ç튭ږœ;¹1wUä4O Oû=š%nãFò\Cç{$v¥Žrý˜,e†tÊ{‘çmˆ¹“"—!üã[£ ^¨ß!d -ÖË3Bæ}ÈÖÃVP–Ú -\Õý[òÇ·º p :=BïƒØL•ðœ›±\;RÛ[Ò¹!1wPd›Ò›mc—÷®Èœâç#OõI‰½óXã^m^òTŸûPd µq?/:éóNŠìÓ[&ýéÄψ5)£?[:ésEŽFƒùó3§“>·’mÑ)>:ñ³ÞÙ9+ù‡Nú¬UäÊ„|htÒgl3Òþ0éÄO±Y¥þ€é¤ÏŠ¦E>x:ñ³¾Îþã “>¥® û¨ûO<ø?ð÷ÇN~qü‹¿8Áà -!ã*I3¿|^hQh BÜñèEãU‚ˆáÞµc÷ÃU(_ãÅåž_Ž)Ÿ'î‡W¡0¢2<üÈ”à2.fýÉ|Ü_ }Yÿw~Ò|R+\ -êÁ‡}üq×Õ¤ÅtöiÑÅÓñørîŠqA¾~\lS¢Ý§ÛGœðo‡³ùh:ù´Ø¡¨ä}ôõåñt|Rüv>ŽÏû“ÉãâÑd:>†ߌã¡Kóòù ñdx1ì‹upö1Ÿíj»ZsÕ¬ñi»Q<ûìM/'Ç£ÉéÞôêS¬PÝ r¹ºñ¿}=œÇ‰ž4Z;mHù¤Ñp?Zú“v§ãòµ·žì4ÚMȸ?\ž'‹g³é`8Ÿw§ãélþiÑ}ÕŸ_8;1Yô‹ßÇãéKúðòâb<»B§—3—ñÓâ˜ĸ£ñðÅpÜ8Ú}Ú.êOòæi>ÿâèóYÿxä@¹øZ0—§ç §ãÒ5ó锸À’„ýÅb8›p¢’R`!‹†‹ÞÎEÏÏúÀbcÛÃpðŽz£ñÐ ÿ¼¿(ZO(°Iüvî(p…ßþt2_Ÿûƒá1R8ǘ­#|9.® ÇÔ: ðõç{Z:Ÿ5ü>úökg›‘p§9ß=&ÍìP¡‡Ã‹>E8`Žû>&îOú—ãaS„TîçâqAu!sÌÕqÕñ©«ÿÝw›±ßOêðOÞr¿àw£h-*çÙ³}(£A :5§—.ºÁêIH4" <üfx~u•½YëŠPQƒ9Å7ýÙéph|¹@²]“¸//ÏÓ5œy€ÛG_] 'ßLÿ1tlîÔw€S­V±Sß"q8©ÔZE½ÝV¥@6È$඀õÏœŽ}5¹†ýSäiNóèYÿb8ûz8X|ú‰ ßÚ"V¹ß’à ‡3eú„ŒÅý|6:z»Õ(¶é’üd[=;ò`Î#Ç'W-ý5õÍÙåùóI4vÔ7¶‹Î6ÕÄ=ðDœì»àZg»UüjxUì½Z`Ý©¹O³ ;ø»³»] m6áÿfb›Mˆm6)¶×Ãì”­Ód¼u:¬ÓdN¯'@wv ÍΤÙq̾³Évv ü‚¿¬Û…dÝ.dív!¦Û…4½Äözfïõ A¯G™iB™0¢2)²J|l8üÉ€.ø É€.¡–â€(ø i€(ø‹´ ;(3Ðá -ˆ‚¿Š˜E (ø‹´Ãº Tâ)aÉ€4ø iz=)!òÄiâ%± -þRV¢ž ô ;*‘QIú@2 þ($QNq,8øÉ€F‘4±†2ðÞ€@ÒøËÈCü…d@#ü%a’ºs (St‘MÑŠÄ{HFÌÞõD"O¨QÉ[ÄFIäi€@ÑQ ³å -4Â_HFº4_(3ü…4@ Ë.Z.5‰ØGe¦‹:‹ÒˆÞ!ò¤2¤RID¶Ä}ÂxO%óyŒÐGèC2)ŸÀŠ§#O•4›dO "=ü*‡ÚOy\v©½¡ž ³B= M—:4³m’š¤-¼Òœ„˜=°DД¥dLYëõ~à6•uþ4þ§O«Eïáú¸ìí6…ÿéãZTü„ÿé³½MïÛÛ¾ômþìîRTøŸ>{{ôþ§Ë¾¿OAáúÐ{øŸ>5ÿa;2„¿$_z—7úhl´º­voØØÝíîîuáÛmöö·Ú.¤Ùmîµ÷º½®ûÛ†7|oC|gŸ´‹˜³: ½ýÚÄpÂ¥‚ØžJÊ I÷UÒZ”´ À]šdo€To¿M‰vÉ“‚…l{L9Æegèb »¤îãpqYÚMÇÄýLžÐ®¢©,ŒÞeœ·no¿µ¯9ÕÃÒ=DF¯©Y$1õºÃB™È‚´ ,E厙 ¯o3Q.ÚhxäQÚíœèòqõ}À†9Oljvcé¢8Æó§‰È;H -‰t ˜M² ËëÁ6Ù41+H„2ÓBÝ&ÊÝ•Q[!>£,:¦^7r—êÁÑ=R€þgÙ7ö‚p!{)“zݸ4Á‹Î;qmÝ×g@X‘€b`&T,‡A;e(©Vš®å5•îâ[ø?3pxæêxWê  /žHëV©Hÿ³¢c<šD»„PÔ®_»žNæ:—ËÀ‘±„OWTŒ4pgâÝèzÊD¦c7Ø®Yê]°!옳B$Ù@e‰Î žl‡‘u±Æ+3Ý=Dº;#R#ÑLZE²²fˆxù Ø®h`y•‰Z©èÒË]* Š§-Bd% -V¸Ée·œ¶h]“QfÕô:/µnã’Š…ÙKL“FXXºëõŽxÕ%Á‘-e¦Ÿ]é]¯‹ÌLí.82BÒN<7F»§«*Ô„=iùv•ô©ÁÒ¢® F¦_´¯Kl&»×f¥uY=ßDyŽ“w¹õ-PÈ“ð´mEåë0GvY÷X7)»n’¸V÷H<]o*}S…¤Åa~RibCK²°<<îP‹ª¨©ŽmRJC„×8Ô¾]_erZϪLt;Ø4–Ào*™³Âq­@ÁTz„«1i]OÚu±l^”€ð.#½%Ö–]ª®j¬ƒ©”_^Ð<ùºÐf¬ëp™]Aª-/E쉋ÈjÃáÊIÉ|mïŠð8\qß«M0?ܦ¶9bë°>Ô„ÒF¦=hµ·f”µ+æÊW±¹ ”8/v}WÚxÖ|ch{º">ˆv/È›ŒCl8YÖ^?zÂæ@ûÊ®(,jYWpÓª„5dWüœ6Q϶MÖ$4JÁ¯ -BcDÚ»Aƒaåa#µ« '5»Ji5¿‘Ú½Àåà:-¸‘YJí †B¬‹¯í`ªt× ”DUÁ¨)‰·_ß‹ý[á*ûrµØ4µvÄRmi&K#LÂóe³—´ÎÛ<¶ó^¿2[y“w5ï<#pßDŠgU' 'ê,¦*fž4ÐPb; -U}™¡TØcÅ*B !¹2ÛA´Â^°6û¾Ã³‹Lb¿±çÑUÌê…&zOÔ¥ÞÔÈúf±Íµ íŠ§\vèàho -úK`Wu;üì`.ºE.Y·®Þ«dͳ•×{•Þ†´ƒ§Áºòö•Õ×<)]øÊåÆ­œXx1ܾ+[&V\io_ŒÐˆó]rÈ»¶§(n‚·éÁÃi[\•sâýxÝkÛ%Ʋ÷Þ¶Ô>±óܶ±^îzžüø7¾‘²g¨ÛQϦ#RîçjsÀ¿zT)½µhWxO^%9m¡íÑÔÝ6Ó†‡z:bÔX‰S ÍƒBÕ7tEoé=¸ b -<Xez^¯ L×vˆ¹ƒæ]$Â5ôã¶(†ª[ÊÚIÐOÒyÏY¶·¾#ÆÜ~½<r Uvå;uƒMcQJwÈw¼ên%UƳHº›ªù`ŽëÛe¥uÈyTµƒl¼*V_Û×çŽIOt «ý«àÁz3®\Dű·¶\5ƒú4Yýp éÁ{/€»„^¦Í¸M“f2h`Œ%÷(%;æ»A&¢‰ªî£¯G`66¤yôn²˜nñl}³¼=ösdøQw@T…zÅIÐÀ{BâÒõ•–Ç*UŸv7€dGŬ&s{74X¾£æûÂ:©QÞ§“q¤^0õŸßHp-A–ëµoUH 4Ú¢Ìd}§Ì{X¡Žû,ܶr¹ºwãÇ0µé–ξø\ûBË«]…F=Øpö¨Ð(»Ç d‚T_Ã{YjÜF©«8Dì °EÝwöí©Cj“"òPqÁÒÖ•Õ튨mž§·É…x¼¨-d?G÷æTõ0x0ßfÈ»B[bó³ãɦB8;6ÊûuO·tO¬™ÖšGEyÎKe•ßÒ»£,Ú×Ò ¼«`Íuø -£`°È#L†=ý€@0 DðœX9òF¹Å±]PCŸá½õñ¸k` -pÌ]Û“ÑVpO´ÎŽIªù eÜ;/=7=(ÐôN±·-º.XÙÏÑvFê;Qj{ö±¾;l‚„>ßÙÞohïƒ÷åÛz®Ç¡…W|[\(ñ²5ª[W -–mèY„&Äw¹‰”~UÐ7Õ³ÝÓâDþ‹à¼Ïî©ËO?´¤ÂÊoñ4ÈÒl:éž×yjDx€¬S[ƯˆãÜg—ŒaÕ7Ÿ2Ì]?ü¥µ‹3·% £.Ý'5›a]›Œ;ÿ½¸SГFZ4S›‹H³¸ -ùþ›/'na½7­ ¤Òò®p;HÝ«TP›Ä4Ƴ]?4,c-3OÁm«ïF?²'=©2]é÷L$Þ“,vÓºJó}#¥Ì„¯ÿÙ)?;ýÀ -´ŒÚxÉ÷Ÿ•yÓm^V¦‘ò£V=OLO÷é²¼cæM´?ˆxŸ™¹ 5N×Ö‚-›§íQp'ÈÚ(÷Ï»Mí6ƒý“Ž›¨ø´L‹òi{Úª%SÜžÌÖ;‚"'V$?Š±kKõ+ôØE½oå[Ę9TÆvËæHE:Ð%ôªa\´ó )…H Û -¦HuyÙÏàNhÆêD¬ÓÚÓüF#XÀSOkš‘­¦‘‰Ú - ˜ó¾üf‚àJ#òЯIØoì¨ÎŒ”x‡D׳0ŽÅÖÆ#Ý•V -ËêZ.¤«#ÔÔžžl蹑]+Ìžê˜ø¢\#l*H"T\3±k[Ów ÛÜà«?:]ÂûdIIh&æŽx-¡Í -øˆ—_÷kŒµñjiæD5¿[5£uÛz‚‰*¡îëgÚÔØp†úŽ –º…„pËê[ª‡Ñ$#Ù f„›nÕ¶ÚâgH36–ÔÔuEì,cg¶Êµ¢ÝQ5¼ë^0íLÓ±‘±Ú~ìÎzÆdØiyýÛ du ÃsÐÍTû!®Ñ½wÝ0tdtøãƒÉ1, -æŸÝé9,æ†%Á´`øÙl:žžúWÙ°°É~Ù©‘l)`/ïü(ÚOjÅo wÑ(Î/Ǹœãû½!¢Ýæñ¨ÖªÖkÕæãâí™^¼šNÏ.îQ÷qQßÙÞú¤¾³ÓáÝ(‡¯æ‹áù¼x:LgS‡Ëð¸Ø‹¯!Ó¼pÄ -g/†ÇØ¥û…›¹ª } -Ùæuy!»»*— ÷·zÑü0<îÏfýWÅ˳ál[¥\ĵ{*¤d2éá“U({î5,ÁÇÓÉ£oŠç£ ï[r™ó!ÿhrZT/¦ÅxÚ‘ƒËÙÌÉQ¨maÚÏS©8ŽV` ?½pÍÇ´ËArGÀ±´Ó+`Ä&£Å¨?ýýP(NX'”Jª‹áì|4qÂ|\â’ÀþÁ³J(a* Ôóþìîp8½›žpÇF"•ê‰Ë38õƒJdñ·*}ñû_u176<ƨNI/À>/ûõç{)Ôö¨–œ·é‘ú €B8]A3’óƒ -¤îÓ¢ÿ8ªÒ* -Ã+ØLæCê…3 üzãÔôÂÕLzkÃþ -ˆ ðk`±à\¹ÑECEÊrDPôˆ$+Mþ_b+¼£q~ù\BšóbU*MMDN¥•Òl==LFTrÇH*f­•g™r•èj7ñU½ J¤7\A@{vŸÎý¦¥SÒ1D,„K0}1œ]ÌFÄ¢!œ ³ÛÌTˆ4M’ñ xT]Üç4|¨sn}[U;ª9Ëü¸¨î_ŒCPßâ4…Ÿ›ï -ÙúXâ˵WDA«r£XåòžÕ -pëtÑÜþ¬CR\¿àÖjðbæž+WÌppSȆØëÁxØŸ9½…´`oŠëævqº t}"¯M-·ÿì)l÷©¹Ò³ÑUÁXÞp£æÉtvŽÔƒæж\~ݬó?Ì5C8™ÍÏ\Ø›>íON/û§CŒ-~˜L_NØV —P¥ÉO]“ßpUã…rQ‡ƒÙp8éÍ â:`¡©ë@kSùU|²˜N†ß¼º:ÕW¦K…|—ÃÉà•2ê6O#Éó¹çú|í$ŸläKñÔºhûË-TÈV€yav;u è3F!)äÆ'™cXÁ†Ík òTÀéÖJ×Ó˜UT-3‚5æI½î†Ú;Q@SÞs*Ôi„Û‘ÕÈʼn4‚²Á‘Ó y§ -UB‚Ä?RpÆÃÁâdZ -E¢^BûŽùà-4d P·*6ßø3nÂÎû? =¼¸ÙÀm×*V›v°]>ÊzA¸÷6ËyˆÑ4|¸Úï;Päwhê°$g|úÜNeËæÿ” ÚŸ¼Â–ü3Ñ_Ð3yjÅ„¬ˆõç ÞéK9Náèøa4?§H§³!úÌy˜®ý ]©g³éå陀÷åW“_ÕúéùÅt>Z !ì¯-.[VK£)ÁŠhHPÝwÈñ#¸CÑë¾~iÄ3·:xÕŸ|V¬¢É» ç´«ý³b‰>õ+ÜûþY±Š`ŸøùØ9¿Ÿ«¨—´JÚ®ë1‡dÎwø¬ B<ŽR§À#lXÅ3‰•Ë«+|ÀæŠÉe‹K—äAæN_»¤kÒ]P½ºpÉáýoûcg> ¯¡Pp༂mîç Hã–@X«üˆ‡·<ª!WÜe7=v4z­"©‰ÈÊ ÇŽ] [©,G¹L/Ÿ*ØÚg<õuh&M—h\àè噳zx„+X±+ª®‹8øá«KÒ+¯ A9ƒC´Zäì]Œ’çGqÇ‚¨Ë*­nì™w‘Κ„êòš<þ6öÕ=ƒTWŸÝCeK´ë#%ã»®ÒM Ѽhˆ½uP×bK5EÚ°¡b8¸@0 -X"»£3õχY»ŠÒkBš-!PâQ×¾~a_o_M¯ex1'4RPÅŸN~ð`¸¶ë ªø:µY ¡ˆ@Dùmfy#VGŒãºGT -œÿcä[=:ž/Š« K¡¨  !>e™µL±€K‹Tì © º]‡“ÓÅYV‘èoIŠ -}§`š få•åóU$†+-£«X‚W‰¯RMÐ ü{$Wk•ñ@Ü€ê¢Jí-Œ±sÇ´]L„šhøVJÜD™ŽƒÝœGS)¾Ÿ{réH1èNÔÄD -Øhœ=5@ÊábzÁZ…)¯ÆCõCû†ÒWQ5_jŽª¨æIÃiJjr1.xÏë °S^ <¦ÿÓ°µ¦g·$c¿S|S]©rT¶t‘œ·„b!àE§ø¤á‰–ŒNÁ0´-·ÑÄ"ÆJ9%Õ#]Å<Žt¥¢P©¢Ê«R~2ÆÐ{]aÀGRÅCkÎÀ)AÜà*äŒóD%pÍ1ãmÊÒûèà‘„ÈóKÝ×O'Œ‡´ \JM·*P3ÄÀ„ -áÙ¤ÓÖ$¡Ÿ‰cu‘.LR¤î8gáx8ƒî6â1›k§Ä4’é`U:¬ $B'Î×pZ…[i–FYß’ã, -9g‰uüÑ…óï3®¦:j€¹·<<¡ãÖ28è­Ÿšë 5÷æ‰~$ƒ¬v<Íë(4ô·è]„(šª§YB&¹ƒ þ²¬<ŸNg‡gýcA¤úµƒjj~4”—Ê@õÙŽàô¤q~N9‚¦§wÄ¿ó C'ñˆ~æ“ùÎåþÊ$ -¢“!¹£ÉaN”ç†,UlPJ‰òtÜ5‚ -¨Å tÕ‘a>Œ/Þ[Éj½(/áp¸šÆyVÊ ì ÿJç‡í‚tÙ¨b~ጌ¦åÜɺ’‡2o' ¦>™ÆËQ>ÝÂî(ý¶cñ`G2Úa‡; $ÔÄd„ƒ“aOC8 ‰¹Ä«5°,³5fÌ?nÆRãݦ“C`î¨ñ˼‰gÕìÜNbÓãá—ÓÙyåÛZQÿŽ`IøSìC•oëEM¢âÎU4šA~‡D½TçšEœz†Rý¤‡¦käh²?š/œ•†‰ӵɆVü çéVl)¯ -yú¥Ãæ5R‚^ãZ5$zcd¼†|ÕŠ†Í`ØéÔ}}æb¥QËŽXãì ŒÉí£`««é‡8)íƒü´âLÂöF‹ù3ç˜ÁÄèf¢%âWC˜ö¯7:^œYH¼ÆKl‰æ›!úº¢’ÙþDz\£’Y/©±"G³¦Ç•ï_HX±šìÙ©“—Ìúܺ“‘)EU£¨ -Lùf‘V¨–§Ô*„$  -g4S £àüªÌYß·$Áö…0o&CPÐödnˆÃ¡¦úùA»´×xÀ‚Uèm+;ˆ¯^Ø@Âz˜S‹<#Šîd)®lˆ‘ܱRv0øÐôrÚKº¥bc$÷‚d\[tÓ‚¾c -¾%NšK:›±ÕqGIeãaymÖjvê1æóvtZóÓ¾‘é.Æ­Ÿ Q­_Ä8̸¡p–„B|Á²s51‹}àMOV5¤àU¯>`•tÂ|±ŸŽ«ÜÞ´ËWÚ¡þ)Xû3ãeËVÛ±62ˆþRg.ìp rB1ˆ -ù¡1*L·©Pàýªi5ãGô3]®oY4_ -S¾½Ÿêi“¶Z÷îüwâ©(—¶æH -a~ëaf(¾R«Çê!ÖÔŠ¿FÅ[³ªèÊ2î>±lÜ–m™gö3™aÙ|…Ƙa˜µPEèÊæš™*6Ã"ëzQʼn?ø]…Ù?÷#$Ýx,AkäQI·^©×²ðu;sw€ù,°„¼‘`¨ÂÆüáqÙÉÇÃ:üØÊ¢Õ4%·ò%o­)¹3)¹“-¹aJnæKî¬)¹3)¹-¹½hI¡´•Ú1Ð& ýC†m©Ó£wgÝ䜜LKèkŒJø¦ Hglx|B- -ðƒXõâtÁ ”ã+Wmy*áÛçã!×}ç·j)8Gq¯§zÔ­ßêÒ¿ sÝÚÑì4"yÕZIe€}›@WA÷õiÜcÃæf=èuàü/ŒØ¼Dæk¥£ðzÄ»‹­^.¶úÆb«ß»Ø~¢ªo,*ZS®R9SúxB'?Ψ—J$#ˆfq< ŽÐkýÝ Â¡¼]®tS= þ”Þ”Èr¥‘ÎïÁ%:2¤‡ì¤J:£C>ÉôP-<ð>DÆ÷Åê™9´5{²{dåØê±Ð#¿E-ÒIGC3C¦f*ÞƒÞnÔT -›*K¿vºÑs.× -l4Ɖ\9ëO&Ã1óDqÂϤ…å#¾Ïe+ÏT|H²phŸB.&Ö¯ˆ£¾(ú}yÔ¯³Q‚!Gx6 çÒÉ—¦ÖkõqNh`œ™dC½&‡y6æÍ•°Ã_–ë™%°~b‘Ƙt>—Ñ®óóÃP1·yÍdv¹›&wkK4’SðààæZç·@â@@u2üÏÃÙÔ¯)¾1±o¢’UNª[Â6á~¸Z‘FâRõ-Þ™ý -ÕÐÐœ_‚mà‡¯HÅgF¥skêU½.Á5ÙlQ‚l)¶J|%ø– ‘­£lU-a½O+Jõhq~ÁFj„#Éȵg…H²‰–€mÜÜFíyû¤o‘„ÐÐ0z*…÷¾«ª¹f@´ÅÁsÍw7WbiFd«Çz®®›žQg5PLl«x±mп@;'° -§A"tô¬B@­DÿWi~~ÐPXhi+îDÄ=ÝCO áüQ{K2³Îý–°ÈÓ¡a!‰\e„YUîÅyß™R+{ d¢Åý+»mz2ò'굕©ÐO×sûPTH÷õÞêTßTÞ[Ï#ðÏ=oÅÿ'» -¿H–äöàËîæF­žß‡þ˜mßùÝ÷ñ¦÷áoû3Ẋ†îñWñh%t7yÕ)í«ó{Pá´èÑßüÍce( -¦—“ŸÍÔ(FÇ£ä—ø“0ŠkSÎÞBDowzFàÂju0tþ˜((ùÍðL4Äç¸`˜% UÅýûÃåpöŠj„äp›|&ãÔ‚¬3ÇGV \ˆ-3#ê¾ãH¥àW!Ëyÿêë4¼¼¿^Æ+¿©!<¬• ¯#@>'ж|«jÃyRί˵–Ù‰ ÐU˜j§ß&Ö§?#”ˆÇ'Ò–cC¬Ï"¬u_ßÅà†®Î¯~5 -µöJ¿8Ü~5;¿¼ÀpÜ]‚Éñ—SÊxSGŸIÂEV«Õ'“ÑZ¢ªt”ÐJüe -=N -=N U…­ÃEÌdQÓŒÂ'¦q%’û ’û,vL1À&7åÍC§Zöcù*ò]¡°÷HKœªúXå,Ç/ͱñþyBÖó`Öïâåã°¹'ºD‚BíIfú¬™^kéQk€JZf8Þl%cöÆìÆèé!}²iaO9åfÒÊ\‡²F>9Š«”p?â¦[PÃz.#ìÍu -ÚŠ¼ÌO°‰¤L58–Z6ôªcÙHÚÅÃ\›h&ãýã‰ÅŒEÞ:!ý.1ú¿£ïÜGæÙ,ÓÕU£,Ô¿Qëf!ofyɱÄÃRïs®íƒC-g@v;´rÃØ<×¢Kƒu íiÑôsX -¢Ìr`ì# ¶âUÇ/ê=×[1;† - -|(#A:@0®³{x6çzèE…’µ /ŽB®Ô~$uˆÁSîbÉî¦8™XˆÕ#×[ ¿™âLY,¦,7À% ›–[5‹690·ª—TlrhnU-ÝØäàܪ9å&dÑE×V£ƒª8ÝC¬†U'+‚Û¬a»iÖcŠGMa-*^.­!•Ô”ë]ôºªNµ¨*%û¢.H¶Pµƒ¶ÃÞãéþèÅÈÉt8?›ŽK7ÛDZ-©eÕ£¹?~=¸\Úz;u0À™÷kÅ¥Såí€+õò9M;~õkì0*~ZÇÔ¡LåÏ">&U&=5ˆpï°%LF+d<[9£’O\—Ῥ5Ϊ ‚…ɨÈ%ÎLÒÈ°fA7 ~‰Õ¹ëò.¦¤Çv§ÓÙ1­ƒ{6…Ñ^‰„•&êx8O6ÇF»P#ž¶0Ç -I=îsbÍuÖ(8Tl5ãúØõ·¯Ùéö¢`ú“%QGÇNÂ`„Ai,Ýú”ûÑ{­ üΨ:v g/úã°\LjC¿H.’J6¯Ž~‘¼$£4¯€xÎFŠ+Ù -Ò+ƒ‚ì¨M™>:Q'ST^ÜlMM-4®¸ÖrμÐólè«lè™PÚU{“Ëyžû…$5}ðþô¼?rh©8IÚy,<ŸbEcDäãõF7ô>~Ô¥zpµ€µ ßj½¥&Œ Ž…ÃÕª¹Ë¥êX -Š<æߘ•Ê£iÂP/âQf0tn,NF©Y÷à -ÂwÓ|1jwP“õ.u€Pظ:I¿q¯1fžÍ3¹ŠÓüSÅù)*ŽoBÚ âÀtŒ—.*Å«$$T'¨\AXT»xõ¬LøȘçúbp@aL«šÌòI€ø1ÔV×T»Vg–³¬0˜×;Ù1\¦JùÒS“ S:&‡¤ö¤ -FŒ-Ü -Ÿƒ\µÈX$[¼RÄ®Ž8ÊÆ Š—ßšõÓ«”¢·#…:x~¤x«v~ŽU-— ×@£šANPEæ_M:=í`µµþdy¨ª!ü'Rì³'\/ˆGþôX1 aº\ *øfQF¬¯=§Ôv»¢æ`HdÖ𛽑ŠÉ¦ÚuXÄÇ™~åwD -rXµ-çüÑÉ‹0á÷{Óë-–VðŒÞ­b—oέ™–£UryõK2ŒÓÓ‚¸®+£ ÝÎkÿ*ÇAêãÑ aHÖÔT\µ[¿qj’ù¨[K“Ôn0O"gÖÜdÀ•¥Ý Dc¸ØÛ` Ä»nBQ÷+W²¾ª§Ç^¨§>:Q^… nÓ€`‘÷5T -9O¡Ô—¥ŽiÒ0—gH“jŠ|3§ºÖÚ.eeš4"¤…HÖÌ曩\)¡éaè¡ÍŠ·;&£-~y<¶¨½8VU6$Wo":û¹ôDg} ³iºÅ¦•ˆLñbù¸}2 -—¾TŽ¨c²ý§0&-Âå0jšeG"7ykRùyÈ÷sI‰™ee' «˜>÷xåØîÿÉßýí³*¹ -Ho¢ËÞÓ£¥ÉTò®øähuºÜ\_´òKÙʯ≑/Ì%—Ô`\rͽº¦¤¤Ö*ú:kèSÆH/C,ùÒÝT)<â*¬inÕ1—êh–RÈJÆZQN†ÑýFú,3Rîì]TJÓÞEl*ÉA.µNÍ¢ñ†õ‡\2€»Üb™»…Ò˜ºìíááJ¤²;¬VYÜEèJÛ`ö2åwrßÇŽìòÍ×ì½^ƒÄwø–oæÝ`//%[³Kñ¾ëDP! x ŠÀqW¨ˆ´ÖBgÁàp -_àâ³ìZF± -äÿô ýB‡Ò5šØ{Á nB7Ó†›þØÊ9 -’Â8¹_¸b -û>Z 1¹Ÿ¿£=@f9­„"`A!iÀ.ú¼bg¼(š¶¨AÞ¡FºM‘êvµ"àô‹þ Ï÷µ1Áûòm'õ–„èy;ÍË*h£¢+ãâbHFä¿ÎfÎêVñ? C·Y9órì0‚9Cñªç‹ô8uÓ´ï -ù0‹ƒJA‹0 -Y–öñ2ÄÁt2èÃ×’]æ‡ wX9! ãÈeSóÏ4ýÀ0V\ä#þfÀTLJFgà"¯7VØ©Ò}}a¹3›Þ G(×/a›ß‰nÅeõŠR:åì%ÚÔÏ+)Õ:>†h±7Õ„l¾9ŒM`0î<¢©ÜÐgH6ÞÐJÀÒ®„ïHdï;yÔîl¾PDFT÷ä=à;=ï~U{ŒéûvÒCzO¤é~×{*BõæÞ›|¤Çö> - 2ÒáÛô.Ÿª"$#Xœ sÞr8¨eØ°þݲúéဲá°ÜŠ@^öÞŠØ•£ŠIÆHìß…¢ƒógX]Îqͯ÷JÍšäÜÆVÝRi~—#øFjµ·ã˜‹Q±S+`Ea-Ü[Û$ÝMÁ®p(*Ú™¤¦ŽBh»ƒ'X1×pbŠdë‡qõ'¸yô-u¬$ï¼­‹µÓ”šƒ#X’±x*Ñ…yjà˜¡¬Pî,½2ÝkÖsa%CÈŠ)žt³û;À׋Åôæ[3\î»Þfûù)í|²›iµËv®’ǨwÙ$Û£#‡9Av‘òÒ9 Ucö%ZnP ÿèEí°);WðOJàº~¾ÑÉßÖÑ vÇXŠ¥Âõ -ý®ãoµØž‚Iµ’>MÒÌ'©­Jb×àwB¯ûMEIÿÓBÙ÷äšZÑŸ - •¶¨‡+?ÌšF™‚‹t'ÙV -RZ½Z…«àúéHY6Ùè\èMÎjeg½/Äî«`ÙÁŽ™ü~„U¶üÿ†*E6 ëŒL®¬¯‘Ù*opçò|Ÿ;ª÷aTd¸ø’ܨãÌ=OßÃ/mUõhŒË¯Fz4=>{ˆz²œY–»›ñ™@Àµ·L8U†#7b -¨ -‘¸Tâ_¾§âÚxþ†íЙ’Ú÷+}‚¦'(!Ý`® -çs•²a!75äL‹#ήá—IØÞ½/t9Y­ûú!_nU6sOË:l½½àÓHQÏC„ŸÇp™™Oâ¾~4“„2œ1¦ãë>¾ÒVÕ8?‹TÙ6-e~Ò§¤A,f—ßnÇ&ÿ\h«ò{áÅí=úµYÜï*•Å}áôª,®[l%qÊß.ùý³‘kh,§ã×Åö -wVÐX¯­ ²^ߌÊ:/\P®Þ:HŸá/žM÷ZëWN‰ÖFËP%ÃPdœÝ*½ïxçê0­. @\·bxE•PUJÚTý?.ÚR«î5]aç~,huN°?UD«|#QÊqe:wN:‚ÐDxT·<ÉšŠ|’.%ig’„˜“”3[9f¶ÿÈÌÌÑ1³³ž™[뙹ýNÌTÎGh´’Ö‘Ûèþ7°k­Z_†i¨T®zI.nn9¥ÚT ñÐRµá2’›€-©«e(nFþzmPײ—¬ó +h£êeGÍW‚ìsk°"òE}!­Ùøð5íb)!±¯c|®¶=\*&èÆD(&B=î¥^UTÌ -vèÞˆj¸j°|eJ“‡«6Ò _”fø"Ÿá÷¥~ŸÏðëÒ ¿Ž3”‘J[Ídmehto6`_©6i‰vv›Ö¨!8U5­wNr5éJ͆º^µªÇ꯸¤g$ÌÏJ¨Ö:ŒTýÚDþÛ¨ÂÓNÃtkHA«oµ:,Ò¸="Ô ^óࡦ [w½ju^ZDû¾‹XÉ«Î{,-ÃÉï -Õ}–ÎyÉXì5wÉìÒ—‰WÉò?Rg9Ê šY”™j×u|:8 ÜK}No<Jq“C,ž«9½XŒÎa Kt£aæêuù5ïî‰F†õy§£Ï‘¶ýΊ‡ȃǖ¶{\Cœ#KV9«u9ãI˜JWOØÕ…ŸÐŒð È«¬tÆñmº2s<„Å:E–6‡}|žËgtE„¯a2ÉùäCŸIÛSX|I‰u_ßÛ4°h²ÏRz -I>B9*€õŠæ@Ô¤…ßÌæÞÒ !2œ+ÂÅax­¨ú-‰@¢åœ §ðÙ~Š\ÓhJ3»†ŠØ‘¬T¡¡²§“Ñ‚†ˆ&_÷SÅöCM8ÌäåÇÂùÄW¿2 ‰„î¤nc¡‡Ô¦†ÁÙ%+*ÒŠJL©ü»Ö'„W xÞ <> L†?ýº” -r•zq=&Âle¦Ü|"†øØùÚ-àÅïOÖp­w®áJØ -ž‘÷ŠÊ®²„Ê2F½1=P]=ºÚë"Ðt{eŒ‰°ýçHwyfs¤³5Ò++›ìTKÿý1Lájý›g]Ì)ÔhŸC½¥&wÒ¹å/ÞÙ&£³vEOnÝh¸_*ZÆZ¾hÔO=üð¥Î[²úôVd%¸ßðÿ©Þ'ÚáL%*Q…+é)V7²«Bê¸õù– à¤)Î5 YMÇyàz6.3E˜=]º÷[Ã}¸4†A84Ñ7½ÃÑ4ؾçÑ6íÕ -<© u1M’ ÇæH„B7n0ýö»Éf®¤vÓÿIÛ«:kÑýÈa¹9¾ªm2 -Ÿ2 -›ÿÐæäÔ:“XÑFÀ5çd¼sv?[Ç –žŽ÷wy3qbö0‚·X¸mçßßá–ƒ:.>¥»uŽ°|tävŸvŠú“&ì¶Q7áäRù3Gé@5©ÛMZ‡MKqÉ÷[“EéÛ1иf3ø«tr‘Ѽ¡¹D„X¯.a­ó*ë7IÉÍ"…L$Þ²’—ï¡p˜Â$77ä0<‚‹%W‡ [úŠ!«<±p¦zªK¦Ä¹›þàÓáK¸í©kú+x”ã ž5LéBÔŠnsp¶và«Ð0࣡B«×º}Í ç ú8Õ§‚`¿÷Ü=¿û{²×]¼­3…•?Õd-G3Ž@d¯¦'7)¶'® -² -kùs+ ¿š!>&™ÚØ8ezš2¤3ûõ3™ìuÓÞe‘t¼ZOOªêµtþçM ¶A ÂÖ´¼E‹Vl2[…Nü?*Ç›,‰¢½ðר'Të÷„À¼3óN@ô¦žAJ×ä$KÅ|©¢A -„'i>“Ñ -òyë6«wæUÖ†ž0ŽŒä¾›~-¦Ø;^k4#Ô¦#,ß"º‘m -fFÝ…ÎFöÊðD7F™,µw0Õ? ±«ˆÆ -ÛR×(£+ý^Ó!îIZ°‡/špÝŸ7lñôéº×at²Ri[d*0¦Ò}ý‡86íÚ&l -¿'Þb -UDØ×VŒk«Wx:¾çŠâ§ûçPE;­|øÑ‚@Ãîp&„á¦e!¤½ã§šUhSéf®èV+–i’ØbKQ¹({)ÜC¥Ð€€Ë„OL6¼„u:¦žmŽ¬gv3®!ᚺ“W -׌ÓäÅ"øÚ(ò̈†Îq‘†*®¹¾¯gðÆxßÚF´Y¼uIM*õ¢†èžPOЇ§&ÖP”ûÙZaG+±ÍÆ@vˆD¡ -¥K«Š“*êG6‚Ý3ü¨ˆ«Á§Ò€«xuÛËqJ%wÚ˜‘_”ïTgRLå3„ö]ËÛôôeZô˜T—›ëTýP-àƒ™Cék iíd¼G¥ôØ3ßeBÁz0Ûò¹èfÏÅ[€v–ç¡õÁ®zíææš×6©8Ý¿r=032Îx&¢hÖXÆÏú/SÌ€ñ'VKr ƒÇ¹r«‚ª&`hõ«ŒMàp‡ñ -û™²„ÄtŒ¹»e»ê76`<ܤ7X (×ãÞ9q =»ì™ÒÌñ)鯆ë¼×Tª‹‰eó5ËÓÅ”’ê­ž3a¬¶"ÏÄúö¦ö¬b`¶îÂà–5SS™d -±§¦2ãÀzRKB-!ð¡™¿ åé+“æ>©4*ì¶$¡?#vyŸ? u-$Ü|‡ƒ*þÜ:ÊM!rßI¿HkÀ”‡«%†Çª hy®á¬ $ã² „NÚj⮡î4óA¡?Y ?Ø&!O÷.%>Ìr=8%±yÛL4ïì1ÅD¥hµV7×&ímLx±i’• žvoàôp‰MG¾nô°›ΉM`êlGÈʉ >nåVÁY‰ -ø_&¼\#‡GÝa/‡ŒT­DÎbVæ§Ø‘Ô‡éÓy°á Æh±G)\Š;“Ž/È( -Ù¨¯_>'04¯Mk+ž–V‹•-®÷ÀÒ™ -Ó1i‡[Ž<›xÐ:bÁâ6ªØamZÖk~NrJ¾:}Aî×=ë=Î25veP*ÄZèX–ÝÜ#Ú.÷ˆ¢ åJ…]tœ$w%¯®ü·ñž~÷ôKgóžŠÞ‡`µœÓ²Y«d×3Éüá·Ñz¦Z”ŽnfÅ;·ô -#ö3õsW\‚Ã7²8Ø•WïŒ ¯ -C§Û®j2k ´ÑHÐþ‰Q¦.Z™¦—^鞘BösÄÓëšïax½Y2žø»³MWûøU;²âÎ h[sQÉw¼DNGÕüAqXE§ ç­ -zCeÌèhìl,-“'ƒãu–£ípÑï~µ1‹|·9‚ ëWà é¢Î‡ÓÝ;_‰ÖüEBÐõ"DÅ$ Î7^¦U¶( -ʾ«öñîø WàŽð»æÓt÷0œV§‹ÚÊhÇËD#¢ï\'2«VT“¨tÕi2lc'a0ñ*":(ø&“0¢ÔygQ»c¯ZL”ŠWô‚TS€Y - ¹ìºÜàü¨Õ¯ªÄ({ŬõU+×ÖuhphÀ9ÇÃÝž`,mž| -‹XqÁå©\}èWñù”A¦Ê‘1ç¤ -jâÍÁ["UåDò昜@SïOyX™Z‘]]Ú$àoÜÂÛAüöÙ/òi=Þá‚÷‰</ïû˜3mÙ(òñÇߌc—ú&+T²âÑ׋¿å±¦í'µ¢ - +o<=} 99îÓ«ë$ ãNNˆ²YݪÖwvZ«ŠÑÓ‹W30f.îQ÷qQßÙÞúÄ%Ø&‹CmžO]¥œ]Laò¸Øu…~ -™æ…£m8{1<~ì·dȶ\Я÷ÎÄûS"ò^@ëP¯7x#†Ü1öð#l0«GŸawE‰¢z4œÚwô à–m~¿8ÁÖèÆ¿Ïã÷$Aœâû$É÷Išé¸/ v«GÇÓ.œo(ïƒÙ.yâÔÉ#ê*ýt§Ò  Ï=8ëϲ¯¦?L³‹óBoĬò½‡‹>ìíýÎw¯ÕlqsÏÔ=CØó -¾»gä”ä;›óÙå£)û§:ªë'ÉëWæg£“ÜÈVóiúWí°[Ä­Â*|<Ä»h¼±ÈC$TŸ/®¢¹ë•uþe­áÁ½º8NŠGŸ<–“éd×zÖtÈî|0 {G(lHº¯oØ$öõÔ k¸{ü½Óss8OÚ‘CØ’ñrÌ«íJUGªF…F¿­Ã}°4qúðbo#Y‡_–D¹}ÁwÕú°‹Éb¦RÀÉ…ECí‰rì;Áak8SM#'¸UWÅo®Lùæ{óÚýµÅV£Ý§MÜ_xÖXÇœž¨Í.Ž#'vsñxâW†qØÈfšžXSSÆÜ–1Ï”1OÊ°™¦s[Æ<*ã– -j–:[Zo›‹X¯OÎM'ÇÑ«}ŸÛÔó(6J=2oãésç»8Ù÷A´k ˜4˜.”zž½ÐUܽ½Òo/Ÿë·I©«ýóÑê‚)Ê…Åø¹ EôÃðUœñØßµÂÌ.‹ê1 µÏŽñV•ð9:IIu¥“÷)D%w:½"ð7{=À@®+ÚÜIÔ ¬Z£iOÄ×åÃýzÃ*l¥«©PÂó…ïL‚8Õ"ïk~,† -œMÄÔÔpš!i5 7¢5Nƒñ°?ã+§5µöÊ0ÂÇSÂ>%ÆÔ«z)f÷‡©÷A¤nÈÔ»Cü‚xšÇ -«YotŽRÆI‚2˜úì3ø¨T5ÃÉ @_àá™ý¸¥’Ñg -Y…¬Å"5¹¢^ËFꛂí ïþ¸èÏç—p¨ÜlŽ~n‹i¾¸W¸UõL = ^;é»'3Õ,ÍÖb]¼QŽÑÊD6ÙP•j–Þ*iÛÏŠ%Þ g5÷ÐxJ6ÓárÝU,Ù\%ãtYtbõ·¹e•¹T´ÑŽ)˜½¥⯠hçÛ1T†IQýÒ9¶EõÐõ"Šj¯¨>/`aÃÚµ’_Ô-7X±ráað•õ²Y7%ë«ßÌŠ*H/,¹ªî=‡3¦ù÷^}꼬vw}ªóâºcC„êlgÅuK§¡«È~ó\v[pÿy+ìNñCmÚ›¬†<úö&á^ü߀¼ÃIMv09ÆO`O°8GfuqÔlˆSWÕIü7W10ôûL(þ‰Î†/¬^ÐiÐþ ”ÜÚKàWN/ÌF.¸XÕßðrT’Ïü•"ÕÊ - b?8Z“ÀH)á=¾ð¿§/ÏeÞv÷è²<{ÖŠ2x?뇋ÅP ØäýòB&}Ž£/§“gÐuvÇh†eÛ$ÑúÝ pB£0vĶø–$ºúÚܾî~n¾Æz¡ØN÷锬Cü‚Ùñtl—|Á"ÿ·jEÝÀõ’ÂVd÷*[,ýžêO(>ØIHÓòk›m²0YM½Á|*ÓÇ„LB] ¥›NƯHôd1~÷Œòê¾~­ßí—Ð…pÖßýZv¸‡³¥Î·žðÁõÛìÑ~R+žQöâ+Þù9÷¨g÷¨5«Nu§¹îxÎO~¼Ç-·ï´ßiWðÿd´ý_™·ã‹°¼—ìÙÑñ…¬c[gûA(_ý~ «ŒµŸrtÜ7s4ýIŠálÔ$7û=êf5N×çÞaÚs;sŒe´X¨{\·Çj]wç -¶P†Ä"5¾T9K;~Í…y[Ó“«áPφ΅Õá¤]\]¥Ô|ò½ÚÇkG:xÞs¨6öâmAÚ­Z ‹ )”¡wWës˵LÃ9üÖ%½‰pµŽ—J|-ñÏ‘x¬ÏOª]Î^ÅW6`<~D)&öU_À{ cþåBÇôQ2úr=Rïcsk°ÏeQçf.C8:6‹i?Ôm‡ÛÚ£”àYÈtÅbÐæ²À -$K½¤®§X€‘È+Øè·"?¹ø²Fß™è*zMþzu9",ø‘»„ýˆ^–ÜÕNîZ¸§Ý÷{î+–Î !« -÷ÝuoÚë -Ðaº¦@uÐt„aý˹ª,löqß…ŸÕ£“Iáüw§aê>ÆøT3§pnðbNC-ÿ¥¬àN1\Ë{¤Ì é…̸”zbcGÛ.àÔ– +8Ͳe"éØŒ"h Å´|,%^€'wêýI=†^AŽRFîºR—\ï„ÎGl^Ó9nþ õ©º_—ú`öpð·th! -Ó`þLÈtÉ<©“ÔJyks"Jsb,•·$'ÇÜ–7 Ib´¤Æ„Í˲m Á«ü킪æÒ -²$®Âê0t]I²dXŒ^|p`² -ÅqZ( ©©§µ»«Š®¨$ ³>\ëæ}ïDp€JnF 2“’’ãÆrÜ!4¶Q°Te.w•X;”‘×~…ùßû”óü¥Ù„žXþ“¬7–u½‘¶žÏâSìIJŽ³ÜŸÀ¿ÏK¼lÅ»´£óuíè3iG盵£ó²vt^ÒŽê¾>§Ú¼MçÚÔy®MߪM¿[›:Ï´©óL›:OÛT¿8a]ýœ¯¨Ÿs©Ÿó|ýœ«ú9¿ïú9ÿ©êç*ËŠ8ößd¨¼˜ÈäV:«ê³Ý^½œŒpÂMš¢TM!«ßab‡ÐÖ¡pà4ŸZ‰¾.]æ­ï­TÏ’{"ª/ãû!ªê,ks6/>:ëºC‰E³a‡ãªóñh0tý„0…W¡ *,¡¥¡3øiÈâ6xúÃlQœ8Åž©[Þ8ßKÕž3Â{{S-„ÑT:@FY¿t _o¡ŽæVçtVý¹Ô±è>üŸCö.GããîY&6Œ+»º£dÅ~òÜÁ@RljB*üüL,ÌaÌù -’‘ÑÎ¥ÃKH¾7ÉBéÏU¯ÆÅ÷©õ -ðtS‚P½:u‘ÔP–%yåÀ¬q™ØSKÊÒpíÖ³Ž³Ìz5ÄK¾éXñD|(À.¬‹š„¹`º¹±bÔ¯Æþl3øʾ:þvt¬yÅüÒøƒ4_ Ò饄`ðñž”¿À(¸ú€Õ+udQÅáñJy„ï§ú}lßõQ¸ÃÂZ™G0§dôÁèé…Ì)8[ñɹ\]©Yö®†P©OfP>‰P<æÀàCkIˆ&K[¢ûú#u#¥:{þmuµù’œ°|›ì[t ƒ$Ã<>…‹ •áä<¤·(kn°o€sÎiau›t*‚@4^?T£b` -¢m…¦Õ_œE sVùtYoìųFu)· +í¡ p­k’ZªBÇ´Q˜,)øð£l -ç´.¢wÊ\+âlª4I­£Œ•(Æ„ño›ÕdÄÓE§!†U“aݳ_ˆRÑ:毥s"; -h–/jfÛýƳ‡Êe4”™ô_¸Ïâ¯ÅŽã·ÖÄG‘П÷Ûzµ’©Á Sqô?%Sâ”jÅAñ†JÐII!IB“jçzˆ”®^#œ˜RdðïGJÒ¦›¤r—¨²é•ÈÒž¢oñàiñ%î8~~êCA‘Q™“ÖJÅ{z”22ÐEb£ úجF7‰Q—GS³ô{µ*ÚèBEæiÁÁ÷>¨¶Bõx´Á{˜¸ðEúij A9·7õÚ ±È:¬ºÚ_Pì«Rrõ´* Y­ v!ù¨‚ÄH<5SÑaT¾boGÍA§QP¯y0ìïÀì(D°®ZK¢M–À‡`T”6§F»PËô6hENùã(9ß¡­ÓïQRa¿¹ÅLzÊ*.Z`nKX^4¥Ýb œU—WTÀзžù&[´Œsž} -,¿_Ì5S¥yº‚feU^¨9BÙ,v -ž¦ -çxÆÚ!­ðÙXô»œ&Ü%«8™išJ;U»D¥¶C#i…w«BãÅr¨Í!©ú³J'^d¦ÿ àŸîN‡j.ìgs„÷íOùÿ¿¢Ýá2€pq”XÍV8\;Ar"ÞÛÑßöÞ -ðwŒ’¹ÿâýô}ËÓþãÿï,+9tsãSÄÃzsª~g%Õ/®Þ·ót_Þ1¼ähpÏþ5J,'´GÿßÎàÎXÆ@ÈÊÛ¶#¶Ø(×xóžº8äáG¶Åyƒ¦—ÛÞºµ‹úú@÷V¡Î7D>—Þ}àD7!ä‚cŸ%M¤Ûo…ÃOg±?dsí{QƵ¾½aàÃþdÆÿf¼••á‡Æÿ¿ƒ omÞ[kÍ{IåýiíýVŽõ‡&?V[Ç ß¡%ØYÑhÞÅ×ETJ9]Ú.XQ¬ilÇ'íÛïÐ0 óm‚ŒZ†wÜ6Àö¦ñ¤Vlë]a7ƒ{)OySVÙÖ/Ÿ-ÚúU¯6šÕíò_;Ÿhç‘WoE‹ŠüÇ^Ñ8à±_AÃb2µ·¸ù0SJ~Z=U§L¢Ž¹éôª¯C´À1ÜTêÛñQB·©ÚÖ^îS•íü°Ò§A)œO…)‡ºŠüIÝ«¬ñ0®žV®oL«gŒ½†¯üòϳDú?ƒ[@ãþíÊŽ­+Ü`®“¶(²m¨üŸ4Wg‰sp®Ò‚t_ÿ¤|›ñŽØü¬Kœ3í|Ç'µu»ó·‹CÊP<#0ñnüZv7~½Q­oUw¶ÖíÆߺ½O¦ÎEžô/ÇÞ;‹œ5°Êk6ÃÚ:·­^›Îh}7sŒÌwq_ çg…z.‰7Vä×8jÀ|îRÖ%ãB cœ¯r—këíßØæoî\ú³öþ—˜ùשÎë£ ¤¼US«ó0$½ÅK§8˶°ÆmèüÇ ÏœøžnCÜ€5àånH`'@‚xÉ*©Áü Gý -Ú¶vð91‰e¡×X†\‡«Y[-*qGãË´â+” &Ý}Ú…A ó²˜âQ!s|ñ]ßjyò‹y”žT—N‡GÍZ½ö¤^ëàY†KÃÅü|:]œM†ó93+èKíI­VÃ+qB"­?ð ¦çÓùH¸áÐt–¢ˆ& -ê±{›Ï~ßt¼>'98ˆ0ÙàÉ¢5Ÿ÷Îa5òÜ1âˆâ7#×âCˆ“Ýnµ*€ÚÑÜÁª(ó1xÃÜê>®‡û–3ªÙi<˜‹ois>ßÙ†rÄC“ž¡=K¼¢>:!s’r8%1(n½¡*eF£+U¶ý¸µã×¢Žógp*¬ŠF{UO㜴'àrlG1½qÿTé¼<ˆ{ØK{~y‚®±^ë‹‹™œéPu|#•V™]˜ó?'G¸Ow<_äÂH°ÅRâÑØ -¢–ös}±Fßü™u“šøŸ\#W7Á„Ÿ/á…®GIi=YÓ -§õ©c`oTí¹ö@è:(X,¹ÁåºpV¬Lë`S+@+0nb5¤)xͼ¨ß(]U ÍPöÁGÎŽ/úŽmõÎ69•Š }ô¸¨^>﹬\”œçw*¯ Øà|‚÷w°êîa÷éÓívIvUöµ JZ)èµv -΄—Â7ÃØ8j>Ђ—m1•:®Ö:Fb}ßMó+_®¥ê8¥f¬Ôšš›ëGS›Àä4®—ÐãµÛÐSïÜš Wö}RDWùÉ0@­8]0Ò¢SU`†5²z -R8½2£ÞË–··éÉ‹9{Ž´ž¡¤8²ä-<­Õf¸¨¬b¹ì1œöBçº|%<¤&ر„O†¤uäúD%Á“’ªC$e}ffaÓe ‡EÖ²D -Zußë…7 …x5žoÂœ€:J›ZôeqŒ]áÌ:}¦áªÕ©€öN»ÝücIƒÉ¥}^‚îí…Ò0B!‚X,/ ôÃd"#™+ŠTá!´"&“½±<ÉúÊx«ŽŠˆ³È°Ü‹yôñcçã -Îœëìë8A‘îCÙ&—:ñß^õ'Ÿ¹öõ† >+^ -ÇãéËÏŠçc×»ü¬ Ãû°±ÿì»âú¶ÓP"Óöœ¢¾~µ?Ìi_LKo£ðñÂY¢y>ÆYS'Z•Š»’ºg`WÜ™>Êõ -5Âo7…à€S-iˆ¬§‘PXHÐH8î‚®^áúö²™¦ÔµD“©QÒöÚðÅžj8æoèJ¨}w§]EÈ^k(×Ò›–=;"dÝýu²/ÏN‡šëcøe{O”a6ÔÔùúó=¦)ëæÚ`î½+:”^ é*EÁ£æؔݢþˆì´¦A“®€3ýæÈ+»ƒ‰Í“aöu¸¬Aæ (»~j¨ÄÚMÓÜ·²Ê¤—¤X#Hâ¨Pwï¤'g6ÂNýÍg›rh5ƒ¾™v¿øý¯­¬Â@Á}–óìú@¦¨(Sz*tE÷²ãyÕ‡8ܺN²ãOIùKúÆÇ3ѧz34FëA^—ƒŸqs3÷lC%\_³¿Ñð9^”à.è½Na5R­»"µ)&‡þ·;‰ëT5sáŽðÃ:Jû#QšŒg8)§î·jä.ï)ê¹ûuÌ8!{p°]ºãüW>µáFá65Ùj3Ò›ŒB -MqKÏö4m‘ºQåþf\]Ö²©¨`„Æ÷î,§ 2"+qa¸ùM¬!Ðú2“ -u´Ó{ZûÙ£IøîTõ$6ï¬t!TíéŽãn®¦'™…œ™ÑÝkœ×ç˜âzðbfnJ(ðƒäÒOæ¿ûuã£=°SŽÉ.Â?Ñ4ÍÊ©+8´Üq{zê籇 èo„‰›#÷óÇ™atrH:d®Jãü,'Á‹9/ä‹£G4²Ú¨4Ï2¾Ž´Ú,;a£ǬJÓ|ô¢?›ùœw?ÿâÈ5qÇ0»©aî>}'¨éò¹èb×å)to\ÒÎʤz*ê(Iî(ÐÇÏ?üΧo{B˜ôiñhZõÿ±ø»3çª=~ø‘}/à”Ÿ=§}ß>üè_?ü¨×ëôö{ÝÞ^o··ÓÛîmõ:½v¯Õkö½z¯vÐ;88Ø?èìììlltÚ­ƒæAã ~PÛïíìïïw÷÷öw÷wö·~´¿µßÙoï·ö›ûýú~­Ûët÷»Ýî^w·»ÓÝînu;Ýv·ÕmvÝz·¶×Û;ØÛßëîíííîíìmïmíuöÚ{­½æ^c¯¾Ws,ëíìîïvw÷vwwwv·w·v;»íÝÖns·±[ß­íôvvöwº;{;»;;;Û;[;öNk§¹ÓØ©ïÔ¶{ÛÛûÛÝí½íÝím‡ãöÖvg»½ÝÚnn7¶ëÛµ­ÞÖÁÖþVwkokwkgk{kk«³ÕÞjm5·[õ­Z§×9èìwº½Îng§³ÝÙêt:íN«Óì4:õŽÃ±Ýk´÷ÛÝö^{·½ÓÞnoµ;ív»Õn¶íz»ÖêµZû­nk¯µÛÚim·¶ZV»Õj5[V½UköšÍýf·¹×Ümî4ŽÍ­f§Ùn¶šÍf£YoÖ½ÆAc¿Ñmì5v;íÆV£Óh7Zf£Ñ¨7jõ^ý ¾_ïÖ÷ê»õúv}«Þ©·ë­z³Þ¨×ëÇšgÍ ¤¶WsL«9²kšC­æ€;«åRü -,íÿøho†êN_»V¸;tÚv¤‚öæ?ªÓkˆ÷»·Ï -ꌗ¨§RYÝ××êÛ=›MÏQqù®*ë”ïîšïNôÝN¾Nºâ–úv¢o{Í·•|›bÓ|Ñ7þÔ⯕ù:a¬ùî¯ývõ×AE°ßÝ軓|·Íw‹¿øæ nGß8GœßB¡o•¿bT”¾ -ü2“XeN ($[ÍUµ¬náÛŪ·‡Õo«àVC¨ˆ[X;üª¥+¹EŸ¦ÿ6ðK"&”zXi°âîcåíb–ï.~wð zÛUé-¬ÖáÛÆ*ÞÂjÞĪÞÀê^gr{þ{€ß}üváûð#g -è»Ëßün£qØBÑA#ÑFCÑ"à -ú*ÖÐpôÐx8½=àï>š’.š“PÓâšjL[Õ® ÷¢×pÖå «¤‰Vó´ž}plw:ÑR¡õ!Ò ×lícÓ¾{øÝŦ 3hΤA“&-Ó¨Q“暶–oÒlƒ7g¶1óM7d¾sM5d¹f¬¬s··Ë°‡ݵ Ë6`¶ã7¨(Õ®ÒF êI=iÆ°!‹›±¦“OÒ”ÅYÜœ…Í4i¢MlËvM³& -[hÚþ5Û“ü·u—¯×F­“å_À&~¾b&ôÖ_Õ˜8ˆióNß[C\ûqïù³¢·¡­GßFômFßVòu•ÈAl«o'únEßí軓|wÄ]óÝ‹¾Ý軟|£ƒØ³ß^ìrÔ£o#ù6õ×u%š®Û`¿íèÛI¾[Ñw;|Dø'úîFß½äÛ¾ûòuéWB¼|D'°9¥Ü…6~;øÝÂ/˜áüÒg¿®Apö¾$(B°vY©Á÷€Ü‘6~;øu¦ÛµðÝÁ/…O¿ûø%‘;L¡Ô„RCMN¸ èì¸6 ¾üºžk§à»ƒ_DÒg¾?bõ–ýÿì½[¯\K’öÞÀùûIð @"ïÀæ.r ¶=Æ¡A-º%·M¶„™iæß;¾¸e®UU›×¶% YÍ橨\¹ò÷ˆÍb‹"âˆ0UùCÌ„ø">ƒ?“?˜¼ ”º$Žyy+€„²ôûI[gÊOž˜ýlè)ÞÞ.|_˜½cðÂUÁÌ…‰;Æ -Ã-‰Æ8f8ïDÉ@¿ q‹ÆRï$ŽóH[ð–¦ôD„._ÊÄŸ -uâX“8×#mÎ[šì‘åHÜ-—«Äíˆûß›„h´qoi)žˆ%Dâ’™¸e%®Ù‰{NBÁGÚÔ·´HOÄb"‰q™ømeyu~Cht¡myWh¤ÄÈ" {™DØJÜ»Ÿ„º„ -oiiŸH”ŠÄï3ñýJü¿“0 © IÞÒ²?‘ÀI^È$7T’hŒ$ILBøGB¡·´%O$˜EbØ™dJ2H'YdÒax$äzK›õDÂ[$‰%“äRI‚餎O:&„voiiŒÄ¦#Ÿ®ÂgªóIzççç%ò)|2:Ÿ‡7| -€ýOŒñ‰ñøMcd¼~ÃØüø˘›_+cé`Ì|dl|Ç8ó -c[g{Ãx|¢12%ÆžÊ83˜ò<2n¼Sœ(ª*n¨Tô¨º…é¬K¨|dÚCP)éê ›¬dÒñÕ\P™I¤¦³ÜTU¶O.Ñ›ÿhØK;-ŸÎûÞXú«*WHDe€ øoΰløćó-ÿ¥áÚ[•/UÉKŽø;ï Cv‘#w]Ÿ_[C HÄH‚O´Ñ^ñ¡u¢_iz’+<²ëQϳ³ÔœE=~:±Y ŸÀÆ­'6p½c#×ÛÃ_µnû0Uß:ï„I±ïT—ztjlҬȳ°˜e ¸dû´ôêk©ÚïÀï:tú`йuþ¾ýô9N>2{bÊã´Ç¨Óú#ôÇ(Ñ ¡BF‡”ýò;§FBŒ"M2ª$«bëb+ckC«#¦°ÃgòU€q¿2#h›D”×7Ì™5\x e+ñÿOÌ(L:,ËŸÄŒ#«ê ”ÔhÌHºªÛ“ÊTeü‘YË…Ù þ¾uõý‰ÿ>©.’ 蘘ýd5TfD•™Qc‚2™-1‘àÉìé"û…Õ[%DàÞb˜xbÖÔh™‰%5fàÿ…”ÁÈ!„5ÊÍÒ™ÕÙgêGä¯eN¹0´Éà´Ž&ƒnš˜,dÒÏ2âfö£}†}hÛ'3Vû<úç¬öíA$ˆŠ¦Úí˜Ñ®0ðâ¢bƒcЀÍ%I…ˆ¬¸PÕÙU¤0U‘ݶ¶Ýæýµ=¦õN¾ÃÅöÕ÷³«Ø2t§îáÅwðîÞ!‹Ö;ªh“˜QÚ>Ý¥®û¦:™Á¾Q±Çvaœ ¿0S¨ Ùöž݄шXT™)A8ʪDHz£ìì¢lŽÙž°B"VcR†)”°R0Õq £Õ…Åá”ÁhÂÓ&4šØØô´›èHdWÄÇM€t’wgõq ‘1r$]”¤|§ç%n«måTLg‘R×1¿,RÒêDÞ~YˆЕ@Úß2iÂŽMlNÒ¯EJ!äL‰”ï"åQ tfv`eÆÈŒ 3F=²i Lؘ—°.0.°-aZƲCÕòGMÁ>)ÔNüeŒ/›]^2LSÔcÞ YGÓX;|vcý0ãÿÁÄÏ´Žz4^øFñþÍæj¸lTÐ>f‡y’³¡tÑxdTÉxev‡ËrÆ´VöçœÎÉ”“zêiŸwÎiT4&û³¨è‘’6ã¡¬Ô -5Ä+eŠúhÔEÜ'ö½¾ceSÔÎÇMx¬ va›Š¼ecÓQŒ%l\b¬»ßŒÝfînªh‹Ñ;«q‹Mß,¨<±ü©ïòç¦ðG±l°š/*gÃxSƒ@aŸof¿oâåéõ‰=ÀïÔÄð– -bÑxÃô©¦‰ÎžáÆÞáÊ& ñ¨$6¬G•‚ŸØÀþŽ}ÆoY(½<ÊŸ7lrŸlvlL³JeorQ1"±)ŸÀù'5Õ¼eóå -)LlwyÃFúɆúÁ&1ÿT6Øö>gÞ\AªÀü'µÙ½eCþ…ùÔ#w$û§;›÷aà‡‰¿l8±cÄㆠ;쪌íÿ;õÓ_6ñ¤Íűï·îµìó¶Çûþ®½-kW 'âqOu7ߨ3díãÚCß?Ý=Þ9Ý7ÐåµgÇý²½ZûôVãÖþ¬½©¶+j¾Û÷ÄöãQ+k|ØÑ’˜Lu·¼c4§)17zÃÑ“/uéª.˜ÌªHd}ì‰]1M€x‚GV^à¬Î4VmhÇÙ5#ΙÈ:Üۇ߲“æÒ8ñ?R„Æ®ëÿ5Zã/­aúiØþí›òº™þwÇî -'R‘OþПƒDwPè -ì‚×A>_‰4g”„!Ä9£ÌúF q€08÷ߎ.Ž,;ªâÄE•#¢hÆŽ,(õ‹÷òßâ v{¥Y,IIUM‘þ­G9°rG3˜ªîuV5VTCvfÖ@˜ j¤š -ÞºEsY5Õè`‘ ËÊÙ5–¡©á„°ÌbYò¨µŠTVNÃÓÙpñ؆Ýð¸Å7 ·ÐÉZÛ_‹s -§÷Hû›¶X‹{ˆѳÿÕHûKÚ··‡(ž=ZçsŒÆé+ ÇJ°ozù™ÝëJÉ9jèr÷÷c¶wºw½lÿßüÿêî8L~ÃRüC=šªpTl„ûÿß‹c:ŒOÇy½Ürzò㟕¤¥•5'êñh\Æžõ9ÇU=nÿosvõøõqXçÈ©®#D¹{!zê¥èöæÇ/¨©é Šê9*âG£nñ§üÑt|ÛGã,~þoÀ=>æ'x6—_“hùOñl.¿&ñàŸâÙ\F(ÅŠgs£H–ù)žÍåYaÅù'x6—_“‹ûžMÂ÷Åd6ÛaÍ̳<2¬ä¨WÆý2²Š™méæ›é웬@™Æ=4î£Y^šÂjÙî©™¬D?²uŽ8¦®ºúlÔXÅC¼E=ÄYL‹¯ }»¨_lÅU¬ˆŠ¢ûØ<ŽbEP\4vâGMpÄÉò/Qu»GI¼ñè1IZTDÔ]χX‰‚@„ùO÷ØÇf©çè•û,Ç–=ŠEãXظE²hàÅíX–c4ËϲE´Ð*ï1-§¸–ÕrŠk‘}¸ÛBúÍ9¾epÙb\.÷£\lßò)æÑa·£]V¤×9ÞåüžîzÉó!«ÝŽ}ñh*Ý„=bêSVb€FùÏô°ëú§úIH†ªó!¼Î±7ú‡Nx¡BœøF”ß 1pb -=G=Ûà;ž•w’¨C?•Ð+߈ Uú§Ž€Ç -w¢m ßþè–Qæ9¢ÌÃïñê÷¨#žÄ1Ó0ñÞP æd:aÒÊ"&™Xxüü¥è‡Ý»sJVùB:ËY%½öýFo·Ÿž£%õ?¹Ò½‡Õ¬ ñ¦ŸÛ¦Ø-¥nŸÛš× -_•GulŸÍõBêÏÔ ›<½"žæ¹æø¨û;ÃòP¿¬v|s°ùIüZõ柤+¬_þ¼ú~¥JÝŸÝ×÷{Ö?áã=~…úºT¶ïQË^RÊ~ùÝ÷¨e/)e¿üî{Ô²—”²StÀWªe/)eÄ¿C-{I)#Îõ -jÙ_'#wcÓ3ÅL®K›œ ìôádÑ8S™:У£å`i‘ž—}eè8ÚÛ…XŽôëÚî²ì+éÐòØk±XdO(âÝ“h¼&öM·nNœBØ”X5/.%ÍÄg'ø -Û2qJ%¾îŸÅ©V̬öË‹Š(tro×…ËCàDÐI`[å#¶Nò -¨e Jyio842u¼0e„M41p8há :(TP¬æSˆîê½eŠ78î¹­3J:*‡¡q pf‘r ð›m;÷?/i’/?y+Ôãë,Q_9ªÑvÿ´ ¼üçÿ{-þ+WjØŸyø¼9|ŸËáóöð!íì@÷ -O'±ìXm*>žØFÒœÜëSŸvøôÃç81þC=ÚŸ7‡Ïãá£Ùÿ¶R?†qËÞ‡¸ÚïøeïãØßïøeïC¬òׇaœ¥…~“¢W.×_KÜß!ÞÚƒ/Yd¿¼;ËûFÃ,Þn–ØspÌ»++ì -XšM®cÉð\Då ñ]•ÚƒwÍö–†wÚÛ>®!î|Gÿ[ö¿·?'”A¯4Ñ»ãÅg×õ_=}¨w›ÉQã>WÞ›Ëâ¦÷xîY›¾Öœof ­ZvýyžÂ*ß\ýÝÿëœzÙBS@äÒMó½!eo¥}nzÜ*k²ðp)ƒêV¶ë9Gü­ì±ì6>Ö?¨G×B^üÄ-Ðä¥"+„ný›^v,Ìh¿_=X4Ïå…N‡n”::‡¹¬BSÞ¦ŽFVËþ®‘uííºpÑõ‡ÎÙúoÿxž–„ìüw*ÍýÜo†ü~…4'Oþ¥ÆøÓ%Î>_ò4ŒÿAó¼þšÛõ—Ííº•#üxÈ ]QVíéœ|,r£v%µw]gïyÁ–%š÷¬`Ë ö\QÍ&,Û3FoåoÙÀž7j™£—«<àÎ’~•|; ø–½sží¿ün·x¾`ï|¼kïpˆÅÞºlq”.ÎòÅ£RüáÒÅ.[˜dñ³äŠï’*Øoÿ=RÅ þC.ww.Ž ©â¶Lq_¢pÿ!¿w©bÉ_+Q˜ÿPŠÄŸãZ‡ãÏònÏÒ!©âÿó/»®ÿ×"—-ryL ‡ÌO)@h82 p9˜%Jè¯eÉ08ÜñÏjnDou{N²¢z©ÜK-˃ãñÍÏê;5‘B’L'™øsòO‹M€_òp;¼øû:зãºWàkøÜxðhŽ<ÉõH±vy®^üÍÏÊ;e?l‰@#ø–öh©.é°•_n¬½Êg co¬á¡Ó/¶ýÆ|•ßø&Ò‡óðwÿøû?ý—?<ü=ýòûH_¹ó ½m¿çNrýµåuÉ:_–,VoK¶È'ÉàZÆx¹Ç¯“w¾`ɽ)ó}¥Ìd£9ØÄ­õJóß³'–Ïä¶×dã*ÄEv¾b5 ÁUÎ<å\ñîg!ªÖ´šà=ïÖ·q’¾7š}<Þ°߈ĸ[(þº,ü-/ÆùÏ­òï_Š•2ïÇBï{=2 Ø8Ʋ\NV‡½"Ù^£j}ꩬ~Þê”™U‚>?Åžú²ð'YïZ¿ËN‰f‡ê£ßØ×Á¾ôÿüÔ‰¨Ç—B¢¿ãó#=^Õi3kín¯½¶ØÞ¶ÙnZÊ?\6óUvÛ4,b“§KWÖ7ÚnÙBõ‘šÐ²nœÓlæ__»JÎܶdœùÓËqµÇhÚ/GÔ¾K»_Ýu+ŽöåÚ=zö(~¿(w¥‡8¿ZHãÆ*¤¥ÎùÍ¥"A˜D岄Ô9€ò •·$ûïëà âAö‹_½zùJDú-Ëoÿ»Ü숻ÿñþ¾‘ÿƒeÉžð¿ÿ üüøú=<üýô÷SÆ\i¯øGf&§…wþÿ(2t Ååáßÿþ—ß}ûC„góð¿Ðkyí0êçßÿëPÒíáßÑ€þoÚ­y(ÿëÃøááÿü%<üû¿ÿ…oæû„hϤ¾¦õÿùç?ÿÂãîPíz×õå5óðo¶ÙÇZKúÿûõã ¯óͶñº„Ù1N–}ûøËï~¥&-¾NaÚoòåY~ª…g ý;饽&:ÓôGû¦?æùš4‡¢?Ú7û1!§?ÙúML•F`CÕ/úS4€jCµoö#mu¨ö }³7Òû›F¾ðOX "wû -9ˆ–"E]&ž;)‘[;i;îg:ËÞÎA{;L,î­°·Áb¨{+íílÀ5“†s ]!7ç°µ3µ;Ìakg C;òÖJ‡66à­•ílÀô¢:ÛaŒó4‡­ƒ´Ýa[;íídÈ[+ìmlÀ[+íílÀè"÷¸šÏû°µ3µ;Ìakg C;òÖJ‡66à­•í|ÀA6gß™ýa -[3ßiv˜ÁÖÌwak¦ã]t¶&>ØÕÈ÷`kFç"Ξ -†Ñ+$H ÉR[ƒhÚÑ<[ÝDÄN\´Ç­A¬ùaë@þ+ÈÒÙ€lÙ·1bFŦbãÚÚ9hogÃÛÚ9hog£ÜÚ9èПŒvïN!Úê0 ;Û, ÅŽë½ÚèÐÎWuµ3С-îj¦ku‘˜mtvˆ£ÛÚù€÷v¶ [;Ç“½ -ykç;ô'ÿ½w§óšÛ!³!±ßfÖËi[;ÚÙ·v:´³!oí tìOƺw'ku˜E¯§ðnŸ–~F”Õ̧µ7³¯f>«½™w5óIz“ñné”´ÑÇEØpNAÔ<Ëw›L÷Þ©„»~¿-#_þëŸþóþùŸÿÈW.Û?”שѫzÃ÷Ê_îÈÍß!9Þ’l··~Òoú^ˆ·íÖ÷l_ËáÛµð{Kà -<ìðã/QªöÐhB;ÆÒå¯ãðyñ¸Ûú±×Œ%úsç™´¾5à'jóîËkÒ7j} -c:ñ¸‡½‹¶¾ZôD)üÐB=”zC{ÈÕ߀2½fÑÅì¿gô—Ú6L"¦­ -9æ5š =‹¯B[Ø+èÁç×Wé ñ* ›C#å²Òª³ ÉšLë#ãÜ7ìDڤкΈ½ -¤˜Ëæë^HV¦³oâR§nHwN¯{›:”™HŠ}ÝÓÔ±t¸–¨E#µcé¼#pû8 -¢‘¤n#¡1a°u¸t$$ ÖP°­¡r'5ê}ÊC Ñèuï<ú>èµ…¾7N%º@TòuŽ2›þ:Ñl@zt2¹ÓL!KeÒJ±&t€H3¯¯KÖ—ØÚ%V¼j]#‰Uýu™:ÖDBÐÄñJ*.ÑŠ’øO««Ð¾Ba ‘!ßšá<ˆ–žMeò8‰×ƒ[1ÓŸi«O¤ö¬t-ê vá -‘×À8)oh85ÛËÌVùDŒ… ‘q¯Ñçù¥½©é˜µ½ ñ™‰«-øèØ5ª\iÀ8¾ZÐÃÇÀã!Âܶ\5mË5Ø4æ ‹ÊªFz!LJ[m˜– ŽÀÙM.dî°ψ7ßü°Ó“…ÙöpeNP2 i -’X?¶*"101EÄ -›h£~_TÐÉ6³ËàU@Gi"l'Îm9[|9™æ縵ƒ žÎrx9ŠáéJ -?¬E9Éàí a—“€ÝâsÒ. ×![MË7ùàÑŽo›’9Â[àÄÊ“Žt×Ig)ÁøÞ£|—‰$0eÞH;>Y_ø‰0°ÂÓLßç —ÞOÚyqUA&íæ®ëWFßر£,¼sÓÁG„!“`…Gð”£KÃÁÑÓ“Ä„C„ép{Cßm¥ÊÎ1ÁH ŸµÆÔ™…¢tˆRÜÄ-UxNAݲ Gcã cÐ…­×q$na7êC¥S…iŒƒV‘p´Ów™m½Q, ¶ˆ˜˜2í½#Ô¥kçLÔˆ$'c¤ãŽvÈQLb;ƬÙП!ù¼`‚w#h§N -Ë8t›<á¡;ò÷"E'è:M&Òµ% ¶M—¼Ì„&™HV~9ɼÏQÏ&Ô0,ýÔôe ·:Ä¡v(ãYÇ5BcÜËA†ÞCdE÷ "qé|à -xÞ…­L HTVŽ@2Zö¦B”ì–NK–fS!ZF¢|È™QsÀóäpc{dv“£"4„uík’|&,LmˆC!Æ„’é¨h¼ÆhÐΛ†ˆu ïèæ=sèX;. -)؇ÁÄ— 㨙_Ä‚ÇE-þ4<þ„ÿb!‚PPåp&av fGh)7 2ÁL#ˆÉ&„+ÐH’ðó*â(0d~§ƒ‚W†œbb†'hi×Щ]lj¨‰…·A´Mp¹OU^yK [ÅȲá.Ü€ƒ -ÚLä ¦ôT*°ö\a0}Ÿöü„ཉED†JÛŠ®³ŠÖµˆ™‡R~Þ„pVLðz7‘0©‹^à&R’ø‘ùwP.bã.“yrî왈C ~•h ¨2T³!Ô@ô 7)‘>¥c±à¡kF  -ß ¤Ë ;‹@Ë*w¡s -Ì”PŸ ! ]àÔfH/lœOu 1zÀQ3&/‰$dÖüëB™ ‚abQÆÉ| -ê.øî$ÆÜ…ñ‚d^ÄÀÅ H_•ÇÕ -ÎOÎ-–’vlODfE—§ þ³([áB¡…§ƒÇ¼A˜Y6ѡɶ‚3«Ö ‚f»Lc`æhÏ-dªðRO¶Ô±dá=¨”'O´XgŸD1KL×*ì*°"jR -^ÂëŠ>;|@¼‡]¾«ø€‰”è'Ò¾‚ 6Ó(ÍA!á" -™BÆ!*1»BÆ!t`6ŒFKÒc2 V²ˆjd1²ìY¿oÉ52¢i¼Ö¦‘5%»›JFM*˪“õ(Lß”²üÑδ²ãt‰¦•ÁÝ5EIc­¬aú›VFMH‡Š®•QiédpWÒì:Т˜J†€½Ö’ëd½BáÏ»NÖ!¼Íä:Yïbô0 zjÆ3yMŠ¨T¬•Á3Õº+ex mÑ®”u•ÛM)ë0ý…èJPwWÊÔGJ®•au\%£WÔò®’uŽÅH®“u˜`zr YFe:YÇÏÅu²Ž¢1¹Nÿ0„„M'kSxÓɈ\+®“âl:üº3ÓÉ€j¸Ó0|'†´ëd„°•6ÉT2ÂðRiX¦“5P4],Õɶ«JÖ`*Ï*Yƒ‚›\çåQÁx–NÖ ¢õâ:⦾Dt2„QñTU'£N‰í—ÕC‚H_v ®ÉºT2pÔ^£«dà‰Õ±‘U²dꪑ!*%4L#C‡9o -f6Á¡a©BΪ!è ‰^i -BHƒ*d -d·Æ‡3Á¹|Á—÷õžÔ_ÿùÿøßþðOp¡ÚŸ„Gd^( |„ðí®U/¡z%­Ö.áô?®^RàLæ*üÚÖßà#„3úÚKHÇûÒéôðsˆ8þ%˜”ýhß½|ú!¬§í»7€`á¿òÿ è¸wnß½ñ™õ,Y›Çgí»7÷_ùËÒ8Nʾ{"4‡IÙ÷ÿžŒÔ!¿=þãŸÿéÿò¾þ§ÿíÿò ßâß`o þüK|xóß^v¿ê$Ò¾†³’þ§€å3Æ=Àè -ÈÀŸ~ù3u/¯þ;\Vü_¸QµFU_DÇ˜È -†0Aýg½”„5)n¯ë,Ê3Çzú…àåªCXS!êÖ1Å]€.ƒ£4þ)¢Ë>%x;…Ór— n] ëA¢L“f$yÐôwL:Mc„âÌï‚4£SÇ) :-Ù¦Ú¾·•½kSˆaº–7š6ŽØoÒ–:©mqôaƒà¶l¹ÒiÜjëàQÄ©ç'B¹²œ>%k–¤c¬¬ç2§ôÀúãEFL#Ÿ“ÑTŸtv¥ PëJL‡¯Æuïy ®ê½-q(Ý£ÙŽÓ0¤1ÂNÒs’‰ä5ë}1ò¾F¥„b´£‹E‘1­ æ/$Í^ ^åiÀó*33'6 -BóoAhþ9dÔÔ‡ÙÎÂK=:4Z;:æ¿ Äž#½Yç×_~2ûõç°_¿LÀv]ÿEböëÏ'f¿þlbvØ“EÌtOZö=2 -FñîìÝÝÙ‘ŸBýé´ñ×_þ>,èp¾N8K:ø‚\0ä ˜Pa¯‰z>àsíÕ©[¹ -’E8ø;.‚2y.ÓÎVºW–{Í¥.è¹Ww50=€I†PÝž!¡4°V‰#B)?ì=„ç†ío†¾}F×LšAÊÏd"e¢‘*)‡®Ç¢/l0ó -ƒ<ß«Æï½™PÈ“8 ©ï×ÙKJÒs&â`ü*áEDIÈO(dzZ§±Áe=@ù… -ÖE™!Ü Eøã ÿJåáæÚýº‰m^ÏWææÖúA±aQᮌ“çR“8Ò˜H;¯¶J°9„ªpÒ¸yÌx{¬QzˆSwý:&êX§ŠÈív[¥g¤ 0@Æ'…âJÓÕ^€V¿f›7FÍ·év[ÏéáÖËxÿð‹W»iRM’7—‹Lb¿aÙâ<šSh,x@nR–Df:¯T\Äkfã05N’‡û›±ìXyµo~æ0¡Ü¤ -`†õ…Þ÷Þ˜©ÌL÷ºXÙsˆCˆë@ජ*&’DŸ¸‚¤ ª -tTB>5ÎãÙ|6y.¸ÊÙ¨9qïb¨Ú\’„*O|ß\;EUÕd´öM–ê›*›„Œ$!It`”äQñà€éol¸-1êÕ.ö6ݨ¬+#4ç:‰T´«ˆw¬‡?:T»Úñå -Ôgaud¢º7†QjÌÕáöýðâßF¹zÜæs5wêá?)CÍBn@Bnî«‚ 7¸œóŽÊ@>aÕK6¸†±2·c¯U¼XÇ!(Ð׶¢cÛ&ÌñØëF°ÀÛh½ÓmZWk૓ٳʲĵE“Š¼ -—RžŒI)¦I’¡mÉ6¶â;tÛÕ!³Á`¾8l0;¶m:¹½S‡`à}°Þç>­óØÚ û!†"4‹]ëΣ‡È_`j= -S±ž¨4Ûlnx¨³=ºE"c0à#Ê0XÚâ•Ñaëõ܆°Á×x½×}bW«àëƒ8Ù9%%ãMç1„"gñgH/±Ln›ØE¬‚6Ë,´–¸GÅex.ÀÞ<¿ÁûÛ²Câ@v¾ºHsªå[‘ƒEy†ò‘åiÄ>å,CJˆC÷Ç'È2¿ª„Œ<6‘OmÃŽóç…ùó/Â}t0¦×iâÜSÐà"UU9*„³5œaU¬òL3x·Ç±W¸`[{8AÚGjœÚF„ØäS¯ x‚¯áz§Û´®ÖÀ¶ðXUªc}ÛU»:Y 5¸H2Dº’C(g ¼.ŸÍG,ìÝÖ-"¾f8ŽA¾<ìÚ=6†|Ä’ÞÞíÇ°àÛ€W·ÛÔ®Öa[!`b¢Ä1C.,æÙëª {AÂÀŽèc?]Á÷¹=ºE>\ùá0.šùÔ6Jüı×<Ááûx­×}b‡U8Þ¹·­ì¬ÑÖU -Fàƒåj¿bÃX‰I©t›ã DiBç Ž@„ìí½"ަà ¨t‰°=6nˆŒ;÷êÀÓ|¯w»Ïìj|}¦ixÈ&Dœ¯OŸ# ¼©ôЋ4‡Å1t8RU©gŸkTèÂRU3î ®³à´õJ’²"ä მ¯ôTLÉvàYßÆÊ°Sm:®€z@ڇܙDA”ŒhVÂœ•·]//ìfÛ¿¥=ßÊÌÌ"\«1¹‡Ò vó–^&þÈïŸ,fÕË•1‚K°ÀÈö‘÷ -T™)m9~û7—’‚á»t¾ÈØ„ì<­©õÀµÔ¾ÙmYgÉ[·“·×à›ëï€EÕ Nm²Â{1±.Ê–#Óº -Óš[LÜk­YdΞXÖC:W›Þƒæ,¼ùŽAу a„•Å¤^šf5 ==kZSUd”áújFGJ,›A‡Ÿ/¦&Å0 Š-³Ña§p ÿfZB ÌÙr^Š?b|dƒÓ#¯LWžJÔÆ­tëô:ÕÏ;¢~~³±±£yÁEj%Ù…q‰ÊìÊlº *-৵-Br Þ²X‡ó(ö  -{ - /tîÚÇÆL±Ðk fƒ¹"ê¢sÈáÅÈ;¡X•ÆM¬"ÒÖtqàY¶Ü€»˜@‚š3*7¼ºaÎp{G.HStn°û¡³ustOi˜ÅüpYò˜lì”͘™ðqÜ“8’S>÷l]s†“E 4õ¹Ž@¤òµ™lÕ@ômìKr~‘Ý‚¯m•Xh>i¹7e$•ë‘伪œˆÔȺ¼,½"P#ŒÉHÇRgPÚ€Ò@—óŸ%¬Hzó1â¬ëXN(ÿâ9p„ïáy6­jÛÉ¢÷3<óÕÄò§6E„„LÒªH°½qÌšyn\‚œÊË˃ÖÁ{›³Ø56a0JÌ‹A¿7Æ3ƒhkDÖ‹,å¶jȧ -Ž9ä?„x«.‹@%±jæxo{l=ü_ÌÆWšìg“¤%E'æhÐŽzs¤î˜w kð™$8“§$“à5åµ%.69µlr\·œ!0ÞMsзŽs‡EyHÕý|'NP&^9`CRÛ.f‚ÎS}&E -”Bsa“Á÷îkA -%€ˆë -89âj\D‘C øSràÅj -}ï»1FˆïÑ\_-JÓ ‹º# '£ ;5ÃA:µ‰e£+bÕFÚfä1ˆÇ´:‹E&—ºÙò®z¢±¤ìçI²ZCEø[okÝÊìÊ…ZT[-gŒ*ŸçèØßlzµwí#NÝ¢›„¬‘ b„$-¨dòåipy6˜éb…“`”š¤¥IALLE4fOF Ôƒˆƒ^äxß%Ýb„àÅ‹ÞËèJ¤\ÛN‚¹èv:ýE=‚šFeÜ‹øbÞ›ž¨Ú€£Þ î± -|ï6ÆÖ²À9°èÙdÇ("‹Á…=ˆúסEEC îþ[H3KÍ,Ü1€Æ¡îñ—ˆä¶!=›¤ -æÎKŒèúl*g"ˆ?Ì´ô!)^SÝ?‡~}oú¬:Â\‚ S"P‰Àà‚7Ydÿ…w\¢‚Å„.2ˆVj»â´x=€J2Š5øÁdF%,Ú\9ŒÉÓ—E£BŒJLáá¬bW#dBí6.XW ª‹NÉz\R*Ç9+"³XŽT\œ‘D8Xõ#Ý kÏ\yÀæÑ\X”èg¾ZÀ Ö"djÅÃ@‚ 牄¨ähëyM꓈ƒ ðIßß'×kÜÂ{’¢$ÚïÑ=× stýÂ6%@§Hr˜GCpIs_PI’°hmï<{ŸÀ7‚h±QTä?ôlÀ̓ÇØ°7æRغ½³Ç¤DyR¤ÁÙ-¦k(õ嬒g³~(i]5Xž-żª¶‰Z·Ã¼L}æ+X@Uwuƒ’w –¶«óHFkó™ˆñÄuM>™FÕªJÅ¿ñŸæ>í¾'¨˜ÈÄRØ4;™Êµ Ü]÷éü:Ä–#²H8Žµ³Æè؈=élkë² Ý@ð‘³bN¦Ømœñˆ -ó¨„T -';j‡ÅDÚã8mDzT -Àn"ìtœ¸ìiN6‹ÄŽOqO PÇ5˜k¦=?ä Oq%å‡QÝï`€mÖ#ì€);¸¦lÝPìMôçO³p„ŽÅCDý -SXMƒ'êÙøI_I8³éÅYðéY‚ØØ c`ÛÂÍúR'ãª@BäK©pœ4 µ8×!Ð46øé`y{6Å -"A‹°|.?,Ô)ür¯_èCi’”'J,âG·¡dY>Ž¾½³UÓŽ -Y*ðüãнЄ3^)³^¿p[¹â2ïÙ'ÉB7hé¹&âYQOtKKs Q•|MÇæÔ›’®HDC¨~;â^7"ÅI·†Óð9«XÀæoÅýìvõ¢ù÷jjë:üŠJ˜QƒÓk5ð‚y4LÑLÙÐäòNŒÓ”ÍnÁ‘æ^„¨ßüý´jɸÈÌÝ#0Ô›ƒòYÙCN܈ɥ–VÈI(jñL),Ê4È9­gŽÅÀE›Ú¬§Æ˜p=õš¥ØÛÕ -g+Ëp5½ºË«T“A,ÂôE@ÉõÌ:›VƒÙ#HjRßBKZPqáúŠË9¢¹054÷ƒˆA¤jQ=c_æ¢Åõ‹×IÈÏÚ|Ò ¢\ç vf• Î1ôú. ÆëªÈ}.Æ­gÞb†…Î càäM>pî/ Fî5¿÷ƒ1H®á(N•*äµ²¹¯E|o¢&l¸¸¢E×jSˆµ>Çð+÷R“:EˆûÜ·ÎY¿Eù$ ²Õä§Z•'Õ:3J.ù©Äsc컂Âpé©ñyÀÖ\t-L£m9 -ãYkÚihÕÎd+U©Ó4²H§(q¢zÒ«¦$¤âtîD?˜pý¢uþÆÄ:ü7™×ó)¾>±®®o¦ÖAŸ ¥BŒ0®7ªƒ«)«×rÓ‹ZØ -d'רÅØͼŸÚP–_‚jªÐRÌð“ônÂ6b§¦\Ì.v¯ÍŒÓY1ÍÔƱR%|9Xü+1‡î’†¤Æãá&^¡IÉ’‘ÍÐ5îu°ÇI3²¸°â+6×s1?¢˜k*k¼@çL´ã¤¢íÍõÿð…Ô¤CþŽ ¾ô®ãÅë–p‹Œ oHˆ<*n›aûjáÏ@–Úâ=«5“oÚiÖ³ôÁ“jóöT<“åj™´k½ÄN–IÉôH&?Œ Ná}hóµÖ -”_í iUƯ‘¢¦¡À‰ly1 a{Çœ*Óê× ù -NSî`—÷ýßÏ™;oýXzéw /-ß ïûjŸ6ÊQ¿…tüúãf“\¾Án"%9‹0¬0g”‰ªbzSøó ŽâvzKå¡Ÿ{ð­£üœ7e¥Ó%ojhƒ\ܵžº^™Œ]z! b‘%vU3eÂeMþ™ÄUôÉT8s€ªæ‡!ŽÎÀ¡E#?‹à„ ºp°TN3\~v;ˆœG‰JÅÈ,T#I*Ög“ƒfdÛ2+žÁ–,x5‰¡ã³ -ô4½ojKN³|® ò4Ê~ Dä³±Y]‚ÆB¿Q£¬öò1Ë’Ìã\UÓFâ -G(J=|6ò¬=³ÿùzX—¹`è2ÂdÍÖû¹ZÑ}7½„K›E <6éÑo$Û6I_sLÙ÷W”¥y¯¶eX›™°ó]ê&U6¼guó CqyW½À\{ -#8|¬ž]m,‡†ª =C“ÑÆÐIÄp W^òfÑ—¯¹‰°§Êv¼]eßU<.ü† -ÌûàSª¶ô¶Äˆî’…`™›Þ!¹öTM9'ñƒ8ÑŸú¸ßzÙ³“Á;=I¹ ä„?åFåºÐº5ô¥Õ<¬Šï‚ð, -¶ƒËª˜«0E -+±¸Säfv%÷øa×õ©XP߇fù’ºåßÊ.,-ƒá¾ÌnËØ)¾â¬í)‘‹VóKjUâ==„¡¶ÌÞ£kê2SÙqy’/„ÕÖ6£Œæ¯E)Û&‡SGÀ×|F3ºÓykB¿& [z¥Ñ5Ómk\4ó)‡W -—,L°žl§™TQîçAJÐþ¬–²¬Nº  -¸)Dï¹~œ§ûYÔ˜Ve—´a¦Œ>–Û!k2Ä Ë9”ät¾lT‚Øš.Teðn,³œbZ“*Ž":ÅiQCcË®qòƒ¦~kÑ(K·o÷ÖËN`õ*’šOc7üÆH‡¡'ŒY+GK<ÃXn“ ›F)E ¿Õ«}ó,Ü<5·¦#CkBá¬^‹çØ Guë6¨Æ‹åÖFTü™æÄãªrîá’¥šå~éB}Â0mÛê_-ŽìVŸPùf#IUÞÖëÀˆ<ƒâj(ŸÌy¹0̦A›|{€÷V’FŽ0q™ ‡™Ã%yz±IÑJËåÚnâÄÕ£ºªùù³¼y‚¸Œ)¬§lqmTWéêzƱÖýy­_¬mÒï[ÚTH…Ý/G¯1µØbmFòP·¨oF·›»ö›­õõßÂ…›CI­ÄbQÐÝKM  F½ŒðËí©Á<9âL‹92CšDÕmŸËãP¹~¹@G³|Œ ¤™K\hº ¼J]cº8‚bÅ• 7ì]v_('ÓJÖMNæ U9Ý@ÅZ3ãûÝ%¤L -àáf) -œVìèjÍøXóƒïCââ|ž¥"Ü_äÔ -ÈnÃâWºp ¦JhâË-¤/³óDbä‡ôqƒúk‚Wn|Å¡)I=\Q¢d½Jð‚†)Ù¬%ͺÚ÷Ò¬â“A¬ °ÁZiã ydà•È²r{D• -AcÛKdÌ -Hè¡m9Ï\Srij·08 -©AZäzh¤ÜB‡:HÅ '«Íå‚OšÚiŽ7ßzs|w&!ÂOùv)õÄÕê?­ÁšIBG<4—¯ðâA“%Þ°¯ò½Ïch’m~¾3=¾õîoÿ #ÑÛMŽŠé¨Ž¼îí«S—j(aC»øß-ö¥ñ5-–/gS/`Tˆ~¶B<ž/=šþ²ÂkЛøL9ÓhX‘™›ÀS.Üi`!Ò¥b1z¬Iî°Á«|z=Jù'‡Áªbñå""j*¢Ä‡2úoeÊÕËÍhEz.>Åbx_MßÇ¢ïÍé{ßè{6ú¾×ðØé~›7˜ÁMà9Död6ypÍ_ŒPþí?@•³¡“ù1‘¨Ô¤·Êµ¬êd"S59SÆO÷O¡ÌY+—à.‡W8G’á0%±ðƒ†Hü ’²–'7ëTÐd<Ð!Mo¥‰ É¿^¯‹ä#z6¸{b@jÍL†<, ¯Û«J×”mØéÌšcóŠMkš~Ì·ù)¿?¯ÚåÈ°H<ôšLûò û2ªt5ÇO¿± 7—îÞ:ßÚ”›ÛwÞëC¾þ -¤½I¬¯h»‡Ôk@•]ƒ)‹¦þ( C3.ï -Iw$ª›²×é^¾ýšT•EëÌRÖ8©j*§©Šè_‘ƒC4šíâ=ë2j9}•«¡{>›FóRØ -.x† µPyNóø늿v fCë´ ¹­ G½÷gjn÷xʉ XE8}$~Sh’ëy)žÇ"B‹ò^Q‚T&žîIѶeÊåj•àv‘¬ì¡×þÈÒqÐ3¿’%ÍoðìELŸú¹ßúÙBÉÏ…&îx3ƒ80‘².9pöm“¬ø_kˆ4LÆÃÚ¦‘­€ml¹L|)ÉeHæMáø>Xó߬VØ¥€-ü%õÀ9ÓêX‹ $-‡øÑ9£$8ášQ-X’Y|paÛ‡x‘8°4ÅìñRSÊ÷å(Âã«.•™4ÝXÅ°“Œ{ j3QU¨$ÕÔ[PSκh1=Y`¤œPðøæRÓŠ”öáûü,aOÄXõ¦Íâªú¾›µiŠæÔêóÆixUnÀÐÅ· hya9¥<‹‘”ì!2Tâk±R1›êXrÖÒ”u:TåÞ++ ;äŠÞª©E'2‡Î2v%‹ïw…ï°õ˜e®WÁGpóü<©„xYø‘Õf °I…Ù<¹)Š©À”í’Öó‘°q¾5Q?8ÙF`š V僟tÉ+\uãÐÆ|Ió™&¤U ðêEƒ\ñ:‘5 ÃÆu:×Þà þqU¤KÉêp°cÃJgùÖ2ÏúÐ(mÓ=¾±(,GäÂW)}«šþ+±c ¯ÀÍ\=[j3×+æóÆÚžç©G•e³[B@Ý:tÐ]ÃÚ9„(T©lš„xcÊ6ÜnAöY¶rlôÚ|G‡Y ÇD®±¨‚ÖlžÙ(kqw_[ºs€[îî”{œäxNÉçæ¤'9ÖfÒ„/‰;Æä†óÂFÚµxI²„:-¹º%ÅCH|jãË —4ã˜å¼úKÓ ³HR‰WõëVå—/…‹M­UO³zN;4jØüûN"µ6ù¦Ò`b´]0Õ’ô¿‹“صô “NŠýÄå¯ùƒy䇖 `­«Îå1H"8@™i1ûJD ×(¾bC¢è5O\ý*UnZf8iVKNè8tZÁ­Ê[ô~aï“Þ%X¼u+Ÿ¦qü[¶E«Vr=GÜ·#üŠ£šxæ|XÑ%tÑôä%ÎD^Þ²#ü£Ã)›\Â(À”«òŒhî”r Y)máñ|šÀÍr7$¹]€³›‹ã¸CÞÁìJÉb­ù6ÈîE˜ók©™‹yw“jÂT²‘- <µh„ÒÊbƒÖ£á,t†Ö…(EÔLYw -G­é¼Bò“úâ2Aã‹-§F䌦×i2ŒE!ßOÖýn [|g_µr-+®JÐ''—mÙKÖl²œ²ßf-ÓÁlkZ¥'ʳωWª†F˩Ѐs^îbÉ…Ýï¡kˆI -J¼3WàÖ -W›èìºþ©Í†F]=š…H\¤¼(Ib;ÈWO1pŒiã·Ê‡êæfuzÁÄ¥õúk4$R“¼H%ßÿµ²Rà΢´!ÁÁXG2ƒ–Fçsm ó8²x°¼ò"Bñg3²j$Kf×JgÈÁ(ž¢ÀÄØ"¯4Ç¡X} Qî¶ßJÌaï€ÔïSSK§[†bÑg[7áÓæL\È%YqlG鎉Óì/#;ì°¹Ûó;Ø‘Aï¢åÅåªJ«v¬ºñª\ùJ“ż¦x5Ÿ–½EËÁžda4°V/€#CéLi&csn”ç¥I±6ð‚鹶\Pcj[KžêVÈnOÉB^ Õ%ÙÙê0;Iݲà¦1$6õdÑêAHÓðJ‡×ð×zi"N5”ÔLÉ.×ɾÚ@ô6wÞwÁ™u^ÖÙ -—w¹Vïæ®y'¸í3ø€Î0ȵ‘î-éjØ«bDxÅ&Ò$…P Û4«bZì+Öœ—!Q¨)7É ŒãD˜“eék•¾Šºnµ6æ0#¨w@²U²0¹ä·Ù -È©¹«ƒjå -ÕÂ<ŠÚ+­à'¨U©jƒå­w3±N„òIÔ ‹Bâ) -'«•KÖdSÎù¾Ø*ª²Âò{´²«”hÖ|,dæ¦ÈZ÷+^ɦV˾Eí²¤uÑÒ*QÎfX¶yÈ60È`9yžó©WËjìd¶ΚÉI-»…‹ØXØk‰ª7Áea€¦ÀÒVþ_ªemE,]9h_9ÄEÍÄS`‚bêîIRþrmEԜѮT(Ä¡7‡hZq–`æJ'h¶-ZlÙÓ­¸®ôÉ753ó}#ÕWÜô’NÀÔÔi–=•>fÉ«ƒUIÞÊ7š©ròÍiBwqcT¥é‰6,WqßPøV’m”œºŒCuÆ,˜‰º¸)ÄÃ*m<†bn5Nâ*éÑlÍŠšÓô&TïAmÚ©y0*Ü’ŽšÚëºêßTqåØ朲ˆCÖN%Û<¹P¬B’’Ø,Tþƒy!ŽàÖZQ¬pŠh]45KÌAjï…ª…»TqñŽ531k‘klêp1ßîõæx'¸SÞ!´†Í´¼W^ziE;­žÈU¢ÔþÔu=4ßÙbÔ×Õ‡ ßî§JÞ¸‚™Ÿ?½¨Š€ ?îjmjš….œ¹ç -VüF³€Qi:%/Ñ]„ØqbŽÝ´Ãvô{¯–­ÁêýGÙ, -úì„<Uh‘Ã% 6‚shÜyéWÊ¢¼#zAˆhr¶7&V°®RØ+ÍôÑ¥¡Cl8E`U~ëçã+õ›ÀÆX=dÕ -‘an+)ZMð¨WÁõhÖ=ØZV9óÉeO­xS]1{\T¦hÕ˜£ 4\ÖKÿtK~e›®X[x5³ruPöOó£“\áóÁ<%\“Q¤cµ×Àp.3kYƒ÷Ø­£uzø¢õfb¯Rp‘ B yÙú àz˜‚”ÜäéiÕTN©Üë¬Æ/dÒ$ ŸqÓâƒ_–Ü’`w•óëÙîôªK -HTâãî"eÇ*—?ª8¥ÎŽL_sAE›…­C+H(\pŽ@­.µH¨Û›´à¢T¢»±ö àA@=±?€±±7Z)Cä»zªáŒ&ä¡ ? ÁÔH…§öUTVeà䕺¥Â —HqÅ…ëŒ7m:¦—õ^@Î등Î,=¬zÀÛ0tat›ÂZª?Š»h¾°#[2¢”Zò"Rûp[«%4Ž -ËÄu#º·¬Âô¸¼Z1ucÀ}¦ÙMYjÊ(¥kVu‚Ã[œZÁU«?Ú¼ž€j¬å4úl7)­ªéS<øÖüê\ -&ª¼Uà×tô²µ¼Ã×½¥¯îlEõë*5\TwÕ°·©©{ -AšÍ+>Û%+Û$¯VôÃJâÑŠ‚0؉àI~š´Æõ÷ªSË÷šû52V[AnRUóí±qŽ–¤o¦6dª]&Èâ¯w åh½sÒØÌ> .ÊP6«®fàfíæQÆjÄCÔ¯• -VöÙº]†9!Œ若‡ˆèÍ¢5ù~sÃioÿÕKòRMÚÍ'§ þ„§ -E«V£yTKm^-&ò=zÖ3~=ÇTÇÍ þàU)8ÑØÉ‚Êm™Ø»ÆiÑ=%=™‘ê¨*üÁH£Õb˜r‡·•Ÿbº*Î^¯S†fÎT$5Blñû7ÕxÞºËüË -ƒ¼; i?ôp>K¨¼":ñƶ5––ISó»TQ÷š—å;ì• -ê•ÃZ¸»MeA -ùý`³'ˆu,0˜ÀÓ2lÇYäº>·œ]ã…MàrðÔŒ­x?-uŽä·²‚S‹EDµî"gæxëN‚’Dk"A¬ˆ¿h×ÐYLÕÖ­6––Ù l÷‚@N¶VÁ¼®’H´îZ äz>¬¦KL{Ö6RˆD°„\Ô½@°ò=.Î× Ï/rççƺXðŠ5û•M稗»{Àê<‚\@èZõtñm¡ÐÒ*®-ið(j}Öëø°¤u;»›!¬*/(±8 -15•ç…Ç몟ý¢f5¹&EŽ~µËñ  -äheÔ"f›é2§–dàK“W¨HviQïÍzbÓ€*ïE,Ê·yÊÅšƒâº,±Š±½Ê•Ø ¥ œV¥ìz?Ø)?¦SâwVt”«D-OߊW$CËã·­~ãŸïÞ¨ ©˜ªÕzèj3ó0n\dàáSlÐ.³²ŸôU—+sÀsËÓÃ=p+kN€[Yû Šv™Ë¡0>H;ï×I„ìWætk(³?ܪ ”&A¨×Åy¥„`Àd£ƒrRZ¼´>‚Ù ’Ôpii‘Ä%#YÖEÝ>!/ô=±,²˜d½‹!º0ÃNnNF -ZXj1£b3 .ÊeãX˜–¬S]×)'÷â³çpӧЖÍÌXo+Œz´ *œÈõåÁ²ÚfnãX-‚Ò…ÔãŽZší³9öùf‚/ÜŠ;“dÍâ¹Î‚Úí2ì€Ccl0ýìjš ÍRÝ@þ¥qè"K|¶S¥ü[¨^j -dNâZ°¹[f?*Ÿˆ]pµE\-Ãg«y ýH¢ÉŸôÒ{Ô7—~¢Þ+í‰î:›ˆììl7’ª6ÂÎØçºG.Üx ‹ð×ÒÌè”é7†\%F-‚“ø‘®§UNg©PÎÆ”8Õ‹ysKìÔ‹wŸMÇ‘+•#ÔÜb‘ILš}®ë6Åñ‚d»M¯i*Tlb¢öKR´$^ìë4L ˆH×ß.TÑ{-.HNž&@§(f{Dël HzuÖ+VñTŒSôÉ÷æob<‹YäKÕÝërm¹–dœeݨŽÑ• )øù -Õ®>Õ{•b—XóßÜk%ÊRGÁ5,Øš»D6ø­U\wÚ•¸+䲪ó¨0ÁlT–C×õ‚£¡è)øE‹r K™ÅE?Ônã„QÒžIqÞÙø&çæù³93šÅ/1ƒnÀ‘î þ¬Ó~°ÅËœŽ1ì÷{sl 86 »ƒ Øvà¡U³,,@Ùl=M­mª G*»1QÅóV¡·?ÐXµù¤&VP -nE³ÈeZ!ŠŠ©è$ẇè—Ö7“&@‹{‹›-"øún»’%–’iy9&#Ü3y‚‘†_Á¥?‚N3ú•˜'Ä0"¬%05 !0¶• §áÒ z#ye1†)WXil¢YÔ*9’¤ zŒÛ¬>USûiÐUé )·dï‡w¦t‘¥¬¹YøkÞšjmylãÊÊRÇü‰ -Ÿí.öˆ«Ejâ³e5Я©``j‹«¾qBüçЋB²úÒ 8ƒÜض¤æÁM‹`A‚­?©ƒÒÊ“&ŽÂe{[w]&ùõìãw{2Á«,J¦èAÆíérÓ89°{úÓ*øŸƒD¬0Ü.\PVµp»E?€Õ3y¼"ôäê&¾òCꢡNŽw`{‚MMe~ð=—îS×àȺܱ©nÕ0r3˜¥0§íæÛ´—ê )XÛ ·!rIˆ,ɪ–úõq‰|V IÝØu¹(’ tµÝ=¡‚%Ü+уš'Ù£g)š{^&[IÔUpƒ?rHµ^P6•pÍÑæ+ø†×.&Ü ˆRŠ43%æIW§9Rû‚Ÿ<²Ë¨«l*¨’ ¿ª‰ó]¯ÃD±|_e¶B~6'¬ùt’ç}]¯†ÉM±›q·kd†ÉM$"À°µ<±&‹M¸ZS#wâ4Qˆ0ÃD¡D$H•<³¥`•w¸Ý´‹ é<“nLÖ -&ØßfµIMWNÕnq°øÕ=G8D/×SWÚ»(HúãØ.¾K×ojCá,Iñlm¥/&»<±iI_m DW{ -_Á"0Z"] ŽÈxoÛ$ªr•jøˆCí,ñð…¥Í®sʞ݂ -+zÑ3X¢Šà"ÂÕÖïâäd·—š» Ní/A|‹Úpž6à^/!ήi×ZÊ‹ÃÔ›ŽéìSôšL(X§Q}À"½°#‰©«•Âeã,Ñb™È„ad»Ö„F?ùð¢ÒT 0I^Å×!émb‰sε5p>ؘ£\òˆpµ!‚EDŒyÑn¹x¹LDÌ_ˆ[_ŽÒÈ—¿+™Q?i솛Uk+P‰€ü½XŠY£ßœÇ=X¶ö^rhÉfB“âš\©G ø”‹úEXu•E0¶ —Ÿ~ðæÚXx~J&ÔV-+,@»f'‰{ôƒíƒ$Àõº+åA«Ý¥ÀnõdzÛ°‘J -£a00)a¯öø Œ¬ÇhIðËcšj–™–(‚0h•=cñƒ_EžülK9‡¥ã‘Bc;Ç—ô2•àbIÞ8÷‘¨‡8V»¢~kÿlènÉÕ{E¿ÅÒ"`7ŽV¬-Úõnì’S”íÂØÏ»¢‹¸ªj8bLâD¼^ˆÏ–¿&e”_-WGëÔÑru´j,W?jh;\òõ±Hzk‡ÊÙèë‚<˜q³Râá!î|æTj®%ÏÙ•=‚ò$u$7¿ÑWaŸn÷'xS©®¢C Ínù­Ý®ž¿|~65к(SµÞsÏìó8..½×Ö¶˜¬°D6¡k5µóÂ\ä¼ünׯ7"ëÍÖ+ä|ìɉV -A½ Ò瞯z:•°½eX†0žüI|:Á/Ó]ˆÙÛ«“C)D48¼HP+Ïíᄆ¼ó|êßJ¢žáMS(Ûh­@x³O”¬&Ôˆç ˜døŽ*ì‹«4-gV)ZT@­Ñx)R×ÐÒÖ TT e7Ê'ƒWÉ<²M@µ #ä×oCÆâkÐæS­~DÜ.ܾXɵxâío ÕMô»ÂUY,Øí´q³J¿žDXv-ÖtsÞzÀ¯ŠåÈš)ªYd­ö7€Í_:ß÷ÖàΚ]¯±Ã»aWã6ƽ·®5Ö÷jHÅ^1öáØ¥Ú:­ÅËFðúXïŠóš”È ©í=¤®ì±ÙJ7èTìÖy~S2”gÉ}z9ppY'©NªÒ‹ÒŽ*5|ª x…kì¨[ÚB×8eGSËSô&Ž‚!4SÝ>Ú–CSܸ1û›™´²qy°ûÈ`r -N¦ep1Z‹åá)-o², ±alÑþlú`ñ*˜/ñ“ªŸëÅP:‘ELB¤lç`APP\Í -‹¾ˆÄ‰8:‘¸EH¯)îuö…Q»Ÿ-Ø¢}¤ÓÚ:aTz¸»c7±ýÖ¹¸K¶ïÐø/pc.+ˆ -ƨˆH5b"[°ÿ³+-Yé/˜ƒ¢#é±Õ`¹ÌÃóö/À Dö7f!G* #<ÀÐ>Nÿlì ||z/«¹kqÃQt4.VŸ÷e»Z›TK+àבÉã”ïîäî-F°ºqøØD  V@Ç#$3ÿêW—»2sX=2ªLIe­$ØDƒðº¾s[äâJ9<»o„ ˜N4\Æø4ÙÕ•=.˜(¥½ÜCvZ£Y1 Íïo¿íÙXœ—rí‡  måefsÎÃ{µ& nþF‘Œœ³¬• -:ªëYëݪ[õì×&£ƒfÁ¬€ëåÆ|¥8G[2P+ë7»JZ2µéZ^zëa\õ~𠼯Ӏ¢“P{È(/R²Üí%3«›€¡«LhH}ø$¦U0ìZ2]Õĉdd˜ba“]4ë@ÃÒ¥øëolÇ;ÛóQœ -_eÄ‚«hÈ}M³*\i!’$% E©„ W‰²ôEÓH§ŽsÛäزjMZ¢º˜]À^…ø0mÎÕî›e „„¨¼šQGÀ ²«‡WÉ@’n-¡P½%2†Ö6 ö°ÖM1 ¸Dƒå“I:I‡;S|œy¬Ë€`Š¬=ëíÕÀ»ª½:÷Éî>ëšðÁwBÖù±m íXèÑî —@ä^²£ñÔÅáƒsVG¸ãO¶Þu}¢¥”wgãÕ IéÜ–Û9#9¨ú3¼ØBç8Œ®ÚŽÖ¤c`‘axÅbª44¥zÓêAê®Ò÷0TÌÔ»R(YçÚ{-xêht#Zý€C]áïP@üðpj‘Õ,a% -¬Þtlõ ¥C"ª¬W}Ù›(&(l@ß:ÖnLÎË>c%æ´µT.€æºæ0ì–á·l0Pø €ÍwCëc¸ ;Ü% ôTÝÈ5x‡XÀ£ív?(§h®“t1¾Òx‰^Jt•<èλ¢D -›l¢1¿ûúx7Ú¦f@óÃb|Øø¹cÎÇ…ÅÀ-ÛÎ5¬æîɶgKÐöÊ& ÏÖ$¬ >=ZØDzmi›‚Ó -æž!Ìå£Ã%¨Àà -Ö6ëȼ®©½cïuÍ7K¸N8Ý ?Uš–ˆÓËs1\ äƒí¤š× -°]ë„ -lTëÀhIÙ"yOð<]TXÃ2a¹™PÁK¾¡šŸ¤,Á-¢îCéÕpa » •”ξ-ùtx1EO2CùŽgÛá)!”Œ½.¸ÖzëˆwSZž6ñVÖ†.jgf½Å‡ -ë!Puž£z뚸^ýŠI6§úzc–#U²ôE‰·D¬bL£Ú!B„’áj3\õ°%kÎ[ n'£»ý¦Èõ·èÀêàÞ¾F€ýâÃO6e­jš”Jâ•Tâ^9#¬rX…8]2 ™WO­‡ËpKµÒ ,TqÀdœ™IëêÙj8—²šúóQ(wšl!ùbxº#æ 9ÒEk»Ð*qb§,„&¿Š=IÝauãí*2\…Þa 2H<¾“bãÜê!Žž¬‡$ñ¹Ú¸†]‚yÔõ¥Á:°’A‰‹’leË,~Í–D“ã±$‹êpls-Û&>;¼Z‰s&g϶´±Xv¦Hë Š° —œÜvÇ8æNZ­]ÙW- ŒœÕW†/x[G½†M£÷s_Ù&Ea1²¨²Vƒ?<kG¸Ÿ¡j™½(É>Ý0…e¦Ià’Ë°y%ô:AD6cršŽÊÎä„â28k+©tªâÁÀ¡$¿™…áêi–%Ä@5Œù…/šÇw°eÙIö4E«fÙÕ =^Xm/·mOµ(H˜‰j–%n,$ { -?Ì+»šÍðdkS•ÐV«/ ªj×û°á÷k¦k³AÕ-b¹X%ÚäYY --t3¢pAx±’àBä´¸u°8)ÀýŒuˆV’ÍGâM‹åΈ€›rçF,®.4|*Á*p©:Ó©[Îó -j?–xf^) 1‚Üaäâ‚:Ã^½±P}!–­›3€V ®:zöâPXðèœô´ ÛðmßLBIRwÜ÷­L˦d¨Ø’Eúe -M–ê1Ë"cE¦‚™t¬Hçðäø#,ç\Ú¶iÒ½õY5n`Δ|â§Pà¦åÈv&Í:åY™KÃq½¹–“䲓MLÉ઩5»Ì< 33qp¨?£ndŽÅDƒÏ8¼ƒ¦£mJ½¯ö`up„û®%¿p^o×ødÈÞª zšÕ„Ò²;`SR†ƒc}² MÅoXexp°n´\ÝÆçŽ@xvÖ,´E¯µÅò=dv»}ëµj+E*0¡ÌËP‘TËÕó2SâV¢óéû½&³N¨¡Š»uÃ\`mqëaXãzóÆMQE›[±z8Â}ó¢Y¯áfJëȯ²¬"Ck•±«+ˆŒÆʯ9lKòÍf‰~‡³Õ€3.—ÆÖ-[ÝW ®È4Ì;4ÒÝÆЇ­Ü— X]snCâù(l“4²D÷S+ÑÀ -Sý ìÌ{ö¼=o¯âÛ3­Ïbë]ýñã&¬çpÛ6ÜQ§rOB/3 ¤±ñDS'ÓPöÀ±–ÉŽßv'@/ýËp)!Æp7uZ}6ô:Š›sßÎœä,•l¤×6)ÎQìqU - è›®¥šÞ -C´”0€Ù±1Vo™g]›®ªw7`„ª}À˜Ëõ¦(25Å¡Ûi² Ï÷æ>¬1á;“üUËf‹ÓÂx`â18_MŠVfÏ–WtÝÄ)MÁ®Úe%gþèå† &t¿LšábÏfá¨Vï!iM4ø]5m@gA’~F°Zhƒ+°6†â=Tkɦ¥Õ›-$XJ€qZC¥U.oå4gq·m^ó*zl³ß(ŠK°zßÔ( -bø0=,¥ê·m«õnùžnïaƒWÈ“6˜¡ó¼ -ÛvðG»‹¯‹ÕðJ‰PÐ˹†]ÉÅ…-<5Kæ9{깜ÛÚgIÞEÄ@ëfp2w W»YËõ¾¤SŒ¥¬ÓºŠ{ùÂ]×·7W•I¹7a°Ûº—ZîÛËÒ$Ö -¸y‰†E?H=7™ Ukj¾[±ÍboŸ›·"…Ô6øa»xüa!åG¬êã·@ 3´ -«×ÎKßxØŽ·w飡p8…Þ+±ƒ"±^Mƒ+¶”áÕ‚±E*“¸æ¡r7ÃÝ3¥3cñº²(+f‡N^M`­ÃÚ³ÝtÊ@5d;m ó†e1äéÕi³Û™¸×iU¸¤Š9@ù|Þ®q•áÛV¦(Vš#¶5¶ K ‘CÝhªÍ–¡ -²`–`$Ï‹¼Xçf'Ýà¦ztµ‘óº¦õþÃ&|¸³9v´%ê^Îïño]¢Nøþ½u¼×â ^ÐkT€QÍ4$V²åü÷*^à¸Û¢Õ/þJµ¼®Qã›MZÞ’¶=¯0³šA½°ã«73PLf¦wê½âxû( ÅÛ™äQÕš~–°9 mŸ|øsï5+U™b_UJ˜}¦Þ Í#pjí4o Ž?íÀ‡;;³é˜YÜEÀm܇ëzÅ—‹FR͇ŸíædN\˜V¸n£É€kL> -¸Ói,&"[¥?6;â\Rbõ åí{¶ª»òºbY6JÓ`Ý_`›ç7˜NŒÉY`Gtq3Φ6æbDbÝÅðni>»aK*±ænq-u`N› ÞÂJAN¼úòËŸ¶báÿ!‚<ÍŽhU «R­t0°1<ª*Xh«VÉÂ1èÄ—ƒø!Ôä¢R1©¨o¢Ò¬c‘ÃâpÙÕPêUåTcÁ‚µèG5i”S“ëJdfc$ -¼`G†.ƒªcMœÈ~Ò’ªopuO íÒ¢TÜX­Lv1Ç{•õ¼xV‹Û†•z¸¹îlÐæöqN9pù©‰èˆ*߶D°}M5·Ø÷Ýê\Û"q¨Ÿe&jMSeg:0»F¿Cß4j R‚_rUV÷’æ2†87àr‹ëðÞMMjÞxŽ`ŽîƬçð–U4ù^hªfëVš<È®ÜE$c“Uc»XÝ‹cÖR.’m¼EËw -UEØv%BÉÇÑŒ¬Ø]¤ƒäÁa}¾óÊgÏÁÔäK©³Ác^˜=eo'²ZWºÇ)¯cå{ÜÉO²Ä gíGt'Åõn`³ËÐ^.ÉÜ}ø<{NY6ûèMßšÕAÃ>§á™BiXFúnï¥ÝÌ+~3n·Ñh±ëµîævÝIõ¸‘ªñêVf‡Ãð’*A-Jv g[Ò«[I2—;{kI.’öØäpO!tQ¿-í l©Í‡ccÙ§32«¨uÆÐæ\„U âH<ÚJE=¼ó7+ô=Ù-Åí§Yl,ŸnÀÍòU¬€#»¨-OÃG¶‚?46/»Qž.Ñ‹à`ÖðF$(Du&sØþŤ)Õ‡æð{ô&œ ½º÷@Ò,›n 8 Bgnnp ‹OMÔ†7S®´äàHzMĵ¹˜gkžÐÁ}Ú­ƒãbÏ/O¦YM‚± -00_Oo´± |ªØ…S|C[ôj@°×éj±Ô0Ñ»†U=Ú®°ñçâÖöbë—‚ÅøëEØC/ °†IgÍ‘ÿ«MO¯Í|‡¢Ì¶BY.‡b ”ù↛4j[í"Gž–:gõ¦*] -Ø/êa—Ÿ+­³§ÞJi57]³Û° TVÏ_Å^Û UZ’z°U°ëõÊÏ{óÁÎê[ ßWå¾ãYfC@‡è-…Ïë©kȪzÿ·Ƹ̊’I• -Ò&ŠC¥ÆeÚ¸G|jÅC8Wýö!¡Š=låDP(XB·iE -ð»—ªhE6”Ô28a‹C\¯D:Ö2£³ê%7¬‰¨ÕW-)W‰úܽlCÓŽã×ÚšÉóÍù± -ÞÊ3¸ºÑ‚å8ØEëGO«Ïq2ÝŠïÛ¡/|_㡈ʫÒñWé׋+Ù]b«ö--RrJÁ?ξ³ÃÕ/2€å«ÕÔ¢{}Z!~÷‡ -id”®™ppô>!„ˆiØ‚ô6¯lŠ7ß¾ÉÖ=; g…ÿA.bÝÁ¨Yíò îEáÁ®wÄ+…] Î/-í066w~^ì -|Xì<íNƒmaøvâãZãvv -‹Ù×÷¡I×jŠz“âÚں䫰R»Zð -¾¯:Š4x˜ªwyF¹­oV½ÜÁYFé¿ý‡_~'„@PuõÆXÄÆG»&kƒ#ÒWæ%¥¹èB8¤ð4 -zþ¿í]]Çq¥ ò>/6D $§?§ûÁâ&ì\Y„$$ C¸\^“+ÝýÀåR´þoß‘>§ª{>îìr)’ØimmOÔTWW÷t#DU(ãÞ¬«,ܵ°5õnØ -/©@¨¦ ¡oä*£„K¾n1P³~¸+V/“h®Os™É•òIeR¯Iö>/ëkˆ}¥ÿŠ¿#dv - -ôÝÓLºò‡N4è !4š©—Àµ'7¨}æpx/«’”ñ¶ÔùBî­|šœ Á*/-.ÆY‘™¿£Ç´¦!Œ9¡Dšã•·l½²”á2›Ù@³9 ©C%U6õ•ØF›É…í+5¯K“ÏüпÌz7‚u§·µ]®7š¶Ù{%§'\˜<ßG…ª´|-Pž^¸ -¸€}BÀ¬ÆÆâ4‘'ÁÍ…Ð í€ !á\éq,Y1KÇ ß©ø!ŒŽK÷3©OÒ àÆZ)@t¢©}g›Ë}lž¯oÍaɼa4»Ã߃m‚·yÛâþœ+ËN |»ãBŽõWÓ·Ë<ÙO’E&×1&ò§ŠØ²8¹z˜‚[ÝajYà8p¡òk¶Â¾ôEU6¯ÿóç¦ç¨¹–Qu¬×ð¬ -{[”©ß\™Ú”Œ™gBMðUC1±²0á “òIÀRŃF0šº<:6ý[å"”Ī©lô_ó -š”[©m(Gy½¢+B_o‰Q —›j^ìtò \xÍaÆ–qSd[Ù)±Vœq‡i(ò¹~E‹"e+Û…Ò'Ù®ÚÑí´,XvxÓüY¨ù]ut£?›¨aF½zvrƒ§\[æDòr9ê½³ó…[E˜qD.%â/¹éd³1‘ë%[1Üý 8¾ ÞN9zÀ.uÔ°h篇€0±ÅZ'p}O¢v@:6‘k‡÷õ˜Ãê._=-…©Þ.WRƒ‰°*í¤Õ rÆj-—‡'žÙMäÒ"9óD,'VšÅÍc*ŠðõHH8xö“ºÝ!Zÿ(ß/äà†æÇqoä-cÊÙv)Oïóa‡á…°8 L‹° ɵkÔm}*¿ìU¡ª‡¶>Näûjz‹bRIÊuÛ1i-cbüQ×F9ˆÊõ?„Â\1î(œë,»u‘¥†~Êg!þ…Ð(,Òäý¤T7kUx²˜0ów|<Á6u¾çÆ9ŽûfsÐjæ-£nü”1ÌPi‡›Ü)Í --»lžM÷bþL;#µ!Vc—‚ ×è‡usì{q`ÏN•ÜÏ*P)ä3"ÿÞŸwsƒ’çé´îÒ˜y.„œJ5\åÇVUðB³šåìÖHlÝùU'-ȺC”a-Ã`…ñÁ†<£T/üäQ?[k+z3^†o†c3©á ì†JÒí5(uÖ—ÖÈìÆ GÁü^ÑŠqü€@Ý›ûÓg½(á¼ê\Y;ˆËªzõ+o²Â´¹ÚñÒ…o¦5óÞÁøío¨¼\¼ âjÍ!à>‘qfýUÔŠ_³V -B#žbá5k /*BÄQqñ[פÝÖã# læ뀼}2¦MGhëǾQï’ÝöÖg œÕŠ•`wÕÞºÖê>ÒÓùG2Ù·YìòÅ¿ïô›öÞgZ·ºFqþKçÝ7ïéËí»¡´W´iEZO›¢çA -Då&yZ%od -âZQÑv÷rÓ¡‰è‘ -žjM>¶ö¾¦Þq§A.vawÊ’=Þ¢]W«|³§Ég§Š)t,š<ýË9rB#6¬>Ž½'¶_Eó•bâR&Oß$«[;ïÊ’C8£_™“0Þ@“@$ZùÎ+…¤†ÆX÷ªüÜ%ØP ϹÙc¥(Á<ñJŒÞb¡AOÅ‘)hX‘}h[Œ#yszÿÖÈ›ÌE½ÕÁ*¡ßç€oØñœØß:–j09$û^/¡,¾?(ƒÏ±nN4?E>ÔzÑõ ×ûª»WY!,ÞѪ™5g쑪YBog6U§¾Þ­¨Ѐ#gëD×È;ñf¡k+˜\K:2_•/u!c¦kì»äRdU5/@åx¤jÂÎ×Ò¨ê¤W9Vus2¢"¿3óSß¡gŠÆÝå¨h’VŒŒªè%Óf©h’ã†0W4˜½›ë,OaˆGz¦<Æ#=Ãí´ÛXUÑ8SÕëÙMÑà -òõ”z¢j){7×t¬ùáEëæ½lz¬nî>FUOÜǨê‰ûU=sMîcÔôè=fšžx™¦'Þc¢éÑ}Œšž¸QÕsÒT=ñMÕ÷q¬›“p“%£‘[ýFn^ÅÿA¹˜ï¼˜Ùà4ú[ ü–^µécÑZÌ÷C8Ò5ƒ!dÚÒ`’sG“sëÌ`´èÌ`4qjhÿØ^(]1½×97Ò-Í%6\Ï™¹Ô²3si¨–jysIwß|º†?á囿^:Ž -/òé^¿âWŽeàÐS[HÆ:o’׶ôàÍÔ„8fÔ¯˜îÑè“mXªQ#§dR=Ççõ¯-ör©o6@ÐEÍ®"¸N“{Á_b¢ñ$'«ØIq¼÷P»†°ÏVúdNTR»¼è>EJBȃyÐýç·•9²F“•>ObŒÜ{õo¶¿Á,‰ÛøúÕ¨ÂpË»ms""òSI›™š—À*h˜ƒÏÉxzÓ€„úšÊ˜‘\è´,A›¢*å¡°Ópê«Ñðˆþ'¿}ðkŒ™¸-¶ÚË÷‘~TÛèÛg~6îëˆð™ì»zœë@ÕÞõÝ]ú(3­¦DjÞ“8ÅÜKú’¬ö©š ¸™€õwÔÄ;[ÀCÞw‰¶æòÚ;Dz×í¯d®)NKR,Ó;uì=ƒðôÇíí"jÐU'Òú<‘orNVß¾YøuÑäé‹ÛV—ºb¸1Áþ·¢S+´Q"ñ”nÖÕññVHß3»ì×0¿8ó¡Þé¬å~æ+3¶f$±\Ýë¼g_„Ç5¿_ÚŽ€•2aÖÅ©æì$?i,;de›T ÍÉŽxÒ~Uç颟B“¼‹qPµðÏ‹Á…'šª…Å5¥Ž½˜h¿uwþ’ÞH¿ÿãåÅÓÃÙÅõÙÅ‹‡UNÃþæþ'¼šõÓýëò÷WÏ~Ø^£þìùå³]Ǻ/·Û»C÷Õáùîðàm¿ìä·'ÛýþìÅa{õòìT‹~{y¹ÜÅîêºû|¿½îßRôAWzþ)0=žøê§íþ¶¤¨­E§•K]ëOØ»W^ «k©«ûúòõÅó[ÀGB_[‹~sÊ×ÅRRW-û/—/ºoÛÓ_­•­¥>/Mu›Ýö/‹BÚ¯iÑÍöùÏÏ^¿¸­¶§øϧgó2R×¼ä7ׇí›g»ÃáçÛêûöÍÙÅûò»ëíA´#u•âŸ®¿º(¶úröÀ—ÛûC­r½Ì·Û«Ýa÷¼ûFêº>\þ¸»ý‰Ï‡Ë7·‘ºžnËdxñ[ºðóUkRçÛ¤Ôò=¾~VT°9»Ø½ºù™ñ%½>ìöc9ã -¥¿¾¼Úuttæ–Ù>Ÿ·Á¿gÌòÑZñ“éÏXßÍã¶Ö”_ñoÓþ–fùÃUéö½{ïÚ,YéœóìÐÑy…?1Â^}Å %C+v÷‘áÿ?”£?˜TºtAýÐ×y»ÒuÓ—‚㲜HýWþ•‹<—Mùá‘e•U”Õ®ÜnW_²¦ò¨*çgWü ç÷½A6˜¨(>¨OÃO]é£{0Ý믌eXÚö¨xròÃC\uãïàa6Î;Š¹}”QÌüïÊ‹°µ×F»E^Ô°ìl£oé߇ö47,£G[¦ÔYXTø¯ëùÇޥ˿´ù1®ö‡®ìí‹ÿ€ é>nÛv1ôò³ükú¾ó}—¤ïåEokQÆ;ª{6‹Öñçc ¡¤õÒt”V½Ç¿w²Ô_ØöªjÛ]ÂèË¿™ÿÞiÜz–¬E( Êôèœïf«qxÜÕŽVŽÁŒ{Ã_®Ç›ú%!ÞZÇÒØ/íŒiÂGêÌð­uh¢(q81ä–y^º×l]µP—AîªÎܬmúøªC ¼ª´~®µ”o;{ùbrTæíqác2z«kû;èóCÏ£›br‰nÇ~mÌÑ.~v‹Ÿ}Õ#HIá×@ -ýYÒm£½ÅjÿÃÂE,Ç3<^>‘·8!Oyáþ×íÏÚXŒ¨z£-úN¿7ú˜¾ÅcÆôžn÷»Ò’œ²=}6ž¶}ú§¯Ëï_•ÐG~€£·W¥Ù¥øéi}¦×yŒºOO~×w_–?ß•?ÿö»~Znz’·(We-‰SãÉ=Gb2õ2G11§<å|l§>-Ç°‚ßYopjίù€ÇšT–­ :R‰€C‰C…àèÑE2!¼´¿‚ŸdÈb'ŠVƒ§KEa¥" Ί£¢#°â ª•ÇÿÍêËÒ±iuzL]±®€TÒFš‚™¾™ ~ÉŠŽú$ß‹k—´/Âè®ôîâFy!Ukó¡vh^•€)9ÑPSŒ}r8;ýñÁ¬ùçO“ÚþÜ]EùØÉåÅ_Š_=»Û“ci>¼ÙmÚ½êÊéUL÷ú³ê–ϳÒ–]•ˆàNj…ñèÓ'ãBÒ–‹·/²}q¸|}õû‹¿\N×ɲ<îwÏKõõ4ž?vòH‘nÎ~ªÂGÛ³«o¯r}éíæôW­™-Þ¥‘Õвù^•ß´ënþ}kè†gïÒìÊAL·ú«ÖØñc;ë‘ÆoŠð›Ýõë«©Íl¶?ïȪ4³i9äÎØÔÉJ[Üòæ#ÁRA÷æâè.=¿Çëú£ù‰¾UŽìdyªŸá»?” -ã[ù¤éM®*:Žžg½Š¨KCö°Ä¼¡yŠÄ8©lª -®[öC‘`ËuRÜ,ˆïœ rccSd½Ò: É!ÃöÀN/ ŸsyÙ¹H4éÀùAÐ)Je&ãZq©Þ÷ §”ì“‘áábi\¯Â˜¬Ê8aÀ9 n¦ò URÆR›(’ø|ÀõTÇ5¾^BÀ®–áú^?ú`€^þ£ÏÂå=Hw=STV*{ußEãw)?êå·Yðˆ: xGµ1WÓ -Š«æû šq•™TLGv(¯‡3œ46;ÕÑR›{(¾}Ø@ú9(Áâ×V”ÁD©BRÉ¡¢@ëÍ4’µö ¼'.;`ݬÕ9oHo€hEß-¨™ÏEØóMâJ\ÙºX¤è‚õ’ô;Jx׋>aJ9‘Ø]Æ!§!á})H²)–bq5ÓEŒM[Ü^7ú\žÃlHÝ"Ø0$¼¥‰Á­S}Ïp!$rµ¸@ KA1΋+‰öêB¹¡k{ -–M¼BéàAŽN‹ÈWÐÈ3\qv¼“¦ -–ŽÖS Pì.#}­¸'‹ïŽ -ª?烸H‘áXy[N^Xä:(JnâÝú¾ ah°x°L íY[„\O÷î}™Ñ+eß,9X&X7èMk³È}ŠÆJúl( šî}%\=xXp( éæ0DϨð,P´‹©U&"A©`”Åz#Í—) -б ½IÂÃ`‰>Œÿä> [ÌnàS§ Â§xÐIÎÖ8¦Ö:Ô€kŸì9’–PyY7e,7Ƈß&Ë¡o‡K\pNãØ&ïîWºËÕ‹3t±ØãËUv•0%‚ÛÉÌi„2Àß6!»þØ^„SBÚ,ÀÃxÄîp¸‰ïà\½ƒ$½—1 Â! !ɾ8ˆ(ÈÖ´d˜ë^G;ë.GAð<(Ìci ÌÅÈ âëÁ–ªCî’kÐtÒa¬c6 -:äŸ;ñ®@¿ë¤*Ôo”ÄÎayŽ^SYœo±Î7BâƒL`åDíaQ`Ì0IüЫÀUÃZúTO (ñi¦„è̾Ä%WØ$ÊÁ\pÐm‰F‹gˆj¤ -ÿ„›¼û5m¦öLÀ,:!¬w¨Ì+Æ…sFHÖÐl%Ò ±Œ€Ž -F†ðOÅÑÿ!æ}aÌòì1‚R,ã^4tÔ¡r'ÆÊ ÚÌtB7ˆgˆ9’‚&;uª¢ 8‚#6àýòú ¢\uJ."ä°X&é=ˆ -{<ÂÓÑ„€5Œ3-ú$Å\(‘ž\ˆõàíE -†‹£ÅÕTÄd0Ç2ý¦{}ZEqþ¢ èiÀ¤êÁ#5ÝGŒØ;DÏ„O$øL^Ý‚S¤k"ãiì"Ùqo’Œ•u ªX¡KÂúHKé£ljÊž£Tå¼k»ãÁž›CÀ GÝV9Ë¡GØ3yy´#Äðd#òŽã½A;ȬEY¶e¤› ciê‚#pf–E0•`ŸÂñæŠçþ€¢,lxç}ﵕ^¶bðƒ–+; 0XQ÷ `NÎ÷dt€ÈOY m¸µºž£QÏ?3ñ¤Á$nC1*®â`7 -²:\Á4'¥àÎb›JB´XYBí—+•Å2¹K/ÞHª$°˜'°zߪ,{P/Fîƒ -{ 0 ½ YZؓʳ´,‘ÒM2«Bùpø@*¥Ðñ#Ex4òy -A`m:&VÊ®Bâ’;Ĺ hz‘Õ‚&¬¯–FjDBÈY„2XïA„Hå»»f þ '°:P¿QGk½8j˜_Fî$ê/*³'–·¤|ÆÎ)D‰ ð iœ“§n²Bœ -dPèetŒ½PœÖÝU‰fhFà1±—!™˜4Š -/Ü!—KüŽÐ²!°YrÚ`ÃÙSÎUÁqÛZÖEkè³Ê$ÆÔ+á $)ÌEõžx«'ÈY¡i™Øšû\]Gþ¿U@7Ña·C*"Y¸1&,pŒ Q» z…[ý˜n–¿|eƒî'k¯{n -ØM—ÕBk CÝ—õeóA!æ¶ -<—“€Xä`o¦HÆxXYcr0pA¢,á=DœXÀvðµ#6d¯ü+¶!e•£–b‹Â¡ã˜æ[–‹Ž„¥æítÏâ±g³b’=¶0SÁ xLÇ#—4ìý ÇRìFÐjƒÈdØ€Àpð-Å1Ó/ˆ\\X¢2“œÊs¬J’‘Á.gL'doÜð–­a‘øF$ˆ -¯Å.&b-‹Ü©¨J‹8ÂdrÃdB/„d¶X¿G„cv²ÁŠÏr¤41hn9¼ãÅ{$]„ÁX-’ -Ð%%ã–ƈí6€©‚d…Yæ` -´ƒ“„óy5䈪RÆ`¯ÊõÈ!‘ÆhI’EP†ÛòìX¸FÑBŒS!Œw{«–ÐœååÐ,É|€ŒÑ!Ô’£—B8T -áP(ä+È4:@mꋯ, t>ÔzG"¶±ÊÊFl Md¤+«†h8XÀ¤2b×ÂnI²¢»ãOK3LžÚ¬½‰Åæ.ë;áhó°Jx?|QaÐ][/`kr2ìe+Ç5Bòar'ƽ¡ï093Ï8y4G ††ÑGMH`ÃNF9¨E€‹“là+CBnøÓµÛ<Ð÷tešf!yD¿ìø¹ä袋Æ9'Ö¬¨½DÓ=òýa)0T*D§¯>e2Ž±0Èir*òÐÆì‡9j´œÔ`7b­žQZRJÑô²hψçŠí’®àök[ ßV9’GÙ“bgˆÓvYP î$JωdpL½_yz²¹ê)K¯Ä+kÍ%ÜSï‘5ÁöÖsIÆñ—„wHö‰†:9ŒCÈ\ßVαa$ÅN$yz®{RéáD’þˆÂòz‡Å©Y£~ÜË5ñ¥8Ÿwâ—PŒî8$WZ+#hðúˆ¿‘Bñ•ÀÉ9ªm6–ËÉä,a#Sã©ä[ntàø0‚Dñ}Ø zÎ⤼ޛ•NÎP€ª#`sÌÕÏòšz%²1bxkTŸ`‹ªO•%ËBÆe³Vç¼É²€£Ý%åÄåF`À ]'¯Š#¸¯WLdz;†^doᢠ·Èm,½à1PŠ+¯#ædˆÀŒ9FæW2ß0Tɘod;³åä$ŒÝ¯uWN;‚ÓmhÖÍÓ¹”%™8Îzy¾‚¶=°ø áY÷'b ½LîSÙ´äˆp.eÙ!BB°LXªÌ l%4 y‘Ot¯$V>ˆâ0Šqu}‹úŽ;<™’Eû`ªÀlõƒpÁ5ðÐŽ‘ßb0‚á¨À†P&L4Ô¾E0É#Ny”Ó,[rÓIU˜KÈfãÉ  Dà? !G-T2 pè½?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾þÿÿÿÀÁÂÃÄÅÆÇ<ýÿÿÿýÿÿÿËÎþÿÿÿCDýÿÿÿýÿÿÿýÿÿÿýÿÿÿýÿÿÿÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿRoot Entry HHÿÿÿÿÿ""ÿÿÿÿÿÿÿÿ  ÀFprër©ZÁ hVs©ZÁÍ@Data V ÿÿÿÿÿÿÿÿ -ÿÿÿÿÿÿÿÿÿÿÿÿØ_ xÖ¿‰ÿÿ§WordDocumentÏ xÖ`¡ -ÿÿÿÿÿÿÿÿ} ObjectPool -ÿÿÿÿ°¾s©ZÁ hVs©ZÁ_1054035473ÿÿÿÿÿÿÿÿ -ÀF°¾s©ZÁPEs©ZÁOle -ÿÿÿÿÿÿÿÿÿÿÿÿCompObjÿÿÿÿMObjInfoÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿ - þÿÿÿþÿÿÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ -ÿÿÿÿ -ÀFPBrushPBrushPBrushô9²q þÿà…ŸòùOh«‘+'³Ù0¨˜¸äðü  0< -X d p -|ˆ˜ Ole10Native ÿÿÿÿÔ¤ÏOle10ItemNameÿÿÿÿÿÿÿÿÿÿÿÿ1TableÿÿÿÿGl5SummaryInformation( ÿÿÿÿØ  -   - !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ  -   - !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ  -   - !"#$%&'()*+,-./0123456789:;þÿÿÿ=>?@ABþÿÿÿEþÿÿÿFbHIJKLMNOPQRSTUVWXYZ[\]^_`aþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÏBM†Ï6(ÇPÏÄÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿ{ { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÀbðq -³LZ­d7T6Z/•Ûvï7¶ÿM -عnðE -³LZ­d7T6Z/•Ûvï7¶ÿ‰PNG - - -IHDRÇc'gAMA±ˆ•˜ô¦ pHYsÃĈ.>£ ÖIDATxœíÝ;–ã¶Pô[Nô|z¾<€zAµËe}HÄçØ;êU-‘H#R”ôããã#À¡ÿМӜӜӜӜӜûmô&ðó÷?>ÿñ×ߎ À(Ž-N|UÅÿ¶¢-Ž<׃Âö¤-ÞzW -ضxí¸°mñBN( `+ÚâQ~ -( `Úâ?®€Â6¡-þUý -ضøåNè+ `yÚ"¥q¯0€µi‹jA¯0€…íÞu#^a«Úº-Z„»Â–´o[´‹u…¬gÓ¶hè -XÌŽmÑ'Ê°’£Ç0L‡@÷JÀ¶n‹/MkCa ÐÿѨ60;mñB‹ÎPÀÔ´Å[Õ;CaóÒ'êv†Â&µã´—ÔÍw—Õ“rl‘«bÐ;¦ãØ"Wňw„LG[\ 0€mi‹k°'mq™Â6¤-J( `7ڢ¶¢-Ê) `Úâ…lB[Ü¥0€ü6zuäçlðÏQÿüýà#ö4÷7Üy1ù  ͬmQ+ÞGR@(óµEØŸ*ò{ÀÂ&{—»ÑûÀU[=ܽé -Ä1ͱEŸè¼™øa{nšãØ¢Û«ì›+j‘ìŽ0€&h‹Îq0 ØMô¶”q.Ìý¢0€±¢·_0P趘1£9樀Äm‹áÉX<€¦W1 -Ÿ`OqÛ‚wÐ_жˆA†ñ,ìÀ€Um‹ÙuøHÂzŠØ¡r0Ô`D°˜ˆmA>…ô¡-¦§0€µEÀì 8¤ñGÌ.\[PFaMi‹VúÓ¸ÂÚÑKQ@#Úb5 -hA[,HaÕi‹5)  .m±,…T¤-V¦0€Z´ÅâP…¶XŸÂîÓ[PÀMÚ¢•hm<À\´ÅFP,\[ôÿz¥S‡TLae¶…`ŠÉv -´j ‘™­\Õ¤-n†Q¨3?¡S‘Â.©ßßchÛHšâO1H ˆÊmQ+€‚¼¢2Œv©f[ˆžÙj@Žjmñ.tŠÃhøëúâL—¿Ó -è¯N[4Š›…1¼«:SÀ± -m!hÖ`;î¶ENÄ܉¡!¯ñï¬têÌzð@S·Ú¢O¸t.ŒÝÎA=PÀKåmq)Vfù¼ÞÍ­µk< - ®w+”*‰ß.ȺÒ,Y¼ù1ð ¤-Æ^Û"m&cäòPÀ—Ëmä-ëÅ>4ž¢ÖFœùƺÖ÷­nú©®º¢ÕF؉zºÐ‘_Îçm–ì Õ³LÐNn[T /Ñ“/NgØj°¹¬+hëfVœŒ/NFÛj°¹óc‹õ¾jFAÂÚVƒm[´ © ñ7‹ 1m«Á¶ŽŽ-:DCœH„¼¶Õ`Co-ú¤R„ì›K„¤¶Õ`C¯Û¢gˆž«Ðß‹¶è¢ç*…tVów¹ï=3j·Õ~¼Òh]ë1{q¬´-¢´ERª~ˆsütšýÉÖšÙ‹cÉmñúš¨±Áá4Kpšµîf*xæ”}Ùþª®N Ùkdá=ùõ±ÅؼŽ…‘E˜ŸáUQ|¯%L…Ùkaí=yðç-Ž9Èx6|£¤Uñe–×eíÜ™@³WÑò{òÉ7¬—M¼œ´°¿uUŸªx¹[^ºñ&^ÎÉ󄘺ÖvØ“‡}OÔUÁ;ãÒ,•=–b`Uß+øÓ¬‘«SaêÙdOÎúÆò9õ%ZmôùE¦› ÅPÏÌÙ!Ÿïù9ÖÎÕy˜.žf±Éž<à÷-j^Ý~*ÂäÇ©Š›÷}¹‚§èê<ɯ.³` u§ýæ£Îß7g»é™Ÿ±{ræÞÜÛ-¤ÿoçµÓ­?ªOÅÁÈ#L{‹‰½=9w1w²ãô̲Ô;Xì»–M`Yj?ꂇ|óí–ÌUç,!s9—VÑgO®õ–U~÷þ]îjE^»Ixa„ oÔÁ¡žc™c¸=Cz·À>'1Z<ä̶®¾êâå²'çÌaæ~•ß×>Ë=üäO±øUñ¼ð…«âYŸÓµ§ÏŸƒäGϥʹqÎmVEúçÃÉw–YV·¼z=k­=tØ“«TEæm¾»üÍóÆ}âûkkWÅýgæýw.ݬQôDþXÖÀOüµ˜í'÷×[v—çÝ\Â×^Ù”5B–å[æ³=5}YPå,ÊéB2ß (8³®;ÚŸž’îpª` /‡QpBéþlgž]¹?Ã÷ä—÷ÊÙ4ïÞ~«ànGªbϯ+O.'ŠSòå}‡Ë‰››/Ïß½Ìo=Ûǃ¹³þŽ•nyú—SåßA»p åÏa-·¾±|ŠX¹9HU±’ºA¿‚4æÇ7£ÇÒVþɱ«Ûîîï[¬.»±5ŸÝ —Iƒ©õ°k]ózpßÓ+¡g¯!%]á׎˜­,ÞŽŽ/¥}§çê;MgÛ†»¤Îoç-4ª¢¯Œf9%BWßØ(댭öäj¿´³0bŽ*³´•}^J‡ÝIÕü]n¡3£ [­ÑÇßVuóÒ}N¿\ºä©ÖÙ­¦·¨f[¤0Ñsß&§¡–Ù^==*øÀèÁ>úžMÎÚ×}ÔUf;ìæ˜Kå¶HhѶT~lux9¶O²¼h±'çw^]{ý¶Hñbˆg÷QõW 97+xÚôy³´@Áɨâ±_!V¶Ì—ªÏöÁmjm Ù“‡hÒ)@ݱüi¨°[çôùá„ûiå ¼¦¶]¬¿¼{‡X0Û®²½´Ìh{òóº -ÖÞª-R€H>€˜âLËÕ³/óWZåi“¹Ö¯_.ÿR¬¿aÎ’»=䫳]pÔõ¼K†ìÉWÇSÐy¶EŠL|Š¶Ežf™¯é -ž`§‹}XfÙsoà)…>SWe™ ¹?Û/+§â«û!{rgmÛ"Å‹§ÅÜwž$-ž`/—ö™\<°Ó;|È÷W=¤àCíÉ9 ¼ºÒæm‘¢†Ôn"o…º‡ÿÕWTpßžQÛnò—\ýúÔû³=¤íºíÉ™‹=¾ªøê{´EŠU;ˆ?ÿ—âæN6^•_vßü…´puöê.¹]ØåܦJ VÜjÝöäâU¯´S[¤kUÍüÇ? -þ÷êZŽÿR0ÂÌ`}pÿ–9c;ýßœ%çÿýåz ps¶—pú¿·¹4þºÛâÎ>/áê}¿ôk‹4Ul-cÒ9~zÜÙËOWQe„u‡wG£ÙøëÆeÏñ÷_oÝwï¿ëÚiÚðš”Ù†=å\…õì¸Éz·EêaËÈ>½,Œ«‡ Ú"…²àÃ˱ÀC -¼;>ÈüØÇ1m‘ÄYKæ¸êô -•am‘„Zf6WvÀémF¶E -mavlÒau]ºø*ó–ƒÛ" ¸zÌäƒÈ¹BÇ{þÕçÅø¶H-cnŸË¢TðN•}„h‹2ì鉆 -L*J[¤‘pHϦ$0»@m‘ßuf è#V[¤ñwó­‹ÈqylÀbµEŠ‚ÑÆó)樀UEl‹$ -Ϙ ³ m‘ªâýëh{¦ó_ÿy¼:Uô·-R°X< -ñZkyøÇ»ôº-R½p¬õ1½¦aý°ðçu© -`”èm‘âEd‹ñ¼;pùþÇhólåÇ,_žSåà nàv;^ùùûªkš¶HQ߬¾3*Ìb¦¶HQ #]˜’¦3Y[¤À…ñåå50µùÚ"-ýe1MpMÔ³›q¿Ï^Ô2e[$…Ð׬m‘@G·ER½ÌÝIat1}[$…ÐÞ -m‘@c‹´ER-­ÓIa43åg¹Åÿj€é,ulñé~Ö;Èx°à±Å§€¿‡0¯eÛ"MòëªSX¹-RÕsJ:ØÙâm‘j¿ ¡3€=­ß©Ù»ÖšØÇm‘Ú_æ¤9€µíÒièu±º˜Ý‚Ÿ·xgTd« -`µEܪXÃ^m‘úÆ·ª–±][¤^!®*€•ìØ©}”« -`1›¶EjèªXϾm‘Úĺª–´u[¤Úá®*€UíÞ©^Ä« -`aÚ"¥A¯*€µi‹_îĽª–§-þUúªضø«Ñ¯*€Mh‹Gù *€}h‹rj@U[ѯ—ªv£-ÞzW ªض8ò\ ªØ“¶8ñ½T°­~—€bŽ-8§-8§-8§-8§-8÷I_ÿµiÏFCIEND®B`‚äSpecifications Template#Template for Core's SpecificationssDLpLpSpecifications Template.dotsimonac2moMicrosoft Word 8.0l@@Þ·†Á@Úõh©ZÁ@Úõh©ZÁCé þÿÕÍÕœ.“—+,ù®DÕÍÕœ.“—+,ù®T -px„Œ”œ¤ ¬´¼Ä -Ì ðäDocumentSummaryInformation8ÿÿÿÿÿÿÿÿÿÿÿÿ -lCompObjÿÿÿÿÿÿÿÿÿÿÿÿjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿeÄÚj Specifications Template Title(RZ² -_PID_GUID _PID_HLINKSäAN{2A822151-6EB2-4CF6-9EA1-2347DCE63919}A\$Khttp://www.opencores.org/Khttp://www.opencores.org/Khttp://www.opencores.org/9u¨oc_logo_small.wmf9ugoc_logo_small.wmfCÿÿÿÿC:\OpenCores\wbc4windoze.epsþÿ -ÿÿÿÿ ÀFMicrosoft Word Document -MSWoe -[>@ñÿ> Normal $¤xa$CJ_HmH sH tH XBX Heading 1#$$$ -& F&d0@& -Æf!5CJ`OJQJP@P - Heading 2$$$ -& F&d$@&5CJ`OJQJP@P Heading 3$$¤ð¤h@& -Æf!5CJ OJQJVV - Heading 4$$„Фð¤ð@& -Æf!56CJOJQJD@D Heading 5$$ -Æf!@&a$ -6B*CJ FF Heading 6$$ -Æ3Ë@&a$6CJ HH Heading 7$$¤à¤X@&5CJ$OJQJBB Heading 8 -¤ð¤<@&6CJOJQJD D Heading 9 - ¤ð¤<@&56CJOJQJ<A@òÿ¡< Default Paragraph Font>@ò> Header&d -ÆàÀ! CJOJQJ4 @4 Footer¤ -ÆàÀ!CJ(U@¢( Hyperlink>*B*&)@¢!& Page Number>>@ñÿ>Title -$¤ð¤<5CJ`KHOJQJPþP Headeing 1 Name$¤°@&a$5CJHOJQJ8YR8 Document Map-D OJQJ,@, -TOC 1 -¤x-D5;.@. -TOC 2 -„ð¤:CJ8r8 -TOC 3„Ødh¤ 5CJmH** -TOC 4 -„ФCJ** -TOC 5 -„À¤CJ** -TOC 6 -„°¤CJ** -TOC 7 -„ ¤CJ** -TOC 8 -„¤CJ** -TOC 9 -„€¤CJ8V@¢ñ8 FollowedHyperlink>*B* 2"@2Caption $¤x5CJ:þOa: Contents!¤ð -Ƽ! - -:;CJ&þO"& Table "$¤@þO!2@ -Index #$$ -& F¤¤x&d0@&CJ`.þO1. - -Appendix Name$8þR8 subtitles %$¤xa$5CJ0Tb0 -Block Text -&„ „ 4þñÿr4Style1'$5CJ`OJQJ&B‚& Body Text(:þO!: -Appendix A) -& F&d0CJ`0P¢0 Body Text 2*dà.Q². Body Text 3+CJDMÂDBody Text First Indent,„Ò8CÒ8Body Text Indent-„hHNÑâHBody Text First Indent 2.„ÒBRòBBody Text Indent 2 /„hdà@S@Body Text Indent 30„hCJ&?&Closing1„à0"0 Comment Text2CJL@Date30+B0 Endnote Text4CJX$RXEnvelope Address5&€„@ „üÿ„ôÿ„ð/„´+D¼OJQJ>%b>Envelope Return6 CJOJQJ2r2 -Footnote Text7CJ* -*Index 1 -8„ð„ÿ* *Index 2 -9„à„ÿ* *Index 3 -:„Єÿ* -*Index 4 -;„À„ÿ**Index 5 -<„°„ÿ**Index 6 -=„ „ÿ**Index 7 ->„„ÿ**Index 8 -?„€„ÿ**Index 9 -@„p„ÿ:!‚: -Index HeadingA 5OJQJ$/"$List -B„h„˜þ(22(List 2 -C„Є˜þ(3B(List 3 -D„8„˜þ(4R(List 4 -E„ „˜þ(5b(List 5 -F„„˜þ20r2 List Bullet G -& F 66‚6 -List Bullet 2 H -& F -67’6 -List Bullet 3 I -& F 68¢6 -List Bullet 4 J -& F 69²6 -List Bullet 5 K -& F -2DÂ2 -List ContinueL„h6EÒ6List Continue 2M„Ð6Fâ6List Continue 3N„86Gò6List Continue 4O„ 6H6List Continue 5P„212 List Number Q -& F6:"6 -List Number 2 R -& F6;26 -List Number 3 S -& F6<B6 -List Number 4 T -& F6=R6 -List Number 5 U -& F\-ñÿb\ -Macro Text)V$¤x -Æ àÀ €` @ -à OJQJmH \Ir\Message Header&W„8„Èû$d%d&d'd-DOJQJ2‚2 -Normal IndentX„Ð,O, Note HeadingY4Z¢4 -Plain TextZ CJOJQJ(K( -Salutation[*@Â* Signature\„à6JÒ6Subtitle ]$¤<@&OJQJD,DTable of Authorities -^„ð„ÿ<#<Table of Figures -_„à„ þ:.: TOA Heading`¤x 5OJQJDþ!DHeading 2 Namea$„¤¤°CJHHþOñÿHHeading 2 name c$¤°5CJHOJQJ0þO‘0 -Appendix B d -& F³ÿÿÿÿÿÿ’Z³nÿÿÿÿ:nÿÿÿÿjnÿÿÿÿaa¿¿¿¿  óóóö -ñ -[˜³ 45ž $' ÿ Þ -¯È  'üA‰(°´°³!"$%'()*,-/0136ÂP¾ å -í*æ ³#&+.2c|'q›¬ÈÊÖòô2NPk‡‰’®°»×Ùæ-/7SUWñ  - -. D F / -E -G -—™³ ”ÿ•€ -4ÿ%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À•Œ 4ÿ•€ 4ÿ•€ 4ÿ•€ 4ÿ•€ $<>U^cŠœ²¹¼Ëãûý"I[qx{ƒª¼ÒÙÛàîðötÿ•€tÿ•€XÿŒ!tÿ•€tÿ•€tÿ•€XÿŒ!tÿ•€XÿŒ!tÿ•€Btÿ•€:”ÿ•Œð˜ð/ðXbð$³LZ­d7T6Z/•Ûvï7¶ÿM -—n2ð$2˜)f’D"ùy¯u“Tšü‹ÿ$ä{@ñÿÿÿ€€€÷ð&ððÄð( ð -ððö² -ð -ƒ ðÆŠA ?¿ÿ‚Ö¿ÐÉêyùºÎŒ‚ªK©  àÉêyùºÎŒ‚ªK© 4http://www.opencores.org/http://www.opencores.orgðððŽ² -ð -c ð^AÁ:¿ÿC:\OpenCores\wbc4windoze.epsðððB -ðS ð¿Ëÿ ?ðN³{ýÿÿpÿÿÿ»4Û x›õ 4ÿÿ Introduction -_Toc518887500 -_Toc518887501Clocks -_Toc518887502 Registers -_Toc518887503 -_Toc517168571 -_Toc518887504 -_Toc513532500 -_Toc517168572 -_Toc518887505 -_Toc518887506 -_Toc513532498 -_Toc518887507 -_Toc518887508 -_Toc517168576 -_Toc518887509 -_Toc517168578 -_Toc518887510 -_Toc513532494 -_Toc514386859 OLE_LINK1[[¿QQ     ë  - - ) -[ -®¯óô9$™­´ - -ggËZÿ ± ± 6 -6 -6 -‡ Y -c -®³óø9%™®´*./5  - !<ÓÜäî -SWX^ì$D{}¾¿ÂÃËÌÚÛÖ -Þ -p x B K Š ’ · ¿ Ï × ± -¹ -à -è -@I[^¨´åæZes¤¥Æ$z„ˆ™›œ±´6A!$%*+;17Weìïð÷ø  -#DGHOPab{}€ˆ‰—˜½¿ÂÃËÌÚÛ¨´åæZes¤¥Æ$z„ˆ™›œ±´ÿÿsimona=C:\WINNT\Profiles\simona\Personal\Specifications Template.docsimonaGD:\Program Files\Microsoft Office\Templates\Specifications Template.dotsimonaGD:\Program Files\Microsoft Office\Templates\Specifications Template.dotsimonaRC:\WINNT\Profiles\simona\Desktop\HDL coding guidelines\Specifications Template.dot|ÿÿÿŽfV2Uÿÿÿÿÿÿÿÿ}ÿÿÿòèÚhTÿÿÿÿÿÿÿÿ~ÿÿÿÐc˜:Sÿÿÿÿÿÿÿÿÿÿÿ¢Q|Rÿÿÿÿÿÿÿÿ€ÿÿÿèÁ†8KÿÿÿÿÿÿÿÿÿÿÿÜ^F˜Jÿÿÿÿÿÿÿÿ‚ÿÿÿ¤ˆ~IÿÿÿÿÿÿÿÿƒÿÿÿRoäôHÿÿÿÿÿÿÿÿˆÿÿÿÆô*tQÿÿÿÿÿÿÿÿ‰ÿÿÿL™Gÿÿÿÿÿÿÿÿe/½ -ŽðÌ) ,l5\C¼æÿÿÿÿÿÿÿÿÿ‹À>>Ö>ÿºw¨M¨EF0#c&EP|mXxÿTãV&#LÏd¥:Á_1–«)gj8hÂrFu‰9^z ÿE‚{ ÿ„„˜þÆ.„ „˜þÆ .„8„˜þÆ8.„Є˜þÆÐ. „„˜þÆOJQJo(·ð „ „˜þÆ OJQJo(·ð „8„˜þÆ8OJQJo(·ð „Є˜þÆÐOJQJo(·ð„h„˜þÆh. „h„˜þÆhOJQJo(·ðÿ„„ ƈ56CJ`OJQJo( Appendix A„h„˜þÆh^„h`„˜þ.„„PþÆ^„`„Pþ..„È„þÆ^„È`„þ...„À„xýÆØ ^„À`„xý.... „¸„èüƨ ^„¸`„èü -..... „° -„XüÆ^„° -`„Xü ...... -„¨ „ÈûÆà^„¨ `„Èû....... -„ „8ûÆ°^„ `„8û........ -„à„`úÆ€^„à`„`ú.........„h„˜þÆh^„h`„˜þÿ„„Æh56CJ`OJQJo(Index„h„˜þÆh^„h`„˜þ.ÿ„„ ƈ56CJ`OJQJo( Appendix B„„Æh56CJ`OJQJo(„h„˜þÆÐ „h„˜þÆhOJQJo(·ð„h„˜þÆh.‹À> ,l5c&EP‰9^zE‚{¥:Á_e/½ -ºw¨M‰ÿÿÿƒÿÿÿ‚ÿÿÿÿÿÿ€ÿÿÿˆÿÿÿÿÿÿ~ÿÿÿ}ÿÿÿ|ÿÿÿºw¨Me/½ -gj8hTãVÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@€(1ë³P@G‡ŸTimes New Roman5€Symbol3& ‡ŸArialA&Lucidabright5"Geneva?5 ‡ŸCourier New"1ŒðÐh[±Z&[±Z&ª#WfCé ÎK -!ð¥À´´€0dÚ ÿÿSpecifications Template"Template for Core's SpecificationsDLsimonardDocWord.Document.8ô9²q \ No newline at end of file Index: trunk/LPM_edif_usage_example.htm =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/LPM_edif_usage_example.htm =================================================================== --- trunk/LPM_edif_usage_example.htm (revision 47) +++ trunk/LPM_edif_usage_example.htm (nonexistent)
trunk/LPM_edif_usage_example.htm Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/220_vhdl_usage.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/220_vhdl_usage.pdf =================================================================== --- trunk/220_vhdl_usage.pdf (revision 47) +++ trunk/220_vhdl_usage.pdf (nonexistent)
trunk/220_vhdl_usage.pdf Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/ver_plan.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/ver_plan.pdf =================================================================== --- trunk/ver_plan.pdf (revision 47) +++ trunk/ver_plan.pdf (nonexistent)
trunk/ver_plan.pdf Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/LPM_gates.v =================================================================== --- trunk/LPM_gates.v (revision 47) +++ trunk/LPM_gates.v (nonexistent) @@ -1,725 +0,0 @@ -//------------------------------------------------------------------------ -// This Verilog file was developed by Altera Corporation. It may be -// freely copied and/or distributed at no cost. Any persons using this -// file for any purpose do so at their own risk, and are responsible for -// the results of such use. Altera Corporation does not guarantee that -// this file is complete, correct, or fit for any particular purpose. -// NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. This notice must -// accompany any copy of this file. -// -//------------------------------------------------------------------------ -// Imported to Opencores directory. Date Sept 10, 2001 -// Split related modules into separate files, as the manual splits them. -// Added example instantiations to the beginning of each file. -// -/* EXAMPLE INSTANTIATIONS: - -lpm_constant -#( 1, // lpm_width - 0, // lpm_cvalue - "UNUSED" // lpm_strength, optional, {UNUSED, WEAK} - ) lpm_constant_example ( - .result (const_out[lpm_width-1:0]) -); - -lpm_inv -#( 1 // lpm_width - ) lpm_inv_example ( - .result (data_out[lpm_width-1:0]), - .data (data_in[lpm_width-1:0]) -); - -// NOTE: Bits data[lpm_size-1:0] are ANDed together to make result[0] -lpm_and -#( 1, // lpm_width (output width) - 1 // lpm_size (inputs to each gate) - ) lpm_and_example ( - .result (data_out[lpm_width-1:0]), - .data (data_in[(lpm_size*lpm_width)-1:0]) -); - -// NOTE: Bits data[lpm_size-1:0] are ORed together to make result[0] -lpm_or -#( 1, // lpm_width (output width) - 1 // lpm_size (inputs to each gate) - ) lpm_or_example ( - .result (data_out[lpm_width-1:0]), - .data (data_in[(lpm_size*lpm_width)-1:0]) -); - -// NOTE: Bits data_[lpm_size-1:0] are XORed together to make result[0] -lpm_xor -#( 1, // lpm_width (output width) - 1 // lpm_size (inputs to each gate) - ) lpm_xor_example ( - .result (data_out[lpm_width-1:0]), - .data (data_in[(lpm_size*lpm_width)-1:0]) -); - -lpm_bustri -#( 1 // lpm_width - ) lpm_bustri_example ( - .tridata (data_tristate[lpm_width-1:0]), - .data (data_to_tristate[lpm_width-1:0]), // CHOICE - .enabledt (enable_data_to_tristate_bus_HIGH), // OPTIONAL - .result (data_from_tristate[lpm_width-1:0]), // CHOICE - .enabletr (enable_data_to_result_bus_HIGH), // OPTIONAL -); - -// NOTE: Bits data[lpm_size-1:0] are SELECTED to make result[0] -lpm_mux -#( 1, // lpm_width (output width) - 1, // lpm_size (inputs to each mux) - 1, // lpm_widths (number of bits in output select bus) - 0 // lpm_pipeline, optional, {0, 1} - ) lpm_mux_example ( - .result (data_out[lpm_width-1:0]), - .data (data_in[(lpm_size*lpm_width)-1:0]), - .sel (data_sel[lpm_widths-1:0]), - .clock (clock_if_pipelined), // OPTIONAL - .clken (clock_enable_HIGH_if_pipelined), // OPTIONAL - .aclr (async_clear_if_pipelined) // OPTIONAL -); - -lpm_decode -#( 1, // lpm_width (number of bits in input to be decoded) - 1, // lpm_decodes (number of actual outputs decoded) - 0 // lpm_pipeline, optional, {0, 1} - ) lpm_decode_example ( - .eq (decodes_out[lpm_decodes-1:0]), - .data (data_in[lpm_width:0]), - .enable (force_all_outputs_LOW_when_LOW), // OPTIONAL - .clock (clock_if_pipelined), // OPTIONAL - .clken (clock_enable_HIGH_if_pipelined), // OPTIONAL - .aclr (async_clear_if_pipelined) // OPTIONAL -); - -lpm_clshift -#( 1, // lpm_width (width of input vector) - 1, // lpm_widthdist (width of shift distance port) - "LOGICAL" // lpm_shifttype, optional, {LOGICAL, ROTATE, ARITHMETIC} - ) lpm_clshift_example ( - .result (data_out[lpm_width-1:0]), - .overflow (overflow_means_arith_bit_lost_or_result_became_0), // OPTIONAL - .underflow (underflow_means_result_became_0), // OPTIONAL - .data (data_in[lpm_width-1:0]), - .direction (low_means_towards_LSB), // OPTIONAL - .distance (shift_distance[lpm_widthdist-1:0]) -); -*/ - -//------------------------------------------------------------------------ -// LPM Synthesizable Models -//------------------------------------------------------------------------ -// Version 1.5 (lpm 220) Date 12/17/99 -// -// Modified LPM_ADD_SUB and LPM_MULT to accomodate LPM_WIDTH = 1. -// Default values for LPM_WIDTH* are changed back to 1. -// Added LPM_HINT to LPM_DIVIDE. -// Rewritten LPM_FIFO_DC to output correctly. -// Modified LPM_FIFO to output 0s before first read, output correct -// values after aclr and sclr, and output LPM_NUMWORDS mod -// exp(2, LPM_WIDTHU) when FIFO is full. -// -//------------------------------------------------------------------------ -// Version 1.4.1 (lpm 220) Date 10/29/99 -// -// Default values for LPM_WIDTH* of LPM_ADD_SUB and LPM_MULT are changed -// from 1 to 2. -// -//------------------------------------------------------------------------ -// Version 1.4 (lpm 220) Date 10/18/99 -// -// Default values for each optional inputs for ALL modules are added. -// Some LPM_PVALUE implementations were missing, and now implemented. -// -//------------------------------------------------------------------------ -// Version 1.3 (lpm 220) Date 06/23/99 -// -// Corrected LPM_FIFO and LPM_FIFO_DC cout and empty/full flags. -// Implemented LPM_COUNTER cin/cout, and LPM_MODULUS is now working. -// -//------------------------------------------------------------------------ -// Version 1.2 (lpm 220) Date 06/16/99 -// -// Added LPM_RAM_DP, LPM_RAM_DQ, LPM_IO, LPM_ROM, LPM_FIFO, LPM_FIFO_DC. -// Parameters and ports are added/discarded according to the spec. -// -//------------------------------------------------------------------------ -// Version 1.1 (lpm 220) Date 02/05/99 -// -// Added LPM_DIVIDE module. -// -//------------------------------------------------------------------------ -// Version 1.0 Date 07/09/97 -// -//------------------------------------------------------------------------ -// Excluded Functions: -// -// LPM_FSM and LPM_TTABLE. -// -//------------------------------------------------------------------------ -// Assumptions: -// -// 1. LPM_SVALUE, LPM_AVALUE, LPM_MODULUS, and LPM_NUMWORDS, -// LPM_STRENGTH, LPM_DIRECTION, and LPM_PVALUE default value is -// string UNUSED. -// -//------------------------------------------------------------------------ -// Verilog Language Issues: -// -// Two dimensional ports are not supported. Modules with two dimensional -// ports are implemented as one dimensional signal of (LPM_SIZE * LPM_WIDTH) -// bits wide. -// -//------------------------------------------------------------------------ -// Synthesis Issues: -// -// 1. LPM_COUNTER -// -// Currently synthesis tools do not allow mixing of level and edge -// sensetive signals. To overcome that problem the "data" signal is -// removed from the clock always block of lpm_counter, however the -// synthesis result is accurate. For correct simulation add the "data" -// pin to the sensetivity list as follows: -// -// always @(posedge clock or posedge aclr or posedge aset or -// posedge aload or data) -//------------------------------------------------------------------------ - -module lpm_constant ( result ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_cvalue = 0; - parameter lpm_strength = "UNUSED"; - parameter lpm_type = "lpm_constant"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - output [lpm_width-1:0] result; - - assign result = lpm_cvalue; - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_constant") || (lpm_type !== "lpm_constant")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_constant - -//------------------------------------------------------------------------ - -module lpm_inv ( result, data ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_type = "lpm_inv"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_width-1:0] data; - output [lpm_width-1:0] result; - - reg [lpm_width-1:0] result; - - always @(data) - begin - result = ~data; - end - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_inv") || (lpm_type !== "lpm_inv")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_inv - -//------------------------------------------------------------------------ - -module lpm_and ( result, data ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_size = 1; - parameter lpm_type = "lpm_and"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [(lpm_size * lpm_width)-1:0] data; - output [lpm_width-1:0] result; - - reg [lpm_width-1:0] result; - integer i, j, k; - - always @(data) - begin - for (i=0; i 0)) // shift right - begin - tmp_buf = data >> dist; - if ((data != 0) && ((dist >= lpm_width) || (tmp_buf == 0))) - underflow = 1'b1; - end - else if (dist > 0) // shift left - begin - tmp_buf = data << dist; - if ((data != 0) && ((dist >= lpm_width) - || ((data >> (lpm_width-dist)) != 0))) - overflow = 1'b1; - end - LogicShift = {overflow,underflow,tmp_buf[lpm_width-1:0]}; - end - endfunction - -//---------------------------------------------------------------// - function [lpm_width+1:0] ArithShift; - input [lpm_width-1:0] data; - input [lpm_widthdist-1:0] dist; - input direction; - reg [lpm_width-1:0] tmp_buf; - reg overflow, underflow; - - begin - tmp_buf = data; - overflow = 1'b0; - underflow = 1'b0; - - if (direction && (dist > 0)) // shift right - begin - if (data[lpm_width-1] == 0) // positive number - begin - tmp_buf = data >> dist; - if ((data != 0) && ((dist >= lpm_width) || (tmp_buf == 0))) - underflow = 1'b1; - end - else // negative number - begin - tmp_buf = (data >> dist) | (ONES << (lpm_width - dist)); - if ((data != ONES) && ((dist >= lpm_width-1) || (tmp_buf == ONES))) - underflow = 1'b1; - end - end - else if (dist > 0) // shift left - begin - tmp_buf = data << dist; - if (data[lpm_width-1] == 0) // positive number - begin - if ((data != 0) && ((dist >= lpm_width-1) - || ((data >> (lpm_width-dist-1)) != 0))) - overflow = 1'b1; - end - else // negative number - begin - if ((data != ONES) && ((dist >= lpm_width) - || (((data >> (lpm_width-dist-1))|(ONES << (dist+1))) != ONES))) - overflow = 1'b1; - end - end - ArithShift = {overflow,underflow,tmp_buf[lpm_width-1:0]}; - end - endfunction - -//---------------------------------------------------------------// - function [lpm_width-1:0] RotateShift; - input [lpm_width-1:0] data; - input [lpm_widthdist-1:0] dist; - input direction; - reg [lpm_width-1:0] tmp_buf; - - begin - tmp_buf = data; - if ((direction) && (dist > 0)) // shift right - begin - tmp_buf = (data >> dist) | (data << (lpm_width - dist)); - end - else if (dist > 0) // shift left - begin - tmp_buf = (data << dist) | (data >> (lpm_width - dist)); - end - RotateShift = tmp_buf[lpm_width-1:0]; - end - endfunction -//---------------------------------------------------------------// - - initial - begin - for (i=0; i < lpm_width; i=i+1) - ONES[i] = 1'b1; - end - - always @(data or i_direction or distance) - begin - // lpm_shifttype is optional and default to LOGICAL - if ((lpm_shifttype == "LOGICAL")) - begin - {overflow,underflow,result} = LogicShift(data,distance,i_direction); - end - else if (lpm_shifttype == "ARITHMETIC") - begin - {overflow,underflow,result} = ArithShift(data,distance,i_direction); - end - else if (lpm_shifttype == "ROTATE") - begin - result = RotateShift(data, distance, i_direction); - overflow = 1'b0; - underflow = 1'b0; - end - else - begin - result = 'bx; - overflow = 1'b0; - underflow = 1'b0; - end - end - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_clshift") || (lpm_type !== "lpm_clshift")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_clshift Index: trunk/LPM_storage.v =================================================================== --- trunk/LPM_storage.v (revision 47) +++ trunk/LPM_storage.v (nonexistent) @@ -1,1936 +0,0 @@ -//------------------------------------------------------------------------ -// This Verilog file was developed by Altera Corporation. It may be -// freely copied and/or distributed at no cost. Any persons using this -// file for any purpose do so at their own risk, and are responsible for -// the results of such use. Altera Corporation does not guarantee that -// this file is complete, correct, or fit for any particular purpose. -// NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. This notice must -// accompany any copy of this file. -// -//------------------------------------------------------------------------ -// Imported to Opencores directory. Date Sept 10, 2001 -// Split related modules into separate files, as the manual splits them. -// Added example instantiations to the beginning of each file. -// -/* EXAMPLE INSTANTIATIONS: - -lpm_latch -#( 1, // lpm_width - "UNUSED", // lpm_avalue, aset value, optional, -1 if not set - "UNUSED" // lpm_pvalue, power-up value, optional - ) lpm_latch_example ( - .q (data_out[lpm_width-1:0]), - .data (data_in[lpm_width-1:0]), - .gate (pass_thru_when_HIGH), - .aset (set_to_aset_value_when_HIGH), // OPTIONAL - .aclr (set_to_zero_when_HIGH) // OPTIONAL -); - -lpm_ff -#( 1, // lpm_width - "UNUSED", // lpm_avalue, aset value, optional, -1 if not set - "UNUSED", // lpm_svalue, sset value, optional, -1 if not set - "UNUSED", // lpm_pvalue, power-up value, optional - "DFF" // lpm_fftype, optional, {DFF, TFF} - ) lpm_ff_example ( - .q (data_out[lpm_width-1:0]), - .data (data_in[lpm_width-1:0]), - .clock (rising_edge_flop_clock), - .enable (clock_enable_when_HIGH), // OPTIONAL - .sload (load_data_to_toggle_flops_if_TFF), // OPTIONAL - .sset (load_data_from_svalue_if_HIGH), // OPTIONAL - .sclr (set_value_to_0_if_HIGH), // OPTIONAL - .aload (load_data_to_toggle_flops_if_TFF), // OPTIONAL - .aset (load_data_from_svalue_if_HIGH), // OPTIONAL - .aclr (set_value_to_0_if_HIGH) // OPTIONAL -); - -lpm_shiftreg -#( 1, // lpm_width - "UNUSED", // lpm_avalue, aset value, optional, -1 if not set - "UNUSED", // lpm_svalue, sset value, optional, -1 if not set - "UNUSED", // lpm_pvalue, power-up value, optional - "LEFT" // lpm_direction, optional, {LEFT, RIGHT} - ) lpm_shiftreg_example ( - .q (data_out[lpm_width-1:0]), - .shiftout (shift_data_from_LSB_or_MSB), - .data (parallel_data_in[lpm_width-1:0]), // OPTIONAL - .shiftin (shift_data_to_LSB_or_MSB), - .clock (rising_edge_flop_clock), - .enable (clock_enable_when_HIGH), // OPTIONAL - .load (parallel_load_data_when_HIGH), // OPTIONAL - .sset (load_data_from_svalue_if_HIGH), // OPTIONAL - .sclr (set_value_to_0_if_HIGH), // OPTIONAL - .aset (load_data_from_svalue_if_HIGH), // OPTIONAL - .aclr (set_value_to_0_if_HIGH) // OPTIONAL -); - -lpm_ram_dq -#( 1, // lpm_width - parameter lpm_widthad = 1; - parameter lpm_numwords = 1 << lpm_widthad; - parameter lpm_indata = "REGISTERED"; - parameter lpm_address_control = "REGISTERED"; - parameter lpm_outdata = "REGISTERED"; - parameter lpm_file = "UNUSED"; - ) lpm_ram_dq_example ( - .q (data_out[lpm_width-1:0]), - .data (parallel_data_in[lpm_width-1:0]), -); -// NOTE: WORKING -( q, data, inclock, outclock, we, address ); - - input [lpm_width-1:0] data; - input [lpm_widthad-1:0] address; - input inclock, outclock, we; - output [lpm_width-1:0] q; - - -lpm_ram_dp -#( 1, // lpm_width - parameter lpm_widthad = 1; - parameter lpm_numwords = 1<< lpm_widthad; - parameter lpm_indata = "REGISTERED"; - parameter lpm_outdata = "REGISTERED"; - parameter lpm_rdaddress_control = "REGISTERED"; - parameter lpm_wraddress_control = "REGISTERED"; - parameter lpm_file = "UNUSED"; - ) lpm_ram_dp_example ( - .q (data_out[lpm_width-1:0]), - .data (parallel_data_in[lpm_width-1:0]), -); -( q, data, wraddress, rdaddress, rdclock, wrclock, rdclken, wrclken, rden, wren); - - input [lpm_width-1:0] data; - input [lpm_widthad-1:0] rdaddress, wraddress; - input rdclock, wrclock, rdclken, wrclken, rden, wren; - output [lpm_width-1:0] q; - - -lpm_ram_io -#( 1, // lpm_width - parameter lpm_widthad = 1; - parameter lpm_numwords = 1<< lpm_widthad; - parameter lpm_indata = "REGISTERED"; - parameter lpm_address_control = "REGISTERED"; - parameter lpm_outdata = "REGISTERED"; - parameter lpm_file = "UNUSED"; - ) lpm_ram_io_example ( - .q (data_out[lpm_width-1:0]), - .data (parallel_data_in[lpm_width-1:0]), -); -( dio, inclock, outclock, we, memenab, outenab, address ); - - input [lpm_widthad-1:0] address; - input inclock, outclock, we; - input memenab; - input outenab; - inout [lpm_width-1:0] dio; - -lpm_rom -#( 1, // lpm_width - parameter lpm_widthad = 1; - parameter lpm_numwords = 1<< lpm_widthad; - parameter lpm_address_control = "REGISTERED"; - parameter lpm_outdata = "REGISTERED"; - parameter lpm_file = "rom.hex"; - ) lpm_rom_example ( - .q (data_out[lpm_width-1:0]), - .data (parallel_data_in[lpm_width-1:0]), -); -( q, inclock, outclock, memenab, address ); - - input [lpm_widthad-1:0] address; - input inclock, outclock; - input memenab; - output [lpm_width-1:0] q; - -lpm_fifo -#( 1, // lpm_width - parameter lpm_widthu = 1; - parameter lpm_numwords = 2; - parameter lpm_showahead = "OFF"; - ) lpm_fifo_example ( - .q (data_out[lpm_width-1:0]), - .data (parallel_data_in[lpm_width-1:0]), -); -(data, clock, wrreq, rdreq, aclr, sclr, q, usedw, full, empty); - - input [lpm_width-1:0] data; - input clock; - input wrreq; - input rdreq; - input aclr; - input sclr; - output [lpm_width-1:0] q; - output [lpm_widthu-1:0] usedw; - output full; - output empty; - - -lpm_fifo_dc -#( 1, // lpm_width - parameter lpm_widthu = 1; - parameter lpm_numwords = 2; - parameter lpm_showahead = "OFF"; - ) lpm_fifo_dc_example ( - .q (data_out[lpm_width-1:0]), - .data (parallel_data_in[lpm_width-1:0]), -); -( data, rdclock, wrclock, aclr, rdreq, wrreq, rdfull, wrfull, rdempty, wrempty, rdusedw, wrusedw, q ); - - input [lpm_width-1:0] data; - input rdclock; - input wrclock; - input wrreq; - input rdreq; - input aclr; - output rdfull; - output wrfull; - output rdempty; - output wrempty; - output [lpm_width-1:0] q; - output [lpm_widthu-1:0] rdusedw; - output [lpm_widthu-1:0] wrusedw; - -*/ - -//------------------------------------------------------------------------ -// LPM Synthesizable Models -//------------------------------------------------------------------------ -// Version 1.5 (lpm 220) Date 12/17/99 -// -// Modified LPM_ADD_SUB and LPM_MULT to accomodate LPM_WIDTH = 1. -// Default values for LPM_WIDTH* are changed back to 1. -// Added LPM_HINT to LPM_DIVIDE. -// Rewritten LPM_FIFO_DC to output correctly. -// Modified LPM_FIFO to output 0s before first read, output correct -// values after aclr and sclr, and output LPM_NUMWORDS mod -// exp(2, LPM_WIDTHU) when FIFO is full. -// -//------------------------------------------------------------------------ -// Version 1.4.1 (lpm 220) Date 10/29/99 -// -// Default values for LPM_WIDTH* of LPM_ADD_SUB and LPM_MULT are changed -// from 1 to 2. -// -//------------------------------------------------------------------------ -// Version 1.4 (lpm 220) Date 10/18/99 -// -// Default values for each optional inputs for ALL modules are added. -// Some LPM_PVALUE implementations were missing, and now implemented. -// -//------------------------------------------------------------------------ -// Version 1.3 (lpm 220) Date 06/23/99 -// -// Corrected LPM_FIFO and LPM_FIFO_DC cout and empty/full flags. -// Implemented LPM_COUNTER cin/cout, and LPM_MODULUS is now working. -// -//------------------------------------------------------------------------ -// Version 1.2 (lpm 220) Date 06/16/99 -// -// Added LPM_RAM_DP, LPM_RAM_DQ, LPM_IO, LPM_ROM, LPM_FIFO, LPM_FIFO_DC. -// Parameters and ports are added/discarded according to the spec. -// -//------------------------------------------------------------------------ -// Version 1.1 (lpm 220) Date 02/05/99 -// -// Added LPM_DIVIDE module. -// -//------------------------------------------------------------------------ -// Version 1.0 Date 07/09/97 -// -//------------------------------------------------------------------------ -// Excluded Functions: -// -// LPM_FSM and LPM_TTABLE. -// -//------------------------------------------------------------------------ -// Assumptions: -// -// 1. LPM_SVALUE, LPM_AVALUE, LPM_MODULUS, and LPM_NUMWORDS, -// LPM_STRENGTH, LPM_DIRECTION, and LPM_PVALUE default value is -// string UNUSED. -// -//------------------------------------------------------------------------ -// Verilog Language Issues: -// -// Two dimensional ports are not supported. Modules with two dimensional -// ports are implemented as one dimensional signal of (LPM_SIZE * LPM_WIDTH) -// bits wide. -// -//------------------------------------------------------------------------ -// Synthesis Issues: -// -// 1. LPM_COUNTER -// -// Currently synthesis tools do not allow mixing of level and edge -// sensetive signals. To overcome that problem the "data" signal is -// removed from the clock always block of lpm_counter, however the -// synthesis result is accurate. For correct simulation add the "data" -// pin to the sensetivity list as follows: -// -// always @(posedge clock or posedge aclr or posedge aset or -// posedge aload or data) -//------------------------------------------------------------------------ - -module lpm_latch ( q, data, gate, aset, aclr ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_avalue = "UNUSED"; - parameter lpm_pvalue = "UNUSED"; - parameter lpm_type = "lpm_latch"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_width-1:0] data; - input gate, aset, aclr; - output [lpm_width-1:0] q; - - reg [lpm_width-1:0] q; - - tri0 aset; - tri0 aclr; - - buf (i_aset, aset); - buf (i_aclr, aclr); - -//---------------------------------------------------------------// -// function integer str_to_int; -//---------------------------------------------------------------// - function integer str_to_int; - input [8*16:1] s; - - reg [8*16:1] reg_s; - reg [8:1] digit; - reg [8:1] tmp; - integer m , ivalue; - - begin - ivalue = 0; - reg_s = s; - for (m=1; m<=16; m= m+1) - begin - tmp = reg_s[128:121]; - digit = tmp & 8'b00001111; - reg_s = reg_s << 8; - ivalue = ivalue * 10 + digit; - end - str_to_int = ivalue; - end - endfunction -//---------------------------------------------------------------// - - initial - begin - if (lpm_pvalue != "UNUSED") - q = str_to_int(lpm_pvalue); - end - - always @(data or gate or i_aclr or i_aset) - begin - if (i_aclr) - q = 'b0; - else if (i_aset) - begin - if (lpm_avalue == "UNUSED") - q = {lpm_width{1'b1}}; - else - q = str_to_int(lpm_avalue); - end - else if (gate) - q = data; - end - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_latch") || (lpm_type !== "lpm_latch")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_latch - -//------------------------------------------------------------------------ - -module lpm_ff ( q, data, clock, enable, aclr, aset, - sclr, sset, aload, sload ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_avalue = "UNUSED"; - parameter lpm_svalue = "UNUSED"; - parameter lpm_pvalue = "UNUSED"; - parameter lpm_fftype = "DFF"; - parameter lpm_type = "lpm_ff"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - - input [lpm_width-1:0] data; - input clock, enable; - input aclr, aset; - input sclr, sset; - input aload, sload ; - output [lpm_width-1:0] q; - - reg [lpm_width-1:0] tmp_q; - integer i; - - tri1 enable; - tri0 sload; - tri0 sclr; - tri0 sset; - tri0 aload; - tri0 aclr; - tri0 aset; - - buf (i_enable, enable); - buf (i_sload, sload); - buf (i_sclr, sclr); - buf (i_sset, sset); - buf (i_aload, aload); - buf (i_aclr, aclr); - buf (i_aset, aset); - -//---------------------------------------------------------------// -// function integer str_to_int; -//---------------------------------------------------------------// - function integer str_to_int; - input [8*16:1] s; - - reg [8*16:1] reg_s; - reg [8:1] digit; - reg [8:1] tmp; - integer m , ivalue; - - begin - ivalue = 0; - reg_s = s; - for (m=1; m<=16; m= m+1) - begin - tmp = reg_s[128:121]; - digit = tmp & 8'b00001111; - reg_s = reg_s << 8; - ivalue = ivalue * 10 + digit; - end - str_to_int = ivalue; - end - endfunction -//---------------------------------------------------------------// - - initial - begin - if (lpm_pvalue != "UNUSED") - tmp_q = str_to_int(lpm_pvalue); - end - - always @(posedge clock or posedge i_aclr or posedge i_aset or - posedge i_aload) - begin :asyn_block // Asynchronous process - if (i_aclr) - begin - tmp_q = 0; - end - else if (i_aset) - begin - if (lpm_avalue == "UNUSED") - tmp_q = {lpm_width{1'b1}}; - else - tmp_q = str_to_int(lpm_avalue); - end - else if (i_aload) - begin - tmp_q = data; - end - else - begin :syn_block // Synchronous process - if (i_enable) - begin - if (i_sclr) - begin - tmp_q = 0; - end - else if (i_sset) - begin - if (lpm_svalue == "UNUSED") - tmp_q = {lpm_width{1'b1}}; - else - tmp_q = str_to_int(lpm_svalue); - end - else if (i_sload) // Load data - begin - tmp_q = data; - end - else - begin - if (lpm_fftype == "TFF") // toggle - begin - for (i = 0; i < lpm_width; i=i+1) - begin - if (data[i] == 1'b1) - tmp_q[i] = ~tmp_q[i]; - end - end - else - if (lpm_fftype == "DFF") // load data - tmp_q = data; - end - end - end - end - - assign q = tmp_q; - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_ff") || (lpm_type !== "lpm_ff")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_ff - -//------------------------------------------------------------------------ - -module lpm_shiftreg ( q, shiftout, data, clock, enable, aclr, aset, - sclr, sset, shiftin, load ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_avalue = "UNUSED"; - parameter lpm_svalue = "UNUSED"; - parameter lpm_pvalue = "UNUSED"; - parameter lpm_direction = "LEFT"; - parameter lpm_type = "lpm_shiftreg"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_width-1:0] data; - input clock, enable; - input aclr, aset; - input sclr, sset; - input shiftin, load; - output [lpm_width-1:0] q; - output shiftout; - - reg [lpm_width-1:0] tmp_q; - reg abit; - integer i; - - wire tmp_shiftout; - - tri1 enable; - tri1 shiftin; - tri0 load; - tri0 sclr; - tri0 sset; - tri0 aclr; - tri0 aset; - - buf (i_enable, enable); - buf (i_shiftin, shiftin); - buf (i_load, load); - buf (i_sclr, sclr); - buf (i_sset, sset); - buf (i_aclr, aclr); - buf (i_aset, aset); - - -//---------------------------------------------------------------// -// function integer str_to_int; -//---------------------------------------------------------------// - function integer str_to_int; - input [8*16:1] s; - - reg [8*16:1] reg_s; - reg [8:1] digit; - reg [8:1] tmp; - integer m , ivalue; - - begin - ivalue = 0; - reg_s = s; - for (m=1; m<=16; m= m+1) - begin - tmp = reg_s[128:121]; - digit = tmp & 8'b00001111; - reg_s = reg_s << 8; - ivalue = ivalue * 10 + digit; - end - str_to_int = ivalue; - end - endfunction -//---------------------------------------------------------------// - - initial - begin - if (lpm_pvalue != "UNUSED") - tmp_q = str_to_int(lpm_pvalue); - end - - always @(posedge clock or posedge i_aclr or posedge i_aset) - begin :asyn_block // Asynchronous process - if (i_aclr) - begin - tmp_q = 0; - end - else if (i_aset) - begin - if (lpm_avalue === "UNUSED") - tmp_q = {lpm_width{1'b1}}; - else - tmp_q = str_to_int(lpm_avalue); - end - else - begin :syn_block // Synchronous process - if (i_enable) - begin - if (i_sclr) - begin - tmp_q = 0; - end - else if (i_sset) - begin - if (lpm_svalue === "UNUSED") - tmp_q = {lpm_width{1'b1}}; - else - tmp_q = str_to_int(lpm_svalue); - end - else if (i_load) - begin - tmp_q = data; - end - else if (!i_load) - begin - if (lpm_direction === "LEFT") - begin - {abit,tmp_q} = {tmp_q,i_shiftin}; - end - else if (lpm_direction === "RIGHT") - begin - {tmp_q,abit} = {i_shiftin,tmp_q}; - end - end - end - end - end - - - assign tmp_shiftout = (lpm_direction === "LEFT") ? tmp_q[lpm_width-1] - : tmp_q[0]; - assign q = tmp_q; - assign shiftout = tmp_shiftout; - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_shiftreg") || (lpm_type !== "lpm_shiftreg")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_shiftreg - -//------------------------------------------------------------------------ - -module lpm_ram_dq ( q, data, inclock, outclock, we, address ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_widthad = 1; - parameter lpm_numwords = 1 << lpm_widthad; - parameter lpm_indata = "REGISTERED"; - parameter lpm_address_control = "REGISTERED"; - parameter lpm_outdata = "REGISTERED"; - parameter lpm_file = "UNUSED"; - parameter lpm_type = "lpm_ram_dq"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_width-1:0] data; - input [lpm_widthad-1:0] address; - input inclock, outclock, we; - output [lpm_width-1:0] q; - - - // internal reg - reg [lpm_width-1:0] mem_data [lpm_numwords-1:0]; - reg [lpm_width-1:0] tmp_q; - reg [lpm_width-1:0] pdata; - reg [lpm_width-1:0] in_data; - reg [lpm_widthad-1:0] paddress; - reg pwe; - reg [lpm_width-1:0] ZEROS, UNKNOWN; - reg [8*256:1] ram_initf; - integer i; - - tri0 inclock; - tri0 outclock; - - buf (i_inclock, inclock); - buf (i_outclock, outclock); - -//---------------------------------------------------------------// - function ValidAddress; - input [lpm_widthad-1:0] paddress; - - begin - ValidAddress = 1'b0; - if (^paddress ==='bx) - $display("%d:Error! Invalid address.\n", $time); - else if (paddress >= lpm_numwords) - $display("%d:Error! Address out of bound on RAM.\n", $time); - else - ValidAddress = 1'b1; - end - endfunction -//---------------------------------------------------------------// - - initial - begin - - // Initialize the internal data register. - pdata = 0; - paddress = 0; - pwe = 0; - tmp_q = 0; - - if (lpm_width <= 0) - $display("Error! lpm_width parameter must be greater than 0."); - - if (lpm_widthad <= 0) - $display("Error! lpm_widthad parameter must be greater than 0."); - // check for number of words out of bound - if ((lpm_numwords > (1 << lpm_widthad)) - ||(lpm_numwords <= (1 << (lpm_widthad-1)))) - begin - $display("Error! lpm_numwords must equal to the ceiling of log2(lpm_widthad)."); - - end - - if ((lpm_indata !== "REGISTERED") && (lpm_indata !== "UNREGISTERED")) - begin - $display("Error! lpm_indata must be REGISTERED (the default) or UNREGISTERED."); - end - - if ((lpm_address_control !== "REGISTERED") && (lpm_address_control !== "UNREGISTERED")) - begin - $display("Error! lpm_address_control must be REGISTERED (the default) or UNREGISTERED."); - end - - if ((lpm_outdata !== "REGISTERED") && (lpm_outdata !== "UNREGISTERED")) - begin - $display("Error! lpm_outdata must be REGISTERED (the default) or UNREGISTERED."); - end - - // check if lpm_indata or lpm_address_control is set to registered - // inclock must be used. - if (((lpm_indata === "REGISTERED") || (lpm_address_control === "REGISTERED")) && (inclock === 1'bz)) - begin - $display("Error! inclock = 1'bz. Inclock pin must be used.\n"); - end - - // check if lpm_outdata, outclock must be used - if ((lpm_outdata === "REGISTERED") && (outclock === 1'bz)) - begin - $display("Error! lpm_outdata = REGISTERED, outclock = 1'bz . Outclock pin must be used.\n"); - end - - for (i=0; i < lpm_width; i=i+1) - begin - ZEROS[i] = 1'b0; - UNKNOWN[i] = 1'bX; - end - - for (i = 0; i < lpm_numwords; i=i+1) - mem_data[i] = ZEROS; - - // load data to the RAM - if (lpm_file != "UNUSED") - begin - $convert_hex2ver(lpm_file, lpm_width, ram_initf); - $readmemh(ram_initf, mem_data); - end - - end - - - always @(posedge i_inclock) - begin - if ((lpm_indata === "REGISTERED") && (lpm_address_control === "REGISTERED")) - begin - paddress <= address; - pdata <= data; - pwe <= we; - end - else - begin - if ((lpm_indata === "REGISTERED") && (lpm_address_control === "UNREGISTERED")) - pdata <= data; - - if ((lpm_indata === "UNREGISTERED") && (lpm_address_control === "REGISTERED")) - begin - paddress <= address; - pwe <= we; - end - end - end - - always @(data) - begin - if (lpm_indata === "UNREGISTERED") - pdata <= data; - end - - always @(address) - begin - if (lpm_address_control === "UNREGISTERED") - paddress <= address; - end - - always @(we) - begin - if (lpm_address_control === "UNREGISTERED") - pwe <= we; - end - - always @(pdata or paddress or pwe) - begin :unregistered_inclock - if (ValidAddress(paddress)) - begin - if ((lpm_indata === "UNREGISTERED" && lpm_address_control === "UNREGISTERED") || (lpm_address_control === "UNREGISTERED")) - begin - if (pwe) - mem_data[paddress] <= pdata; - end - - end - else - begin - if (lpm_outdata === "UNREGISTERED") - tmp_q <= UNKNOWN; - end - end - - always @(posedge i_outclock) - begin - if (lpm_outdata === "REGISTERED") - begin - if (ValidAddress(paddress)) - tmp_q <= mem_data[paddress]; - else - tmp_q <= UNKNOWN; - end - end - - always @(negedge i_inclock) - begin - if (lpm_address_control === "REGISTERED") - begin - if (pwe) - mem_data[paddress] <= pdata; - end - end - - assign q = ( lpm_outdata === "UNREGISTERED" ) ? mem_data[paddress] : tmp_q; - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_ram_dq") || (lpm_type !== "lpm_ram_dq")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_ram_dq - -//------------------------------------------------------------------------ - -module lpm_ram_dp ( q, data, wraddress, rdaddress, rdclock, wrclock, rdclken, wrclken, rden, wren); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_widthad = 1; - parameter lpm_numwords = 1<< lpm_widthad; - parameter lpm_indata = "REGISTERED"; - parameter lpm_outdata = "REGISTERED"; - parameter lpm_rdaddress_control = "REGISTERED"; - parameter lpm_wraddress_control = "REGISTERED"; - parameter lpm_file = "UNUSED"; - parameter lpm_type = "lpm_ram_dp"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_width-1:0] data; - input [lpm_widthad-1:0] rdaddress, wraddress; - input rdclock, wrclock, rdclken, wrclken, rden, wren; - output [lpm_width-1:0] q; - - - // internal reg - reg [lpm_width-1:0] mem_data [lpm_numwords-1:0]; - reg [lpm_width-1:0] tmp_q; - reg [lpm_width-1:0] prev_q; - reg [lpm_width-1:0] new_data; - reg [lpm_widthad-1:0] new_raddress; - reg [lpm_widthad-1:0] new_wraddress; - reg wren_event, rden_event; - reg [lpm_width-1:0] ZEROS, UNKNOWN; - reg [8*256:1] ram_initf; - integer i; - - tri0 rdclock; - tri1 rdclken; - tri1 rden; - tri0 wrclock; - tri1 wrclken; - - buf (i_rdclock, rdclock); - buf (i_rdclken, rdclken); - buf (i_rden, rden); - buf (i_wrclock, wrclock); - buf (i_wrclken, wrclken); - - -//---------------------------------------------------------------// - function ValidAddress; - input [lpm_widthad-1:0] paddress; - - begin - ValidAddress = 1'b0; - if (^paddress ==='bx) - $display("%d:Error! Invalid address.\n", $time); - else if (paddress >= lpm_numwords) - $display("%d:Error! Address out of bound on RAM.\n", $time); - else - ValidAddress = 1'b1; - end - endfunction -//---------------------------------------------------------------// - - initial - begin - - // Initialize the internal data register. - new_data = 0; - new_raddress = 0; - new_wraddress = 0; - wren_event = 0; - tmp_q = 0; - - if (lpm_width <= 0) - $display("Error! lpm_width parameter must be greater than 0."); - - if (lpm_widthad <= 0) - $display("Error! lpm_widthad parameter must be greater than 0."); - // check for number of words out of bound - if ((lpm_numwords > (1 << lpm_widthad)) - ||(lpm_numwords <= (1 << (lpm_widthad-1)))) - begin - $display("Error! lpm_numwords must equal to the ceiling of log2(lpm_widthad)."); - end - - if ((lpm_indata !== "REGISTERED") && (lpm_indata !== "UNREGISTERED")) - begin - $display("Error! lpm_indata must be REGISTERED (the default) or UNREGISTERED."); - end - - if ((lpm_rdaddress_control !== "REGISTERED") && (lpm_rdaddress_control !== "UNREGISTERED")) - begin - $display("Error! lpm_rdaddress_control must be REGISTERED (the default) or UNREGISTERED."); - end - - if ((lpm_wraddress_control !== "REGISTERED") && (lpm_wraddress_control !== "UNREGISTERED")) - begin - $display("Error! lpm_wraddress_control must be REGISTERED (the default) or UNREGISTERED."); - end - - if ((lpm_outdata !== "REGISTERED") && (lpm_outdata !== "UNREGISTERED")) - begin - $display("Error! lpm_outdata must be REGISTERED (the default) or UNREGISTERED."); - end - - // check if lpm_indata or lpm_wraddress_control is set to registered - // wrclock and wrclken must be used. - if (((lpm_indata === "REGISTERED") || (lpm_wraddress_control === "REGISTERED")) && ((wrclock === 1'bz) || (wrclken == 1'bz))) - begin - $display("Error! wrclock = 1'bz. wrclock and wrclken pins must be used.\n"); - end - - // check if lpm_rdaddress_control is set to registered - // rdclock and rdclken must be used. - if ((lpm_rdaddress_control === "REGISTERED") && ((rdclock === 1'bz) || (rdclken == 1'bz))) - begin - $display("Error! rdclock = 1'bz. rdclock and rdclken pins must be used.\n"); - end - - // check if lpm_outdata, rdclock must be used - if ((lpm_outdata === "REGISTERED") && (rdclock === 1'bz)) - begin - $display("Error! lpm_outdata = REGISTERED, rdclock = 1'bz . rdclock pnd rdclken pins must be used.\n"); - end - - for (i=0; i < lpm_width; i=i+1) - begin - ZEROS[i] = 1'b0; - UNKNOWN[i] = 1'bX; - end - - for (i = 0; i < lpm_numwords; i=i+1) - mem_data[i] = ZEROS; - - // load data to the RAM - if (lpm_file != "UNUSED") - begin - $convert_hex2ver(lpm_file, lpm_width, ram_initf); - $readmemh(ram_initf, mem_data); - end - end - - - always @(posedge i_wrclock) - begin - if (i_wrclken) - begin - if ((lpm_indata === "REGISTERED") && (lpm_wraddress_control === "REGISTERED")) - begin - new_wraddress <= wraddress; - new_data <= data; - wren_event <= wren; - end - else - begin - if ((lpm_indata === "REGISTERED") && (lpm_wraddress_control === "UNREGISTERED")) - new_data <= data; - - if ((lpm_indata === "UNREGISTERED") && (lpm_wraddress_control === "REGISTERED")) - begin - new_wraddress <= wraddress; - wren_event <= wren; - end - end - end - end - - - always @(data) - begin - if (lpm_indata === "UNREGISTERED") - new_data <= data; - end - - always @(wraddress) - begin - if (lpm_wraddress_control === "UNREGISTERED") - new_wraddress <= wraddress; - end - - always @(rdaddress) - begin - if (lpm_rdaddress_control === "UNREGISTERED") - new_raddress <= rdaddress; - end - - always @(wren) - begin - if (lpm_wraddress_control === "UNREGISTERED") - wren_event <= wren; - end - - always @(i_rden) - begin - if (lpm_rdaddress_control === "UNREGISTERED") - rden_event <= i_rden; - end - - always @(new_data or new_wraddress or wren_event) - begin - if (ValidAddress(new_wraddress)) - begin - if ((wren_event) && (i_wrclken)) - mem_data[new_wraddress] <= new_data; - end - else - begin - if (lpm_outdata === "UNREGISTERED") - tmp_q <= UNKNOWN; - end - end - - always @(posedge i_rdclock) - begin - if (lpm_rdaddress_control == "REGISTERED") - if (i_rdclken) - begin - new_raddress <= rdaddress; - rden_event <= i_rden; - end - if (lpm_outdata === "REGISTERED") - begin - if ((i_rdclken) && (rden_event)) - begin - if (ValidAddress(new_raddress)) - begin - tmp_q <= mem_data[new_raddress]; - end - else - tmp_q <= UNKNOWN; - end - end - end - - //assign q = ( lpm_outdata === "UNREGISTERED" ) ? mem_data[new_raddress] : tmp_q; - - always @(mem_data[new_raddress] or tmp_q or i_rden) - begin - if (i_rden || lpm_outdata === "REGISTERED") - prev_q <= ( lpm_outdata === "UNREGISTERED" ) ? mem_data[new_raddress] : tmp_q; - end - - assign q = prev_q; - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_ram_dp") || (lpm_type !== "lpm_ram_dp")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_ram_dp - -//------------------------------------------------------------------------ - -module lpm_ram_io ( dio, inclock, outclock, we, memenab, outenab, address ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_widthad = 1; - parameter lpm_numwords = 1<< lpm_widthad; - parameter lpm_indata = "REGISTERED"; - parameter lpm_address_control = "REGISTERED"; - parameter lpm_outdata = "REGISTERED"; - parameter lpm_file = "UNUSED"; - parameter lpm_type = "lpm_ram_io"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_widthad-1:0] address; - input inclock, outclock, we; - input memenab; - input outenab; - inout [lpm_width-1:0] dio; - - - // inernal reg - reg [lpm_width-1:0] mem_data [lpm_numwords-1:0]; - reg [lpm_width-1:0] tmp_io; - reg [lpm_width-1:0] tmp_q; - reg [lpm_width-1:0] pdio; - reg [lpm_widthad-1:0] paddress; - reg pwe; - reg [lpm_width-1:0] ZEROS, UNKNOWN, HiZ; - reg [8*256:1] ram_initf; - integer i; - - tri0 inclock; - tri0 outclock; - - buf (i_inclock, inclock); - buf (i_outclock, outclock); - - -//---------------------------------------------------------------// - function ValidAddress; - input [lpm_widthad-1:0] paddress; - - begin - ValidAddress = 1'b0; - if (^paddress ==='bx) - $display("%d:Error: Invalid address.", $time); - else if (paddress >= lpm_numwords) - $display("%d:Error: Address out of bound on RAM.", $time); - else - ValidAddress = 1'b1; - end - endfunction -//---------------------------------------------------------------// - - initial - begin - - if (lpm_width <= 0) - $display("Error! lpm_width parameter must be greater than 0."); - - if (lpm_widthad <= 0) - $display("Error! lpm_widthad parameter must be greater than 0."); - - // check for number of words out of bound - if ((lpm_numwords > (1 << lpm_widthad)) - ||(lpm_numwords <= (1 << (lpm_widthad-1)))) - begin - $display("Error! lpm_numwords must equal to the ceiling of log2(lpm_widthad)."); - end - - if ((lpm_indata !== "REGISTERED") && (lpm_indata !== "UNREGISTERED")) - begin - $display("Error! lpm_indata must be REGISTERED (the default) or UNREGISTERED."); - end - - if ((lpm_address_control !== "REGISTERED") && (lpm_address_control !== "UNREGISTERED")) - begin - $display("Error! lpm_address_control must be REGISTERED (the default) or UNREGISTERED."); - end - - if ((lpm_outdata !== "REGISTERED") && (lpm_outdata !== "UNREGISTERED")) - begin - $display("Error! lpm_outdata must be REGISTERED (the default) or UNREGISTERED."); - end - - - // check if lpm_indata or lpm_address_control is set to registered - // inclock must be used. - if (((lpm_indata === "REGISTERED") || (lpm_address_control === "REGISTERED")) && (inclock === 1'bz)) - begin - $display("Error! inclock = 1'bz. Inclock pin must be used.\n"); - end - - // check if lpm_outdata, outclock must be used - if ((lpm_outdata === "REGISTERED") && (outclock === 1'bz)) - begin - $display("Error! lpm_outdata is REGISTERED, outclock = 1'bz. Outclock pin must be used.\n"); - end - - for (i=0; i < lpm_width; i=i+1) - begin - ZEROS[i] = 1'b0; - UNKNOWN[i] = 1'bX; - HiZ[i] = 1'bZ; - end - - for (i = 0; i < lpm_numwords; i=i+1) - mem_data[i] = ZEROS; - - // Initialize input/output - pdio = 0; - paddress = 0; - tmp_io = 0; - tmp_q = 0; - - // load data to the RAM - if (lpm_file != "UNUSED") - begin - $convert_hex2ver(lpm_file, lpm_width, ram_initf); - $readmemh(ram_initf, mem_data); - end - end - - - always @(dio) - begin - if (lpm_indata === "UNREGISTERED") - pdio <= dio; - end - - always @(address) - begin - if (lpm_address_control === "UNREGISTERED") - paddress <= address; - end - - - always @(we) - begin - if (lpm_address_control === "UNREGISTERED") - pwe <= we; - end - - always @(posedge i_inclock) - begin - if (lpm_indata === "REGISTERED") - pdio <= dio; - - if (lpm_address_control === "REGISTERED") - begin - paddress <= address; - pwe <= we; - end - end - - always @(pdio or paddress or pwe or memenab) - begin :block_a - if (ValidAddress(paddress)) - begin - if ((lpm_indata === "UNREGISTERED" && lpm_address_control === "UNREGISTERED") || (lpm_address_control === "UNREGISTERED")) - begin - if (pwe && memenab) - mem_data[paddress] <= pdio; - end - - if (lpm_outdata === "UNREGISTERED") - begin - tmp_q <= mem_data[paddress]; - tmp_q <= mem_data[paddress]; - end - end - else - begin - if (lpm_outdata === "UNREGISTERED") - tmp_q <= UNKNOWN; - end - end - - always @(negedge i_inclock) - begin - if (lpm_address_control === "REGISTERED") - begin - if (pwe && memenab) - mem_data[paddress] <= pdio; - end - end - - always @(posedge i_outclock) - begin - if (lpm_outdata === "REGISTERED") - begin - tmp_q <= mem_data[paddress]; - end - end - - always @(memenab or outenab or tmp_q) - begin - if (memenab && outenab) - tmp_io <= tmp_q; - else if (!memenab || (memenab && !outenab)) - tmp_io <= HiZ; - end - - assign dio = tmp_io; - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_ram_io") || (lpm_type !== "lpm_ram_io")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_ram_io - -//------------------------------------------------------------------------ - -module lpm_rom ( q, inclock, outclock, memenab, address ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_widthad = 1; - parameter lpm_numwords = 1<< lpm_widthad; - parameter lpm_address_control = "REGISTERED"; - parameter lpm_outdata = "REGISTERED"; - parameter lpm_file = "rom.hex"; - parameter lpm_type = "lpm_rom"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_widthad-1:0] address; - input inclock, outclock; - input memenab; - output [lpm_width-1:0] q; - - // inernal reg - reg [lpm_width-1:0] mem_data [lpm_numwords-1:0]; - reg [lpm_widthad-1:0] paddress; - reg [lpm_width-1:0] tmp_q; - reg [lpm_width-1:0] tmp_q_reg; - reg [lpm_width-1:0] ZEROS, UNKNOWN, HiZ; - reg [8*256:1] rom_initf; - integer i; - - tri0 inclock; - tri0 outclock; - tri1 memenab; - - buf (i_inclock, inclock); - buf (i_outclock, outclock); - buf (i_memenab, memenab); - - -//---------------------------------------------------------------// - function ValidAddress; - input [lpm_widthad-1:0] address; - begin - ValidAddress = 1'b0; - if (^address =='bx) - $display("%d:Error: Invalid address.", $time); - else if (address >= lpm_numwords) - $display("%d:Error: Address out of bound on ROM.", $time); - else - ValidAddress = 1'b1; - end - endfunction -//---------------------------------------------------------------// - - initial - begin - // Initialize output - tmp_q = 0; - tmp_q_reg = 0; - paddress = 0; - - if (lpm_file === "") - $display("Error! rom module must have data file for initialization\n."); - - if (lpm_width <= 0) - $display("Error! lpm_width parameter must be greater than 0."); - - if (lpm_widthad <= 0) - $display("Error! lpm_widthad parameter must be greater than 0."); - - - // check for number of words out of bound - if ((lpm_numwords > (1 << lpm_widthad)) - ||(lpm_numwords <= (1 << (lpm_widthad-1)))) - begin - $display("Error! lpm_numwords must equal to the ceiling of log2(lpm_widthad)."); - end - - if ((lpm_address_control !== "REGISTERED") && (lpm_address_control !== "UNREGISTERED")) - begin - $display("Error! lpm_address_control must be REGISTERED (the default) or UNREGISTERED."); - end - - if ((lpm_outdata !== "REGISTERED") && (lpm_outdata !== "UNREGISTERED")) - begin - $display("Error! lpm_outdata must be REGISTERED (the default) or UNREGISTERED."); - end - - // check if lpm_address_control is set to registered - // inclock must be used. - if ((lpm_address_control === "REGISTERED") && (inclock === 1'bz)) - begin - $display("Error! inclock = 1'bz. Inclock pin must be used.\n"); - end - - // check if lpm_outdata, outclock must be used - if ((lpm_outdata === "REGISTERED") && (outclock === 1'bz)) - begin - $display("Error! lpm_outdata is REGISTERED, outclock = 1'bz. Outclock must be used.\n"); - end - - for (i=0; i < lpm_width; i=i+1) - begin - ZEROS[i] = 1'b0; - UNKNOWN[i] = 1'bX; - HiZ[i] = 1'bZ; - end - - for (i = 0; i < lpm_numwords; i=i+1) - mem_data[i] = ZEROS; - - // load data to the ROM - if (lpm_file != "") - begin - $convert_hex2ver(lpm_file, lpm_width, rom_initf); - $readmemh(rom_initf, mem_data); - end - end - - always @(posedge i_inclock) - begin - if (lpm_address_control === "REGISTERED") - paddress <= address; - end - - always @(address) - begin - if (lpm_address_control === "UNREGISTERED") - paddress <= address; - end - - - always @(paddress) - begin - if (ValidAddress(paddress)) - begin - if (lpm_outdata === "UNREGISTERED") - tmp_q_reg <= mem_data[paddress]; - end - else - begin - if (lpm_outdata === "UNREGISTERED") - tmp_q_reg <= UNKNOWN; - end - end - - always @(posedge i_outclock) - begin - if (lpm_outdata === "REGISTERED") - begin - if (ValidAddress(paddress)) - tmp_q_reg <= mem_data[paddress]; - else - tmp_q_reg <= UNKNOWN; - end - end - - - always @(i_memenab or tmp_q_reg) - begin - if (i_memenab) - tmp_q <= tmp_q_reg; - else if (!i_memenab) - tmp_q <= HiZ; - end - - assign q = tmp_q; - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_rom") || (lpm_type !== "lpm_rom")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_rom - -//------------------------------------------------------------------------ - -module lpm_fifo (data, clock, wrreq, rdreq, aclr, sclr, q, usedw, full, empty); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_widthu = 1; - parameter lpm_numwords = 2; - parameter lpm_showahead = "OFF"; - parameter lpm_type = "lpm_fifo"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_width-1:0] data; - input clock; - input wrreq; - input rdreq; - input aclr; - input sclr; - output [lpm_width-1:0] q; - output [lpm_widthu-1:0] usedw; - output full; - output empty; - - - // internal reg - reg [lpm_width-1:0] mem_data [lpm_numwords-1:0]; - reg [lpm_width-1:0] tmp_q; - reg [lpm_width-1:0] ZEROS; - reg [lpm_widthu+1:0] count_id; - reg [lpm_widthu-1:0] write_id; - reg [lpm_widthu-1:0] read_id; - reg empty_flag; - reg full_flag; - integer i; - - tri0 aclr; - tri0 sclr; - - buf (i_aclr, aclr); - buf (i_sclr, sclr); - - initial - begin - - if (lpm_width <= 0) - $display("Error! lpm_width must be greater than 0."); - - if (lpm_numwords <= 1) - $display("Error! lpm_numwords must be greater than or equal to 2."); - - // check for number of words out of bound - if ((lpm_widthu !=1) && (lpm_numwords > (1 << lpm_widthu))) - $display("Error! lpm_numwords MUST equal to the ceiling of log2(lpm_widthu)."); - - if (lpm_numwords <= (1 << (lpm_widthu-1))) - begin - $display("Error! lpm_widthu is too big for the specified lpm_numwords."); - end - - for (i=0; i < lpm_width; i=i+1) - ZEROS[i] = 1'b0; - - for (i = 0; i < lpm_numwords; i=i+1) - mem_data[i] = ZEROS; - - full_flag = 0; - empty_flag = 1; - read_id = 0; - write_id = 0; - count_id = 0; - tmp_q = ZEROS; - end - - always @(posedge clock or i_aclr) - begin - if (i_aclr) - begin - tmp_q = ZEROS; - full_flag = 0; - empty_flag = 1; - read_id = 0; - write_id = 0; - count_id = 0; - if (lpm_showahead == "ON") - tmp_q = mem_data[0]; - end - else if (clock) - begin - if (i_sclr) - begin - tmp_q = mem_data[read_id]; - full_flag = 0; - empty_flag = 1; - read_id = 0; - write_id = 0; - count_id = 0; - if (lpm_showahead == "ON") - tmp_q = mem_data[0]; - end - else - begin - // both WRITE and READ - if ((wrreq && !full_flag) && (rdreq && !empty_flag)) - begin - mem_data[write_id] = data; - if (write_id >= lpm_numwords-1) - write_id = 0; - else - write_id = write_id + 1; - - tmp_q = mem_data[read_id]; - if (read_id >= lpm_numwords-1) - read_id = 0; - else - read_id = read_id + 1; - if (lpm_showahead == "ON") - tmp_q = mem_data[read_id]; - end - - // WRITE - else if (wrreq && !full_flag) - begin - mem_data[write_id] = data; - if (lpm_showahead == "ON") - tmp_q = mem_data[read_id]; - count_id = count_id + 1; - empty_flag = 0; - if (count_id >= lpm_numwords) - begin - full_flag = 1; - count_id = lpm_numwords; - end - if (write_id >= lpm_numwords-1) - write_id = 0; - else - write_id = write_id + 1; - end - - // READ - else if (rdreq && !empty_flag) - begin - tmp_q = mem_data[read_id]; - count_id = count_id - 1; - full_flag = 0; - if (count_id <= 0) - begin - empty_flag = 1; - count_id = 0; - end - if (read_id >= lpm_numwords-1) - read_id = 0; - else - read_id = read_id + 1; - if (lpm_showahead == "ON") - tmp_q = mem_data[read_id]; - end - end - end - end - - assign q = tmp_q; - assign full = full_flag; - assign empty = empty_flag; - assign usedw = count_id; - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_fifo") || (lpm_type !== "lpm_fifo")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_fifo - -//------------------------------------------------------------------------ - -module lpm_fifo_dc ( data, rdclock, wrclock, aclr, rdreq, wrreq, rdfull, wrfull, rdempty, wrempty, rdusedw, wrusedw, q ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_widthu = 1; - parameter lpm_numwords = 2; - parameter lpm_showahead = "OFF"; - parameter lpm_type = "lpm_fifo_dc"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_width-1:0] data; - input rdclock; - input wrclock; - input wrreq; - input rdreq; - input aclr; - output rdfull; - output wrfull; - output rdempty; - output wrempty; - output [lpm_width-1:0] q; - output [lpm_widthu-1:0] rdusedw; - output [lpm_widthu-1:0] wrusedw; - - - // internal reg - reg [lpm_width-1:0] mem_data [lpm_numwords-1:0]; - integer pipe_wrptr [0:5]; // [0:RDPTR_DP]; - integer pipe_rdptr [0:5]; // [0:WRPTR_DP]; - integer pipe_rdusedw [0:1]; // [0:RDUSEDW_DP]; - integer pipe_wrusedw [0:1]; // [0:WRUSEDW_DP]; - - reg [lpm_width-1:0] i_q; - reg i_rdempty; - reg i_wrempty; - reg i_rdfull; - reg i_wrfull; - reg x_rdempty; - reg x_wrfull; - integer i_rdptr; - integer i_wrptr; - integer i_rdusedw; - integer i_wrusedw; - integer x_rdptr; - integer x_wrptr; - - reg [lpm_width-1:0] ZEROS; - integer RDPTR_DP; - integer WRPTR_DP; - integer RDUSEDW_DP; - integer WRUSEDW_DP; - integer FULL_RISEEARLY; - integer i; - - tri0 aclr; - buf (i_aclr, aclr); - - - initial - begin - - if (lpm_width <= 0) - $display("Error! lpm_width must be greater than 0."); - - if (lpm_numwords <= 1) - $display("Error! lpm_numwords must be greater than or equal to 2."); - - // check for number of words out of bound - if ((lpm_widthu !=1) && (lpm_numwords > (1 << lpm_widthu))) - $display("Error! lpm_numwords MUST equal to the ceiling of log2(lpm_widthu)."); - - if (lpm_numwords <= (1 << (lpm_widthu-1))) - $display("Error! lpm_widthu is too big for the specified lpm_numwords."); - - for (i=0; i= lpm_numwords-1-FULL_RISEEARLY) - i_wrfull = 1; - else - i_wrfull = 0; - - if ((i_wrusedw <= 0) && (i_rdptr == i_wrptr)) - i_wrempty = 1; - - x_wrptr = i_wrptr; - if (wrreq && !x_wrfull) // && ! wrreq'event - begin - // WRITE DATA - mem_data[i_wrptr] = data; - - // SET FLAGS - i_wrempty = 0; - - // INC WRPTR - if (i_wrptr >= lpm_numwords-1) - i_wrptr = 0; - else - i_wrptr = i_wrptr + 1; - end - - // DELAY RDPTR FOR WRUSEDW - pipe_rdptr[WRPTR_DP] = i_rdptr; - for (i=0; i= pipe_rdptr[0]) - pipe_wrusedw[WRUSEDW_DP] = x_wrptr - pipe_rdptr[0]; - else - pipe_wrusedw[WRUSEDW_DP] = lpm_numwords + x_wrptr - pipe_rdptr[0]; - - // DELAY WRUSEDW - for (i=0; i= lpm_numwords-1-FULL_RISEEARLY) - i_rdfull = 1; - else - i_rdfull = 0; - - if (i_rdptr == i_wrptr) - i_rdempty = 1; - else if (i_rdempty && (i_rdusedw > 0)) - i_rdempty = 0; - - // Q SHOWAHEAD - if (lpm_showahead == "ON" && i_rdptr != i_wrptr) - i_q = mem_data[i_rdptr]; - - x_rdptr = i_rdptr; - if (rdreq && !x_rdempty) // && ! rdreq'event - begin - // READ DATA - i_q = mem_data[i_rdptr]; - if (lpm_showahead == "ON") - begin - if (i_rdptr == i_wrptr) - i_q = ZEROS; - else - begin - if (i_rdptr >= lpm_numwords-1) - i_q = mem_data[0]; - else - i_q = mem_data[i_rdptr+1]; - end - end - - // SET FLAGS - if ((i_rdptr == lpm_numwords-1 && i_wrptr == 0) || - (i_rdptr+1 == i_wrptr)) - i_rdempty = 1; - - // INC RDPTR - if (i_rdptr >= lpm_numwords-1) - i_rdptr = 0; - else - i_rdptr = i_rdptr + 1; - - end - // DELAY WRPTR FOR RDUSEDW - pipe_wrptr[RDPTR_DP] = i_wrptr; - for (i=0; i= x_rdptr) - pipe_rdusedw[RDUSEDW_DP] = pipe_wrptr[0] - x_rdptr; - else - pipe_rdusedw[RDUSEDW_DP] = lpm_numwords + pipe_wrptr[0] - x_rdptr; - - // DELAY RDUSEDW - for (i=0; i
trunk/220_verilog_usage.pdf Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/opencores_copyright.v =================================================================== --- trunk/opencores_copyright.v (revision 47) +++ trunk/opencores_copyright.v (nonexistent) @@ -1,50 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// YOUR MODULE OR FILE NAME HERE //// -//// //// -//// This file is part of the YOUR PROJECT NAME opencores effort. //// -//// //// -//// //// -//// Module Description: //// -//// YOUR MODULE DESCRIPTION //// -//// //// -//// To Do: //// -//// YOUR STATE HERE //// -//// //// -//// Author(s): //// -//// - YOUR NAME HERE //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 YOUR NAME HERE and OPENCORES.ORG //// -//// //// -//// This source file may be used and distributed without //// -//// restriction provided that this copyright statement is not //// -//// removed from the file and that any derivative work contains //// -//// the original copyright notice and the associated disclaimer. //// -//// //// -//// This source file is free software; you can redistribute it //// -//// and/or modify it under the terms of the GNU Lesser General //// -//// Public License as published by the Free Software Foundation; //// -//// either version 2.1 of the License, or (at your option) any //// -//// later version. //// -//// //// -//// This source 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 Lesser General Public License for more //// -//// details. //// -//// //// -//// You should have received a copy of the GNU Lesser General //// -//// Public License along with this source; if not, download it //// -//// from //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// \$Id\$ TAKE OUT THE \'s and this comment in order to get this to work -// -// CVS Revision History -// -// \$Log\$ TAKE OUT THE \'s and this comment in order to get this to work -// - Index: trunk/220_cells_specification.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/220_cells_specification.pdf =================================================================== --- trunk/220_cells_specification.pdf (revision 47) +++ trunk/220_cells_specification.pdf (nonexistent)
trunk/220_cells_specification.pdf Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/opencores_coding_guidelines.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/opencores_coding_guidelines.pdf =================================================================== --- trunk/opencores_coding_guidelines.pdf (revision 47) +++ trunk/opencores_coding_guidelines.pdf (nonexistent)
trunk/opencores_coding_guidelines.pdf Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/LPM_pads.v =================================================================== --- trunk/LPM_pads.v (revision 47) +++ trunk/LPM_pads.v (nonexistent) @@ -1,217 +0,0 @@ -//------------------------------------------------------------------------ -// This Verilog file was developed by Altera Corporation. It may be -// freely copied and/or distributed at no cost. Any persons using this -// file for any purpose do so at their own risk, and are responsible for -// the results of such use. Altera Corporation does not guarantee that -// this file is complete, correct, or fit for any particular purpose. -// NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. This notice must -// accompany any copy of this file. -// -//------------------------------------------------------------------------ -// Imported to Opencores directory. Date Sept 10, 2001 -// Split related modules into separate files, as the manual splits them. -// Added example instantiations to the beginning of each file. -// -/* EXAMPLE INSTANTIATIONS: - -lpm_inpad -#( 1 // lpm_width (width of input) - ) lpm_inpad_example ( - .pad (data_in[lpm_width-1:0]), - .result (data_out[lpm_width-1:0]) -); - -lpm_outpad -#( 1 // lpm_width (width of input) - ) lpm_outpad_example ( - .pad (data_out[lpm_width-1:0]), - .data (data_in[lpm_width-1:0]) -); - -lpm_bipad -#( 1 // lpm_width (width of input) - ) lpm_bipad_example ( - .pad (data_bi[lpm_width-1:0]), - .result (data_out[lpm_width-1:0]), - .data (data_in[lpm_width-1:0]), - .enable (oe_data_to_pad) -); -*/ - -//------------------------------------------------------------------------ -// LPM Synthesizable Models -//------------------------------------------------------------------------ -// Version 1.5 (lpm 220) Date 12/17/99 -// -// Modified LPM_ADD_SUB and LPM_MULT to accomodate LPM_WIDTH = 1. -// Default values for LPM_WIDTH* are changed back to 1. -// Added LPM_HINT to LPM_DIVIDE. -// Rewritten LPM_FIFO_DC to output correctly. -// Modified LPM_FIFO to output 0s before first read, output correct -// values after aclr and sclr, and output LPM_NUMWORDS mod -// exp(2, LPM_WIDTHU) when FIFO is full. -// -//------------------------------------------------------------------------ -// Version 1.4.1 (lpm 220) Date 10/29/99 -// -// Default values for LPM_WIDTH* of LPM_ADD_SUB and LPM_MULT are changed -// from 1 to 2. -// -//------------------------------------------------------------------------ -// Version 1.4 (lpm 220) Date 10/18/99 -// -// Default values for each optional inputs for ALL modules are added. -// Some LPM_PVALUE implementations were missing, and now implemented. -// -//------------------------------------------------------------------------ -// Version 1.3 (lpm 220) Date 06/23/99 -// -// Corrected LPM_FIFO and LPM_FIFO_DC cout and empty/full flags. -// Implemented LPM_COUNTER cin/cout, and LPM_MODULUS is now working. -// -//------------------------------------------------------------------------ -// Version 1.2 (lpm 220) Date 06/16/99 -// -// Added LPM_RAM_DP, LPM_RAM_DQ, LPM_IO, LPM_ROM, LPM_FIFO, LPM_FIFO_DC. -// Parameters and ports are added/discarded according to the spec. -// -//------------------------------------------------------------------------ -// Version 1.1 (lpm 220) Date 02/05/99 -// -// Added LPM_DIVIDE module. -// -//------------------------------------------------------------------------ -// Version 1.0 Date 07/09/97 -// -//------------------------------------------------------------------------ -// Excluded Functions: -// -// LPM_FSM and LPM_TTABLE. -// -//------------------------------------------------------------------------ -// Assumptions: -// -// 1. LPM_SVALUE, LPM_AVALUE, LPM_MODULUS, and LPM_NUMWORDS, -// LPM_STRENGTH, LPM_DIRECTION, and LPM_PVALUE default value is -// string UNUSED. -// -//------------------------------------------------------------------------ -// Verilog Language Issues: -// -// Two dimensional ports are not supported. Modules with two dimensional -// ports are implemented as one dimensional signal of (LPM_SIZE * LPM_WIDTH) -// bits wide. -// -//------------------------------------------------------------------------ -// Synthesis Issues: -// -// 1. LPM_COUNTER -// -// Currently synthesis tools do not allow mixing of level and edge -// sensetive signals. To overcome that problem the "data" signal is -// removed from the clock always block of lpm_counter, however the -// synthesis result is accurate. For correct simulation add the "data" -// pin to the sensetivity list as follows: -// -// always @(posedge clock or posedge aclr or posedge aset or -// posedge aload or data) -//------------------------------------------------------------------------ - -module lpm_inpad ( result, pad ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_type = "lpm_inpad"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_width-1:0] pad; - output [lpm_width-1:0] result; - - reg [lpm_width-1:0] result; - - always @(pad) - begin - result = pad; - end - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_inpad") || (lpm_type !== "lpm_inpad")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_inpad - -//------------------------------------------------------------------------ - -module lpm_outpad ( data, pad ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_type = "lpm_outpad"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_width-1:0] data; - output [lpm_width-1:0] pad; - - reg [lpm_width-1:0] pad; - - always @(data) - begin - pad = data; - end - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_outpad") || (lpm_type !== "lpm_outpad")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_outpad - -//------------------------------------------------------------------------ - -module lpm_bipad ( result, pad, data, enable ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_type = "lpm_bipad"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_width-1:0] data; - input enable; - inout [lpm_width-1:0] pad; - output [lpm_width-1:0] result; - - reg [lpm_width-1:0] tmp_pad; - reg [lpm_width-1:0] result; - - always @(data or pad or enable) - begin - if (enable == 1) - begin - tmp_pad = data; - result = 'bz; - end - else if (enable == 0) - begin - result = pad; - tmp_pad = 'bz; - end - end - - assign pad = tmp_pad; - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_bipad") || (lpm_type !== "lpm_bipad")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_bipad Index: trunk/220_vhdl_models.vhd =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/220_vhdl_models.vhd =================================================================== --- trunk/220_vhdl_models.vhd (revision 47) +++ trunk/220_vhdl_models.vhd (nonexistent)
trunk/220_vhdl_models.vhd Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/LPM_arithmetic.v =================================================================== --- trunk/LPM_arithmetic.v (revision 47) +++ trunk/LPM_arithmetic.v (nonexistent) @@ -1,989 +0,0 @@ -//------------------------------------------------------------------------ -// This Verilog file was developed by Altera Corporation. It may be -// freely copied and/or distributed at no cost. Any persons using this -// file for any purpose do so at their own risk, and are responsible for -// the results of such use. Altera Corporation does not guarantee that -// this file is complete, correct, or fit for any particular purpose. -// NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. This notice must -// accompany any copy of this file. -// -//------------------------------------------------------------------------ -// Imported to Opencores directory. Date Sept 10, 2001 -// Split related modules into separate files, as the manual splits them. -// Added example instantiations to the beginning of each file. -// -/* EXAMPLE INSTANTIATIONS: - -lpm_add_sub -#( 1, // lpm_width (width of input vector) - "UNUSED", // lpm_direction, optional, {ADD, SUB} - "UNSIGNED", // lpm_representation, optional, {UNSIGNED, SIGNED} - 0 // lpm_pipeline, optional, {0, 1} - ) lpm_add_sub_example ( - .result (data_out[lpm_width-1:0]), - .cout (carry_out_indicates_unsigned_result_too_big), // OPTIONAL - .overflow (overflow_indicates_MSB_sign_bit_wrong), // OPTIONAL - .dataa (data_in[lpm_width-1:0]), - .datab (data_pl_mi_in[lpm_width-1:0]), - .cin (add_1_if_HIGH_sub_1_if_LOW), // OPTIONAL - .add_sub (add_if_HIGH_must_set_HIGH_if_using_lpm_direction), // OPTIONAL - .clock (clock_if_pipelined), // OPTIONAL - .clken (clock_enable_HIGH_if_pipelined), // OPTIONAL - .aclr (async_clear_if_pipelined) // OPTIONAL -); - -lpm_compare -#( 1, // lpm_width (width of input vector) - "UNSIGNED", // lpm_representation, optional, {UNSIGNED, SIGNED} - 0 // lpm_pipeline, optional, {0, 1} - ) lpm_compare_example ( - .agb (a_greater_than_b), - .ageb (a_greater_or_equil_to_b), - .aeb (a_equil_to_b), - .aleb (a_less_or_equil_to_b), - .alb (a_less_than_b), - .aneb (a_not_equil_b), - .dataa (data_in_a[lpm_width-1:0]), - .datab (data_in_a[lpm_width-1:0]), - .clock (clock_if_pipelined), // OPTIONAL - .clken (clock_enable_HIGH_if_pipelined), // OPTIONAL - .aclr (async_clear_if_pipelined) // OPTIONAL -); - -module lpm_mult ( -#( 1, // lpm_widtha (width of input vector) - 1, // lpm_widthb (width of input vector) - 1, // lpm_widths (width of partial sum vector) - 1, // lpm_widthp (width of product vector) - "UNSIGNED", // lpm_representation, optional, {UNSIGNED, SIGNED} - 0 // lpm_pipeline, optional, {0, 1} - ) lpm_mult_example ( - .result (data_out[lpm_widthp-1:0]), - .sum (partial_sum_in[lpm_widths-1:0]), // OPTIONAL - .dataa (multiplicand_a_in[lpm_widtha-1:0]), - .datab (multiplicand_b_in[lpm_widthb-1:0]), - .clock (clock_if_pipelined), // OPTIONAL - .clken (clock_enable_HIGH_if_pipelined), // OPTIONAL - .aclr (async_clear_if_pipelined) // OPTIONAL -); - -lpm_divide -#( 1, // lpm_widthn (width of numerator) - 1, // lpm_widthn (width of denominator) - "UNSIGNED", // lpm_nrepresentation, optional, {UNSIGNED, SIGNED} - "UNSIGNED", // lpm_drepresentation, optional, {UNSIGNED, SIGNED} - 0 // lpm_pipeline, optional, {0, 1} - ) lpm_divide_example ( - .quotient (data_out[lpm_widthn-1:0]), // CHOICE - .remain (data_out[lpm_widthd-1:0]), // CHOICE - .numer (data_out[lpm_widthn-1:0]), - .denom (data_out[lpm_widthd-1:0]), - .clock (clock_if_pipelined), // OPTIONAL - .clken (clock_enable_HIGH_if_pipelined), // OPTIONAL - .aclr (async_clear_if_pipelined) // OPTIONAL -); - -lpm_abs -#( 1 // lpm_width (width of input) - ) lpm_abs_example ( - .result (data_out[lpm_width-1:0]), - .overflow (overflow_because_negative_number_was_max), // OPTIONAL - .data (data_in[lpm_width-1:0]) -); - -module lpm_counter ( -#( 1, // lpm_width (width of input) - 0, // lpm_modulus (max count plus 1) - "UNUSED", // lpm_direction, optional, {UNUSED, UP, DOWN} - "UNUSED", // lpm_avalue, value to load if ASET active - "UNUSED", // lpm_svalue, value to load if SSET active - "UNUSED", // lpm_pvalue, value to load at powerup - "lpm_counter", // lpm_type, optional, must be "lpm_counter if lpm_hint used - "UNUSED" // lpm_hint, optional, {UNSIGNED, SIGNED, BCD, GRAY_CODE, JOHNSON, LFSR} - ) lpm_counter_example ( - .cout (max_value_reached), // CHOICE - .q (counter_out[lpm_width-1:0]), // CHOICE - .data (sync_data_in[lpm_width-1:0]), // OPTIONAL - .sload (load_counter_with_data_next_clock), // OPTIONAL - .sset (set_counter_to_max_or_lpm_svalue_next_clock), // OPTIONAL - .sclr (clear_counter_next_clock), // OPTIONAL - .cnt_en (enable_counting_when_HIGH), // OPTIONAL - .cin (carry_in_to_enable_counter), // OPTIONAL - .updown (inc_if_HIGH_must_set_LOW_if_using_lpm_direction), // OPTIONAL - .clock (clock_if_pipelined), - .clk_en (enable_all_sync_activity_when_HIGH), // OPTIONAL - .aload (async_load_counter_with_data), // OPTIONAL - .aset (async_set_counter_to_max_or_lpm_avalue), // OPTIONAL - .aclr (async_clear_if_pipelined) // OPTIONAL -); -*/ - -//------------------------------------------------------------------------ -// LPM Synthesizable Models -//------------------------------------------------------------------------ -// Version 1.5 (lpm 220) Date 12/17/99 -// -// Modified LPM_ADD_SUB and LPM_MULT to accomodate LPM_WIDTH = 1. -// Default values for LPM_WIDTH* are changed back to 1. -// Added LPM_HINT to LPM_DIVIDE. -// Rewritten LPM_FIFO_DC to output correctly. -// Modified LPM_FIFO to output 0s before first read, output correct -// values after aclr and sclr, and output LPM_NUMWORDS mod -// exp(2, LPM_WIDTHU) when FIFO is full. -// -//------------------------------------------------------------------------ -// Version 1.4.1 (lpm 220) Date 10/29/99 -// -// Default values for LPM_WIDTH* of LPM_ADD_SUB and LPM_MULT are changed -// from 1 to 2. -// -//------------------------------------------------------------------------ -// Version 1.4 (lpm 220) Date 10/18/99 -// -// Default values for each optional inputs for ALL modules are added. -// Some LPM_PVALUE implementations were missing, and now implemented. -// -//------------------------------------------------------------------------ -// Version 1.3 (lpm 220) Date 06/23/99 -// -// Corrected LPM_FIFO and LPM_FIFO_DC cout and empty/full flags. -// Implemented LPM_COUNTER cin/cout, and LPM_MODULUS is now working. -// -//------------------------------------------------------------------------ -// Version 1.2 (lpm 220) Date 06/16/99 -// -// Added LPM_RAM_DP, LPM_RAM_DQ, LPM_IO, LPM_ROM, LPM_FIFO, LPM_FIFO_DC. -// Parameters and ports are added/discarded according to the spec. -// -//------------------------------------------------------------------------ -// Version 1.1 (lpm 220) Date 02/05/99 -// -// Added LPM_DIVIDE module. -// -//------------------------------------------------------------------------ -// Version 1.0 Date 07/09/97 -// -//------------------------------------------------------------------------ -// Excluded Functions: -// -// LPM_FSM and LPM_TTABLE. -// -//------------------------------------------------------------------------ -// Assumptions: -// -// 1. LPM_SVALUE, LPM_AVALUE, LPM_MODULUS, and LPM_NUMWORDS, -// LPM_STRENGTH, LPM_DIRECTION, and LPM_PVALUE default value is -// string UNUSED. -// -//------------------------------------------------------------------------ -// Verilog Language Issues: -// -// Two dimensional ports are not supported. Modules with two dimensional -// ports are implemented as one dimensional signal of (LPM_SIZE * LPM_WIDTH) -// bits wide. -// -//------------------------------------------------------------------------ -// Synthesis Issues: -// -// 1. LPM_COUNTER -// -// Currently synthesis tools do not allow mixing of level and edge -// sensetive signals. To overcome that problem the "data" signal is -// removed from the clock always block of lpm_counter, however the -// synthesis result is accurate. For correct simulation add the "data" -// pin to the sensetivity list as follows: -// -// always @(posedge clock or posedge aclr or posedge aset or -// posedge aload or data) -//------------------------------------------------------------------------ - -module lpm_add_sub ( result, cout, overflow, - add_sub, cin, dataa, datab, clock, clken, aclr ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_direction = "UNUSED"; - parameter lpm_representation = "UNSIGNED"; - parameter lpm_pipeline = 0; - parameter lpm_type = "lpm_add_sub"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_width-1:0] dataa, datab; - input add_sub, cin; - input clock; - input clken; - input aclr; - output [lpm_width-1:0] result; - output cout, overflow; - - reg [lpm_width-1:0] tmp_result; - reg [lpm_width-1:0] tmp_result2 [lpm_pipeline:0]; - reg [lpm_pipeline:0] tmp_cout2; - reg [lpm_pipeline:0] tmp_overflow2; - reg tmp_cout; - reg tmp_overflow; - reg [lpm_width-1:0] tmp_a, tmp_b; - integer i, j, k, n; - integer dataa_int, datab_int, result_int, compare, borrow; - - tri0 aclr; - tri0 clock; - tri1 clken; - tri0 cin; - tri1 add_sub; - - buf (i_aclr, aclr); - buf (i_clock, clock); - buf (i_clken, clken); - buf (i_cin, cin); - buf (i_add_sub, add_sub); - - - always @(i_cin or dataa or datab or i_add_sub) - begin - borrow = i_cin ? 0 : 1; - // cout is the same for both signed and unsign representation. - if (lpm_direction == "ADD" || i_add_sub == 1) - begin - {tmp_cout,tmp_result} = dataa + datab + i_cin; - tmp_overflow = tmp_cout; - end - else if (lpm_direction == "SUB" || i_add_sub == 0) - begin - // subtraction - {tmp_overflow, tmp_result} = dataa - datab - borrow; - tmp_cout = (dataa >= (datab+borrow))?1:0; - end - - if (lpm_representation == "SIGNED") - begin - // convert to negative integer - if (dataa[lpm_width-1] == 1) - begin - for (j = 0; j < lpm_width; j = j + 1) - tmp_a[j] = dataa[j] ^ 1; - dataa_int = (tmp_a) * (-1) - 1; - end - else - dataa_int = dataa; - - // convert to negative integer - if (datab[lpm_width-1] == 1) - begin - for (k = 0; k < lpm_width; k = k + 1) - tmp_b[k] = datab[k] ^ 1; - datab_int = (tmp_b) * (-1) - 1; - end - else - datab_int = datab; - - // perform the addtion or subtraction operation - if (lpm_direction == "ADD" || i_add_sub == 1) - result_int = dataa_int + datab_int + i_cin; - else if (lpm_direction == "SUB" || i_add_sub == 0) - result_int = dataa_int - datab_int - borrow; - tmp_result = result_int; - - // set the overflow - compare = 1 << (lpm_width -1); - if ((result_int > (compare - 1)) || (result_int < (-1)*(compare))) - tmp_overflow = 1; - else - tmp_overflow = 0; - end - end - - - always @(posedge i_clock or posedge i_aclr) - begin - if (i_aclr) - begin - for (i = 0; i <= lpm_pipeline; i = i + 1) - begin - tmp_result2[i] = 'b0; - tmp_cout2[i] = 1'b0; - tmp_overflow2[i] = 1'b0; - end - end - else if (i_clken == 1) - begin - tmp_result2[lpm_pipeline] = tmp_result; - tmp_cout2[lpm_pipeline] = tmp_cout; - tmp_overflow2[lpm_pipeline] = tmp_overflow; - for (n = 0; n < lpm_pipeline; n = n + 1) - begin - tmp_result2[n] = tmp_result2[n+1]; - tmp_cout2[n] = tmp_cout2[n+1]; - tmp_overflow2[n] = tmp_overflow2[n+1]; - end - end - end - - - assign result = (lpm_pipeline >0) ? tmp_result2[0]:tmp_result; - assign cout = (lpm_pipeline >0) ? tmp_cout2[0] : tmp_cout; - assign overflow = (lpm_pipeline >0) ? tmp_overflow2[0] : tmp_overflow; - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_add_sub") || (lpm_type !== "lpm_add_sub")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_add_sub - -//------------------------------------------------------------------------ - -module lpm_compare ( alb, aeb, agb, aleb, aneb, ageb, dataa, datab, - clock, clken, aclr ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_representation = "UNSIGNED"; - parameter lpm_pipeline = 0; - parameter lpm_type = "lpm_compare"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_width-1:0] dataa, datab; - input clock; - input clken; - input aclr; - output alb, aeb, agb, aleb, aneb, ageb; - - reg tmp_alb, tmp_aeb, tmp_agb; - reg tmp_aleb, tmp_aneb, tmp_ageb; - reg [lpm_pipeline:0] tmp_alb2, tmp_aeb2, tmp_agb2; - reg [lpm_pipeline:0] tmp_aleb2, tmp_aneb2, tmp_ageb2; - reg [lpm_width-1:0] a_int; - integer i, j, k, l, m, n, o, p, u, dataa_int, datab_int; - - tri0 aclr; - tri0 clock; - tri1 clken; - - buf (i_aclr, aclr); - buf (i_clock, clock); - buf (i_clken, clken); - - - always @(dataa or datab) - begin - if (lpm_representation == "UNSIGNED") - begin - dataa_int = dataa[lpm_width-1:0]; - datab_int = datab[lpm_width-1:0]; - end - else if (lpm_representation == "SIGNED") - begin - // convert to negative integer - if (dataa[lpm_width-1] == 1) - begin - for (j = 0; j < lpm_width; j = j + 1) - a_int[j] = dataa[j] ^ 1; - dataa_int = (a_int) * (-1) - 1; - end - else - dataa_int = dataa; - - // convert to negative integer - if (datab[lpm_width-1] == 1) - begin - for (j = 0; j < lpm_width; j = j + 1) - a_int[j] = datab[j] ^ 1; - datab_int = (a_int) * (-1) - 1; - end - else - datab_int = datab; - end - - tmp_alb = (dataa_int < datab_int); - tmp_aeb = (dataa_int == datab_int); - tmp_agb = (dataa_int > datab_int); - tmp_aleb = (dataa_int <= datab_int); - tmp_aneb = (dataa_int != datab_int); - tmp_ageb = (dataa_int >= datab_int); - end - - always @(posedge i_clock or posedge i_aclr) - begin - if (i_aclr) - begin - for (u = 0; u <= lpm_pipeline; u = u +1) - begin - tmp_aeb2[u] = 'b0; - tmp_agb2[u] = 'b0; - tmp_alb2[u] = 'b0; - tmp_aleb2[u] = 'b0; - tmp_aneb2[u] = 'b0; - tmp_ageb2[u] = 'b0; - end - end - else if (i_clken == 1) - begin - // Assign results to registers - tmp_alb2[lpm_pipeline] = tmp_alb; - tmp_aeb2[lpm_pipeline] = tmp_aeb; - tmp_agb2[lpm_pipeline] = tmp_agb; - tmp_aleb2[lpm_pipeline] = tmp_aleb; - tmp_aneb2[lpm_pipeline] = tmp_aneb; - tmp_ageb2[lpm_pipeline] = tmp_ageb; - - for (k = 0; k < lpm_pipeline; k = k +1) - tmp_alb2[k] = tmp_alb2[k+1]; - for (l = 0; l < lpm_pipeline; l = l +1) - tmp_aeb2[l] = tmp_aeb2[l+1]; - for (m = 0; m < lpm_pipeline; m = m +1) - tmp_agb2[m] = tmp_agb2[m+1]; - for (n = 0; n < lpm_pipeline; n = n +1) - tmp_aleb2[n] = tmp_aleb2[n+1]; - for (o = 0; o < lpm_pipeline; o = o +1) - tmp_aneb2[o] = tmp_aneb2[o+1]; - for (p = 0; p < lpm_pipeline; p = p +1) - tmp_ageb2[p] = tmp_ageb2[p+1]; - end - end - - assign alb = (lpm_pipeline > 0) ? tmp_alb2[0] : tmp_alb; - assign aeb = (lpm_pipeline > 0) ? tmp_aeb2[0] : tmp_aeb; - assign agb = (lpm_pipeline > 0) ? tmp_agb2[0] : tmp_agb; - assign aleb = (lpm_pipeline > 0) ? tmp_aleb2[0] : tmp_aleb; - assign aneb = (lpm_pipeline > 0) ? tmp_aneb2[0] : tmp_aneb; - assign ageb = (lpm_pipeline > 0) ? tmp_ageb2[0] : tmp_ageb; - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_compare") || (lpm_type !== "lpm_compare")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_compare - -//------------------------------------------------------------------------ - -module lpm_mult ( result, dataa, datab, sum, clock, clken, aclr ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_widtha = 1; - parameter lpm_widthb = 1; - parameter lpm_widths = 1; - parameter lpm_widthp = 1; - parameter lpm_representation = "UNSIGNED"; - parameter lpm_pipeline = 0; - parameter lpm_type = "lpm_mult"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input clock; - input clken; - input aclr; - input [lpm_widtha-1:0] dataa; - input [lpm_widthb-1:0] datab; - input [lpm_widths-1:0] sum; - output [lpm_widthp-1:0] result; - - // inernal reg - reg [lpm_widthp-1:0] tmp_result; - reg [lpm_widthp-1:0] tmp_result2 [lpm_pipeline:0]; - reg [lpm_widtha-1:0] a_int; - reg [lpm_widthb-1:0] b_int; - reg [lpm_widths-1:0] s_int; - reg [lpm_widthp-1:0] p_reg; - integer p_int; - integer i, j, k, m, n, p, maxs_mn; - integer int_dataa, int_datab, int_sum, int_result; - - tri0 aclr; - tri0 clock; - tri1 clken; - - buf (i_aclr, aclr); - buf (i_clock, clock); - buf (i_clken, clken); - - - always @(dataa or datab or sum) - begin - if (lpm_representation == "UNSIGNED") - begin - int_dataa = dataa; - int_datab = datab; - int_sum = sum; - end - else if (lpm_representation == "SIGNED") - begin - // convert signed dataa - if (dataa[lpm_widtha-1] == 1) - begin - for (i = 0; i < lpm_widtha; i = i + 1) - a_int[i] = dataa[i] ^ 1; - int_dataa = (a_int) * (-1) - 1; - end - else - int_dataa = dataa; - - // convert signed datab - if (datab[lpm_widthb-1] == 1) - begin - for (j = 0; j < lpm_widthb; j = j + 1) - b_int[j] = datab[j] ^ 1; - int_datab = (b_int) * (-1) - 1; - end - else - int_datab = datab; - - // convert signed sum - if (sum[lpm_widths-1] == 1) - begin - for (k = 0; k < lpm_widths; k = k + 1) - s_int[k] = sum[k] ^ 1; - int_sum = (s_int) * (-1) - 1; - end - else - int_sum = sum; - end - else - begin - int_dataa = {lpm_widtha{1'bx}}; - int_datab = {lpm_widthb{1'bx}}; - int_sum = {lpm_widths{1'bx}}; - end - - p_int = int_dataa * int_datab + int_sum; - maxs_mn = ((lpm_widtha+lpm_widthb)>lpm_widths)?lpm_widtha+lpm_widthb:lpm_widths; - if (lpm_widthp >= maxs_mn) - tmp_result = p_int; - else - begin - p_reg = p_int; - for (m = 0; m < lpm_widthp; m = m + 1) - tmp_result[lpm_widthp-1-m] = p_reg[maxs_mn-1-m]; - end - end - - always @(posedge i_clock or posedge i_aclr) - begin - if (i_aclr) - begin - for (p = 0; p <= lpm_pipeline; p = p + 1) - tmp_result2[p] = 'b0; - end - else if (i_clken == 1) - begin :syn_block - tmp_result2[lpm_pipeline] = tmp_result; - for (n = 0; n < lpm_pipeline; n = n +1) - tmp_result2[n] = tmp_result2[n+1]; - end - end - - assign result = (lpm_pipeline > 0) ? tmp_result2[0] : tmp_result; - -// Check for previous Parameter declaration order -initial if ((lpm_widtha === "lpm_mult") || (lpm_type !== "lpm_mult")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_mult - -//------------------------------------------------------------------------ - -module lpm_divide ( quotient,remain, numer, denom, clock, clken, aclr ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_widthn = 1; - parameter lpm_widthd = 1; - //parameter lpm_widthq = 1; - //parameter lpm_widthr = 1; - parameter lpm_nrepresentation = "UNSIGNED"; - parameter lpm_drepresentation = "UNSIGNED"; - parameter lpm_pipeline = 0; - parameter lpm_type = "lpm_divide"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input clock; - input clken; - input aclr; - input [lpm_widthn-1:0] numer; - input [lpm_widthd-1:0] denom; - output [lpm_widthn-1:0] quotient; - output [lpm_widthd-1:0] remain; - - // inernal reg - reg [lpm_widthn-1:0] tmp_quotient [lpm_pipeline:0]; - reg [lpm_widthd-1:0] tmp_remain [lpm_pipeline:0]; - reg [lpm_widthn-1:0] ONES, ZEROS, UNKNOWN, HiZ; - reg [lpm_widthd-1:0] DZEROS, DUNKNOWN; - reg [lpm_widthn-1:0] NUNKNOWN; - reg [lpm_widthd-1:0] RZEROS ; - integer i; - integer int_numer, int_denom, int_quotient, int_remain; - - tri0 aclr; - tri0 clock; - tri1 clken; - - buf (i_aclr, aclr); - buf (i_clock, clock); - buf (i_clken, clken); - - - initial - begin - - // check if lpm_widthn > 0 - if (lpm_widthn <= 0) - $display("%t: Error! LPM_WIDTHN must be greater than 0.\n", $time); - // check if lpm_widthd > 0 - if (lpm_widthd <= 0) - $display("%t: Error! LPM_WIDTHD must be greater than 0.\n", $time); - // check if lpm_widthn > 0 - //if (lpm_widthq <= 0) - // $display("%t: Error! LPM_WIDTHQ must be greater than 0.\n", $time); - // check if lpm_widthR > 0 - //if (lpm_widthr <= 0) - // $display("%t: Error! LPM_WIDTHR must be greater than 0.\n", $time); - // check for valid lpm_nrep value - if ((lpm_nrepresentation !== "SIGNED") && (lpm_nrepresentation !== "UNSIGNED")) - $display("%t: Error! LPM_NREPRESENTATION value must be \"SIGNED\" or \"UNSIGNED\".", $time); - - // check for valid lpm_drep value - if ((lpm_drepresentation !== "SIGNED") && (lpm_drepresentation !== "UNSIGNED")) - $display("%t: Error! LPM_DREPRESENTATION value must be \"SIGNED\" or \"UNSIGNED\".", $time); - - // check if lpm_pipeline is > 1 and clock is not used - if ((lpm_pipeline >=1) && (clock === 1'bz)) - $display("%t: Error! The clock pin is requied if lpm_pipeline is used\n", $time); - else if ((lpm_pipeline == 0) && (clock !== 1'bz)) - $display("%t: Error! If the clock pin is used, lpm_pipeline must be greater than 0.\n", $time); - - for (i=0; i < lpm_widthn; i=i+1) - begin - ONES[i] = 1'b1; - ZEROS[i] = 1'b0; - UNKNOWN[i] = 1'bx; - HiZ[i] = 1'bz; - end - - for (i=0; i < lpm_widthd; i=i+1) - DUNKNOWN[i] = 1'bx; - - for (i=0; i < lpm_widthn; i=i+1) - NUNKNOWN[i] = 1'bx; - - for (i=0; i < lpm_widthd; i=i+1) - RZEROS[i] = 1'b0; - - end - - always @(numer or denom) - begin - if (lpm_nrepresentation == "UNSIGNED") - int_numer = numer; - else if (lpm_nrepresentation == "SIGNED") - begin - // convert signed numer - if (numer[lpm_widthn-1] == 1) - begin - int_numer = 0; - for (i = 0; i < lpm_widthn - 1; i = i + 1) - int_numer[i] = numer[i] ^ 1; - int_numer = -(int_numer + 1); - end - else - int_numer = numer; - end - else - int_numer = NUNKNOWN; - - if (lpm_drepresentation == "UNSIGNED") - int_denom = denom; - else if (lpm_drepresentation == "SIGNED") - begin - // convert signed denom - if (denom[lpm_widthd-1] == 1) - begin - int_denom = 0; - for (i = 0; i < lpm_widthd - 1; i = i + 1) - int_denom[i] = denom[i] ^ 1; - int_denom = -(int_denom + 1); - end - else - int_denom = denom; - end - else - int_denom = DUNKNOWN; - - int_quotient = int_numer / int_denom; - int_remain = int_numer % int_denom; - - tmp_quotient[lpm_pipeline] = int_quotient; - tmp_remain[lpm_pipeline] = int_remain; - end - - always @(posedge i_clock or i_aclr) - begin :syn_block - if (i_aclr) - begin - disable syn_block; - for (i = 0; i <= lpm_pipeline; i = i + 1) - tmp_quotient[i] = ZEROS; - tmp_remain[i] = RZEROS; - end - else if (i_clken) - for (i = 0; i < lpm_pipeline; i = i +1) - begin - tmp_quotient[i] = tmp_quotient[i+1]; - tmp_remain[i] = tmp_remain[i+1]; - end - end - - assign quotient = tmp_quotient[0]; - assign remain = tmp_remain[0]; - -// Check for previous Parameter declaration order -initial if ((lpm_widthn === "lpm_divide") || (lpm_type !== "lpm_divide")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_divide - -//------------------------------------------------------------------------ - -module lpm_abs ( result, overflow, data ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_type = "lpm_abs"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - input [lpm_width-1:0] data; - output [lpm_width-1:0] result; - output overflow; - - reg [lpm_width-1:0] a_int; - reg [lpm_width-1:0] result; - reg overflow; - integer i; - - always @(data) - begin - overflow = 0; - if (data[lpm_width-1] == 1) - begin - for (i = 0; i < lpm_width; i = i + 1) - a_int[i] = data[i] ^ 1; - result = (a_int + 1); - overflow = (result == ( 1<<(lpm_width -1))); - end - else - result = data; - end - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_abs") || (lpm_type !== "lpm_abs")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_abs - -//------------------------------------------------------------------------ - -module lpm_counter ( q, data, clock, cin, cout,clk_en, cnt_en, updown, - aset, aclr, aload, sset, sclr, sload ); - -// NOTE: Parameters must be declared in the same order as the Properties -// are specified in the Cell Specification document. - parameter lpm_width = 1; - parameter lpm_modulus = 0; - parameter lpm_direction = "UNUSED"; - parameter lpm_avalue = "UNUSED"; - parameter lpm_svalue = "UNUSED"; - parameter lpm_pvalue = "UNUSED"; - parameter lpm_type = "lpm_counter"; - parameter lpm_hint = "UNUSED"; - parameter lpm_source_version = "lpm 220 version 1.6"; - - output [lpm_width-1:0] q; - //output [lpm_modulus-1:0] eq; - output cout; - input cin; - input [lpm_width-1:0] data; - input clock, clk_en, cnt_en, updown; - input aset, aclr, aload; - input sset, sclr, sload; - - reg [lpm_width-1:0] tmp_count; - reg tmp_updown; - integer tmp_modulus; - - tri1 clk_en; - tri1 cnt_en; - tri1 updown; - tri0 sload; - tri0 sset; - tri0 sclr; - tri0 aload; - tri0 aset; - tri0 aclr; - tri0 cin; - - buf (i_clk_en, clk_en); - buf (i_cnt_en, cnt_en); - buf (i_updown, updown); - buf (i_sload, sload); - buf (i_sset, sset); - buf (i_sclr, sclr); - buf (i_aload, aload); - buf (i_aset, aset); - buf (i_aclr, aclr); - buf (i_cin, cin); - - -//---------------------------------------------------------------// - function [lpm_width-1:0] NextBin; - input [lpm_width-1:0] count; - - //reg [lpm_width-1:0] re_start; - //reg [lpm_width-1:0] tmp_nextbin; - //integer up_limit; - - begin - if (tmp_updown == 1) - begin - if (i_cin == 1 && count == tmp_modulus-2) - NextBin = 0; - else - NextBin = (count >= tmp_modulus-1) ? i_cin : count+1+i_cin; - end - else - begin - if (i_cin == 1 && count == 1) - NextBin = tmp_modulus - 1; - else - NextBin = (count <= 0) ? tmp_modulus-1-i_cin : count-1-i_cin; - end - end - endfunction - -//---------------------------------------------------------------// -// function [(1< 1< 1<= tmp_modulus-1-i_cin) && tmp_updown) - || ((tmp_count <= i_cin) && !tmp_updown)) ? 1 : 0; - -// Check for previous Parameter declaration order -initial if ((lpm_width === "lpm_counter") || (lpm_type !== "lpm_counter")) - begin - $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); - $finish; - end -endmodule // lpm_counter Index: trunk/crc32_lib.v =================================================================== --- trunk/crc32_lib.v (revision 47) +++ trunk/crc32_lib.v (nonexistent) @@ -1,2324 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// crc_32_lib, consisting of: //// -//// crc_32_64_pipelined_2 //// -//// crc_32_32_pipelined_1 //// -//// crc_32_8_incremental_pipelined_1 //// -//// //// -//// This file is part of the general opencores effort. //// -//// //// -//// //// -//// Module Description: //// -//// Calculate CRC-32 checksums by applying 8, 16, 24, 32, or //// -//// 64 bits of new data per clock. //// -//// CRC-32 needs to start out with a value of all F's. //// -//// When CRC-32 is applied to a block which ends with the //// -//// CRC-32 of the previous data in the block, the resulting //// -//// CRC-32 checksum is always 32'hCBF43926. //// -//// //// -//// The verilog these routines is started from scratch. A new //// -//// user might want to look at a wonderful paper by Ross //// -//// Williams, which seems to be at //// -//// ftp.adelaide.edu.au:/pub/rocksoft/crc_v3.txt //// -//// Also see http://www.easics.be/webtools/crctool //// -//// //// -//// To Do: //// -//// None of the flop-to-flop routines have been checked! //// -//// Might make this handle different sizes. //// -//// Might put some real thought into minimizing things so that //// -//// a poor FPGA can reuse input terms to the max. //// -//// //// -//// Author(s): //// -//// - Anonymous //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 Anonymous and OPENCORES.ORG //// -//// //// -//// This source file may be used and distributed without //// -//// restriction provided that this copyright statement is not //// -//// removed from the file and that any derivative work contains //// -//// the original copyright notice and the associated disclaimer. //// -//// //// -//// This source file is free software; you can redistribute it //// -//// and/or modify it under the terms of the GNU Lesser General //// -//// Public License as published by the Free Software Foundation; //// -//// either version 2.1 of the License, or (at your option) any //// -//// later version. //// -//// //// -//// This source 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 Lesser General Public License for more //// -//// details. //// -//// //// -//// You should have received a copy of the GNU Lesser General //// -//// Public License along with this source; if not, download it //// -//// from //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// $Id: crc32_lib.v,v 1.2 2001-09-07 11:38:25 bbeaver Exp $ -// -// CVS Revision History -// -// $Log: not supported by cvs2svn $ -// Revision 1.1 2001/09/07 11:32:02 Blue Beaver -// no message -// -// Revision 1.24 2001/09/07 11:28:49 Blue Beaver -// no message -// -// - -//=========================================================================== -// NOTE: I am greatly confused about the order in which the CRC should be -// sent over the wire to a remote machine. Bit 0 first? Bit 31 first? -// True or compliment values? The user has got to figure this out in -// order to interoperate with existing machines. -// -// NOTE: Bit order matters in this code, of course. The existing code on -// the net assumes that when you present a multi-bit word to a parallel -// CRC generator, the MSB corresponds to the earliest data to arrive -// across a serial interface. -// -// NOTE: The code also assumes that the data shifts into bit 0 of the shift -// register, and shifts out of bit 31. -// -// NOTE: The math for the CRC-32 is beyond me. -// -// NOTE: But they are pretty easy to use. -// You initialize a CRC to a special value to keep from missing -// initial 0 bytes. That is 32'hFFFFFFFF for CRC-32. -// You update a CRC as data comes in. -// You append the calculated CRC to the end of your message. -// You have to agree on logic sense and bit order with the -// receiver, or everything you send will seem wrong. -// The receiver calculates a CRC the same way, but receives a -// message longer than the one you sent, due to the added CRC. -// After the CRC is processed by the receiver, you either compare -// the calculated CRC with the sent one, or look for a magic -// final value which indicates that the message had no errors. -// -// NOTE: Looking on the web, one finds a nice tutorial by Cypress entitled -// "Parallel Cyclic Redundancy Check (CRC) for HOTLink(TM)". -// This reminds me of how I learned to do this from a wonderful -// CRC tutorial on the web, done by Ross N. Williams. -// -// NOTE: The CRC-32 polynomial is: -// X**0 + X**1 + X**2 + X**4 + X**5 + X**7 + X**8 + X**10 -// + X**11 + X**12 + X**16 + X**22 + X**23 + X**26 + X**32 -// You initialize it to the value 32'hFFFFFFFF -// You append it to the end of the message. -// The receiver sees the value 32'hC704DD7B when the message is -// received no errors. -// -// That means that each clock a new bit comes in, you have to shift -// all the 32 running state bits 1 bit higher and drop the MSB. -// PLUS you have to XOR in (new bit ^ MSB) to locations -// 0, 1, 2, 4, 5, 7, 8, 10, 11, 12, 16, 22, 23, and 26. -// -// That is simple but slow. If you keep track of the bits, you can -// see that it might be possible to apply 1 bit, shift it, apply -// another bit, shift THAT, and end up with a new formula of how -// to update the shift register based on applyig 1 bits at once. -// -// That is the general plan. Figure out how to apply several bits -// at a time. Write out the big formula, then simplify it if possible. -// Apply the bits, shift several bit locations at once, run faster. -// -// But what are the formulas? Good question. Use a computer to figure -// this out for you. And Williams wrote a program! -// -// NOTE: The idea is simple, so I may include a program to print out -// formulas at the end of this code. The module SHOULD be improved -// to group the terms into an XOR tree, with parantheses. That can -// be left for a new person. -// -// NOTE: ALL input data is latched in flops immediately. -// All outputs are already latched. So everything is flop-to-flop. -// This lets the module be synthesized and layed out independently -// of all other modules when trying to meet timing. -// This also lets the modules which calculate with more than 32 -// input bits per clock have an internal pipeline stage where -// the Data component of the new CRC is calculate. But be -// careful! An extra layer of pipelining changes when data -// becomes available. -// Might also make versions which let a non-F CRC be loaded. This -// would be useful if a CRC needed to be calculated incrementally, -// which is the case when calculating AAL-5 checksums, for instance. -// -// This code was developed using VeriLogger Pro, by Synapticad. -// Their support is greatly appreciated. -// -//=========================================================================== - -`timescale 1ns/1ps - -// Look up the CRC-32 polynomial on the web. -// The LSB corresponds to bit 0, the new input bit. -`define CRC 32'b0000_0100_1100_0001_0001_1101_1011_0111 -`define CHECK_VALUE 32'b1100_1011_1111_0100_0011_1001_0010_0110 -`define NUMBER_OF_BITS_IN_CRC_32 32 - -// Given a 64-bit aligned data stream, calculate the CRC-32 8 bytes at a time. -// Input data and the use_F indication are latched on input at clock 0. -// The CRC result is available after clock 2 (!) after the last data item is consumed. -// The indication that the CRC is correct is available after clock 3 (!) clocks after -// the last data item is consumed. -// If the data stream is not an exact multiple of 8 bytes long, the checksum -// calculated here must be incrementally updated for each byte beyond the -// multiple of 8. Use another module to do that. - -module crc_32_64_pipelined_2 ( - use_F_for_CRC, - data_in_64, - running_crc_2, - crc_correct_3, - clk -); - parameter NUMBER_OF_BITS_APPLIED = 64; // do NOT override - input use_F_for_CRC; - input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_64; - output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] running_crc_2; - output crc_correct_3; - input clk; - -// A pipelined version of the CRC_32 working on 64-bit operands. -// Latch all operands at Clock 0. -// Calculate the Data Dependency during Clock 1. -// Update the CRC during Clock 2. -// The CRC Correct signal comes out after Clock 3. - -// Latch all operands at Clock 0. - reg use_F_for_CRC_latched_0; - reg [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_64_latched_0; - - always @(posedge clk) - begin - use_F_for_CRC_latched_0 <= use_F_for_CRC; - data_in_64_latched_0[NUMBER_OF_BITS_APPLIED - 1 : 0] <= - data_in_64[NUMBER_OF_BITS_APPLIED - 1 : 0]; - end - -// Instantiate the Data part of the dependency. - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_1_out_0; - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_2_out_0; - -crc_32_64_data_private crc_32_64_data_part ( - .data_in_64 (data_in_64_latched_0[NUMBER_OF_BITS_APPLIED - 1 : 0]), - .data_part_1_out (data_part_1_out_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), - .data_part_2_out (data_part_2_out_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) -); - -// Calculate the Data Dependency during Clock 1. - reg use_F_for_CRC_prev_1; - reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_1_latched_1; - reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_2_latched_1; - - always @(posedge clk) - begin - use_F_for_CRC_prev_1 <= use_F_for_CRC_latched_0; - data_part_1_latched_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] <= - data_part_1_out_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - data_part_2_latched_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] <= - data_part_2_out_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - end - -// Update the CRC during Clock 2. - reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_2; - - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] crc_part_1_out_1; - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] crc_part_2_out_1; - -crc_32_64_crc_private crc_32_64_crc_part ( - .use_F_for_CRC (use_F_for_CRC_prev_1), - .present_crc (present_crc_2[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), - .crc_part_1_out (crc_part_1_out_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), - .crc_part_2_out (crc_part_2_out_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) -); - - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_depend_part_1 = - data_part_1_latched_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] - ^ data_part_2_latched_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; // source depth 2 gates - - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] first_crc_part_1 = - data_depend_part_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] - ^ crc_part_1_out_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; // source depth 4 gates - - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_1 = - first_crc_part_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] - ^ crc_part_2_out_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; // source depth 5 gates - - always @(posedge clk) - begin - present_crc_2[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] <= - next_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - end - -// Assign separately so that flop outputs can be used in feedback. - assign running_crc_2[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - present_crc_2[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - -// Watch to detect blocks which end with the correct CRC appended. - reg crc_correct_3; - - always @(posedge clk) - begin - crc_correct_3 <= (present_crc_2[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] == 32'hCBF43926); - end - -// synopsys translate_off -// Check the user didn't override anything - initial - begin - if (NUMBER_OF_BITS_APPLIED != 64) - begin - $display ("*** Exiting because %m crc_32_64_pipelined_2 Number of bits %d != 64", - NUMBER_OF_BITS_APPLIED); - $finish; - end - end -// synopsys translate_on -endmodule - -// Given a 32-bit aligned data stream, calculate the CRC-32 4 bytes at a time. -// Inout data and the use_F indication are latched on input at clock 0. -// The CRC result is available after clock 1 (!) after the last data item is consumed. -// The indication that the CRC is correct is available after clock 2 (!) clocks after -// the last data item is consumed. -// If the data stream is not an exact multiple of 4 bytes long, the checksum -// calculated here must be incrementally updated for each byte beyond the -// multiple of 4. Use another module to do that. - -module crc_32_32_pipelined_1 ( - use_F_for_CRC, - data_in_32, - running_crc_1, - crc_correct_2, - clk -); - parameter NUMBER_OF_BITS_APPLIED = 32; // do NOT override - input use_F_for_CRC; - input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_32; - output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] running_crc_1; - output crc_correct_2; - input clk; - -// A pipelined version of the CRC_32 working on 32-bit operands. -// Latch all operands at Clock 0. -// Update the CRC during Clock 1. -// The CRC Correct signal comes out after Clock 2. - -// Latch all operands at Clock 0. - reg use_F_for_CRC_latched_0; - reg [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_32_latched_0; - - always @(posedge clk) - begin - use_F_for_CRC_latched_0 <= use_F_for_CRC; - data_in_32_latched_0[NUMBER_OF_BITS_APPLIED - 1 : 0] <= - data_in_32[NUMBER_OF_BITS_APPLIED - 1 : 0]; - end - -// Update the CRC during Clock 1. - reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_1; - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_0; - -crc_32_32_private crc_32_32_crc ( - .use_F_for_CRC (use_F_for_CRC_prev_1), - .present_crc (present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), - .data_in_32 (data_in_32_latched_0[NUMBER_OF_BITS_APPLIED - 1 : 0]), - .next_crc (next_crc_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) -); - - always @(posedge clk) - begin - present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] <= - next_crc_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - end - -// Assign separately so that flop outputs can be used in feedback. - assign running_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - -// Watch to detect blocks which end with the correct CRC appended. - reg crc_correct_2; - - always @(posedge clk) - begin - crc_correct_2 <= (present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] == 32'hCBF43926); - end - -// synopsys translate_off -// Check the user didn't override anything - initial - begin - if (NUMBER_OF_BITS_APPLIED != 32) - begin - $display ("*** Exiting because %m crc_32_32_pipelined_1 Number of bits %d != 32", - NUMBER_OF_BITS_APPLIED); - $finish; - end - end -// synopsys translate_on -endmodule - -// Given an 8-bit aligned data stream, calculate the CRC-32 1 byte at a time. -// Input data and the use_F indication are latched on input at clock 0. -// The CRC result is available after clock 1 (!) after the last data item is consumed. -// The indication that the CRC is correct is available after clock 2 (!) clocks after -// the last data item is consumed. -// This module can be given a starting CRC, and can incrementally calculate -// a new CRC-32 by applying 1 new data byte at a time. - -module crc_32_8_incremental_pipelined_1 ( - use_old_CRC, - old_crc, - use_F_for_CRC, - data_in_8, - running_crc_1, - crc_correct_2, - clk -); - parameter NUMBER_OF_BITS_APPLIED = 8; // do NOT override - input use_old_CRC; - input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] old_crc; - input use_F_for_CRC; - input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_8; - output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] running_crc_1; - output crc_correct_2; - input clk; - -// A pipelined version of the CRC_32 working on 32-bit operands. -// Latch all operands at Clock 0. -// Update the CRC during Clock 1. -// The CRC Correct signal comes out after Clock 2. - -// Latch all operands at Clock 0. - reg use_old_crc_latched_0; - reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] old_crc_latched_0; - reg use_F_for_CRC_latched_0; - reg [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_8_latched_0; - - always @(posedge clk) - begin - use_old_crc_latched_0 <= use_old_CRC; - old_crc_latched_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] <= - old_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - use_F_for_CRC_latched_0 <= use_F_for_CRC; - data_in_8_latched_0[NUMBER_OF_BITS_APPLIED - 1 : 0] <= - data_in_8[NUMBER_OF_BITS_APPLIED - 1 : 0]; - end - -// Update the CRC during Clock 1. - reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_1; - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_0 = use_old_crc_latched_0 - ? old_crc_latched_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] - : present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_0; - -crc_32_8_private crc_32_8_crc ( - .use_F_for_CRC (use_F_for_CRC_prev_1), - .present_crc (present_crc_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), - .data_in_8 (data_in_8_latched_0[NUMBER_OF_BITS_APPLIED - 1 : 0]), - .next_crc (next_crc_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) -); - - always @(posedge clk) - begin - present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] <= - next_crc_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - end - -// Assign separately so that flop outputs can be used in feedback. - assign running_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - -// Watch to detect blocks which end with the correct CRC appended. - reg crc_correct_2; - - always @(posedge clk) - begin - crc_correct_2 <= (present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] == 32'hCBF43926); - end - -// synopsys translate_off -// Check the user didn't override anything - initial - begin - if (NUMBER_OF_BITS_APPLIED != 8) - begin - $display ("*** Exiting because %m crc_32_8_pipelined_1 Number of bits %d != 8", - NUMBER_OF_BITS_APPLIED); - $finish; - end - end -// synopsys translate_on -endmodule - -// The private modules which have the real formulas in them: - -// Given a 32-bit CRC-32 running value, update it using 8 new bits of data. -// The way to make this fast is to find common sub-expressions. -// -// The user needs to supply external flops to make this work. - -module crc_32_8_private ( - use_F_for_CRC, - present_crc, - data_in_8, - next_crc -); - parameter NUMBER_OF_BITS_APPLIED = 8; - input use_F_for_CRC; - input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; - input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_8; - output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc; - - wire X7, X6, X5, X4, X3, X2, X1, X0; - assign {X7, X6, X5, X4, X3, X2, X1, X0} = data_in_8[NUMBER_OF_BITS_APPLIED - 1 : 0] - ^ ( present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : `NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED] - | {NUMBER_OF_BITS_APPLIED{use_F_for_CRC}}); - - wire C23, C22, C21, C20, C19, C18, C17, C16; - wire C15, C14, C13, C12, C11, C10, C9, C8, C7, C6, C5, C4, C3, C2, C1, C0; - assign {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, - C11, C10, C9, C8, C7, C6, C5, C4, C3, C2, C1, C0} = - present_crc[`NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED - 1 : 0] - | {(`NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED){use_F_for_CRC}}; - - assign next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - { C23 ^ X5 , - C22 ^ X4 ^ X7, - C21 ^ X3 ^ X6 ^ X7, - C20 ^ X2 ^ X5 ^ X6 , - C19 ^ X1 ^ X4 ^ X5 ^ X7, - C18 ^ X0 ^ X3 ^ X4 ^ X6 , - C17 ^ X2 ^ X3 , - C16 ^ X1 ^ X2 ^ X7, - C15 ^ X0 ^ X1 ^ X6 , - C14 ^ X0 , - C13 ^ X5 , - C12 ^ X4 , - C11 ^ X3 ^ X7, - C10 ^ X2 ^ X6 ^ X7, - C9 ^ X1 ^ X5 ^ X6 , - C8 ^ X0 ^ X4 ^ X5 , - C7 ^ X3 ^ X4 ^ X5 ^ X7, - C6 ^ X2 ^ X3 ^ X4 ^ X6 ^ X7, - C5 ^ X1 ^ X2 ^ X3 ^ X5 ^ X6 ^ X7, - C4 ^ X0 ^ X1 ^ X2 ^ X4 ^ X5 ^ X6 , - C3 ^ X0 ^ X1 ^ X3 ^ X4 , - C2 ^ X0 ^ X2 ^ X3 ^ X5 , - C1 ^ X1 ^ X2 ^ X4 ^ X5 , - C0 ^ X0 ^ X1 ^ X3 ^ X4 , - X0 ^ X2 ^ X3 ^ X5 ^ X7, - X1 ^ X2 ^ X4 ^ X5 ^ X6 ^ X7, - X0 ^ X1 ^ X3 ^ X4 ^ X5 ^ X6 ^ X7, - X0 ^ X2 ^ X3 ^ X4 ^ X6 , - X1 ^ X2 ^ X3 ^ X7, - X0 ^ X1 ^ X2 ^ X6 ^ X7, - X0 ^ X1 ^ X6 ^ X7, - X0 ^ X6 - }; -endmodule - -module crc_32_16_private ( - use_F_for_CRC, - present_crc, - data_in_16, - next_crc -); - parameter NUMBER_OF_BITS_APPLIED = 16; - input use_F_for_CRC; - input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; - input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_16; - output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc; - -/* State Variables depend on input bit number (bigger is earlier) : -{ -31 : C15 ^ X5 ^ X8 ^ X9 ^ X11 ^ X15, -30 : C14 ^ X4 ^ X7 ^ X8 ^ X10 ^ X14 , -29 : C13 ^ X3 ^ X6 ^ X7 ^ X9 ^ X13 , -28 : C12 ^ X2 ^ X5 ^ X6 ^ X8 ^ X12 , -27 : C11 ^ X1 ^ X4 ^ X5 ^ X7 ^ X11 , -26 : C10 ^ X0 ^ X3 ^ X4 ^ X6 ^ X10 , -25 : C9 ^ X2 ^ X3 ^ X8 ^ X11 ^ X15, -24 : C8 ^ X1 ^ X2 ^ X7 ^ X10 ^ X14 , -23 : C7 ^ X0 ^ X1 ^ X6 ^ X9 ^ X13 ^ X15, -22 : C6 ^ X0 ^ X12 ^ X9 ^ X14 ^ X11 , -21 : C5 ^ X5 ^ X9 ^ X13 ^ X10 , -20 : C4 ^ X4 ^ X8 ^ X12 ^ X9 , -19 : C3 ^ X3 ^ X7 ^ X8 ^ X11 ^ X15, -18 : C2 ^ X2 ^ X6 ^ X7 ^ X10 ^ X14 ^ X15, -17 : C1 ^ X1 ^ X5 ^ X6 ^ X9 ^ X13 ^ X14 , -16 : C0 ^ X0 ^ X4 ^ X5 ^ X8 ^ X12 ^ X13 , -15 : 0 ^ X3 ^ X4 ^ X5 ^ X7 ^ X8 ^ X12 ^ X9 ^ X15, -14 : 0 ^ X2 ^ X3 ^ X4 ^ X6 ^ X7 ^ X8 ^ X14 ^ X11 ^ X15, -13 : 0 ^ X1 ^ X2 ^ X3 ^ X5 ^ X6 ^ X7 ^ X13 ^ X10 ^ X14 , -12 : 0 ^ X0 ^ X1 ^ X2 ^ X4 ^ X5 ^ X6 ^ X12 ^ X9 ^ X13 ^ X15, -11 : 0 ^ X0 ^ X1 ^ X3 ^ X4 ^ X12 ^ X9 ^ X14 ^ X15, -10 : 0 ^ X0 ^ X2 ^ X3 ^ X5 ^ X9 ^ X13 ^ X14 , - 9 : 0 ^ X1 ^ X2 ^ X4 ^ X5 ^ X12 ^ X9 ^ X13 ^ X11 , - 8 : 0 ^ X0 ^ X1 ^ X3 ^ X4 ^ X8 ^ X12 ^ X10 ^ X11 , - 7 : 0 ^ X0 ^ X2 ^ X3 ^ X5 ^ X7 ^ X8 ^ X10 ^ X15, - 6 : 0 ^ X1 ^ X2 ^ X4 ^ X5 ^ X6 ^ X7 ^ X8 ^ X14 ^ X11 , - 5 : 0 ^ X0 ^ X1 ^ X3 ^ X4 ^ X5 ^ X6 ^ X7 ^ X13 ^ X10 , - 4 : 0 ^ X0 ^ X2 ^ X3 ^ X4 ^ X6 ^ X8 ^ X12 ^ X11 ^ X15, - 3 : 0 ^ X1 ^ X2 ^ X3 ^ X7 ^ X8 ^ X9 ^ X10 ^ X14 ^ X15, - 2 : 0 ^ X0 ^ X1 ^ X2 ^ X6 ^ X7 ^ X8 ^ X9 ^ X13 ^ X14 , - 1 : 0 ^ X0 ^ X1 ^ X6 ^ X7 ^ X12 ^ X9 ^ X13 ^ X11 , - 0 : 0 ^ X0 ^ X6 ^ X12 ^ X9 ^ X10 -} -*/ -// There are 2 obvious ways to implement these functions: -// 1) XOR the State bits with the Input bits, then calculate the XOR's -// 2) Independently calculate a result for Inputs and State variables, -// then XOR the results together. -// The second idea seems to take much more logic, but to have no benefit. - -// Single numbered terms are calculated in 1 XOR time. - wire X15, X14, X13, X12, X11, X10, X9, X8, X7, X6, X5, X4, X3, X2, X1, X0; - assign {X15, X14, X13, X12, X11, X10, X9, X8, X7, X6, X5, X4, X3, X2, X1, X0} = - data_in_16[NUMBER_OF_BITS_APPLIED - 1 : 0] - ^ ( present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : `NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED] - | {NUMBER_OF_BITS_APPLIED{use_F_for_CRC}}); - -// State Bits are shifted over by the width of the input, then XOR's into the X terms. - wire C15, C14, C13, C12, C11, C10, C9, C8, C7, C6, C5, C4, C3, C2, C1, C0; - assign {C15, C14, C13, C12, C11, C10, C9, C8, C7, C6, C5, C4, C3, C2, C1, C0} = - present_crc[`NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED - 1 : 0] - | {(`NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED){use_F_for_CRC}}; - -// Calculate higher_order terms, to make parity trees. -// 2_numbered terms are calculated in 1 XOR times. -// NOTE: In a Xilinx chip, it would be fine to constrain X0 and X0_1 to -// be calculated in the same CLB, and so on for all bits. - wire X0_1 = X0 ^ X1; wire X1_2 = X1 ^ X2; - wire X2_3 = X2 ^ X3; wire X3_4 = X3 ^ X4; - wire X4_5 = X4 ^ X5; wire X5_6 = X5 ^ X6; - wire X6_7 = X6 ^ X7; wire X7_8 = X7 ^ X8; -// Use odd-ordered XOR terms because it seems these might be useful - wire X8_12 = X8 ^ X12; wire X12_9 = X12 ^ X9; - wire X9_13 = X9 ^ X13; wire X13_10 = X13 ^ X10; - wire X10_14 = X10 ^ X14; wire X14_11 = X14 ^ X11; - wire X11_15 = X11 ^ X15; - -// Calculate terms which might have a single use. They are calculated here -// so that the parity trees can be balanced. - wire C15_5 = C15 ^ X5; wire C14_4 = C14 ^ X4; - wire C13_3 = C13 ^ X3; wire C12_2 = C12 ^ X2; - wire C11_1 = C11 ^ X1; wire C10_0 = C10 ^ X0; - wire C9_8 = C9 ^ X8; wire C8_7 = C8 ^ X7; - wire C7_6 = C7 ^ X6; wire C6_0 = C6 ^ X0; - wire C5_5 = C5 ^ X5; wire C4_4 = C4 ^ X4; - wire C3_3 = C3 ^ X3; wire C2_2 = C2 ^ X2; - wire C1_1 = C1 ^ X1; wire C0_0 = C0 ^ X0; -// Some of these could be matched with other terms to share 1 input in a CLB. - wire X0_5 = X0 ^ X5; wire X0_6 = X0 ^ X6; - wire X2_6 = X2 ^ X6; wire X2_8 = X2 ^ X8; - wire X3_7 = X3 ^ X7; wire X3_9 = X3 ^ X9; - wire X4_8 = X4 ^ X8; - wire X5_15 = X5 ^ X15; - wire X6_10 = X6 ^ X10; - wire X7_11 = X7 ^ X11; - wire X8_9 = X8 ^ X9; - wire X10_11 = X10 ^ X11; wire X10_15 = X10 ^ X15; - wire X13_11 = X13 ^ X11; wire X13_15 = X13 ^ X15; - wire X14_15 = X14 ^ X15; - -// NOTE: 5 terms can be implemented in a CLB, as long as the other Flop -// doesn't use logic. This would be perfect if the data_in_16 -// was registered as an input to the module in that CLB. - assign next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - { (C15_5 ^ X8_9) ^ X11_15, - (C14_4 ^ X7_8) ^ X10_14, - (C13_3 ^ X6_7) ^ X9_13, - (C12_2 ^ X5_6) ^ X8_12, - (C11_1 ^ X4_5) ^ X7_11, - (C10_0 ^ X3_4) ^ X6_10, - (C9_8 ^ X2_3) ^ X11_15, - (C8_7 ^ X1_2) ^ X10_14, - (C7_6 ^ X0_1) ^ (X9_13 ^ X15), - (C6_0 ^ X12_9) ^ X14_11, - (C5_5 ^ X9_13) ^ X10, - (C4_4 ^ X8_12) ^ X9, - (C3_3 ^ X7_8) ^ X11_15, - (C2_2 ^ X6_7) ^ (X14_15 ^ X10), - (C1_1 ^ X5_6) ^ (X9_13 ^ X14), - (C0_0 ^ X4_5) ^ (X8_12 ^ X13), - (X3_4 ^ X5_15) ^ (X7_8 ^ X12_9), - ((X2_3 ^ X4_8) ^ (X6_7 ^ X14_15)) ^ X11, - ((X1_2 ^ X3_7) ^ (X5_6 ^ X13_10)) ^ X14, - ((X0_1 ^ X2_6) ^ (X4_5 ^ X12_9)) ^ X13_15, - (X0_1 ^ X3_4) ^ (X12_9 ^ X14_15), - (X0_5 ^ X2_3) ^ (X9_13 ^ X14), - (X1_2 ^ X4_5) ^ (X12_9 ^ X13_11), - (X0_1 ^ X3_4) ^ (X8_12 ^ X10_11), - (X0_5 ^ X2_3) ^ (X7_8 ^ X10_15), - ((X1_2 ^ X4_5) ^ (X6_7 ^ X14_11)) ^ X8, - ((X0_1 ^ X3_4) ^ (X5_6 ^ X13_10)) ^ X7, - ((X0_6 ^ X2_3) ^ (X8_12 ^ X11_15)) ^ X4, - ((X1_2 ^ X3_9) ^ (X7_8 ^ X10_14)) ^ X15, - ((X0_1 ^ X2_8) ^ (X6_7 ^ X9_13)) ^ X14, - (X0_1 ^ X6_7) ^ (X12_9 ^ X13_11), - (X0_6 ^ X12_9) ^ X10 - }; -endmodule - -module crc_32_24_private ( - use_F_for_CRC, - present_crc, - data_in_24, - next_crc -); - parameter NUMBER_OF_BITS_APPLIED = 24; - input use_F_for_CRC; - input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; - input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_24; - output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc; - -/* State Variables depend on input bit number (bigger is earlier) : -{ -C7 ^ X5 ^ X8 ^ X9 ^ X11 ^ X15 ^ X23, -C6 ^ X4 ^ X7 ^ X8 ^ X10 ^ X14 ^ X22 ^ X23, -C5 ^ X3 ^ X6 ^ X7 ^ X9 ^ X13 ^ X21 ^ X22 ^ X23, -C4 ^ X2 ^ X5 ^ X6 ^ X8 ^ X12 ^ X20 ^ X21 ^ X22 , -C3 ^ X1 ^ X4 ^ X5 ^ X7 ^ X11 ^ X19 ^ X20 ^ X21 ^ X23, -C2 ^ X0 ^ X3 ^ X4 ^ X6 ^ X10 ^ X18 ^ X19 ^ X20 ^ X22 ^ X23, -C1 ^ X2 ^ X3 ^ X8 ^ X11 ^ X15 ^ X17 ^ X18 ^ X19 ^ X21 ^ X22 , -C0 ^ X1 ^ X2 ^ X7 ^ X10 ^ X14 ^ X16 ^ X17 ^ X18 ^ X20 ^ X21 , - 0 ^ X0 ^ X1 ^ X6 ^ X9 ^ X13 ^ X15 ^ X16 ^ X17 ^ X19 ^ X20 , - 0 ^ X0 ^ X12 ^ X9 ^ X14 ^ X11 ^ X16 ^ X18 ^ X19 ^ X23, - 0 ^ X5 ^ X9 ^ X13 ^ X10 ^ X17 ^ X18 ^ X22 , - 0 ^ X4 ^ X8 ^ X12 ^ X9 ^ X16 ^ X17 ^ X21 ^ X23, - 0 ^ X3 ^ X7 ^ X8 ^ X11 ^ X15 ^ X16 ^ X20 ^ X22 , - 0 ^ X2 ^ X6 ^ X7 ^ X10 ^ X14 ^ X15 ^ X19 ^ X21 ^ X23, - 0 ^ X1 ^ X5 ^ X6 ^ X9 ^ X13 ^ X14 ^ X18 ^ X20 ^ X22 ^ X23, - 0 ^ X0 ^ X4 ^ X5 ^ X8 ^ X12 ^ X13 ^ X17 ^ X19 ^ X21 ^ X22 , - 0 ^ X3 ^ X4 ^ X5 ^ X7 ^ X8 ^ X12 ^ X9 ^ X15 ^ X16 ^ X18 ^ X20 ^ X21 , - 0 ^ X2 ^ X3 ^ X4 ^ X6 ^ X7 ^ X8 ^ X14 ^ X11 ^ X15 ^ X17 ^ X19 ^ X20 ^ X23, - 0 ^ X1 ^ X2 ^ X3 ^ X5 ^ X6 ^ X7 ^ X13 ^ X10 ^ X14 ^ X16 ^ X18 ^ X19 ^ X22 , - 0 ^ X0 ^ X1 ^ X2 ^ X4 ^ X5 ^ X6 ^ X12 ^ X9 ^ X13 ^ X15 ^ X17 ^ X18 ^ X21 , - 0 ^ X0 ^ X1 ^ X3 ^ X4 ^ X12 ^ X9 ^ X14 ^ X15 ^ X16 ^ X17 ^ X20 , - 0 ^ X0 ^ X2 ^ X3 ^ X5 ^ X9 ^ X13 ^ X14 ^ X16 ^ X19 , - 0 ^ X1 ^ X2 ^ X4 ^ X5 ^ X12 ^ X9 ^ X13 ^ X11 ^ X18 ^ X23, - 0 ^ X0 ^ X1 ^ X3 ^ X4 ^ X8 ^ X12 ^ X10 ^ X11 ^ X17 ^ X22 ^ X23, - 0 ^ X0 ^ X2 ^ X3 ^ X5 ^ X7 ^ X8 ^ X10 ^ X15 ^ X16 ^ X21 ^ X22 ^ X23, - 0 ^ X1 ^ X2 ^ X4 ^ X5 ^ X6 ^ X7 ^ X8 ^ X14 ^ X11 ^ X20 ^ X21 ^ X22 , - 0 ^ X0 ^ X1 ^ X3 ^ X4 ^ X5 ^ X6 ^ X7 ^ X13 ^ X10 ^ X19 ^ X20 ^ X21 , - 0 ^ X0 ^ X2 ^ X3 ^ X4 ^ X6 ^ X8 ^ X12 ^ X11 ^ X15 ^ X18 ^ X19 ^ X20 , - 0 ^ X1 ^ X2 ^ X3 ^ X7 ^ X8 ^ X9 ^ X10 ^ X14 ^ X15 ^ X17 ^ X18 ^ X19 , - 0 ^ X0 ^ X1 ^ X2 ^ X6 ^ X7 ^ X8 ^ X9 ^ X13 ^ X14 ^ X16 ^ X17 ^ X18 , - 0 ^ X0 ^ X1 ^ X6 ^ X7 ^ X12 ^ X9 ^ X13 ^ X11 ^ X16 ^ X17 , - 0 ^ X0 ^ X6 ^ X12 ^ X9 ^ X10 ^ X16 -} -*/ -// There are 2 obvious ways to implement these functions: -// 1) XOR the State bits with the Input bits, then calculate the XOR's -// 2) Independently calculate a result for Inputs and State variables, -// then XOR the results together. -// The second idea seems to take much more logic, but to have no benefit. - -// Single numbered terms are calculated in 1 XOR time. - wire X23, X22, X21, X20, X19, X18, X17, X16; - wire X15, X14, X13, X12, X11, X10, X9, X8, X7, X6, X5, X4, X3, X2, X1, X0; - assign {X23, X22, X21, X20, X19, X18, X17, X16, X15, X14, X13, X12, - X11, X10, X9, X8, X7, X6, X5, X4, X3, X2, X1, X0} = - data_in_24[NUMBER_OF_BITS_APPLIED - 1 : 0] - ^ ( present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : `NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED] - | {NUMBER_OF_BITS_APPLIED{use_F_for_CRC}}); - -// State Bits are shifted over by the width of the input, then XOR's into the X terms. - wire C7, C6, C5, C4, C3, C2, C1, C0; - assign {C7, C6, C5, C4, C3, C2, C1, C0} = - present_crc[`NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED - 1 : 0] - | {(`NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED){use_F_for_CRC}}; - -// Calculate higher_order terms, to make parity trees. -// 2_numbered terms are calculated in 1 XOR times. -// NOTE: In a Xilinx chip, it would be fine to constrain X0 and X0_1 to -// be calculated in the same CLB, and so on for all bits. - wire X0_1 = X0 ^ X1; wire X1_2 = X1 ^ X2; - wire X2_3 = X2 ^ X3; wire X3_4 = X3 ^ X4; - wire X4_5 = X4 ^ X5; wire X5_6 = X5 ^ X6; - wire X6_7 = X6 ^ X7; wire X7_8 = X7 ^ X8; -// Use odd-ordered XOR terms because it seems these might be useful - wire X8_12 = X8 ^ X12; wire X12_9 = X12 ^ X9; - wire X9_13 = X9 ^ X13; wire X13_10 = X13 ^ X10; - wire X10_14 = X10 ^ X14; wire X14_11 = X14 ^ X11; - wire X11_15 = X11 ^ X15; -// back to simple ordering - wire X15_16 = X15 ^ X16; - wire X16_17 = X16 ^ X17; wire X17_18 = X17 ^ X18; - wire X18_19 = X18 ^ X19; wire X19_20 = X19 ^ X20; - wire X20_21 = X20 ^ X21; wire X21_22 = X21 ^ X22; - wire X22_23 = X22 ^ X23; - -// Calculate terms which might have a single use. They are calculated here -// so that the parity trees can be balanced. - wire C7_5 = C7 ^ X5; wire C6_4 = C6 ^ X4; - wire C5_3 = C5 ^ X3; wire C4_2 = C4 ^ X2; - wire C3_1 = C3 ^ X1; wire C2_0 = C2 ^ X0; - wire C1_8 = C1 ^ X8; wire C0_7 = C0 ^ X7; -// Some of these could be matched with other terms to share 1 input in a CLB. - wire X8_9 = X8 ^ X9; wire X7_11 = X7 ^ X11; - wire X6_10 = X6 ^ X10; wire X21_23 = X21 ^ X23; - wire X6_17 = X6 ^ X17; wire X0_16 = X0 ^ X16; - wire X5_10 = X5 ^ X10; wire X4_9 = X4 ^ X9; - wire X3_16 = X3 ^ X16; wire X20_22 = X20 ^ X22; - wire X15_19 = X15 ^ X19; wire X1_9 = X1 ^ X9; - wire X13_14 = X13 ^ X14; wire X18_20 = X18 ^ X20; - wire X0_8 = X0 ^ X8; wire X12_13 = X12 ^ X13; - wire X17_19 = X17 ^ X19; wire X5_18 = X5 ^ X18; - wire X4_8 = X4 ^ X8; wire X15_17 = X15 ^ X17; - wire X3_7 = X3 ^ X7; wire X2_6 = X2 ^ X6; - wire X14_17 = X14 ^ X17; wire X0_5 = X0 ^ X5; - wire X14_16 = X14 ^ X16; wire X13_15 = X13 ^ X15; - wire X0_4 = X0 ^ X4; wire X0_6 = X0 ^ X6; - wire X3_9 = X3 ^ X9; wire X2_8 = X2 ^ X8; - wire X13_11 = X13 ^ X11; wire X16_23 = X16 ^ X23; - wire X10_11 = X10 ^ X11; wire X10_15 = X10 ^ X15; - wire X8_22 = X8 ^ X22; wire X14_18 = X14 ^ X18; - wire X6_20 = X6 ^ X20; wire X7_21 = X7 ^ X21; - -// NOTE: 5 terms can be implemented in a CLB, as long as the other Flop -// doesn't use logic. This would be perfect if the data_in_24 -// was registered as an input to the module in that CLB. - assign next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - { (C7_5 ^ X8_9) ^ (X11_15 ^ X23), - (C6_4 ^ X7_8) ^ (X10_14 ^ X22_23), - ((C5_3 ^ X6_7) ^ (X9_13 ^ X21_22)) ^ X23, - ((C4_2 ^ X5_6) ^ (X8_12 ^ X20_21)) ^ X22, - ((C3_1 ^ X4_5) ^ (X7_11 ^ X19_20)) ^ X21_23, - ((C2_0 ^ X3_4) ^ (X6_10 ^ X18_19)) ^ (X20 ^ X22_23), - ((C1_8 ^ X2_3) ^ (X11_15 ^ X17_18)) ^ (X19 ^ X21_22), - ((C0_7 ^ X1_2) ^ (X10_14 ^ X16_17)) ^ (X18 ^ X20_21), - ((X0_1 ^ X6_17) ^ (X9_13 ^ X15_16)) ^ X19_20, - ((X0_16 ^ X12_9) ^ (X14_11 ^ X18_19)) ^ X23, - (X5_10 ^ X9_13) ^ (X17_18 ^ X22), - (X4_9 ^ X8_12) ^ (X16_17 ^ X21_23), - (X3_16 ^ X7_8) ^ (X11_15 ^ X20_22), - ((X2 ^ X6_7) ^ (X10_14 ^ X15_19)) ^ X21_23, - ((X1_9 ^ X5_6) ^ (X13_14 ^ X18_20)) ^ X22_23, - ((X0_8 ^ X4_5) ^ (X12_13 ^ X17_19)) ^ X21_22, - ((X3_4 ^ X5_18) ^ (X7_8 ^ X12_9)) ^ (X15_16 ^ X20_21), - ((X2_3 ^ X4_8) ^ (X6_7 ^ X14_11)) ^ ((X15_17 ^ X19_20) ^ X23), - ((X1_2 ^ X3_7) ^ (X5_6 ^ X13_10)) ^ ((X14_16 ^ X18_19) ^ X22), - ((X0_1 ^ X2_6) ^ (X4_5 ^ X12_9)) ^ ((X13_15 ^ X17_18) ^ X21), - ((X0_1 ^ X3_4) ^ (X12_9 ^ X14_17)) ^ (X15_16 ^ X20), - ((X0_5 ^ X2_3) ^ (X9_13 ^ X14)) ^ (X16 ^ X19), - ((X1_2 ^ X4_5) ^ (X12_9 ^ X13_11)) ^ (X18 ^ X23), - ((X0_1 ^ X3_4) ^ (X8_12 ^ X10_11)) ^ (X17 ^ X22_23), - ((X0_5 ^ X2_3) ^ (X7_8 ^ X10_15)) ^ (X16_23 ^ X21_22), - ((X1_2 ^ X4_5) ^ (X6_7 ^ X8_22)) ^ (X14_11 ^ X20_21), - ((X0_1 ^ X3_4) ^ (X5_6 ^ X7_21)) ^ (X13_10 ^ X19_20), - ((X0_4 ^ X2_3) ^ (X6_20 ^ X8_12)) ^ (X11_15 ^ X18_19), - ((X1_2 ^ X3_9) ^ (X7_8 ^ X10_14)) ^ (X15_19 ^ X17_18), - ((X0_1 ^ X2_8) ^ (X6_7 ^ X9_13)) ^ (X14_18 ^ X16_17), - ((X0_1 ^ X6_7) ^ (X12_9 ^ X13_11)) ^ X16_17, - (X0_6 ^ X12_9) ^ (X10 ^ X16) - }; -endmodule - -module crc_32_32_private ( - use_F_for_CRC, - present_crc, - data_in_32, - next_crc -); - parameter NUMBER_OF_BITS_APPLIED = 32; - input use_F_for_CRC; - input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; - input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_32; - output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc; - -/* State Variables depend on input bit number (bigger is earlier) : -{ - ^ 5 ^ 8 ^ 9 ^ 11 ^ 15 ^ 23 ^ 24 ^ 25 ^ 27 ^ 28 ^ 29 ^ 30 ^ 31, - ^ 4 ^ 7 ^ 8 ^ 10 ^ 14 ^ 22 ^ 23 ^ 24 ^ 26 ^ 27 ^ 28 ^ 29 ^ 30 , - ^ 3 ^ 6 ^ 7 ^ 9 ^ 13 ^ 21 ^ 22 ^ 23 ^ 25 ^ 26 ^ 27 ^ 28 ^ 29 ^ 31, - ^ 2 ^ 5 ^ 6 ^ 8 ^ 12 ^ 20 ^ 21 ^ 22 ^ 24 ^ 25 ^ 26 ^ 27 ^ 28 ^ 30 , - ^ 1 ^ 4 ^ 5 ^ 7 ^ 11 ^ 19 ^ 20 ^ 21 ^ 23 ^ 24 ^ 25 ^ 26 ^ 27 ^ 29 , -0 ^ 3 ^ 4 ^ 6 ^ 10 ^ 18 ^ 19 ^ 20 ^ 22 ^ 23 ^ 24 ^ 25 ^ 26 ^ 28 ^ 31, - ^ 2 ^ 3 ^ 8 ^ 11 ^ 15 ^ 17 ^ 18 ^ 19 ^ 21 ^ 22 ^ 28 ^ 29 ^ 31, - ^ 1 ^ 2 ^ 7 ^ 10 ^ 14 ^ 16 ^ 17 ^ 18 ^ 20 ^ 21 ^ 27 ^ 28 ^ 30 , -0 ^ 1 ^ 6 ^ 9 ^ 13 ^ 15 ^ 16 ^ 17 ^ 19 ^ 20 ^ 26 ^ 27 ^ 29 ^ 31, -0 ^ 9 ^ 11 ^ 12 ^ 14 ^ 16 ^ 18 ^ 19 ^ 23 ^ 24 ^ 26 ^ 27 ^ 29 ^ 31, - ^ 5 ^ 9 ^ 10 ^ 13 ^ 17 ^ 18 ^ 22 ^ 24 ^ 26 ^ 27 ^ 29 ^ 31, - ^ 4 ^ 8 ^ 9 ^ 12 ^ 16 ^ 17 ^ 21 ^ 23 ^ 25 ^ 26 ^ 28 ^ 30 , - ^ 3 ^ 7 ^ 8 ^ 11 ^ 15 ^ 16 ^ 20 ^ 22 ^ 24 ^ 25 ^ 27 ^ 29 , - ^ 2 ^ 6 ^ 7 ^ 10 ^ 14 ^ 15 ^ 19 ^ 21 ^ 23 ^ 24 ^ 26 ^ 28 ^ 31, - ^ 1 ^ 5 ^ 6 ^ 9 ^ 13 ^ 14 ^ 18 ^ 20 ^ 22 ^ 23 ^ 25 ^ 27 ^ 30 ^ 31, -0 ^ 4 ^ 5 ^ 8 ^ 12 ^ 13 ^ 17 ^ 19 ^ 21 ^ 22 ^ 24 ^ 26 ^ 29 ^ 30 , - ^ 3 ^ 4 ^ 5 ^ 7 ^ 8 ^ 9 ^ 12 ^ 15 ^ 16 ^ 18 ^ 20 ^ 21 ^ 24 ^ 27 ^ 30 , - ^ 2 ^ 3 ^ 4 ^ 6 ^ 7 ^ 8 ^ 11 ^ 14 ^ 15 ^ 17 ^ 19 ^ 20 ^ 23 ^ 26 ^ 29 , - ^ 1 ^ 2 ^ 3 ^ 5 ^ 6 ^ 7 ^ 10 ^ 13 ^ 14 ^ 16 ^ 18 ^ 19 ^ 22 ^ 25 ^ 28 ^ 31, -0 ^ 1 ^ 2 ^ 4 ^ 5 ^ 6 ^ 9 ^ 12 ^ 13 ^ 15 ^ 17 ^ 18 ^ 21 ^ 24 ^ 27 ^ 30 ^ 31, -0 ^ 1 ^ 3 ^ 4 ^ 9 ^ 12 ^ 14 ^ 15 ^ 16 ^ 17 ^ 20 ^ 24 ^ 25 ^ 26 ^ 27 ^ 28 ^ 31, -0 ^ 2 ^ 3 ^ 5 ^ 9 ^ 13 ^ 14 ^ 16 ^ 19 ^ 26 ^ 28 ^ 29 ^ 31, - ^ 1 ^ 2 ^ 4 ^ 5 ^ 9 ^ 11 ^ 12 ^ 13 ^ 18 ^ 23 ^ 24 ^ 29 , -0 ^ 1 ^ 3 ^ 4 ^ 8 ^ 10 ^ 11 ^ 12 ^ 17 ^ 22 ^ 23 ^ 28 ^ 31, -0 ^ 2 ^ 3 ^ 5 ^ 7 ^ 8 ^ 10 ^ 15 ^ 16 ^ 21 ^ 22 ^ 23 ^ 24 ^ 25 ^ 28 ^ 29 , - ^ 1 ^ 2 ^ 4 ^ 5 ^ 6 ^ 7 ^ 8 ^ 11 ^ 14 ^ 20 ^ 21 ^ 22 ^ 25 ^ 29 ^ 30 , -0 ^ 1 ^ 3 ^ 4 ^ 5 ^ 6 ^ 7 ^ 10 ^ 13 ^ 19 ^ 20 ^ 21 ^ 24 ^ 28 ^ 29 , -0 ^ 2 ^ 3 ^ 4 ^ 6 ^ 8 ^ 11 ^ 12 ^ 15 ^ 18 ^ 19 ^ 20 ^ 24 ^ 25 ^ 29 ^ 30 ^ 31, - ^ 1 ^ 2 ^ 3 ^ 7 ^ 8 ^ 9 ^ 10 ^ 14 ^ 15 ^ 17 ^ 18 ^ 19 ^ 25 ^ 27 ^ 31, -0 ^ 1 ^ 2 ^ 6 ^ 7 ^ 8 ^ 9 ^ 13 ^ 14 ^ 16 ^ 17 ^ 18 ^ 24 ^ 26 ^ 30 ^ 31, -0 ^ 1 ^ 6 ^ 7 ^ 9 ^ 11 ^ 12 ^ 13 ^ 16 ^ 17 ^ 24 ^ 27 ^ 28 , -0 ^ 6 ^ 9 ^ 10 ^ 12 ^ 16 ^ 24 ^ 25 ^ 26 ^ 28 ^ 29 ^ 30 ^ 31 -} -*/ -// There are 2 obvious ways to implement these functions: -// 1) XOR the State bits with the Input bits, then calculate the XOR's -// 2) Independently calculate a result for Inputs and State variables, -// then XOR the results together. -// The second idea seems to take much more logic, but to have no benefit. - - wire X31, X30, X29, X28, X27, X26, X25, X24, X23, X22, X21, X20; - wire X19, X18, X17, X16, X15, X14, X13, X12, X11, X10, X9, X8; - wire X7, X6, X5, X4, X3, X2, X1, X0; - assign {X31, X30, X29, X28, X27, X26, X25, X24, X23, X22, X21, X20, - X19, X18, X17, X16, X15, X14, X13, X12, X11, X10, X9, X8, - X7, X6, X5, X4, X3, X2, X1, X0} = - data_in_32[NUMBER_OF_BITS_APPLIED - 1 : 0] - ^ ( present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : `NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED] - | {NUMBER_OF_BITS_APPLIED{use_F_for_CRC}}); - -// Calculate higher_order terms, to make parity trees. -// NOTE: In a Xilinx chip, it would be fine to constrain X0 and X0_1 to -// be calculated in the same CLB, and so on for all bits. - wire X0_1 = X0 ^ X1; wire X1_2 = X1 ^ X2; - wire X2_3 = X2 ^ X3; wire X3_4 = X3 ^ X4; - wire X4_5 = X4 ^ X5; wire X5_6 = X5 ^ X6; - wire X6_7 = X6 ^ X7; wire X7_8 = X7 ^ X8; -// Use odd-ordered XOR terms because it seems these might be useful - wire X8_12 = X8 ^ X12; wire X12_9 = X12 ^ X9; - wire X9_13 = X9 ^ X13; wire X13_10 = X13 ^ X10; - wire X10_14 = X10 ^ X14; wire X14_11 = X14 ^ X11; - wire X11_15 = X11 ^ X15; -// back to simple ordering - wire X15_16 = X15 ^ X16; - wire X16_17 = X16 ^ X17; wire X17_18 = X17 ^ X18; - wire X18_19 = X18 ^ X19; wire X19_20 = X19 ^ X20; - wire X20_21 = X20 ^ X21; wire X21_22 = X21 ^ X22; - wire X22_23 = X22 ^ X23; wire X23_24 = X23 ^ X24; - wire X24_25 = X24 ^ X25; wire X25_26 = X25 ^ X26; - wire X26_27 = X26 ^ X27; wire X27_28 = X27 ^ X28; - wire X28_29 = X28 ^ X29; wire X29_30 = X29 ^ X30; - wire X30_31 = X30 ^ X31; - -// Calculate terms which might have a single use. They are calculated here -// so that the parity trees can be balanced. - wire X8_9 = X8 ^ X9; wire X29_31 = X29 ^ X31; - wire X28_30 = X28 ^ X30; wire X28_31 = X28 ^ X31; - wire X27_29 = X27 ^ X29; wire X4_6 = X4 ^ X6; - wire X7_11 = X7 ^ X11; wire X6_10 = X6 ^ X10; - wire X22_24 = X22 ^ X24; wire X21_23 = X21 ^ X23; - wire X20_22 = X20 ^ X22; wire X19_21 = X19 ^ X21; - wire X18_20 = X18 ^ X20; wire X17_19 = X17 ^ X19; - wire X24_27 = X24 ^ X27; wire X23_26 = X23 ^ X26; - wire X22_25 = X22 ^ X25; wire X21_24 = X21 ^ X24; - - wire X20_26 = X20 ^ X26; wire X25_27 = X25 ^ X27; - wire X24_26 = X24 ^ X26; wire X18_30 = X18 ^ X30; - wire X15_17 = X15 ^ X17; wire X14_16 = X14 ^ X16; - wire X13_15 = X13 ^ X15; wire X13_11 = X13 ^ X11; - wire X10_11 = X10 ^ X11; wire X10_15 = X10 ^ X15; - wire X3_5 = X3 ^ X5; wire X2_4 = X2 ^ X4; - wire X3_9 = X3 ^ X9; wire X0_5 = X0 ^ X5; - wire X17_20 = X17 ^ X20; wire X16_19 = X16 ^ X19; - wire X16_21 = X16 ^ X21; wire X15_19 = X15 ^ X19; - wire X27_31 = X27 ^ X31; wire X20_31 = X20 ^ X31; - wire X2_8 = X2 ^ X8; - wire X14_18 = X14 ^ X18; - wire X0_6 = X0 ^ X6; - wire X10_16 = X10 ^ X16; - - assign next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - {((X5 ^ X8_9) ^ (X11_15 ^ X23_24)) ^ ((X25 ^ X27_28) ^ (X29_30 ^ X31)), - ((X4 ^ X7_8) ^ (X10_14 ^ X22_23)) ^ ((X24 ^ X26_27) ^ (X28_29 ^ X30)), - ((X3 ^ X6_7) ^ (X9_13 ^ X21_22)) ^ ((X23 ^ X25_26) ^ (X27_28 ^ X29_31)), - ((X2 ^ X5_6) ^ (X8_12 ^ X20_21)) ^ ((X22 ^ X24_25) ^ (X26_27 ^ X28_30)), - ((X1 ^ X4_5) ^ (X7_11 ^ X19_20)) ^ ((X21 ^ X23_24) ^ (X25_26 ^ X27_29)), - ((X0 ^ X3_4) ^ (X6_10 ^ X18_19)) ^ ((X20_26 ^ X22_23) ^ (X24_25 ^ X28_31)), - ((X2_3 ^ X8) ^ (X11_15 ^ X17_18)) ^ ((X19 ^ X21_22) ^ (X28_29 ^ X31)), - ((X1_2 ^ X7) ^ (X10_14 ^ X16_17)) ^ ((X18 ^ X20_21) ^ (X27_28 ^ X30)), - ((X0_1 ^ X6) ^ (X9_13 ^ X15_16)) ^ ((X17 ^ X19_20) ^ (X26_27 ^ X29_31)), - ((X0 ^ X12_9) ^ (X14_11 ^ X16)) ^ ((X18_19 ^ X23_24) ^ (X26_27 ^ X29_31)), - ((X5 ^ X9_13) ^ (X10 ^ X17_18)) ^ ((X22_24 ^ X26_27) ^ (X29_31)), - ((X4 ^ X8_12) ^ (X9 ^ X16_17)) ^ ((X21_23 ^ X25_26) ^ (X28_30)), - ((X3 ^ X7_8) ^ (X11_15 ^ X16)) ^ ((X20_22 ^ X24_25) ^ (X27_29)), - ((X2 ^ X6_7) ^ (X10_14 ^ X15)) ^ ((X19_21 ^ X23_24) ^ (X26 ^ X28_31)), - ((X1 ^ X5_6) ^ (X9_13 ^ X14)) ^ ((X18_20 ^ X22_23) ^ (X25_27 ^ X30_31)), - ((X0 ^ X4_5) ^ (X8_12 ^ X13)) ^ ((X17_19 ^ X21_22) ^ (X24_26 ^ X29_30)), - ((X3_4 ^ X5) ^ (X7_8 ^ X12_9)) ^ ((X15_16 ^ X18_30) ^ (X20_21 ^ X24_27)), - ((X2_3 ^ X4_6) ^ (X7_8 ^ X14_11)) ^ ((X15_17 ^ X19_20) ^ (X23_26 ^ X29)), - ((X1_2 ^ X3_5) ^ (X6_7 ^ X13_10)) ^ ((X14_16 ^ X18_19) ^ (X22_25 ^ X28_31)), - ((X0_1 ^ X2_4) ^ (X5_6 ^ X12_9)) ^ ((X13_15 ^ X17_18) ^ (X21_24 ^ X27)) ^ X30_31, - ((X0_1 ^ X3_4) ^ (X12_9 ^ X14)) ^ ((X15_16 ^ X17_20) ^ (X24_25 ^ X26_27)) ^ X28_31, - ((X0_5 ^ X2_3) ^ (X9_13 ^ X14)) ^ ((X16_19 ^ X26) ^ (X28_29 ^ X31)), - ((X1_2 ^ X4_5) ^ (X12_9 ^ X13_11)) ^ ((X18 ^ X23_24) ^ (X29)), - ((X0_1 ^ X3_4) ^ (X8_12 ^ X10_11)) ^ ((X17 ^ X22_23) ^ (X28_31)), - ((X0_5 ^ X2_3) ^ (X7_8 ^ X10_15)) ^ ((X16_21 ^ X22_23) ^ (X24_25 ^ X28_29)), - ((X1_2 ^ X4_5) ^ (X6_7 ^ X8)) ^ ((X14_11 ^ X20_21) ^ (X22_25 ^ X29_30)), - ((X0_1 ^ X3_4) ^ (X5_6 ^ X7)) ^ ((X13_10 ^ X19_20) ^ (X21_24 ^ X28_29)), - ((X0 ^ X2_3) ^ (X4_6 ^ X8_12)) ^ ((X11_15 ^ X18_19) ^ (X20_31 ^ X24_25)) ^ X29_30, - ((X1_2 ^ X3_9) ^ (X7_8 ^ X10_14)) ^ ((X15_19 ^ X17_18) ^ (X25 ^ X27_31)), - ((X0_1 ^ X2_8) ^ (X6_7 ^ X9_13)) ^ ((X14_18 ^ X16_17) ^ (X24_26 ^ X30_31)), - ((X0_1 ^ X6_7) ^ (X12_9 ^ X13_11)) ^ ((X16_17 ^ X24) ^ (X27_28)), - ((X0_6 ^ X12_9) ^ (X10_16 ^ X24_25)) ^ ((X26 ^ X28_29) ^ (X30_31)) - }; -endmodule - -// Calculate the Data dependent part of the CRC-32 function with 64 inputs here in -// a separate module so that the user can pipeline this one clock earlier. This -// MIGHT mean that the whole thing can run faster. If not, use as a function! -module crc_32_64_data_private ( - data_in_64, - data_part_1_out, data_part_2_out -); - parameter NUMBER_OF_BITS_APPLIED = 64; - input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_64; - output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_1_out; - output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_2_out; - -/* -// After looking at this, I am getting the feeling that the layout of the circuit would -// be the best if more complicated terms were collected from adjacent simple terms. -// For instance, the first line might use a term X5^X8, then another X9^X11 -// -// Data Input dependencies -{ -X5 ^X8^X9 ^X11 ^X15 ^X23^X24^X25 ^X27^X28^X29^X30^X31 ^X33 ^X36 ^X43^X44 ^X46^X47 ^X49 ^X52^X53^X54 ^X57 ^X59^X60 ^X62, -X4 ^X7^X8 ^X10 ^X14 ^X22^X23^X24 ^X26^X27^X28^X29^X30 ^X32 ^X35 ^X42^X43 ^X45^X46 ^X48 ^X51^X52^X53 ^X56 ^X58^X59 ^X61 ^X63, -X3 ^X6^X7 ^X9 ^X13 ^X21^X22^X23 ^X25^X26^X27^X28^X29 ^X31 ^X34 ^X41^X42 ^X44^X45 ^X47 ^X50^X51^X52 ^X55 ^X57^X58 ^X60 ^X62^X63, -X2 ^X5^X6 ^X8 ^X12 ^X20^X21^X22 ^X24^X25^X26^X27^X28 ^X30 ^X33 ^X40^X41 ^X43^X44 ^X46 ^X49^X50^X51 ^X54 ^X56^X57 ^X59 ^X61^X62^X63, -X1 ^X4^X5 ^X7 ^X11 ^X19^X20^X21 ^X23^X24^X25^X26^X27 ^X29 ^X32 ^X39^X40 ^X42^X43 ^X45 ^X48^X49^X50 ^X53 ^X55^X56 ^X58 ^X60^X61^X62^X63, -X0 ^X3^X4 ^X6 ^X10 ^X18^X19^X20 ^X22^X23^X24^X25^X26 ^X28 ^X31 ^X38^X39 ^X41^X42 ^X44 ^X47^X48^X49 ^X52 ^X54^X55 ^X57 ^X59^X60^X61^X62, -X2^X3 ^X8 ^X11 ^X15 ^X17^X18^X19 ^X21^X22 ^X28^X29 ^X31 ^X33 ^X36^X37^X38 ^X40^X41 ^X44 ^X48^X49 ^X51^X52 ^X56^X57^X58 ^X61^X62, -X1^X2 ^X7 ^X10 ^X14 ^X16^X17^X18 ^X20^X21 ^X27^X28 ^X30 ^X32 ^X35^X36^X37 ^X39^X40 ^X43 ^X47^X48 ^X50^X51 ^X55^X56^X57 ^X60^X61 ^X63, -X0^X1 ^X6 ^X9 ^X13 ^X15^X16^X17 ^X19^X20 ^X26^X27 ^X29 ^X31 ^X34^X35^X36 ^X38^X39 ^X42 ^X46^X47 ^X49^X50 ^X54^X55^X56 ^X59^X60 ^X62, -X0 ^X9 ^X11^X12 ^X14 ^X16 ^X18^X19 ^X23^X24 ^X26^X27 ^X29 ^X31 ^X34^X35^X36^X37^X38 ^X41 ^X43^X44^X45 ^X47^X48 ^X52 ^X55 ^X57^X58 ^X60^X61^X62, -X5 ^X9^X10 ^X13 ^X17^X18 ^X22 ^X24 ^X26^X27 ^X29 ^X31 ^X34^X35 ^X37 ^X40 ^X42 ^X49 ^X51^X52^X53 ^X56 ^X61^X62, -X4 ^X8^X9 ^X12 ^X16^X17 ^X21 ^X23 ^X25^X26 ^X28 ^X30 ^X33^X34 ^X36 ^X39 ^X41 ^X48 ^X50^X51^X52 ^X55 ^X60^X61, -X3 ^X7^X8 ^X11 ^X15^X16 ^X20 ^X22 ^X24^X25 ^X27 ^X29 ^X32^X33 ^X35 ^X38 ^X40 ^X47 ^X49^X50^X51 ^X54 ^X59^X60, -X2 ^X6^X7 ^X10 ^X14^X15 ^X19 ^X21 ^X23^X24 ^X26 ^X28 ^X31^X32 ^X34 ^X37 ^X39 ^X46 ^X48^X49^X50 ^X53 ^X58^X59, -X1 ^X5^X6 ^X9 ^X13^X14 ^X18 ^X20 ^X22^X23 ^X25 ^X27 ^X30^X31 ^X33 ^X36 ^X38 ^X45 ^X47^X48^X49 ^X52 ^X57^X58, -X0 ^X4^X5 ^X8 ^X12^X13 ^X17 ^X19 ^X21^X22 ^X24 ^X26 ^X29^X30 ^X32 ^X35 ^X37 ^X44 ^X46^X47^X48 ^X51 ^X56^X57, -X3^X4^X5 ^X7^X8^X9 ^X12 ^X15^X16 ^X18 ^X20^X21 ^X24 ^X27 ^X30 ^X33^X34 ^X44^X45 ^X49^X50 ^X52^X53^X54^X55^X56^X57 ^X59^X60 ^X62, -X2^X3^X4 ^X6^X7^X8 ^X11 ^X14^X15 ^X17 ^X19^X20 ^X23 ^X26 ^X29 ^X32^X33 ^X43^X44 ^X48^X49 ^X51^X52^X53^X54^X55^X56 ^X58^X59 ^X61 ^X63, -X1^X2^X3 ^X5^X6^X7 ^X10 ^X13^X14 ^X16 ^X18^X19 ^X22 ^X25 ^X28 ^X31^X32 ^X42^X43 ^X47^X48 ^X50^X51^X52^X53^X54^X55 ^X57^X58 ^X60 ^X62, -X0^X1^X2 ^X4^X5^X6 ^X9 ^X12^X13 ^X15 ^X17^X18 ^X21 ^X24 ^X27 ^X30^X31 ^X41^X42 ^X46^X47 ^X49^X50^X51^X52^X53^X54 ^X56^X57 ^X59 ^X61 ^X63, -X0^X1 ^X3^X4 ^X9 ^X12 ^X14^X15^X16^X17 ^X20 ^X24^X25^X26^X27^X28 ^X31 ^X33 ^X36 ^X40^X41 ^X43^X44^X45 ^X47^X48 ^X50^X51 ^X54^X55^X56^X57^X58^X59, -X0 ^X2^X3 ^X5 ^X9 ^X13^X14 ^X16 ^X19 ^X26 ^X28^X29 ^X31^X32^X33 ^X35^X36 ^X39^X40 ^X42 ^X50 ^X52 ^X55^X56 ^X58^X59^X60 ^X62^X63, -X1^X2 ^X4^X5 ^X9 ^X11^X12^X13 ^X18 ^X23^X24 ^X29 ^X32^X33^X34^X35^X36 ^X38^X39 ^X41 ^X43^X44 ^X46^X47 ^X51^X52^X53 ^X55 ^X58 ^X60^X61, -X0^X1 ^X3^X4 ^X8 ^X10^X11^X12 ^X17 ^X22^X23 ^X28 ^X31^X32^X33^X34^X35 ^X37^X38 ^X40 ^X42^X43 ^X45^X46 ^X50^X51^X52 ^X54 ^X57 ^X59^X60 ^X63, -X0 ^X2^X3 ^X5 ^X7^X8 ^X10 ^X15^X16 ^X21^X22^X23^X24^X25 ^X28^X29 ^X32 ^X34 ^X37 ^X39 ^X41^X42^X43 ^X45^X46^X47 ^X50^X51^X52 ^X54 ^X56^X57^X58 ^X60, -X1^X2 ^X4^X5^X6^X7^X8 ^X11 ^X14 ^X20^X21^X22 ^X25 ^X29^X30 ^X38 ^X40^X41^X42^X43 ^X45 ^X47 ^X50^X51^X52 ^X54^X55^X56 ^X60 ^X62, -X0^X1 ^X3^X4^X5^X6^X7 ^X10 ^X13 ^X19^X20^X21 ^X24 ^X28^X29 ^X37 ^X39^X40^X41^X42 ^X44 ^X46 ^X49^X50^X51 ^X53^X54^X55 ^X59 ^X61 ^X63, -X0 ^X2^X3^X4 ^X6 ^X8 ^X11^X12 ^X15 ^X18^X19^X20 ^X24^X25 ^X29^X30^X31 ^X33 ^X38^X39^X40^X41 ^X44^X45^X46^X47^X48 ^X50 ^X57^X58^X59 ^X63, -X1^X2^X3 ^X7^X8^X9^X10 ^X14^X15 ^X17^X18^X19 ^X25 ^X27 ^X31^X32^X33 ^X36^X37^X38^X39^X40 ^X45 ^X52^X53^X54 ^X56 ^X58^X59^X60, -X0^X1^X2 ^X6^X7^X8^X9 ^X13^X14 ^X16^X17^X18 ^X24 ^X26 ^X30^X31^X32 ^X35^X36^X37^X38^X39 ^X44 ^X51^X52^X53 ^X55 ^X57^X58^X59, -X0^X1 ^X6^X7 ^X9 ^X11^X12^X13 ^X16^X17 ^X24 ^X27^X28 ^X33^X34^X35 ^X37^X38 ^X44 ^X46^X47 ^X49^X50^X51 ^X53 ^X56 ^X58^X59^X60 ^X62^X63, -X0 ^X6 ^X9^X10 ^X12 ^X16 ^X24^X25^X26 ^X28^X29^X30^X31^X32 ^X34 ^X37 ^X44^X45 ^X47^X48 ^X50 ^X53^X54^X55 ^X58 ^X60^X61 ^X63 -} -*/ -// Data terms depend ONLY on data in. - wire D63, D62, D61, D60, D59, D58, D57, D56, D55, D54, D53, D52; - wire D51, D50, D49, D48, D47, D46, D45, D44, D43, D42, D41, D40; - wire D39, D38, D37, D36, D35, D34, D33, D32; - wire D31, D30, D29, D28, D27, D26, D25, D24, D23, D22, D21, D20; - wire D19, D18, D17, D16, D15, D14, D13, D12, D11, D10, D9, D8; - wire D7, D6, D5, D4, D3, D2, D1, D0; - assign {D63, D62, D61, D60, D59, D58, D57, D56, D55, D54, D53, D52, - D51, D50, D49, D48, D47, D46, D45, D44, D43, D42, D41, D40, - D39, D38, D37, D36, D35, D34, D33, D32, - D31, D30, D29, D28, D27, D26, D25, D24, D23, D22, D21, D20, - D19, D18, D17, D16, D15, D14, D13, D12, D11, D10, D9, D8, - D7, D6, D5, D4, D3, D2, D1, D0} = - data_in_64[63 : 0]; - -// Calculate higher_order terms, to make parity trees. -// NOTE: In a Xilinx chip, it would be fine to constrain D0 and D0_1 to -// be calculated in the same CLB, and so on for all bits. - wire D0_1 = D0 ^ D1; wire D1_2 = D1 ^ D2; - wire D2_3 = D2 ^ D3; wire D3_4 = D3 ^ D4; - wire D4_5 = D4 ^ D5; wire D5_6 = D5 ^ D6; - wire D6_7 = D6 ^ D7; wire D7_8 = D7 ^ D8; - wire D8_9 = D8 ^ D9; wire D9_10 = D9 ^ D10; - wire D10_11 = D10 ^ D11; wire D11_12 = D11 ^ D12; - wire D12_13 = D12 ^ D13; wire D13_14 = D13 ^ D14; - wire D14_15 = D14 ^ D15; wire D15_16 = D15 ^ D16; - wire D16_17 = D16 ^ D17; wire D17_18 = D17 ^ D18; - wire D18_19 = D18 ^ D19; wire D19_20 = D19 ^ D20; - wire D20_21 = D20 ^ D21; wire D21_22 = D21 ^ D22; - wire D22_23 = D22 ^ D23; wire D23_24 = D23 ^ D24; - wire D24_25 = D24 ^ D25; wire D25_26 = D25 ^ D26; - wire D26_27 = D26 ^ D27; wire D27_28 = D27 ^ D28; - wire D28_29 = D28 ^ D29; wire D29_30 = D29 ^ D30; - wire D30_31 = D30 ^ D31; wire D31_32 = D31 ^ D32; - wire D32_33 = D32 ^ D33; wire D33_34 = D33 ^ D34; - wire D34_35 = D34 ^ D35; wire D35_36 = D35 ^ D36; - wire D36_37 = D36 ^ D37; wire D37_38 = D37 ^ D38; - wire D38_39 = D38 ^ D39; wire D39_40 = D39 ^ D40; - wire D40_41 = D40 ^ D41; wire D41_42 = D41 ^ D42; - wire D42_43 = D42 ^ D43; wire D43_44 = D43 ^ D44; - wire D44_45 = D44 ^ D45; wire D45_46 = D45 ^ D46; - wire D46_47 = D46 ^ D47; wire D47_48 = D47 ^ D48; - wire D48_49 = D48 ^ D49; wire D49_50 = D49 ^ D50; - wire D50_51 = D50 ^ D51; wire D51_52 = D51 ^ D52; - wire D52_53 = D52 ^ D53; wire D53_54 = D53 ^ D54; - wire D54_55 = D54 ^ D55; wire D55_56 = D55 ^ D56; - wire D56_57 = D56 ^ D57; wire D57_58 = D57 ^ D58; - wire D58_59 = D58 ^ D59; wire D59_60 = D59 ^ D60; - wire D60_61 = D60 ^ D61; wire D61_62 = D61 ^ D62; - wire D62_63 = D62 ^ D63; - -// Calculate terms which might have a single use. They are calculated here -// so that the parity trees can be balanced. - - wire D5_11 = D5 ^ D11; wire D15_23 = D15 ^ D23; - wire D4_10 = D4 ^ D10; wire D14_22 = D14 ^ D22; - wire D3_9 = D3 ^ D9; wire D13_21 = D13 ^ D21; - wire D2_8 = D2 ^ D8; wire D12_20 = D12 ^ D20; - wire D1_7 = D1 ^ D7; wire D11_19 = D11 ^ D19; - wire D0_6 = D0 ^ D6; wire D10_18 = D10 ^ D18; - wire D8_11 = D8 ^ D11; wire D15_17 = D15 ^ D17; - wire D7_10 = D7 ^ D10; wire D14_16 = D14 ^ D16; - wire D6_9 = D6 ^ D9; wire D13_15 = D13 ^ D15; - wire D0_9 = D0 ^ D9; - wire D5_13 = D5 ^ D13; wire D22_24 = D22 ^ D24; - wire D4_12 = D4 ^ D12; wire D21_23 = D21 ^ D23; - wire D3_11 = D3 ^ D11; wire D20_22 = D20 ^ D22; - wire D2_10 = D2 ^ D10; wire D19_21 = D19 ^ D21; - wire D1_9 = D1 ^ D9; wire D18_20 = D18 ^ D20; - wire D0_8 = D0 ^ D8; wire D17_19 = D17 ^ D19; - wire D5_7 = D5 ^ D7; wire D12_18 = D12 ^ D18; - wire D4_6 = D4 ^ D6; wire D11_17 = D11 ^ D17; - wire D3_5 = D3 ^ D5; wire D10_16 = D10 ^ D16; - wire D2_4 = D2 ^ D4; wire D9_15 = D9 ^ D15; - wire D29_31 = D29 ^ D31; wire D37_40 = D37 ^ D40; - wire D28_30 = D28 ^ D30; wire D36_39 = D36 ^ D39; - wire D27_29 = D27 ^ D29; wire D35_38 = D35 ^ D38; - wire D26_28 = D26 ^ D28; wire D34_37 = D34 ^ D37; - wire D25_27 = D25 ^ D27; wire D33_36 = D33 ^ D36; - wire D24_26 = D24 ^ D26; wire D32_35 = D32 ^ D35; - wire D31_33 = D31 ^ D33; wire D30_32 = D30 ^ D32; - wire D36_49 = D36 ^ D49; wire D54_57 = D54 ^ D57; - wire D35_48 = D35 ^ D48; wire D53_56 = D53 ^ D56; - wire D34_47 = D34 ^ D47; wire D52_55 = D52 ^ D55; - wire D33_46 = D33 ^ D46; wire D51_54 = D51 ^ D54; - wire D32_45 = D32 ^ D45; wire D50_53 = D50 ^ D53; - wire D31_44 = D31 ^ D44; wire D49_52 = D49 ^ D52; - wire D38_44 = D38 ^ D44; wire D37_43 = D37 ^ D43; - wire D36_42 = D36 ^ D42; wire D38_41 = D38 ^ D41; - wire D59_61 = D59 ^ D61; wire D61_63 = D61 ^ D63; - wire D58_60 = D58 ^ D60; wire D57_59 = D57 ^ D59; - wire D57_63 = D57 ^ D63; wire D56_62 = D56 ^ D62; - wire D45_52 = D45 ^ D52; wire D55_60 = D55 ^ D60; - wire D42_49 = D42 ^ D49; wire D41_48 = D41 ^ D48; - wire D40_47 = D40 ^ D47; wire D39_46 = D39 ^ D46; - wire D38_45 = D38 ^ D45; - wire D37_44 = D37 ^ D44; wire D48_51 = D48 ^ D51; - wire D24_27 = D24 ^ D27; wire D30_52 = D30 ^ D52; - wire D23_26 = D23 ^ D26; wire D29_51 = D29 ^ D51; - wire D22_25 = D22 ^ D25; wire D28_50 = D28 ^ D50; - wire D21_24 = D21 ^ D24; wire D27_49 = D27 ^ D49; - wire D57_62 = D57 ^ D62; wire D56_61 = D56 ^ D61; - wire D54_59 = D54 ^ D59; - wire D9_12 = D9 ^ D12; wire D20_24 = D20 ^ D24; - wire D36_43 = D36 ^ D43; - wire D0_5 = D0 ^ D5; wire D9_16 = D9 ^ D16; - wire D19_26 = D19 ^ D26; wire D33_42 = D33 ^ D42; - wire D50_52 = D50 ^ D52; - wire D9_11 = D9 ^ D11; wire D18_29 = D18 ^ D29; - wire D36_41 = D36 ^ D41; - wire D53_55 = D53 ^ D55; - wire D8_10 = D8 ^ D10; wire D17_28 = D17 ^ D28; - wire D35_40 = D35 ^ D40; wire D52_54 = D52 ^ D54; - wire D10_21 = D10 ^ D21; wire D32_34 = D32 ^ D34; - wire D37_39 = D37 ^ D39; wire D43_45 = D43 ^ D45; - wire D14_20 = D14 ^ D20; wire D25_38 = D25 ^ D38; - wire D45_47 = D45 ^ D47; wire D60_62 = D60 ^ D62; - wire D13_19 = D13 ^ D19; - wire D24_37 = D24 ^ D37; wire D44_46 = D44 ^ D46; - wire D51_53 = D51 ^ D53; - wire D0_2 = D0 ^ D2; wire D6_8 = D6 ^ D8; - wire D15_18 = D15 ^ D18; - wire D48_50 = D48 ^ D50; wire D59_63 = D59 ^ D63; - wire D3_17 = D3 ^ D17; wire D56_58 = D56 ^ D58; - wire D2_16 = D2 ^ D16; wire D44_51 = D44 ^ D51; - wire D55_57 = D55 ^ D57; - wire D24_33 = D24 ^ D33; wire D44_49 = D44 ^ D49; - wire D12_16 = D12 ^ D16; wire D58_63 = D58 ^ D63; - - -// Need to distribute this logic so that it can be fast. The user can -// use 1 or 2 outputs, just so long as their XOR is the final value. - - assign data_part_1_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = // first half of each formula - { (((D5_11 ^ D8_9) ^ (D15_23 ^D24_25)) ^ ((D27_28 ^D29_30) ^ (D31_33 ^D36_49))), - (((D4_10 ^ D7_8) ^ (D14_22 ^D23_24)) ^ ((D26_27 ^D28_29) ^ (D30_32 ^D35_48))), - (((D3_9 ^ D6_7) ^ (D13_21 ^D22_23)) ^ ((D25_26 ^D27_28) ^ (D29_31 ^D34_47))), - (((D2_8 ^ D5_6) ^ (D12_20 ^D21_22)) ^ ((D24_25 ^D26_27) ^ (D28_30 ^D33_46))), - (((D1_7 ^ D4_5) ^ (D11_19 ^D20_21)) ^ ((D23_24 ^D25_26) ^ (D27_29 ^D32_45))), - (((D0_6 ^ D3_4) ^ (D10_18 ^D19_20)) ^ ((D22_23 ^D24_25) ^ (D26_28 ^D31_44))), - (((D2_3 ^ D8_11) ^ (D15_17 ^D18_19)) ^ ((D21_22 ^D28_29) ^ (D31_33 ^D36_37))), - (((D1_2 ^ D7_10) ^ (D14_16 ^D17_18)) ^ ((D20_21 ^D27_28) ^ (D30_32 ^D35_36))), - (((D0_1 ^ D6_9) ^ (D13_15 ^D16_17)) ^ ((D19_20 ^D26_27) ^ (D29_31 ^D34_35))), - (((D0_9 ^ D11_12) ^ (D14_16 ^D18_19)) ^ ((D23_24 ^D26_27) ^ (D29_31 ^D34_35))), - (((D5_13 ^ D9_10) ^ (D17_18 ^D22_24)) ^ ((D26_27 ^D29_31) ^ (D34_35 ^D37_40))), - (((D4_12 ^ D8_9) ^ (D16_17 ^D21_23)) ^ ((D25_26 ^D28_30) ^ (D33_34 ^D36_39))), - (((D3_11 ^ D7_8) ^ (D15_16 ^D20_22)) ^ ((D24_25 ^D27_29) ^ (D32_33 ^D35_38))), - (((D2_10 ^ D6_7) ^ (D14_15 ^D19_21)) ^ ((D23_24 ^D26_28) ^ (D31_32 ^D34_37))), - (((D1_9 ^ D5_6) ^ (D13_14 ^D18_20)) ^ ((D22_23 ^D25_27) ^ (D30_31 ^D33_36))), - (((D0_8 ^ D4_5) ^ (D12_13 ^D17_19)) ^ ((D21_22 ^D24_26) ^ (D29_30 ^D32_35))), - (((D3_4 ^ D5_7) ^ (D8_9 ^D12_18)) ^ ((D15_16 ^D20_21) ^ (D24_27 ^D30_52))), - (((D2_3 ^ D4_6) ^ (D7_8 ^D11_17)) ^ ((D14_15 ^D19_20) ^ (D23_26 ^D29_51))), - (((D1_2 ^ D3_5) ^ (D6_7 ^D10_16)) ^ ((D13_14 ^D18_19) ^ (D22_25 ^D28_50))), - (((D0_1 ^ D2_4) ^ (D5_6 ^D9_15)) ^ ((D12_13 ^D17_18) ^ (D21_24 ^D27_49))), - (((D0_1 ^ D3_4) ^ (D9_12 ^D14_15)) ^ ((D16_17 ^D20_24) ^ (D25_26 ^D27_28))), - (((D0_5 ^ D2_3) ^ (D9_16 ^D13_14)) ^ ((D19_26 ^D28_29) ^ (D31_32 ^D33_42))), - (((D1_2 ^ D4_5) ^ (D9_11 ^D12_13)) ^ ((D18_29 ^D23_24) ^ (D32_33 ^D34_35))), - (((D0_1 ^ D3_4) ^ (D8_10 ^D11_12)) ^ ((D17_28 ^D22_23) ^ (D31_32 ^D33_34))), - (((D0_5 ^ D2_3) ^ (D7_8 ^D10_21)) ^ ((D15_16 ^D22_23) ^ (D24_25 ^D28_29))), - (((D1_2 ^ D4_5) ^ (D6_7 ^D8_11)) ^ ((D14_20 ^D21_22) ^ (D25_38 ^D29_30))), - (((D0_1 ^ D3_4) ^ (D5_6 ^D7_10)) ^ ((D13_19 ^D20_21) ^ (D24_37 ^D28_29))), - (((D0_2 ^ D3_4) ^ (D6_8 ^D11_12)) ^ ((D15_18 ^D19_20) ^ (D24_25 ^D29_30))), - (((D1_2 ^ D3_17) ^ (D7_8 ^D9_10)) ^ ((D14_15 ^D18_19) ^ (D25_27 ^D31_32))), - (((D0_1 ^ D2_16) ^ (D6_7 ^D8_9)) ^ ((D13_14 ^D17_18) ^ (D24_26 ^D30_31))), - (((D0_1 ^ D6_7) ^ (D9_11 ^D12_13)) ^ ((D16_17 ^D24_33) ^ (D27_28 ^D34_35))), - (((D0_6 ^ D9_10) ^ (D12_16 ^D24_25)) ^ ((D26_28 ^D29_30) ^ (D31_32 ^D34_37))) - }; - - assign data_part_2_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - { (((D43_44 ^ D46_47) ^ (D52_53 ^ D54_57)) ^ ((D59_60 ^ D62))), - (((D42_43 ^ D45_46) ^ (D51_52 ^ D53_56)) ^ ((D58_59 ^ D61_63))), - (((D41_42 ^ D44_45) ^ (D50_51 ^ D52_55)) ^ ((D57_58 ^ D60) ^ D62_63)), - (((D40_41 ^ D43_44) ^ (D49_50 ^ D51_54)) ^ ((D56_57 ^ D59_61) ^ D62_63)), - (((D39_40 ^ D42_43) ^ (D48_49 ^ D50_53)) ^ ((D55_56 ^ D58_60) ^ (D61_62 ^ D63))), - (((D38_39 ^ D41_42) ^ (D47_48 ^ D49_52)) ^ ((D54_55 ^ D57_59) ^ (D60_61 ^ D62))), - (((D38_44 ^ D40_41) ^ (D48_49 ^ D51_52)) ^ ((D56_57 ^ D58) ^ D61_62)), - (((D37_43 ^ D39_40) ^ (D47_48 ^ D50_51)) ^ ((D55_56 ^ D57_63) ^ D60_61)), - (((D36_42 ^ D38_39) ^ (D46_47 ^ D49_50)) ^ ((D54_55 ^ D56_62) ^ D59_60)), - (((D36_37 ^ D38_41) ^ (D43_44 ^ D45_52)) ^ ((D47_48 ^ D55_60) ^ (D57_58 ^ D61_62))), - (((D42_49 ^ D51_52) ^ (D53_56 ^ D61_62))), - (((D41_48 ^ D50_51) ^ (D52_55 ^ D60_61))), - (((D40_47 ^ D49_50) ^ (D51_54 ^ D59_60))), - (((D39_46 ^ D48_49) ^ (D50_53 ^ D58_59))), - (((D38_45 ^ D47_48) ^ (D49_52 ^ D57_58))), - (((D37_44 ^ D46_47) ^ (D48_51 ^ D56_57))), - (((D33_34 ^ D44_45) ^ (D49_50 ^ D53_54)) ^ ((D55_56 ^ D57_62) ^ D59_60)), - (((D32_33 ^ D43_44) ^ (D48_49 ^ D52_53)) ^ ((D54_55 ^ D56_61) ^ (D58_59 ^ D63))), - (((D31_32 ^ D42_43) ^ (D47_48 ^ D51_52)) ^ ((D53_54 ^ D55_60) ^ (D57_58 ^ D62))), - (((D30_31 ^ D41_42) ^ (D46_47 ^ D50_51)) ^ ((D52_53 ^ D54_59) ^ (D56_57 ^ D61_63))), - (((D31_33 ^ D36_43) ^ (D40_41 ^ D44_45)) ^ ((D47_48 ^ D50_51) ^ (D54_55 ^ D56_57))) ^ D58_59, - (((D35_36 ^ D39_40) ^ (D50_52 ^ D55_56)) ^ ((D58_59 ^ D60) ^ D62_63)), - (((D36_41 ^ D38_39) ^ (D43_44 ^ D46_47)) ^ ((D51_52 ^ D53_55) ^ (D58 ^ D60_61))), - (((D35_40 ^ D37_38) ^ (D42_43 ^ D45_46)) ^ ((D50_51 ^ D52_54) ^ (D57_63 ^ D59_60))), - (((D32_34 ^ D37_39) ^ (D41_42 ^ D43_45)) ^ ((D46_47 ^ D50_51) ^ (D52_54 ^ D56_57))) ^ D58_60, - (((D40_41 ^ D42_43) ^ (D45_47 ^ D50_51)) ^ ((D52_54 ^ D55_56) ^ D60_62)), - (((D39_40 ^ D41_42) ^ (D44_46 ^ D49_50)) ^ ((D51_53 ^ D54_55) ^ (D59 ^ D61_63))), - (((D31_33 ^ D38_39) ^ (D40_41 ^ D44_45)) ^ ((D46_47 ^ D48_50) ^ (D57_58 ^ D59_63))), - (((D33_36 ^ D37_38) ^ (D39_40 ^ D45_52)) ^ ((D53_54 ^ D56_58) ^ D59_60)), - (((D32_35 ^ D36_37) ^ (D38_39 ^ D44_51)) ^ ((D52_53 ^ D55_57) ^ D58_59)), - (((D37_38 ^ D44_49) ^ (D46_47 ^ D50_51)) ^ ((D53_56 ^ D58_59) ^ (D60 ^ D62_63))), - (((D44_45 ^ D47_48) ^ (D50_53 ^ D54_55)) ^ ((D58_63 ^ D60_61))) - }; -endmodule - -module crc_32_64_crc_private ( - use_F_for_CRC, - present_crc, - crc_part_1_out, crc_part_2_out -); - input use_F_for_CRC; - input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; - output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] crc_part_1_out; - output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] crc_part_2_out; - -/* -// CRC input dependencies -{ -C1 ^C4 ^C11^C12 ^C14^C15 ^C17 ^C20^C21^C22 ^C25 ^C27^C28 ^C30, -C0 ^C3 ^C10^C11 ^C13^C14 ^C16 ^C19^C20^C21 ^C24 ^C26^C27 ^C29 ^C31, -C2 ^C9^C10 ^C12^C13 ^C15 ^C18^C19^C20 ^C23 ^C25^C26 ^C28 ^C30^C31, -C1 ^C8^C9 ^C11^C12 ^C14 ^C17^C18^C19 ^C22 ^C24^C25 ^C27 ^C29^C30^C31, -C0 ^C7^C8 ^C10^C11 ^C13 ^C16^C17^C18 ^C21 ^C23^C24 ^C26 ^C28^C29^C30^C31, -C6^C7 ^C9^C10 ^C12 ^C15^C16^C17 ^C20 ^C22^C23 ^C25 ^C27^C28^C29^C30, -C1 ^C4^C5^C6 ^C8^C9 ^C12 ^C16^C17 ^C19^C20 ^C24^C25^C26 ^C29^C30, -C0 ^C3^C4^C5 ^C7^C8 ^C11 ^C15^C16 ^C18^C19 ^C23^C24^C25 ^C28^C29 ^C31, -C2^C3^C4 ^C6^C7 ^C10 ^C14^C15 ^C17^C18 ^C22^C23^C24 ^C27^C28 ^C30, -C2^C3^C4^C5^C6 ^C9 ^C11^C12^C13 ^C15^C16 ^C20 ^C23 ^C25^C26 ^C28^C29^C30, -C2^C3 ^C5 ^C8 ^C10 ^C17 ^C19^C20^C21 ^C24 ^C29^C30, -C1^C2 ^C4 ^C7 ^C9 ^C16 ^C18^C19^C20 ^C23 ^C28^C29, -C0^C1 ^C3 ^C6 ^C8 ^C15 ^C17^C18^C19 ^C22 ^C27^C28, -C0 ^C2 ^C5 ^C7 ^C14 ^C16^C17^C18 ^C21 ^C26^C27, -C1 ^C4 ^C6 ^C13 ^C15^C16^C17 ^C20 ^C25^C26, -C0 ^C3 ^C5 ^C12 ^C14^C15^C16 ^C19 ^C24^C25, -C1^C2 ^C12^C13 ^C17^C18 ^C20^C21^C22^C23^C24^C25 ^C27^C28 ^C30, -C0^C1 ^C11^C12 ^C16^C17 ^C19^C20^C21^C22^C23^C24 ^C26^C27 ^C29 ^C31, -C0 ^C10^C11 ^C15^C16 ^C18^C19^C20^C21^C22^C23 ^C25^C26 ^C28 ^C30, -C9^C10 ^C14^C15 ^C17^C18^C19^C20^C21^C22 ^C24^C25 ^C27 ^C29 ^C31, -C1 ^C4 ^C8^C9 ^C11^C12^C13 ^C15^C16 ^C18^C19 ^C22^C23^C24^C25^C26^C27, -C0^C1 ^C3^C4 ^C7^C8 ^C10 ^C18 ^C20 ^C23^C24 ^C26^C27^C28 ^C30^C31, -C0^C1^C2^C3^C4 ^C6^C7 ^C9 ^C11^C12 ^C14^C15 ^C19^C20^C21 ^C23 ^C26 ^C28^C29, -C0^C1^C2^C3 ^C5^C6 ^C8 ^C10^C11 ^C13^C14 ^C18^C19^C20 ^C22 ^C25 ^C27^C28 ^C31, -C0 ^C2 ^C5 ^C7 ^C9^C10^C11 ^C13^C14^C15 ^C18^C19^C20 ^C22 ^C24^C25^C26 ^C28, -C6 ^C8^C9^C10^C11 ^C13 ^C15 ^C18^C19^C20 ^C22^C23^C24 ^C28 ^C30, -C5 ^C7^C8^C9^C10 ^C12 ^C14 ^C17^C18^C19 ^C21^C22^C23 ^C27 ^C29 ^C31, -C1 ^C6^C7^C8^C9 ^C12^C13^C14^C15^C16 ^C18 ^C25^C26^C27 ^C31, -C0^C1 ^C4^C5^C6^C7^C8 ^C13 ^C20^C21^C22 ^C24 ^C26^C27^C28, -C0 ^C3^C4^C5^C6^C7 ^C12 ^C19^C20^C21 ^C23 ^C25^C26^C27, -C1^C2^C3 ^C5^C6 ^C12 ^C14^C15 ^C17^C18^C19 ^C21 ^C24 ^C26^C27^C28 ^C30^C31, -C0 ^C2 ^C5 ^C12^C13 ^C15^C16 ^C18 ^C21^C22^C23 ^C26 ^C28^C29 ^C31 -} - */ -// CRC terms depend ONLY on CRC data from the previous clock - wire C31, C30, C29, C28, C27, C26, C25, C24, C23, C22, C21, C20, C19, C18, C17; - wire C16, C15, C14, C13, C12, C11, C10, C9, C8, C7, C6, C5, C4, C3, C2, C1, C0; - assign {C31, C30, C29, C28, C27, C26, C25, C24, - C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, - C11, C10, C9, C8, C7, C6, C5, C4, C3, C2, C1, C0} = - present_crc[`NUMBER_OF_BITS_IN_CRC_32- 1 : 0] - | {`NUMBER_OF_BITS_IN_CRC_32{use_F_for_CRC}}; - - wire C0_1 = C0 ^ C1; wire C1_2 = C1 ^ C2; - wire C2_3 = C2 ^ C3; wire C3_4 = C3 ^ C4; - wire C4_5 = C4 ^ C5; wire C5_6 = C5 ^ C6; - wire C6_7 = C6 ^ C7; wire C7_8 = C7 ^ C8; - wire C8_9 = C8 ^ C9; wire C9_10 = C9 ^ C10; - wire C10_11 = C10 ^ C11; wire C11_12 = C11 ^ C12; - wire C12_13 = C12 ^ C13; wire C13_14 = C13 ^ C14; - wire C14_15 = C14 ^ C15; wire C15_16 = C15 ^ C16; - wire C16_17 = C16 ^ C17; wire C17_18 = C17 ^ C18; - wire C18_19 = C18 ^ C19; wire C19_20 = C19 ^ C20; - wire C20_21 = C20 ^ C21; wire C21_22 = C21 ^ C22; - wire C22_23 = C22 ^ C23; wire C23_24 = C23 ^ C24; - wire C24_25 = C24 ^ C25; wire C25_26 = C25 ^ C26; - wire C26_27 = C26 ^ C27; wire C27_28 = C27 ^ C28; - wire C28_29 = C28 ^ C29; wire C29_30 = C29 ^ C30; - wire C30_31 = C30 ^ C31; - -// Calculate terms which might have a single use. They are calculated here -// so that the parity trees can be balanced. - wire C1_4 = C1 ^ C4; wire C0_3 = C0 ^ C3; - wire C0_2 = C0 ^ C2; wire C5_7 = C5 ^ C7; - wire C17_20 = C17 ^ C20; wire C25_30 = C25 ^ C30; - wire C16_19 = C16 ^ C19; wire C24_31 = C24 ^ C31; - wire C2_15 = C2 ^ C15; wire C18_23 = C18 ^ C23; - wire C1_14 = C1 ^ C14; wire C17_22 = C17 ^ C22; - wire C0_13 = C0 ^ C13; wire C16_21 = C16 ^ C21; - wire C27_29 = C27 ^ C29; wire C12_15 = C12 ^ C15; - wire C20_25 = C20 ^ C25; wire C12_24 = C12 ^ C24; - wire C11_23 = C11 ^ C23; wire C4_10 = C4 ^ C10; - wire C24_30 = C24 ^ C30; wire C6_9 = C6 ^ C9; - wire C13_20 = C13 ^ C20; wire C23_28 = C23 ^ C28; - wire C5_8 = C5 ^ C8; wire C10_17 = C10 ^ C17; - wire C21_24 = C21 ^ C24; wire C4_7 = C4 ^ C7; - wire C9_16 = C9 ^ C16; wire C20_23 = C20 ^ C23; - wire C3_6 = C3 ^ C6; wire C8_15 = C8 ^ C15; - wire C19_22 = C19 ^ C22; wire C14_16 = C14 ^ C16; - wire C6_13 = C6 ^ C13; wire C15_20 = C15 ^ C20; - wire C5_12 = C5 ^ C12; wire C14_19 = C14 ^ C19; - wire C29_31 = C29 ^ C31; wire C28_30 = C28 ^ C30; - wire C10_18 = C10 ^ C18; wire C20_26 = C20 ^ C26; - wire C4_9 = C4 ^ C9; wire C21_23 = C21 ^ C23; - wire C8_18 = C8 ^ C18; wire C22_25 = C22 ^ C25; - wire C11_13 = C11 ^ C13; wire C20_22 = C20 ^ C22; - wire C26_28 = C26 ^ C28; wire C15_18 = C15 ^ C18; - wire C14_17 = C14 ^ C17; wire C23_27 = C23 ^ C27; - wire C1_12 = C1 ^ C12; wire C18_25 = C18 ^ C25; - wire C8_13 = C8 ^ C13; wire C22_24 = C22 ^ C24; - wire C12_19 = C12 ^ C19; wire C23_25 = C23 ^ C25; - wire C3_12 = C3 ^ C12; wire C19_21 = C19 ^ C21; - wire C24_26 = C24 ^ C26; wire C5_18 = C5 ^ C18; - wire C23_26 = C23 ^ C26; - - assign crc_part_1_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - { - (C1_4 ^ C11_12) ^ (C14_15 ^ C17_20), - (C0_3 ^ C10_11) ^ (C13_14 ^ C16_19), - (C2_15 ^ C9_10) ^ (C12_13 ^ C18_23), - (C1_14 ^ C8_9) ^ (C11_12 ^ C17_22), - (C0_13 ^ C7_8) ^ (C10_11 ^ C16_21), - (C6_7 ^ C9_10) ^ (C12_15 ^ C16_17), - (C1_4 ^ C5_6) ^ (C8_9 ^ C12_24), - (C0_3 ^ C4_5) ^ (C7_8 ^ C11_23), - (C2_3 ^ C4_10) ^ (C6_7 ^ C14_15), - (C2_3 ^ C4_5) ^ (C6_9 ^ C11_12), - (C2_3 ^ C5_8) ^ (C10_17 ^ C19_20), - (C1_2 ^ C4_7) ^ (C9_16 ^ C18_19), - (C0_1 ^ C3_6) ^ (C8_15 ^ C17_18), - (C0_2 ^ C5_7) ^ (C14_16 ^ C17_18), - (C1_4 ^ C6_13) ^ (C15_20 ^ C16_17), - (C0_3 ^ C5_12) ^ (C14_19 ^ C15_16), - (C1_2 ^ C12_13) ^ (C17_18 ^ C20_21), - (C0_1 ^ C11_12) ^ (C16_17 ^ C19_20), - (C0 ^ C10_11) ^ (C15_16 ^ C18_19), - (C9_10 ^ C14_15) ^ (C17_18 ^ C19_20), - (C1_4 ^ C8_9) ^ (C11_12 ^ C13), - (C0_1 ^ C3_4) ^ (C7_8 ^ C10_18), - (C0_1 ^ C2_3) ^ (C4_9 ^ C6_7), - (C0_1 ^ C2_3) ^ (C5_6 ^ C8_18), - (C0_2 ^ C5_7) ^ (C9_10 ^ C11_13), - (C6_13 ^ C8_9) ^ (C10_11 ^ C15_18), - (C5_12 ^ C7_8) ^ (C9_10 ^ C14_17), - (C1_12 ^ C6_7) ^ (C8_9 ^ C13_14), - (C0_1 ^ C4_5) ^ (C6_7 ^ C8_13), - (C0_3 ^ C4_5) ^ (C6_7 ^ C12_19), - (C1_2 ^ C3_12) ^ (C5_6 ^ C14_15), - (C0_2 ^ C5_18) ^ (C12_13 ^ C15_16) - }; - - assign crc_part_2_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - { - (C21_22 ^ C25_30) ^ (C27_28 ), - (C20_21 ^ C24_31) ^ (C26_27 ^ C29 ), - (C19_20 ^ C25_26) ^ (C28 ^ C30_31), - (C18_19 ^ C24_25) ^ (C27_29 ^ C30_31), - (C17_18 ^ C23_24) ^ (C26 ^ C28_29) ^ (C30_31), - (C20_25 ^ C22_23) ^ (C27_28 ^ C29_30), - (C16_17 ^ C19_20) ^ (C25_26 ^ C29_30), - (C15_16 ^ C18_19) ^ (C24_25 ^ C28_29) ^ (C31), - (C17_18 ^ C22_23) ^ (C24_30 ^ C27_28), - (C13_20 ^ C15_16) ^ (C23_28 ^ C25_26) ^ (C29_30), - (C21_24 ^ C29_30), - (C20_23 ^ C28_29), - (C19_22 ^ C27_28), - (C21 ^ C26_27), - (C25_26), - (C24_25), - (C22_23 ^ C24_25) ^ (C27_28 ^ C30), - (C21_22 ^ C23_24) ^ (C26_27 ^ C29_31), - (C20_21 ^ C22_23) ^ (C25_26 ^ C28_30), - (C21_22 ^ C24_25) ^ (C27 ^ C29_31), - (C15_16 ^ C18_19) ^ (C22_23 ^ C24_25) ^ (C26_27), - (C20_26 ^ C23_24) ^ (C27_28 ^ C30_31), - (C11_12 ^ C14_15) ^ (C19_20 ^ C21_23) ^ (C26 ^ C28_29), - (C10_11 ^ C13_14) ^ (C19_20 ^ C22_25) ^ (C27_28 ^ C31), - (C14_15 ^ C18_19) ^ (C20_22 ^ C24_25) ^ (C26_28), - (C19_20 ^ C22_23) ^ (C24 ^ C28_30), - (C18_19 ^ C21_22) ^ (C23_27 ^ C29_31), - (C15_16 ^ C18_25) ^ (C26_27 ^ C31), - (C20_21 ^ C22_24) ^ (C26_27 ^ C28), - (C20_21 ^ C23_25) ^ (C26_27), - (C17_18 ^ C19_21) ^ (C24_26 ^ C27_28) ^ (C30_31), - (C21_22 ^ C23_26) ^ (C28_29 ^ C31) - }; -endmodule - -module crc_32_64_private ( - use_F_for_CRC, - present_crc, - data_in_64, - next_crc -); - parameter NUMBER_OF_BITS_APPLIED = 64; - input use_F_for_CRC; - input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; - input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_64; - output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc; - -// There are 2 obvious ways to implement these functions: -// 1) XOR the State bits with the Input bits, then calculate the XOR's -// 2) Independently calculate a result for Inputs and State variables, -// then XOR the results together. -// Once the applied data width > CRC size, it seems best to use the second technique. -// The formulas for each output term are seen to have a large number of -// terms depending on input data, and a smaller number of terms dependent -// on the initial value of the CRC. -// Calculate the Data component of the dependency. This can be done in -// a pipelined fashion, since it doesn't matter how long it takes. -// Calculate the CRC component of the dependency. Each clock this must -// be XOR'd with the correctly time-aligned Data component, and the -// results must be put back in the running CRC latches. -// It looks like 64 bits per clock may be FASTER than 32 bits per clock, -// because the Data dependency can be done in several clocks. - -// Instantiate the Data part of the dependency. - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_1_out; - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_2_out; - -crc_32_64_data_private crc_32_64_data_part ( - .data_in_64 (data_in_64[NUMBER_OF_BITS_APPLIED - 1 : 0]), - .data_part_1_out (data_part_1_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), - .data_part_2_out (data_part_2_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) -); - - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_depend_part = - data_part_1_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] - ^ data_part_2_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - -// Instantiate the CRC part of the dependency. - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] crc_part_1_out; - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] crc_part_2_out; - -crc_32_64_crc_private crc_32_64_crc_part ( - .use_F_for_CRC (use_F_for_CRC), - .present_crc (present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), - .crc_part_1_out (crc_part_1_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), - .crc_part_2_out (crc_part_2_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) -); - - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] first_part = - data_depend_part[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] - ^ crc_part_1_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; // source depth 4 gates - - assign next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - first_part[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] - ^ crc_part_2_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; // source depth 5 gates -endmodule - - `define COMPARE_PARALLEL_VERSIONS_AGAINST_SERIAL_VERSION_FOR_DEBUG -`ifdef COMPARE_PARALLEL_VERSIONS_AGAINST_SERIAL_VERSION_FOR_DEBUG -// a slow one to make sure I did things right. -module crc_32_1_bit_at_a_time ( - use_F_for_CRC, - present_crc, - data_in_1, - next_crc -); - input use_F_for_CRC; - input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; - input data_in_1; - output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc; - - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] resettable_crc; - assign resettable_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - {`NUMBER_OF_BITS_IN_CRC_32{use_F_for_CRC}} - | present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - - wire xor_value = data_in_1 ^ resettable_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1]; - - assign next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = xor_value - ? {resettable_crc[`NUMBER_OF_BITS_IN_CRC_32 - 2 : 0], 1'b0} ^ `CRC - : {resettable_crc[`NUMBER_OF_BITS_IN_CRC_32 - 2 : 0], 1'b0}; -endmodule - -module test_crc_1 (); - - integer i, j; - reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc; - reg use_F_for_CRC; - reg [7:0] data_in_8; - reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_8; - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_8; - reg [15:0] data_in_16; - reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_16; - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_16; - reg [23:0] data_in_24; - reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_24; - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_24; - reg [31:0] data_in_32; - reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_32; - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_32; - reg [63:0] data_in_64; - reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_64; - wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_64; - - -// Assign data_in_8 before invoking. This consumes data MSB first -task apply_1_8_to_crc; - integer j; - begin - #0 ; - present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - next_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - for (j = 0; j < 8; j = j + 1) // apply data bit at a time - begin - #0 ; - present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - data_in_8[7:0] = {data_in_8[6:0], 1'b0}; // Shift byte out MSB first - use_F_for_CRC = 1'b0; - end - end -endtask - -task apply_16_to_crc; - integer j; - begin - #0 ; - present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = // remember: apply 16 bits - next_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - use_F_for_CRC = 1'b0; - end -endtask - -task apply_24_to_crc; - integer j; - begin - #0 ; - present_crc_24[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = // remember: apply 24 bits - next_crc_24[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - use_F_for_CRC = 1'b0; - end -endtask - -task apply_32_to_crc; - integer j; - begin - #0 ; - present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = // remember: apply 32 bits - next_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - use_F_for_CRC = 1'b0; - end -endtask - -task apply_64_to_crc; - integer j; - begin - #0 ; - present_crc_64[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = // remember: apply 64 bits - next_crc_64[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - use_F_for_CRC = 1'b0; - end -endtask - - initial - begin - #10; - $display ("running serial version of code against parallel versions"); - use_F_for_CRC = 1'b1; - for (i = 0; i < 43; i = i + 1) - begin - data_in_8[7:0] = 8'h00; - apply_1_8_to_crc; - end - data_in_8[7:0] = 8'h28; - apply_1_8_to_crc; - if (~present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'h864D7F99) - $display ("*** 1-bit after 40 bytes of 1'b0, I want 32'h864D7F99, I get 32\`h%x", - ~present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - if (~present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'h864D7F99) - $display ("*** 8-bit after 40 bytes of 1'b0, I want 32'h864D7F99, I get 32\`h%x", - ~present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_8[7:0] = 8'h86; - apply_1_8_to_crc; - data_in_8[7:0] = 8'h4D; - apply_1_8_to_crc; - data_in_8[7:0] = 8'h7F; - apply_1_8_to_crc; - data_in_8[7:0] = 8'h99; - apply_1_8_to_crc; -// The receiver sees the value 32'hC704DD7B when the message is -// received no errors. Bit reversed, that is 32'hDEBB20E3. - if (present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 1-bit 0's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - if (present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 8-bit 0's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - - use_F_for_CRC = 1'b1; - data_in_16[15:0] = 16'h0000; - for (i = 0; i < 21; i = i + 1) - begin - apply_16_to_crc; - end - data_in_16[15:0] = 16'h0028; - apply_16_to_crc; - if (~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'h864D7F99) - $display ("*** 16-bit after 40 bytes of 1'b0, I want 32'h864D7F99, I get 32\`h%x", - ~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_16[15:0] = 16'h864D; - apply_16_to_crc; - data_in_16[15:0] = 16'h7F99; - apply_16_to_crc; - if (present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 16-bit 0's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - - use_F_for_CRC = 1'b1; - data_in_24[23:0] = 24'h000000; - for (i = 0; i < 14; i = i + 1) - begin - apply_24_to_crc; - end - present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - present_crc_24[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - data_in_16[15:0] = 16'h0028; - apply_16_to_crc; - if (~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'h864D7F99) - $display ("*** 24-bit after 40 bytes of 1'b0, I want 32'h864D7F99, I get 32\`h%x", - ~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_16[15:0] = 16'h864D; - apply_16_to_crc; - data_in_16[15:0] = 16'h7F99; - apply_16_to_crc; - if (present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 24-bit 0's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - - use_F_for_CRC = 1'b1; - data_in_32[31:0] = 32'h00000000; - for (i = 0; i < 10; i = i + 1) - begin - apply_32_to_crc; - end - data_in_32[31:0] = 32'h00000028; - apply_32_to_crc; - if (~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'h864D7F99) - $display ("*** 32-bit after 40 bytes of 1'b0, I want 32'h864D7F99, I get 32\`h%x", - ~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_32[31:0] = 32'h864D7F99; - apply_32_to_crc; - if (present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 32-bit 0's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - -// NOTE: WORKING: add 48 - - use_F_for_CRC = 1'b1; - data_in_64[63:0] = 64'h00000000_00000000; - for (i = 0; i < 5; i = i + 1) - begin - apply_64_to_crc; - end - present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - present_crc_64[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - data_in_32[31:0] = 32'h00000028; - apply_32_to_crc; - if (~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'h864D7F99) - $display ("*** 64-bit after 40 bytes of 1'b0, I want 32'h864D7F99, I get 32\`h%x", - ~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_32[31:0] = 32'h864D7F99; - apply_32_to_crc; - if (present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 64-bit 0's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - - - use_F_for_CRC = 1'b1; - for (i = 0; i < 40; i = i + 1) - begin - data_in_8[7:0] = 8'hFF; - apply_1_8_to_crc; - end - for (i = 0; i < 3; i = i + 1) - begin - data_in_8[7:0] = 8'h00; - apply_1_8_to_crc; - end - data_in_8[7:0] = 8'h28; - apply_1_8_to_crc; - if (~present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC55E457A) - $display ("*** 1-bit after 40 bytes of 1'b1, I want 32'hC55E457A, I get 32\`h%x", - ~present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - if (~present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC55E457A) - $display ("*** 8-bit after 40 bytes of 1'b1, I want 32'hC55E457A, I get 32\`h%x", - ~present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_8[7:0] = 8'hC5; - apply_1_8_to_crc; - data_in_8[7:0] = 8'h5E; - apply_1_8_to_crc; - data_in_8[7:0] = 8'h45; - apply_1_8_to_crc; - data_in_8[7:0] = 8'h7A; - apply_1_8_to_crc; - if (present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 1-bit 1's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - if (present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 8-bit 1's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - - use_F_for_CRC = 1'b1; - data_in_16[15:0] = 16'hFFFF; - for (i = 0; i < 20; i = i + 1) - begin - apply_16_to_crc; - end - data_in_16[15:0] = 16'h0000; - apply_16_to_crc; - data_in_16[15:0] = 16'h0028; - apply_16_to_crc; - if (~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC55E457A) - $display ("*** 16-bit after 40 bytes of 1'b1, I want 32'hC55E457A, I get 32\`h%x", - ~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_16[15:0] = 16'hC55E; - apply_16_to_crc; - data_in_16[15:0] = 16'h457A; - apply_16_to_crc; - if (present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 16-bit 1's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - - use_F_for_CRC = 1'b1; - data_in_24[23:0] = 24'hFFFFFF; - for (i = 0; i < 13; i = i + 1) - begin - apply_24_to_crc; - end - present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - present_crc_24[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - data_in_8[7:0] = 8'hFF; - apply_1_8_to_crc; - present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - data_in_16[15:0] = 16'h0000; - apply_16_to_crc; - data_in_16[15:0] = 16'h0028; - apply_16_to_crc; - if (~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC55E457A) - $display ("*** 24-bit after 40 bytes of 1'b1, I want 32'hC55E457A, I get 32\`h%x", - ~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_16[15:0] = 16'hC55E; - apply_16_to_crc; - data_in_16[15:0] = 16'h457A; - apply_16_to_crc; - if (present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 24-bit 1's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - - use_F_for_CRC = 1'b1; - data_in_32[31:0] = 32'hFFFFFFFF; - for (i = 0; i < 10; i = i + 1) - begin - apply_32_to_crc; - end - data_in_32[31:0] = 32'h00000028; - apply_32_to_crc; - if (~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC55E457A) - $display ("*** 32-bit after 40 bytes of 1'b1, I want 32'hC55E457A, I get 32\`h%x", - ~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_32[31:0] = 32'hC55E457A; - apply_32_to_crc; - if (present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 32-bit 1's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - -// NOTE: WORKING: add 48 - - use_F_for_CRC = 1'b1; - data_in_64[63:0] = 64'hFFFFFFFF_FFFFFFFF; - for (i = 0; i < 5; i = i + 1) - begin - apply_64_to_crc; - end - present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - present_crc_64[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - data_in_32[31:0] = 32'h00000028; - apply_32_to_crc; - if (~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC55E457A) - $display ("*** 64-bit after 40 bytes of 1'b1, I want 32'hC55E457A, I get 32\`h%x", - ~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_32[31:0] = 32'hC55E457A; - apply_32_to_crc; - if (present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 64-bit 1's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - - - use_F_for_CRC = 1'b1; - for (i = 0; i < 40; i = i + 1) - begin - data_in_8[7:0] = i + 1; - apply_1_8_to_crc; - end - for (i = 0; i < 3; i = i + 1) - begin - data_in_8[7:0] = 8'h00; - apply_1_8_to_crc; - end - data_in_8[7:0] = 8'h28; - apply_1_8_to_crc; - if (~present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hBF671ED0) - $display ("*** 1-bit after 40 bytes of i+1, I want 32'hBF671ED0, I get 32\`h%x", - ~present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - if (~present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hBF671ED0) - $display ("*** 8-bit after 40 bytes of i+1, I want 32'hBF671ED0, I get 32\`h%x", - ~present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_8[7:0] = 8'hBF; - apply_1_8_to_crc; - data_in_8[7:0] = 8'h67; - apply_1_8_to_crc; - data_in_8[7:0] = 8'h1E; - apply_1_8_to_crc; - data_in_8[7:0] = 8'hD0; - apply_1_8_to_crc; - if (present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 1-bit i+1 after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - if (present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 8-bit i+1 after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - - use_F_for_CRC = 1'b1; - for (i = 0; i < 20; i = i + 1) - begin - data_in_16[15:0] = (((2 * i) + 1) << 8) | ((2 * i) + 2); - apply_16_to_crc; - end - data_in_16[15:0] = 16'h0000; - apply_16_to_crc; - data_in_16[15:0] = 16'h0028; - apply_16_to_crc; - if (~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hBF671ED0) - $display ("*** 16-bit after 40 bytes of i+1, I want 32'hBF671ED0, I get 32\`h%x", - ~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_16[15:0] = 16'hBF67; - apply_16_to_crc; - data_in_16[15:0] = 16'h1ED0; - apply_16_to_crc; - if (present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 16-bit i+1 after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - - use_F_for_CRC = 1'b1; - for (i = 0; i < 13; i = i + 1) - begin - data_in_24[23:0] = (((3 * i) + 1) << 16) | (((3 * i) + 2) << 8) | ((3 * i) + 3); - apply_24_to_crc; - end - present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - present_crc_24[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - data_in_8[7:0] = 8'h28; - apply_1_8_to_crc; - present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - data_in_16[15:0] = 16'h0000; - apply_16_to_crc; - data_in_16[15:0] = 16'h0028; - apply_16_to_crc; - if (~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hBF671ED0) - $display ("*** 24-bit after 40 bytes of i+1, I want 32'hBF671ED0, I get 32\`h%x", - ~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_16[15:0] = 16'hBF67; - apply_16_to_crc; - data_in_16[15:0] = 16'h1ED0; - apply_16_to_crc; - if (present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 24-bit i+1 after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - - use_F_for_CRC = 1'b1; - for (i = 0; i < 10; i = i + 1) - begin - data_in_32[31:0] = (((4 * i) + 1) << 24) | (((4 * i) + 2) << 16) - | (((4 * i) + 3) << 8) | ((4 * i) + 4); - apply_32_to_crc; - end - data_in_32[31:0] = 32'h00000028; - apply_32_to_crc; - if (~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hBF671ED0) - $display ("*** 32-bit after 40 bytes of i+1, I want 32'hBF671ED0, I get 32\`h%x", - ~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_32[31:0] = 32'hBF671ED0; - apply_32_to_crc; - if (present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 32-bit i+1 after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - -// NOTE: WORKING: add 48 - - use_F_for_CRC = 1'b1; - for (i = 0; i < 5; i = i + 1) - begin - data_in_64[63:0] = (((8 * i) + 1) << 56) | (((8 * i) + 2) << 48) - | (((8 * i) + 3) << 40) | (((8 * i) + 4) << 32) - | (((8 * i) + 5) << 24) | (((8 * i) + 6) << 16) - | (((8 * i) + 7) << 8) | ((8 * i) + 8); - apply_64_to_crc; - end - present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = - present_crc_64[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; - data_in_32[31:0] = 32'h00000028; - apply_32_to_crc; - if (~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hBF671ED0) - $display ("*** 64-bit after 40 bytes of i+1, I want 32'hBF671ED0, I get 32\`h%x", - ~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - data_in_32[31:0] = 32'hBF671ED0; - apply_32_to_crc; - if (present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) - $display ("*** 64-bit i+1 after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", - present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); - - end - -crc_32_1_bit_at_a_time test_1_bit ( - .use_F_for_CRC (use_F_for_CRC), - .present_crc (present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), - .data_in_1 (data_in_8[7]), - .next_crc (next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) -); - -crc_32_8_private test_8_bit ( - .use_F_for_CRC (use_F_for_CRC), - .present_crc (present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), - .data_in_8 (data_in_8[7:0]), - .next_crc (next_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) -); - -crc_32_16_private test_16_bit ( - .use_F_for_CRC (use_F_for_CRC), - .present_crc (present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), - .data_in_16 (data_in_16[15:0]), - .next_crc (next_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) -); - -crc_32_24_private test_24_bit ( - .use_F_for_CRC (use_F_for_CRC), - .present_crc (present_crc_24[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), - .data_in_24 (data_in_24[23:0]), - .next_crc (next_crc_24[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) -); - -crc_32_32_private test_32_bit ( - .use_F_for_CRC (use_F_for_CRC), - .present_crc (present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), - .data_in_32 (data_in_32[31:0]), - .next_crc (next_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) -); - -crc_32_64_private test_64_bit ( - .use_F_for_CRC (use_F_for_CRC), - .present_crc (present_crc_64[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), - .data_in_64 (data_in_64[63:0]), - .next_crc (next_crc_64[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) -); - -// Angie Tso's CRC-32 Test Cases -// tsoa@ttc.com -// Angie Tso -// Telecommunications Techniques Corp. E-mail: tsoa@ttc.com -// 20400 Observation Drive, Voice : 301-353-1550 ext.4061 -// Germantown, MD 20876-4023 Fax : 301-353-1536 Mail Stop O -// -// Angie posted the following on the cell-relay list Mon, 24 Oct 1994 18:33:11 GMT=20 -// -------------------------------------------------------------------------------- -// -// Here are the examples of valid AAL-5 CS-PDU in I.363: -// (There are three examples in I.363) -// -// 40 Octets filled with "0" -// CPCS-UU = 0, CPI = 0, Length = 40, CRC-32 = 864d7f99 -// char pkt_data[48]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -// 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -// 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -// 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -// 0x00,0x00,0x00,0x28,0x86,0x4d,0x7f,0x99}; -// -// 40 Octets filled with "1" -// CPCS-UU = 0, CPI = 0, Length = 40, CRC-32 = c55e457a -// char pkt_data[48]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -// 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -// 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -// 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -// 0x00,0x00,0x00,0x28,0xc5,0x5e,0x45,0x7a}; -// -// 40 Octets counting: 1 to 40 -// CPCS-UU = 0, CPI = 0, Length = 40, CRC-32 = bf671ed0 -// char pkt_data[48]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a, -// 0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14, -// 0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e, -// 0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, -// 0x00,0x00,0x00,0x28,0xbf,0x67,0x1e,0xd0}; -// -// Here is one out of my calculation for your reference: -// -// 40 Octets counting: 1 to 40 -// CPCS-UU = 11, CPI = 22, CRC-32 = acba602a -// char pkt_data[48]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a, -// 0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14, -// 0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e, -// 0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, -// 0x11,0x22,0x00,0x28,0xac,0xba,0x60,0x2a}; - -endmodule -`endif // COMPARE_PARALLEL_VERSIONS_AGAINST_SERIAL_VERSION_FOR_DEBUG - -// `define CALCULATE_FUNCTIONAL_DEPENDENCE_ON_INPUT_AND_STATE -`ifdef CALCULATE_FUNCTIONAL_DEPENDENCE_ON_INPUT_AND_STATE - -// Try to make a program which will generate formulas for how to do CRC-32 -// several bits at a time. -// The idea is to get a single-bit implementation which works. (!) -// Then apply an initial value for state and an input data stream. -// The initial value will have a single bit set, and the data stream -// will have a single 1-bit followed by 0 bits. -// Grind the state machine forward the desired number of bits N, and -// look at the stored state. Each place in the shift register where -// there is a 1'b1, that is a bit which is sensitive to the input -// or state bit in a parallel implementation N bits wide. - -module print_out_formulas (); - - parameter NUM_BITS_TO_DO_IN_PARALLEL = 8'h40; - - reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] running_state; - reg [63:0] input_vector; - reg xor_value; - integer i, j, remaining_length; - - reg [2047:0] corner_turner; // 32 bits * 64 shifts - - initial - begin - $display ("Calculating functional dependence on input bits, for %d bits. Rightmost bit is State Bit 0.", - NUM_BITS_TO_DO_IN_PARALLEL); - for (i = 0; i < NUM_BITS_TO_DO_IN_PARALLEL; i = i + 1) - begin - running_state = {`NUMBER_OF_BITS_IN_CRC_32{1'b0}}; - input_vector = 64'h80000000_00000000; // MSB first for this program - for (j = 0; j < i + 1; j = j + 1) - begin - xor_value = input_vector[63] ^ running_state[`NUMBER_OF_BITS_IN_CRC_32 - 1]; - running_state[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = xor_value - ? {running_state[`NUMBER_OF_BITS_IN_CRC_32 - 2 : 0], 1'b0} ^ `CRC - : {running_state[`NUMBER_OF_BITS_IN_CRC_32 - 2 : 0], 1'b0}; - input_vector[63 : 0] = - {input_vector[62 : 0], 1'b0}; - end - $display ("input bit number (bigger is earlier) %d, dependence %b", - i, running_state[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); -// First entry, which gets shifted the most in corner_turner, is the last bit loaded - corner_turner[2047:0] = {corner_turner[2047 - `NUMBER_OF_BITS_IN_CRC_32 : 0], - running_state[`NUMBER_OF_BITS_IN_CRC_32 - 1:0]}; - end - -// Plan: reverse the order bits are reported in -// Add C23 terms to first 24 terms -// Insert ^ X - -// Count out formulas in the opposite order, write out valid formulas. - $display ("When the amount of data applied to the CRC is less than the length of the CRC itself,"); - $display (" the Most Significant CRC_LEN - CRC_WIDTH terms are of the form data_in[N] ^ State[N]."); - $display ("The next CRC_WIDTH terms are NOT dependent on the CRC values, except in so much as"); - $display (" they depend on CSR bits because of X = D ^ C terms."); - $display ("State Variables depend on input bit number (bigger is earlier) :"); -// try to read out formulas by sweeping a 1-bit through the corner_turner array. - $display ("{"); - for (i = `NUMBER_OF_BITS_IN_CRC_32 - 1; i >= NUM_BITS_TO_DO_IN_PARALLEL; i = i - 1) - begin // Bits which depend on shifted state bits directly - $write ("%d : C%0d ", i, i - NUM_BITS_TO_DO_IN_PARALLEL); - for (j = 0; j < NUM_BITS_TO_DO_IN_PARALLEL; j = j + 1) - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - $write (",\n"); - end - - if (NUM_BITS_TO_DO_IN_PARALLEL <= `NUMBER_OF_BITS_IN_CRC_32) - begin - remaining_length = NUM_BITS_TO_DO_IN_PARALLEL - 1; - end - else - begin - remaining_length = `NUMBER_OF_BITS_IN_CRC_32 - 1; - end - for (i = remaining_length; i >= 0; i = i - 1) - begin // bits which only depend on shifted XOR'd bits - $write ("%d : 0 ", i); - for (j = 0; j < NUM_BITS_TO_DO_IN_PARALLEL; j = j + 1) - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - if (i != 0) $write (",\n"); else $write ("\n"); - end - $display ("}"); - -// Write out bits in a different order, to make it easier to group terms. - if (NUM_BITS_TO_DO_IN_PARALLEL >= 16) - begin - $display ("{"); - for (i = `NUMBER_OF_BITS_IN_CRC_32 - 1; i >= NUM_BITS_TO_DO_IN_PARALLEL; i = i - 1) - begin // Bits which depend on shifted state bits directly - $write ("%d : C%0d ", i, i - NUM_BITS_TO_DO_IN_PARALLEL); - for (j = 0; j <= 8; j = j + 1) - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - j = 12; - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - j = 9; - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - j = 13; - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - j = 10; - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - j = 14; - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - j = 11; - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - j = 15; - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - for (j = 16; j < NUM_BITS_TO_DO_IN_PARALLEL; j = j + 1) - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - $write (",\n"); - end - - if (NUM_BITS_TO_DO_IN_PARALLEL <= `NUMBER_OF_BITS_IN_CRC_32) - begin - remaining_length = NUM_BITS_TO_DO_IN_PARALLEL - 1; - end - else - begin - remaining_length = `NUMBER_OF_BITS_IN_CRC_32 - 1; - end - for (i = remaining_length; i >= 0; i = i - 1) - begin // bits which only depend on shifted XOR'd bits - $write ("%d : 0 ", i); - for (j = 0; j <= 8; j = j + 1) - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - j = 12; - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - j = 9; - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - j = 13; - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - j = 10; - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - j = 14; - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - j = 11; - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - j = 15; - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - for (j = 16; j < NUM_BITS_TO_DO_IN_PARALLEL; j = j + 1) - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ X%0d", j[5:0]); - else if (j >= 10) $write (" "); else $write (" "); - end - if (i != 0) $write (",\n"); else $write ("\n"); - end - $display ("}"); - end // if width >= 16 - - if (NUM_BITS_TO_DO_IN_PARALLEL <= `NUMBER_OF_BITS_IN_CRC_32) - begin - $display ("Since the number of data bits applied is <= number of CRC bits, each"); - $display (" X term in these formulas corresponds to X = Data_In ^ State"); - end - else - begin - $display ("The number of bits being applied to the CRC is greater than the number of"); - $display (" bits in the CRC. Each X term in these formulas corersponds to a Data_In bit."); - $display ("If the shift distance was small, the original CRC bits would be XOR'd with"); - $display (" the new data. In this case, the shift distance per clock is large, so the"); - $display (" dependence on the original CRC bits has to be handled carefully."); - $display ("Here is the plan: Calculate the contribution due to the incoming data based"); - $display (" on the formulas produced for a particular shift distance."); - $display ("Separately, calculate the data dependence due to the present CRC."); - $display ("This is accomplished by using the HIGH numbered terms discovered when tracking"); - $display (" data dependencies. For instance, if the shift distance is"); - $display (" 64 and the CRC is 32 bits wide, the top 32 X terms of each of the formulas"); - $display (" is re-interpreted as C (state) terms."); - $display ("The terms depending on X63 : X32 are re-interpred to be terms depending on"); - $display (" CSR bits 31 : 0 correspondingly"); - $display ("{"); - for (i = `NUMBER_OF_BITS_IN_CRC_32 - 1; i >= 0; i = i - 1) - begin // Bits which depend on shifted state bits directly - $write ("%d : ", i); - for (j = `NUMBER_OF_BITS_IN_CRC_32; - j < NUM_BITS_TO_DO_IN_PARALLEL +`NUMBER_OF_BITS_IN_CRC_32; - j = j + 1) - begin - if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] - != 1'b0) - $write (" ^ C%0d", j[5:0] - `NUMBER_OF_BITS_IN_CRC_32); - else if (j >= 10) $write (" "); else $write (" "); - end - if (i != 0) $write (",\n"); else $write ("\n"); - end - $display ("}"); - end - end -endmodule -`endif // CALCULATE_FUNCTIONAL_DEPENDENCE_ON_INPUT_AND_STATE - Index: trunk/hamming_ecc_64.v =================================================================== --- trunk/hamming_ecc_64.v (revision 47) +++ trunk/hamming_ecc_64.v (nonexistent) @@ -1,792 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// hamming_ecc_64 //// -//// //// -//// hamming_ecc_generate_word_with_check_bits_64 //// -//// hamming_ecc_check_and_correct_64 //// -//// //// -//// This file is part of the general opencores effort. //// -//// //// -//// //// -//// Module Description: //// -//// Using Hamming style functions, calculate 72 bits from 64 to //// -//// make a value which can be corrected back to the original //// -//// 64 bits of valid data if a single bit error is applied to //// -//// the 72 bits. //// -//// //// -//// To Do: //// -//// nothing pending //// -//// //// -//// Author(s): //// -//// - Anonymous //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Anonymous and OPENCORES.ORG //// -//// //// -//// This source file may be used and distributed without //// -//// restriction provided that this copyright statement is not //// -//// removed from the file and that any derivative work contains //// -//// the original copyright notice and the associated disclaimer. //// -//// //// -//// This source file is free software; you can redistribute it //// -//// and/or modify it under the terms of the GNU Lesser General //// -//// Public License as published by the Free Software Foundation; //// -//// either version 2.1 of the License, or (at your option) any //// -//// later version. //// -//// //// -//// This source 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 Lesser General Public License for more //// -//// details. //// -//// //// -//// You should have received a copy of the GNU Lesser General //// -//// Public License along with this source; if not, download it //// -//// from //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// $Id: hamming_ecc_64.v,v 1.1 2001-09-03 13:18:30 bbeaver Exp $ -// -// CVS Revision History -// -// $Log: not supported by cvs2svn $ -// Revision 1.1 2001/09/03 13:22:46 Blue Beaver -// no message -// -// - -//=========================================================================== -// -// NOTE: The plan seems to be the following: -// Assign a binary Bit Address to each bit. -// Calculate ECC check bits by XOR'ing the bits together which -// correspond to 1's in each bit's Bit Address; -// (For instance, ECC Check Digit bit 0 XORs together Data_In[1], -// Data_In[3], and so on.) -// You need 7 bits to have enough addresses for all 64 single-bit -// errors, plus the value which covers the case of no errors. -// -// NOTE: But wait, there's more! What if a check bit fails? -// The trick is to have the failing check digit call ITSELF out. -// To achieve this, you have to distribute the check bits -// so that they have nice binary Bit Addresses. -// -// NOTE: There is even more. Every single bit error results in a word -// with wrong parity. But what if 2 bits flip? The parity goes -// back to the original. You can add a parity bit to everything, -// and if the check bits say there is an error but the parity is -// correct that means that 2 bits are wrong. -// The parity bit becomes the 8th bit of the ECC check bits. -// -// NOTE: The web pages discussing this seem to put the parity bit as bit 1 -// in the check bit calculation, the LSB check bit as bit 2, the -// next check bit as bit 4, and so on. -// -// NOTE: Since the parity bit is used to calculate the LSB of the -// check bits, and since it is the XOR of all bits, you have -// to calculate the XOR of the bits you least expect to calculate -// the low-order check bit. The ones with "0" as the LSB of their -// bit address, not "1". -// -// This code was developed using VeriLogger Pro, by Synapticad. -// Their support is greatly appreciated. -// -//=========================================================================== - -`timescale 1ns/1ps - -// Given 64 bits, calculate 7 bits of ECC check bits and 1 bit of parity. -// NOTE: Why a module and not a function? No idea. - -module hamming_ecc_calculate_check_bits_private ( - data_in, - check_bits_out, - par_if_inserting_check_bits_out -); - - parameter NUM_DATA_BITS = 64; // do not override in the instantiation. - parameter NUM_CHECK_BITS = 8; - - input [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] data_in; - output [NUM_CHECK_BITS - 1 : 0] check_bits_out; - output par_if_inserting_check_bits_out; - -// LSB of Check Bits depends on every other input bit. - wire parity_1_3_5_7 = data_in[1] ^ data_in[3] ^ data_in[5] ^ data_in[7]; - wire parity_9_11_13_15 = data_in[9] ^ data_in[11] ^ data_in[13] ^ data_in[15]; - wire parity_17_19_21_23 = data_in[17] ^ data_in[19] ^ data_in[21] ^ data_in[23]; - wire parity_25_27_29_31 = data_in[25] ^ data_in[27] ^ data_in[29] ^ data_in[31]; - wire parity_33_35_37_39 = data_in[33] ^ data_in[35] ^ data_in[37] ^ data_in[39]; - wire parity_41_43_45_47 = data_in[41] ^ data_in[43] ^ data_in[45] ^ data_in[47]; - wire parity_49_51_53_55 = data_in[49] ^ data_in[51] ^ data_in[53] ^ data_in[55]; - wire parity_57_59_61_63 = data_in[57] ^ data_in[59] ^ data_in[61] ^ data_in[63]; - wire parity_65_67_69_71 = data_in[65] ^ data_in[67] ^ data_in[69] ^ data_in[71]; - - wire parity_1_3_5_7_9_11_13_15_17_19_21_23 = - parity_1_3_5_7 ^ parity_9_11_13_15 ^ parity_17_19_21_23; - wire parity_25_27_29_31_33_35_37_39_41_43_45_47 = - parity_25_27_29_31 ^ parity_33_35_37_39 ^ parity_41_43_45_47; - wire parity_49_51_53_55_57_59_61_63_65_67_69_71 = - parity_49_51_53_55 ^ parity_57_59_61_63 ^ parity_65_67_69_71; - - assign check_bits_out[0] = parity_1_3_5_7_9_11_13_15_17_19_21_23 - ^ parity_25_27_29_31_33_35_37_39_41_43_45_47 - ^ parity_49_51_53_55_57_59_61_63_65_67_69_71; - -// second bit depends 2 out of 4 bits - wire parity_2_3_6_7 = data_in[2] ^ data_in[3] ^ data_in[6] ^ data_in[7]; - wire parity_10_11_14_15 = data_in[10] ^ data_in[11] ^ data_in[14] ^ data_in[15]; - wire parity_18_19_22_23 = data_in[18] ^ data_in[19] ^ data_in[22] ^ data_in[23]; - wire parity_26_27_30_31 = data_in[26] ^ data_in[27] ^ data_in[30] ^ data_in[31]; - wire parity_34_35_38_39 = data_in[34] ^ data_in[35] ^ data_in[38] ^ data_in[39]; - wire parity_42_43_46_47 = data_in[42] ^ data_in[43] ^ data_in[46] ^ data_in[47]; - wire parity_50_51_54_55 = data_in[50] ^ data_in[51] ^ data_in[54] ^ data_in[55]; - wire parity_58_59_62_63 = data_in[58] ^ data_in[59] ^ data_in[62] ^ data_in[63]; - wire parity_66_67_70_71 = data_in[66] ^ data_in[67] ^ data_in[70] ^ data_in[71]; - - wire parity_2_3_6_7_10_11_14_15_18_19_22_23 = - parity_2_3_6_7 ^ parity_10_11_14_15 ^ parity_18_19_22_23; - wire parity_26_27_30_31_34_35_38_39_42_43_46_47 = - parity_26_27_30_31 ^ parity_34_35_38_39 ^ parity_42_43_46_47; - wire parity_50_51_54_55_58_59_62_63_66_67_70_71 = - parity_50_51_54_55 ^ parity_58_59_62_63 ^ parity_66_67_70_71; - - assign check_bits_out[1] = parity_2_3_6_7_10_11_14_15_18_19_22_23 - ^ parity_26_27_30_31_34_35_38_39_42_43_46_47 - ^ parity_50_51_54_55_58_59_62_63_66_67_70_71; - -// Higher-numbered bits depend on groups of 4 adjacent input bits. - wire parity_0_3 = ^data_in[3:0]; // XOR reduction - wire parity_4_7 = ^data_in[7:4]; // XOR reduction - wire parity_8_11 = ^data_in[11:8]; // XOR reduction - wire parity_12_15 = ^data_in[15:12]; // XOR reduction - wire parity_16_19 = ^data_in[19:16]; // XOR reduction - wire parity_20_23 = ^data_in[23:20]; // XOR reduction - wire parity_24_27 = ^data_in[27:24]; // XOR reduction - wire parity_28_31 = ^data_in[31:28]; // XOR reduction - wire parity_32_35 = ^data_in[35:32]; // XOR reduction - wire parity_36_39 = ^data_in[39:36]; // XOR reduction - wire parity_40_43 = ^data_in[43:40]; // XOR reduction - wire parity_44_47 = ^data_in[47:44]; // XOR reduction - wire parity_48_51 = ^data_in[51:48]; // XOR reduction - wire parity_52_55 = ^data_in[55:52]; // XOR reduction - wire parity_56_59 = ^data_in[59:56]; // XOR reduction - wire parity_60_63 = ^data_in[63:60]; // XOR reduction - wire parity_64_67 = ^data_in[67:64]; // XOR reduction - wire parity_68_71 = ^data_in[71:68]; // XOR reduction - - wire parity_4_7_12_15_20_23 = parity_4_7 ^ parity_12_15 ^ parity_20_23; - wire parity_28_31_36_39_44_47 = parity_28_31 ^ parity_36_39 ^ parity_44_47; - wire parity_52_55_60_63_68_71 = parity_52_55 ^ parity_60_63 ^ parity_68_71; - - assign check_bits_out[2] = parity_4_7_12_15_20_23 - ^ parity_28_31_36_39_44_47 - ^ parity_52_55_60_63_68_71; - - wire parity_8_11_12_15_24_27 = parity_8_11 ^ parity_12_15 ^ parity_24_27; - wire parity_28_31_40_43_44_47 = parity_28_31 ^ parity_40_43 ^ parity_44_47; - wire parity_56_59_60_63 = parity_56_59 ^ parity_60_63; - - assign check_bits_out[3] = parity_8_11_12_15_24_27 - ^ parity_28_31_40_43_44_47 - ^ parity_56_59_60_63; - - wire parity_16_19_20_23_24_27 = parity_16_19 ^ parity_20_23 ^ parity_24_27; - wire parity_28_31_48_51_52_55 = parity_28_31 ^ parity_48_51 ^ parity_52_55; - - assign check_bits_out[4] = parity_16_19_20_23_24_27 - ^ parity_28_31_48_51_52_55 - ^ parity_56_59_60_63; - - wire parity_32_35_36_39_40_43 = parity_32_35 ^ parity_36_39 ^ parity_40_43; - wire parity_44_47_48_51_52_55 = parity_44_47 ^ parity_48_51 ^ parity_52_55; - - wire parity_second_quarter = parity_32_35_36_39_40_43 - ^ parity_44_47_48_51_52_55 - ^ parity_56_59_60_63; - - assign check_bits_out[5] = parity_second_quarter; - - wire parity_third_quarter = parity_64_67 ^ parity_68_71; - - assign check_bits_out[6] = parity_third_quarter; - -// NOTE: In the generate case, the Check Bit inputs to this function come in -// as all 0's. The generator wants to calculate parity across all bits, -// including Check Bits! -// The slow, inexpensive way to do this is to calculate the odd parity of -// the data including 0's for Check Bits, then XOR that with all of -// the check bits to get the actual word checksum. -// A faster way to do this is to calculate the final checksum directly. -// This starts out by XOR'ing all the Data Bits together. BUT notice -// that the ECC bits contain XOR's of bits in the data. If you -// XOR the Check Bits with the XOR of the Data Bits, some of the -// dependencies on certain data bits go away! -// This function therefore only bothers to calculate the XOR of the bits -// which are not rendered don't cares by the XORing of the check bits. - - wire parity_0_3_5_6 = data_in[0] ^ data_in[3] ^ data_in[5] ^ data_in[6]; - wire parity_9_10_12_15 = data_in[9] ^ data_in[10] ^ data_in[12] ^ data_in[15]; - wire parity_17_18_20_23 = data_in[17] ^ data_in[18] ^ data_in[20] ^ data_in[23]; - wire parity_24_27_29_30 = data_in[24] ^ data_in[27] ^ data_in[29] ^ data_in[30]; - wire parity_33_34_36_39 = data_in[33] ^ data_in[34] ^ data_in[36] ^ data_in[39]; - wire parity_40_43_45_46 = data_in[40] ^ data_in[43] ^ data_in[45] ^ data_in[46]; - wire parity_48_51_53_54 = data_in[48] ^ data_in[51] ^ data_in[53] ^ data_in[54]; - wire parity_57_58_60_63 = data_in[57] ^ data_in[58] ^ data_in[60] ^ data_in[63]; - wire parity_65_66_68_71 = data_in[65] ^ data_in[66] ^ data_in[68] ^ data_in[71]; - - wire parity_0_3_5_6_9_10_12_15_17_18_20_23 = - parity_0_3_5_6 ^ parity_9_10_12_15 ^ parity_17_18_20_23; - wire parity_24_27_29_30_33_34_36_39_40_43_45_46 = - parity_24_27_29_30 ^ parity_33_34_36_39 ^ parity_40_43_45_46; - wire parity_48_51_53_54_57_58_60_63 = - parity_48_51_53_54 ^ parity_57_58_60_63 ^ parity_65_66_68_71; - - assign par_if_inserting_check_bits_out = - parity_0_3_5_6_9_10_12_15_17_18_20_23 - ^ parity_24_27_29_30_33_34_36_39_40_43_45_46 - ^ parity_48_51_53_54_57_58_60_63; - -// The module which checks ECC values actually has to look at all the data. -// Reuse calculations which have already been done. - - wire parity_0_3_8_11_16_19 = parity_0_3 ^ parity_8_11 ^ parity_16_19; - wire parity_24_27_28_31 = parity_24_27 ^ parity_28_31; - - wire parity_first_quarter = parity_0_3_8_11_16_19 - ^ parity_4_7_12_15_20_23 - ^ parity_24_27_28_31; - - assign check_bits_out[7] = parity_first_quarter - ^ parity_second_quarter - ^ parity_third_quarter; -endmodule - -// Given a 64-bit word (with no errors), calculate the 72-bit word which -// will be stored to allow ECC to recover the original 64 bits in case of -// a single bit error. - -module hamming_ecc_generate_word_with_check_bits_64 ( - data_in, - data_plus_ecc_out, - clk -); - - parameter NUM_DATA_BITS = 64; // do not override in the instantiation. - parameter NUM_CHECK_BITS = 8; - - input [NUM_DATA_BITS - 1 : 0] data_in; - output [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] data_plus_ecc_out; - input clk; - - wire [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] input_vector = - {data_in[63:57], 1'b0, // check digit 6, bit 64 - data_in[56:26], 1'b0, // check digit 5, bit 32 - data_in[25:11], 1'b0, // check digit 4, bit 16 - data_in[10:4], 1'b0, // check digit 3, bit 8 - data_in[3:1], 1'b0, // check digit 2, bit 4 - data_in[0], 1'b0, // check digit 1, bit 2 - 1'b0, 1'b1}; // check digit 0, bit 0 == 1 says odd parity - - wire [NUM_CHECK_BITS - 1 : 0] check_bits_out; - wire par_if_inserting_check_bits_out; - -hamming_ecc_calculate_check_bits_private generate_ecc_bits ( - .data_in (input_vector[NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0]), - .check_bits_out (check_bits_out[NUM_CHECK_BITS - 1 : 0]), - .par_if_inserting_check_bits_out (par_if_inserting_check_bits_out) -); - -// Insert check bits into their nice power-of-2 locations, so they can call -// themselves out if they read in error. - wire [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] reordered_data_plus_ecc = - {data_in[63:57], check_bits_out[6], // check digit 6, bit 64 - data_in[56:26], check_bits_out[5], // check digit 5, bit 32 - data_in[25:11], check_bits_out[4], // check digit 4, bit 16 - data_in[10:4], check_bits_out[3], // check digit 3, bit 8 - data_in[3:1], check_bits_out[2], // check digit 2, bit 4 - data_in[0], check_bits_out[1], // check digit 1, bit 2 - check_bits_out[0], // check digit 0, bit 1 - par_if_inserting_check_bits_out}; // odd parity, bit 0 - - reg [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] data_plus_ecc_out; - - always @(posedge clk) - begin - data_plus_ecc_out[NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] <= - reordered_data_plus_ecc[NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0]; - end -endmodule - -// Given 64 bits, plus 7 bits of ECC check bits and 1 bit of parity, -// discover if the data is correct. -// If 1 bit is wrong, correct it and report the problem. -// If 2 bits are wrong, report the problem. -// If an unexpected bit error position comes out, report that as an error. -// If more than 2 bits are wrong, you are hosed. Most are not detected. -// -// The error_addressvalue is encoded. It means this: -// Error Value 0: no error -// Error Value 1: check bit 0 is wrong -// Error Value 2: check bit 1 is wrong -// Error Value 3: data bit 0 is wrong -// Error Value 4: check bit 2 is wrong -// Error Values 7:5: data bits 3:1 are wrong -// Error Value 8: check bit 3 is wrong -// Error Values 15:9: data bits 10:4 are wrong -// Error Value 16: check bit 4 is wrong -// Error Values 31:17: data bits 25:11 are wrong -// Error Value 32: check bit 5 is wrong -// Error Values 63:32: data bits 56:26 are wrong -// Error Value 64: check bit 6 is wrong -// Error Values 71:65: data bits 63:57 are wrong -// Error Value 72: check bit 7 is wrong - -module hamming_ecc_check_and_correct_64 ( - data_plus_ecc_in, - corrected_data_out, - corrected_check_bits_out, - single_bit_error_corrected, - double_bit_error_detected, - error_address, - clk -); - - parameter NUM_DATA_BITS = 64; // do not override in the instantiation. - parameter NUM_CHECK_BITS = 8; - - input [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] data_plus_ecc_in; - - output [NUM_DATA_BITS - 1 : 0] corrected_data_out; - output [NUM_CHECK_BITS - 1 : 0] corrected_check_bits_out; - - output single_bit_error_corrected; - output double_bit_error_detected; - - output [6:0] error_address; - - input clk; - -// If there is an error, the XOR of the calculated and stored Check Bits -// gives the address of the failing bit. -// The calculate_check_bits module, when applied to a word containing check bits, -// will do the XOR automatically. The output is the address of the failing bit. - wire [NUM_CHECK_BITS - 1 : 0] check_bits; - wire par_if_inserting_check_bits_out; // ignore - -hamming_ecc_calculate_check_bits_private check_ecc_bits ( - .data_in (data_plus_ecc_in[NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0]), - .check_bits_out (check_bits[NUM_CHECK_BITS - 1 : 0]), - .par_if_inserting_check_bits_out (par_if_inserting_check_bits_out) -); - - wire parity_error_detected = ~check_bits[7]; // If data was Odd Parity, return 1'b1; - - wire parity_bit_wrong = (check_bits[6:0] == 7'h00) & parity_error_detected; - - wire correction_needed = (check_bits[6:0] != 7'h00) // non-zero means correct! - | parity_bit_wrong; - - wire unexpected_error_address = (check_bits[6:0] >= 8'h48); // >= 72 - -// If there is an error, need to make a mask to XOR with the data in order to -// get the corrected data back. -// Verilogger seems to be in a core-dumping mood with a straight-forward shift. -// Doing things manually will result in better logic, anyway. - wire [1:0] mask_0 = check_bits[0] ? 2'b10 : 2'b01; - wire [3:0] mask_1 = check_bits[1] - ? {mask_0[1:0], 2'b00} - : {2'b00, mask_0[1:0]}; - wire [7:0] mask_2 = check_bits[2] - ? {mask_1[3:0], 4'h0} - : {4'h0, mask_1[3:0]}; - wire [15:0] mask_3 = check_bits[3] - ? {mask_2[7:0], 8'h00} - : {8'h00, mask_2[7:0]}; - wire [31:0] mask_4 = check_bits[4] - ? {mask_3[15:0], 16'h0000} - : {16'h0000, mask_3[15:0]}; - wire [63:0] mask_5 = check_bits[5] - ? {mask_4[31:0], 32'h00000000} - : {32'h00000000, mask_4[31:0]}; - wire [71:0] mask_6 = check_bits[6] - ? {mask_5[7:0], 64'h00000000_00000000} - : {8'h00, mask_5[63:0]}; - - wire [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] error_corrected_data = - data_plus_ecc_in[NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] - ^ {mask_6[71:1], parity_bit_wrong}; - - wire [NUM_DATA_BITS - 1 : 0] reordered_corrected_data = - {error_corrected_data[71:65], - error_corrected_data[63:33], - error_corrected_data[31:17], - error_corrected_data[15:9], - error_corrected_data[7:5], - error_corrected_data[3]}; - - wire [NUM_CHECK_BITS - 1 : 0] reordered_corrected_check_bits = - {error_corrected_data[0], - error_corrected_data[64], - error_corrected_data[32], - error_corrected_data[16], - error_corrected_data[8], - error_corrected_data[4], - error_corrected_data[2], - error_corrected_data[1]}; - - reg [NUM_DATA_BITS - 1 : 0] corrected_data_out; - reg [NUM_CHECK_BITS - 1 : 0] corrected_check_bits_out; - reg single_bit_error_corrected; - reg double_bit_error_detected; - reg [6:0] error_address; - - always @(posedge clk) - begin - corrected_data_out[NUM_DATA_BITS - 1 : 0] <= - reordered_corrected_data[NUM_DATA_BITS - 1 : 0]; - corrected_check_bits_out[NUM_CHECK_BITS - 1 : 0] <= - reordered_corrected_check_bits[NUM_CHECK_BITS - 1 : 0]; - single_bit_error_corrected <= correction_needed & parity_error_detected; - double_bit_error_detected <= (correction_needed & ~parity_error_detected) - | unexpected_error_address; - error_address[6:0] <= parity_bit_wrong - ? 8'h48 // 72 - : check_bits[6:0]; - end -endmodule - -// `define TEST_HAMMING_ECC_CODE -`ifdef TEST_HAMMING_ECC_CODE -module test_ecc (); - - parameter NUM_DATA_BITS = 64; // do not override in the instantiation. - parameter NUM_CHECK_BITS = 8; - - reg clk; - reg [NUM_DATA_BITS - 1 : 0] data_in; - wire [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] data_plus_ecc_out; - wire [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] data_plus_ecc_in; - reg [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] force_error; - wire [NUM_DATA_BITS - 1 : 0] corrected_data_out; - wire [NUM_CHECK_BITS - 1 : 0] corrected_check_bits_out; - wire single_bit_error_corrected; - wire double_bit_error_detected; - wire [6:0] error_address; - - reg [NUM_DATA_BITS - 1 : 0] data_pattern; - reg [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] error_mask_1; - reg [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] error_mask_2; - integer cnt; - -task make_clk; - begin - # 1; - clk = 1'b1; - # 2; - clk = 1'b0; - # 1; - end -endtask - - wire [NUM_CHECK_BITS - 1 : 0] original_check_bits = - {data_plus_ecc_out[0], - data_plus_ecc_out[64], - data_plus_ecc_out[32], - data_plus_ecc_out[16], - data_plus_ecc_out[8], - data_plus_ecc_out[4], - data_plus_ecc_out[2], - data_plus_ecc_out[1]}; - - initial - begin - clk = 1'b0; - - $display ("Walking a 1"); -// need to check that walking 1 bit goes through correctly. - for (data_pattern = 64'h00000000_00000001; - data_pattern != 64'h0; - data_pattern = data_pattern << 1) - begin - data_in = data_pattern; - force_error = 72'h00_00000000_00000000; - make_clk; - make_clk; - if (data_in !== corrected_data_out) - $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); - if (original_check_bits !== corrected_check_bits_out) - $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); - if (single_bit_error_corrected !== 1'b0) - $display ("*** Unexpected Single Bit Error Detected %x %x %x", - single_bit_error_corrected, data_pattern, data_plus_ecc_in); - if (double_bit_error_detected !== 1'b0) - $display ("*** Unexpected Double Bit Error Detected %x %x %x", - double_bit_error_detected, data_pattern, data_plus_ecc_in); - end - - $display ("Walking a 0"); -// need to check that walking 0 bit goes through correctly. - for (data_pattern = 64'h00000000_00000001; - data_pattern != 64'h0; - data_pattern = data_pattern << 1) - begin - data_in = ~data_pattern; - force_error = 72'h00_00000000_00000000; - make_clk; - make_clk; - if (corrected_data_out !== data_in) - $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); - if (original_check_bits !== corrected_check_bits_out) - $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); - if (single_bit_error_corrected !== 1'b0) - $display ("*** Unexpected Single Bit Error Detected %x %x %x", - single_bit_error_corrected, data_pattern, data_plus_ecc_in); - if (double_bit_error_detected !== 1'b0) - $display ("*** Unexpected Double Bit Error Detected %x %x %x", - double_bit_error_detected, data_pattern, data_plus_ecc_in); - end - - $display ("Sending Random Data"); -// need to check that walking 0 bit goes through correctly. - for (cnt = 0; cnt < 1000; cnt = cnt + 1) - begin - data_in = {$random, $random}; - force_error = 72'h00_00000000_00000000; - make_clk; - make_clk; - if (corrected_data_out !== data_in) - $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); - if (original_check_bits !== corrected_check_bits_out) - $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); - if (single_bit_error_corrected !== 1'b0) - $display ("*** Unexpected Single Bit Error Detected %x %x %x", - single_bit_error_corrected, data_pattern, data_plus_ecc_in); - if (double_bit_error_detected !== 1'b0) - $display ("*** Unexpected Double Bit Error Detected %x %x %x", - double_bit_error_detected, data_pattern, data_plus_ecc_in); - end - - $display ("Making 0 go to 1, even parity, error check"); -// need to check that 1 bit which should be 0 is detected correctly, even parity. - for (error_mask_1 = 72'h00_00000000_00000001; - error_mask_1 != 72'h0; - error_mask_1 = error_mask_1 << 1) - begin - data_in = 64'h00000000_00000000; - force_error = error_mask_1; - make_clk; - make_clk; - if (corrected_data_out !== data_in) - $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); - if (original_check_bits !== corrected_check_bits_out) - $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); - if (single_bit_error_corrected !== 1'b1) - $display ("*** Expected Single Bit Error Missed %x %x %x", - single_bit_error_corrected, error_mask_1, data_plus_ecc_in); - if (double_bit_error_detected !== 1'b0) - $display ("*** Unexpected Double Bit Error Detected %x %x %x", - double_bit_error_detected, error_mask_1, data_plus_ecc_in); - if ( (error_mask_1 == 72'h00_00000000_00000001) - & (error_address != 8'h48) ) - $display ("*** Parity Error calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - if ( (error_mask_1 == 72'h00_00000000_00000001) - & (error_address != 8'h48) ) - $display ("*** Bit 0 calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - if ( (error_mask_1 == 72'h80_00000000_00000000) - & (error_address != 8'h47) ) - $display ("*** Bit 71 calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - end - - $display ("Making 0 go to 1, odd parity, error check"); -// need to check that 1 bit which should be 0 is detected correctly, odd parity. - for (error_mask_1 = 72'h00_00000000_00000001; - error_mask_1 != 72'h0; - error_mask_1 = error_mask_1 << 1) - begin - data_in = 64'h10000000_00000000; - force_error = error_mask_1; - make_clk; - make_clk; - if (corrected_data_out !== data_in) - $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); - if (original_check_bits !== corrected_check_bits_out) - $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); - if (single_bit_error_corrected !== 1'b1) - $display ("*** Expected Single Bit Error Missed %x %x %x", - single_bit_error_corrected, error_mask_1, data_plus_ecc_in); - if (double_bit_error_detected !== 1'b0) - $display ("*** Unexpected Double Bit Error Detected %x %x %x", - double_bit_error_detected, error_mask_1, data_plus_ecc_in); - if ( (error_mask_1 == 72'h00_00000000_00000001) - & (error_address != 8'h48) ) - $display ("*** Parity Error calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - if ( (error_mask_1 == 72'h00_00000000_00000001) - & (error_address != 8'h48) ) - $display ("*** Bit 0 calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - if ( (error_mask_1 == 72'h80_00000000_00000000) - & (error_address != 8'h47) ) - $display ("*** Bit 71 calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - end - - $display ("Making 1 go to 0, even parity, error check"); -// need to check that 0 bit which should be 1 is detected correctly, even parity. - for (error_mask_1 = 72'h00_00000000_00000001; - error_mask_1 != 72'h0; - error_mask_1 = error_mask_1 << 1) - begin - data_in = 64'hFFFFFFFF_FFFFFFFF; - force_error = error_mask_1; - make_clk; - make_clk; - if (corrected_data_out !== data_in) - $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); - if (original_check_bits !== corrected_check_bits_out) - $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); - if (single_bit_error_corrected !== 1'b1) - $display ("*** Expected Single Bit Error Missed %x %x %x", - single_bit_error_corrected, error_mask_1, data_plus_ecc_in); - if (double_bit_error_detected !== 1'b0) - $display ("*** Unexpected Double Bit Error Detected %x %x %x", - double_bit_error_detected, error_mask_1, data_plus_ecc_in); - if ( (error_mask_1 == 72'h00_00000000_00000001) - & (error_address != 8'h48) ) - $display ("*** Parity Error calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - if ( (error_mask_1 == 72'h00_00000000_00000001) - & (error_address != 8'h48) ) - $display ("*** Bit 0 calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - if ( (error_mask_1 == 72'h80_00000000_00000000) - & (error_address != 8'h47) ) - $display ("*** Bit 71 calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - end - - $display ("Making 1 go to 0, odd parity, error check"); -// need to check that 0 bit which should be 1 is detected correctly, odd parity. - for (error_mask_1 = 72'h00_00000000_00000001; - error_mask_1 != 72'h0; - error_mask_1 = error_mask_1 << 1) - begin - data_in = 64'hFFFFFFFF_FFFFFFFE; - force_error = error_mask_1; - make_clk; - make_clk; - if (corrected_data_out !== data_in) - $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); - if (original_check_bits !== corrected_check_bits_out) - $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); - if (single_bit_error_corrected !== 1'b1) - $display ("*** Expected Single Bit Error Missed %x %x %x", - single_bit_error_corrected, error_mask_1, data_plus_ecc_in); - if (double_bit_error_detected !== 1'b0) - $display ("*** Unexpected Double Bit Error Detected %x %x %x", - double_bit_error_detected, error_mask_1, data_plus_ecc_in); - if ( (error_mask_1 == 72'h00_00000000_00000001) - & (error_address != 8'h48) ) - $display ("*** Parity Error calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - if ( (error_mask_1 == 72'h00_00000000_00000001) - & (error_address != 8'h48) ) - $display ("*** Bit 0 calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - if ( (error_mask_1 == 72'h80_00000000_00000000) - & (error_address != 8'h47) ) - $display ("*** Bit 71 calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - end - - $display ("Walking error, random data, error check"); -// need to check that 0 bit which should be 1 is detected correctly, odd parity. - for (error_mask_1 = 72'h00_00000000_00000001; - error_mask_1 != 72'h0; - error_mask_1 = error_mask_1 << 1) - begin - for (cnt = 0; cnt < 25; cnt = cnt + 1) - begin - data_in = {$random, $random}; - force_error = error_mask_1; - make_clk; - make_clk; - if (corrected_data_out !== data_in) - $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); - if (original_check_bits !== corrected_check_bits_out) - $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); - if (single_bit_error_corrected !== 1'b1) - $display ("*** Expected Single Bit Error Missed %x %x %x", - single_bit_error_corrected, error_mask_1, data_plus_ecc_in); - if (double_bit_error_detected !== 1'b0) - $display ("*** Unexpected Double Bit Error Detected %x %x %x", - double_bit_error_detected, error_mask_1, data_plus_ecc_in); - if ( (error_mask_1 == 72'h00_00000000_00000001) - & (error_address != 8'h48) ) - $display ("*** Parity Error calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - if ( (error_mask_1 == 72'h00_00000000_00000001) - & (error_address != 8'h48) ) - $display ("*** Bit 0 calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - if ( (error_mask_1 == 72'h80_00000000_00000000) - & (error_address != 8'h47) ) - $display ("*** Bit 71 calls out wrong bit offset %x %x", - error_address, data_plus_ecc_in); - end - end - - $display ("testing 2-bit errors, random data, error check"); -// need to check 2 bit errors detected. - for (error_mask_1 = 72'h00_00000000_00000001; - error_mask_1 != 72'h80_00000000_00000000; - error_mask_1 = error_mask_1 << 1) - begin - for (error_mask_2 = error_mask_1 << 1; - error_mask_2 != 72'h0; - error_mask_2 = error_mask_2 << 1) - begin - if (error_mask_1 != error_mask_2) - begin - data_in = {$random, $random}; - force_error = error_mask_1 | error_mask_2; - make_clk; - make_clk; - if (single_bit_error_corrected !== 1'b0) - $display ("*** Unexpected Single Bit Error Detected %x %x %x", - single_bit_error_corrected, error_mask_1, data_plus_ecc_in); - if (double_bit_error_detected !== 1'b1) - $display ("*** Expected Double Bit Error Missed %x %x %x", - double_bit_error_detected, error_mask_1, data_plus_ecc_in); - end - end - end - end - -hamming_ecc_generate_word_with_check_bits_64 generate ( - .data_in (data_in), - .data_plus_ecc_out (data_plus_ecc_out), - .clk (clk) -); - - assign data_plus_ecc_in[71:0] = data_plus_ecc_out ^ force_error; - -hamming_ecc_check_and_correct_64 check_and_correct ( - .data_plus_ecc_in (data_plus_ecc_in), - .corrected_data_out (corrected_data_out), - .corrected_check_bits_out (corrected_check_bits_out), - .single_bit_error_corrected (single_bit_error_corrected), - .double_bit_error_detected (double_bit_error_detected), - .error_address (error_address), - .clk (clk) -); - -endmodule -`endif // TEST_HAMMING_ECC_CODE - Index: common/trunk/opencores_coding_guidelines.doc =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: common/trunk/opencores_coding_guidelines.doc =================================================================== --- common/trunk/opencores_coding_guidelines.doc (nonexistent) +++ common/trunk/opencores_coding_guidelines.doc (revision 48)
common/trunk/opencores_coding_guidelines.doc Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: common/trunk/opencores_coding_guidelines.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: common/trunk/opencores_coding_guidelines.pdf =================================================================== --- common/trunk/opencores_coding_guidelines.pdf (nonexistent) +++ common/trunk/opencores_coding_guidelines.pdf (revision 48)
common/trunk/opencores_coding_guidelines.pdf Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: common/trunk/generic_memories/rtl/verilog/generic_dpram.v =================================================================== --- common/trunk/generic_memories/rtl/verilog/generic_dpram.v (nonexistent) +++ common/trunk/generic_memories/rtl/verilog/generic_dpram.v (revision 48) @@ -0,0 +1,501 @@ +////////////////////////////////////////////////////////////////////// +//// //// +//// Generic Dual-Port Synchronous RAM //// +//// //// +//// This file is part of memory library available from //// +//// http://www.opencores.org/cvsweb.shtml/generic_memories/ //// +//// //// +//// Description //// +//// This block is a wrapper with common dual-port //// +//// synchronous memory interface for different //// +//// types of ASIC and FPGA RAMs. Beside universal memory //// +//// interface it also provides behavioral model of generic //// +//// dual-port synchronous RAM. //// +//// It also contains a fully synthesizeable model for FPGAs. //// +//// It should be used in all OPENCORES designs that want to be //// +//// portable accross different target technologies and //// +//// independent of target memory. //// +//// //// +//// Supported ASIC RAMs are: //// +//// - Artisan Dual-Port Sync RAM //// +//// - Avant! Two-Port Sync RAM (*) //// +//// - Virage 2-port Sync RAM //// +//// //// +//// Supported FPGA RAMs are: //// +//// - Generic FPGA (VENDOR_FPGA) //// +//// Tested RAMs: Altera, Xilinx //// +//// Synthesis tools: LeonardoSpectrum, Synplicity //// +//// - Xilinx (VENDOR_XILINX) //// +//// - Altera (VENDOR_ALTERA) //// +//// //// +//// To Do: //// +//// - fix Avant! //// +//// - add additional RAMs (VS etc) //// +//// //// +//// Author(s): //// +//// - Richard Herveille, richard@asics.ws //// +//// - Damjan Lampret, lampret@opencores.org //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2000 Authors and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source 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 Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from http://www.opencores.org/lgpl.shtml //// +//// //// +////////////////////////////////////////////////////////////////////// +// +// CVS Revision History +// +// $Log: not supported by cvs2svn $ +// Revision 1.3 2001/11/09 00:34:18 samg +// minor changes: unified with all common rams +// +// Revision 1.2 2001/11/08 19:11:31 samg +// added valid checks to behvioral model +// +// Revision 1.1.1.1 2001/09/14 09:57:10 rherveille +// Major cleanup. +// Files are now compliant to Altera & Xilinx memories. +// Memories are now compatible, i.e. drop-in replacements. +// Added synthesizeable generic FPGA description. +// Created "generic_memories" cvs entry. +// +// Revision 1.1.1.2 2001/08/21 13:09:27 damjan +// *** empty log message *** +// +// Revision 1.1 2001/08/20 18:23:20 damjan +// Initial revision +// +// Revision 1.1 2001/08/09 13:39:33 lampret +// Major clean-up. +// +// Revision 1.2 2001/07/30 05:38:02 lampret +// Adding empty directories required by HDL coding guidelines +// +// + +//`include "timescale.v" + +//`define VENDOR_FPGA +//`define VENDOR_XILINX +//`define VENDOR_ALTERA + +module generic_dpram( + // Generic synchronous dual-port RAM interface + rclk, rrst, rce, oe, raddr, do, + wclk, wrst, wce, we, waddr, di +); + + // + // Default address and data buses width + // + parameter aw = 5; // number of bits in address-bus + parameter dw = 16; // number of bits in data-bus + + // + // Generic synchronous double-port RAM interface + // + // read port + input rclk; // read clock, rising edge trigger + input rrst; // read port reset, active high + input rce; // read port chip enable, active high + input oe; // output enable, active high + input [aw-1:0] raddr; // read address + output [dw-1:0] do; // data output + + // write port + input wclk; // write clock, rising edge trigger + input wrst; // write port reset, active high + input wce; // write port chip enable, active high + input we; // write enable, active high + input [aw-1:0] waddr; // write address + input [dw-1:0] di; // data input + + // + // Module body + // + +`ifdef VENDOR_FPGA + // + // Instantiation synthesizeable FPGA memory + // + // This code has been tested using LeonardoSpectrum and Synplicity. + // The code correctly instantiates Altera EABs and Xilinx BlockRAMs. + // + reg [dw-1:0] mem [(1< //// +//// //// +//// Module Description: //// +//// Example of how to convert 8B data to 10B data. //// +//// Example of how to convert 10B data to 8B data. //// +//// //// +//// NOTE: //// +//// The IBM Patent grew up in a world where the Least //// +//// Significant Bit of a word was written to the Left. //// +//// These modules use the LSB as Bit 0, and it will //// +//// typically be written as the Rightmost bit in a field. //// +//// //// +//// NOTE: //// +//// These modules are based on information contained in //// +//// "Implementing an 8B/10B Encoder/Decoder for Gigabit //// +//// Ethernet" by Daniel Elftmann and Jing Hua Ma of Altera. //// +//// The paper was given in the International IC Tiapei //// +//// conferance in 1999. //// +//// //// +//// A second source of information is XAPP336 titled "Design //// +//// of a 16B/20B Encoder/Decoder using a Coolrunner CPLD" //// +//// found on the Xilinx web sire www.xilinx.com //// +//// //// +//// The best article describing this is at wildpackets.com //// +//// http://www.wildpackets.com/compendium/GB/L1-GbEn.html //// +//// //// +//// Finally, this is covered in US patent 4,665,517. //// +//// Unfortunately the US Patent Office online copy has //// +//// missing figures and the tables are un-readable. //// +//// //// +//// Author(s): //// +//// - Anonymous //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2000 Anonymous and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source 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 Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from //// +//// //// +////////////////////////////////////////////////////////////////////// +// +// $Id: encode_8b_10b.v,v 1.6 2001-11-29 09:22:08 bbeaver Exp $ +// +// CVS Revision History +// +// $Log: not supported by cvs2svn $ +// Revision 1.19 2001/11/29 09:31:11 Blue Beaver +// no message +// +// Revision 1.18 2001/10/26 10:39:43 Blue Beaver +// no message +// +// Revision 1.17 2001/10/26 10:38:05 Blue Beaver +// no message +// +// Revision 1.16 2001/10/25 11:43:03 Blue Beaver +// no message +// +// Revision 1.14 2001/10/25 11:33:51 Blue Beaver +// no message +// +// Revision 1.13 2001/10/24 11:38:02 Blue Beaver +// no message +// +// Revision 1.12 2001/10/24 09:47:40 Blue Beaver +// no message +// +// Revision 1.11 2001/10/24 08:49:02 Blue Beaver +// no message +// +// Revision 1.10 2001/10/24 07:28:08 Blue Beaver +// no message +// +// Revision 1.9 2001/10/23 10:34:50 Blue Beaver +// no message +// +// Revision 1.8 2001/10/23 08:12:37 Blue Beaver +// no message +// +// Revision 1.7 2001/10/22 12:36:12 Blue Beaver +// no message +// +// Revision 1.6 2001/10/22 11:54:58 Blue Beaver +// no message +// +// Revision 1.5 2001/10/21 11:37:28 Blue Beaver +// no message +// +// Revision 1.4 2001/10/21 10:17:34 Blue Beaver +// no message +// +// Revision 1.3 2001/10/21 03:40:52 Blue Beaver +// no message +// +// Revision 1.2 2001/10/21 02:27:39 Blue Beaver +// no message +// +// Revision 1.1 2001/10/21 01:36:14 Blue Beaver +// no message +// +// +// + +`timescale 1ns/1ps + + +// These are the codes which are valid to use as control codes. +// I believe that they have names, but I don't know them. +// Note K_28_1, K_28_5, and K_28_7 contain Singular Commas. +`define K_28_0 8'b000_11100 +`define K_28_1 8'b001_11100 +`define K_28_2 8'b010_11100 +`define K_28_3 8'b011_11100 +`define K_28_4 8'b100_11100 +`define K_28_5 8'b101_11100 +`define K_28_6 8'b110_11100 +`define K_28_7 8'b111_11100 + +`define K_23_7 8'b111_10111 +`define K_27_7 8'b111_11011 +`define K_29_7 8'b111_11101 +`define K_30_7 8'b111_11110 + +// Convert 8-bit binary or 8-bit control code to 10-bit code + +module encode_8b_10b ( + eight_bit_data_or_control_in, + input_is_control, + mess_up_link_disparity, + ten_bit_encoded_data_out, + invalid_control, + clk, + reset +); + + input [7:0] eight_bit_data_or_control_in; + input input_is_control; + input mess_up_link_disparity; + output [9:0] ten_bit_encoded_data_out; + output invalid_control; + input clk, reset; + +// Data is treated as 2 fields. The 3 MSB bits are treated as 1 field, and +// the 5 LSB bits are treated as another field. +// The 5 LSB bits are encoded as 6 bits. The 3 MSB bits are encoded as 4 bits. +// The encodings are chosen so that the 10 bits together have either +// 1) 5 1's and 5 0's, +// 2) 4 1's and 6 0's, +// 3 6 1's and 4 0's +// There are alternative encodings for the cases that the number of 1's and 0's +// are not balanced. The 8B/10B encoder keeps track of the running disparity +// between the number of 1's and 0's, and uses alternate encodings to keep +// the serial signal balanced with no disparity on average. +// +// TABLE I 5B/6B ENCODING (NOTE LSB TO LEFT) +// NAME ABCDE K D-1 abcdei DO ALTERNATE +// ______________________________________ +// D.0 00000 0 + 011000 - 100111 +// D.1 10000 0 + 100010 - 011101 ! +// D.2 01000 0 + 010010 - 101101 ! +// D.3 11000 0 x 110001 0 ! +// D.4 00100 0 + 001010 - 110101 ! +// D.5 10100 0 x 101001 0 ! +// D.6 01100 0 x 011001 0 ! +// D.7 11100 0 - 111000 0 000111 ! +// D.8 00010 0 + 000110 - 111001 ! +// D.9 10010 0 x 100101 0 ! +// D.10 01010 0 x 010101 0 ! +// D.11 11010 0 x 110100 0 ! +// D.12 00110 0 x 001101 0 ! +// D.13 10110 0 x 101100 0 ! +// D.14 01110 0 x 011100 0 ! +// D.15 11110 0 + 101000 - 010111 +// D.16 00001 0 - 011011 + 100100 +// D.17 10001 0 x 100011 0 ! +// D.18 01001 0 x 010011 0 ! +// D.19 11001 0 x 110010 0 ! +// D.20 00101 0 x 001011 0 ! +// D.21 10101 0 x 101010 0 ! +// D.22 01101 0 x 011010 0 ! +// D.23 11101 x - 111010 + 000101 ! +// D.24 00011 0 + 001100 - 110011 +// D.25 10011 0 x 100110 0 ! +// D.26 01011 0 x 010110 0 ! +// D.27 11011 x - 110110 + 001001 ! +// D.28 00111 0 x 001110 0 ! +// D.29 10111 x - 101110 + 010001 ! +// D.30 01111 x - 011110 + 100001 ! +// D.31 11111 0 - 101011 + 010100 +// +// K.23 11101 x - 111010 + 000101 ! +// K.27 11011 x - 110110 + 001001 ! +// K.28 00111 1 - 001111 + 110000 ! +// K.29 10111 x - 101110 + 010001 ! +// K.30 01111 x - 011110 + 100001 ! +// +// TABLE II 3B/4B ENCODING (NOTE LSB TO LEFT) +// NAME FGH K D-1 fghj DO ALTERNATE +// ______________________________________ +// D.x.0 000 x + 0100 - 1011 +// D.x.1 100 0 x 1001 0 ! +// D.x.2 010 0 x 0101 0 ! +// D.x.3 110 x - 1100 0 0011 ! +// D.x.4 001 x + 0010 - 1101 ! +// D.x.5 101 0 x 1010 0 ! +// D.x.6 011 0 x 0110 0 ! +// D.x.P7 111 0 - 1110 + 0001 ! Primary +// D.x.A7 111 x - 0111 + 1000 Alternate +// +// K.28.0 000 x + 0100 - 1011 +// K.28.1 100 1 + 1001 0 0110 ! Singular Comma +// K.28.2 010 1 + 0101 0 1010 ! +// K.28.3 110 x - 1100 0 0011 ! +// K.28.4 001 x + 0010 - 1101 ! +// K.28.5 101 1 + 1010 0 0101 ! Singular Comma +// K.28.6 011 1 + 0110 0 1001 ! +// K.28.7 111 x - 0111 + 1000 Singular Comma +// +// K.23.7 111 x - 0111 + 1000 +// K.27.7 111 x - 0111 + 1000 +// K.29.7 111 x - 0111 + 1000 +// K.30.7 111 x - 0111 + 1000 +// +// The alternate Data encoding D.x.A7 is used in the case +// that e = i = 1 and negative running disparity, +// or e = i = 0 and positive running disparity, +// or a Control signal is being sent, +// all while encoding 7 in the MSB. +// +// This exception to the simple rule guarantees that there +// aren't a run of 5 1's or 5 0's in the first 6 bits +// concatinated with the last 4 bits. +// +// The special sequence starting at "a" of 2 0's followed by +// 5 1's, or 2 1's followed by 5 0's, is called a +// "Singular Comma". +// A Singular Comma does not occur in any valid code EXCEPT +// K.28.1 or K.28.5 or K.28.7. +// +// The web says K.28.5 is the Fiber Channel Comma Character. +// +// NOTE that K.28.7 is a bad comma character, because it +// can be followed by a FALSE comma character when followed +// by any character starting with 2 1's or 0's, like K.11 +// The false comma character is part in the K.28.7 and part +// in the following data byte. Bad. +// +// The following info is found in www.wildpackets.com/compendium/GB/L1-GbEn.html, +// in a document headed: +// "Gigabit Ethernet is Closely Related to Fibre Channel Technology, +// going back to 1988!" +// +// 8B-10B characters are described as Dn.m, where n gives the low order +// 5 bits in decimal, and m gives the top 3 bits. +// +// Configuration data is transferred as an alternating sequence of: +// (flips disparity: "C1") K28.5/D21.5/Config_reg[7:0]/Config_reg[15:8] +// (leaves disparity: "C2") K28.5/D2.2/Config_reg[7:0]/Config_reg[15:8] +// +// Idle status is transmitted when ther eis nothing else to send. +// The link is left in negative disparity. If it is positive, first +// "I1" K28.5/D5.6 is sent, which knocks the displarity to negative +// "I2" K28.5/D16.2 is sent repeatitively to maintain the negative disparity +// +// Start of Packet delimiter "S" K27.7 +// End of Packet delimiter "T" K29.7 +// Carrier Extend "R" K23.7 +// +// An End Of Packet consists of either T/R/I or T/R/R +// The second is used when a packet follows the previous packet in a burst. +// "R" is also sent so that a subsequent "I" follows on an even-numbered +// code boundry. +// +// Error propagation "V" K30.7 + + +// Accumulate the new data. First, calculate ignoring the running disparity; + wire [9:0] first_level_encoded_data; + +// Calculate the values for the 5 -> 6 encoding + +// Discover important details about the incoming numbers. + wire [1:0] LSB_02_Population = eight_bit_data_or_control_in[0] // half adder + + eight_bit_data_or_control_in[1]; + wire [1:0] LSB_34_Population = eight_bit_data_or_control_in[2] // half adder + + eight_bit_data_or_control_in[3]; + wire [2:0] LSB_Population = {1'b0, LSB_02_Population[1:0]} + + {1'b0, LSB_34_Population[1:0]}; + +// As can be seen, in many of the LSB encodings the bottom +// 4 of the encoded data are identical to the input +// data. (These are noted with a trailing "!") +// +// There are several exceptions to this in the LSB. Decode these. + wire LSB_all_zero = (LSB_Population[2:0] == 3'h0); + wire LSB_contains_one_one = (LSB_Population[2:0] == 3'h1); + wire LSB_contains_two_ones = (LSB_Population[2:0] == 3'h2); + wire LSB_contains_three_ones = (LSB_Population[2:0] == 3'h3); + wire LSB_all_one = (LSB_Population[2:0] == 3'h4); + + wire LSB_is_7 = (eight_bit_data_or_control_in[4:0] == 5'h07); // 7 + wire LSB_is_24 = (eight_bit_data_or_control_in[4:0] == 5'h18); // 24 + wire LSB_is_28 = (eight_bit_data_or_control_in[4:0] == 5'h1C); // 28 + wire LSB_is_23_27_29_30 = (eight_bit_data_or_control_in[4:0] == 5'h17) // 23 + | (eight_bit_data_or_control_in[4:0] == 5'h1B) // 27 + | (eight_bit_data_or_control_in[4:0] == 5'h1D) // 29 + | (eight_bit_data_or_control_in[4:0] == 5'h1E); // 30 + wire LSB_contains_other_i = (eight_bit_data_or_control_in[3:0] == 4'h0) + | (eight_bit_data_or_control_in[3:0] == 4'h1) + | (eight_bit_data_or_control_in[3:0] == 4'h2) + | (eight_bit_data_or_control_in[3:0] == 4'h4); + +// Notice that the bottom bit of the encoded LSB data is the same as +// the input LSB data. + assign first_level_encoded_data[0] = eight_bit_data_or_control_in[0]; + +// If the bottom 4 bits are 0s, force 0110 (LSB is the left bit) +// If the bottom 5 bits are 24, force 0011 (LSB is the left bit) +// If the bottom 4 bits are 1s, force 1010 (LSB is the left bit) + assign first_level_encoded_data[1] = ( eight_bit_data_or_control_in[1] + & ~LSB_all_one) + | LSB_all_zero; + assign first_level_encoded_data[2] = eight_bit_data_or_control_in[2] + | LSB_all_zero + | LSB_is_24; + assign first_level_encoded_data[3] = ( eight_bit_data_or_control_in[3] + & ~LSB_all_one); + +// Bits "e" and "i" are chosen to guarantee that there are enough transitions, +// and to control the disparity caused by each pattern. + + assign first_level_encoded_data[4] = + (LSB_contains_one_one | eight_bit_data_or_control_in[4]) + & ~LSB_is_24; + + assign first_level_encoded_data[5] = + (LSB_contains_two_ones & ~eight_bit_data_or_control_in[4]) + | ( ( LSB_contains_other_i | LSB_all_one) + & eight_bit_data_or_control_in[4]) + | (input_is_control & LSB_is_28); + +// Now calculate the other information needed to produce the LSB output data + wire LSB_code_has_positive_disparity = + | ( ( LSB_all_zero + | LSB_contains_three_ones + | LSB_all_one) + & (eight_bit_data_or_control_in[4] == 1'b1) ) + | (input_is_control & LSB_is_28); + + wire LSB_code_has_negative_disparity = + ( ( LSB_all_zero + | LSB_contains_one_one + | LSB_all_one) + & (eight_bit_data_or_control_in[4] == 1'b0) ) + | LSB_is_24; + + wire invert_LSB_if_input_disparity_is_positive = + LSB_code_has_positive_disparity + | LSB_is_7; + + wire invert_LSB_if_input_disparity_is_negative = + LSB_code_has_negative_disparity; + + wire LSB_toggle_running_disparity = + LSB_code_has_positive_disparity + | LSB_code_has_negative_disparity; + +// Calculate the values for the 3 -> 4 encoding + +// An alternate encoding of the MSB for an input of 0x7 is used to +// prevent accidental use of a pattern with 5 0's or 1's in a row. +// The alternate Data encoding D.x.A7 is used in the case +// that e = i = 0 and positive running disparity, +// or e = i = 1 and negative running disparity, +// or a Control signal is being sent, +// all while encoding 7 in the MSB. + + reg Running_Disparity; // forward reference + + wire use_alternate_encoding = + ( input_is_control + | ( (Running_Disparity == 1'b0) + & ( (eight_bit_data_or_control_in[4:0] == 5'h11) // 17 + | (eight_bit_data_or_control_in[4:0] == 5'h12) // 18 + | (eight_bit_data_or_control_in[4:0] == 5'h14) // 20 + )) + | ( (Running_Disparity == 1'b1) + & ( (eight_bit_data_or_control_in[4:0] == 5'h0B) // 11 + | (eight_bit_data_or_control_in[4:0] == 5'h0D) // 13 + | (eight_bit_data_or_control_in[4:0] == 5'h0E) // 14 + )) + ) + & (eight_bit_data_or_control_in[7:5] == 3'h7); + +// The low bit of the MSB is a pass-through, except when the alternate +// encoding of the value is used to prevent unintentional long runs. + assign first_level_encoded_data[6] = eight_bit_data_or_control_in[5] + & ~use_alternate_encoding; + +// The second bit of the MSB is a pass-through except when the input +// is all 0's. + assign first_level_encoded_data[7] = eight_bit_data_or_control_in[6] + | (eight_bit_data_or_control_in[7:5] == 3'h0); + +// The top bit of the encoded MSB data is the same as the input MSB data. + assign first_level_encoded_data[8] = eight_bit_data_or_control_in[7]; + +// Bit "j" is chosen to guarantee that there are enough transitions, +// and to control the disparity caused by each pattern. + assign first_level_encoded_data[9] = + (eight_bit_data_or_control_in[7:5] == 3'h1) + | (eight_bit_data_or_control_in[7:5] == 3'h2) + | use_alternate_encoding; + +// Now calculate the other information needed to produce the MSB output data + wire invert_MSB_if_LSB_disparity_is_positive = + (eight_bit_data_or_control_in[7:5] == 3'h3) + | (eight_bit_data_or_control_in[7:5] == 3'h7); + + wire invert_MSB_if_LSB_disparity_is_negative = + (eight_bit_data_or_control_in[7:5] == 3'h0) + | (eight_bit_data_or_control_in[7:5] == 3'h4) + | ( input_is_control + & ( (eight_bit_data_or_control_in[7:5] == 3'h1) + | (eight_bit_data_or_control_in[7:5] == 3'h2) + | (eight_bit_data_or_control_in[7:5] == 3'h5) + | (eight_bit_data_or_control_in[7:5] == 3'h6) + ) + ); + + wire MSB_toggle_running_disparity = + (eight_bit_data_or_control_in[7:5] == 3'h0) + | (eight_bit_data_or_control_in[7:5] == 3'h4) + | (eight_bit_data_or_control_in[7:5] == 3'h7); + +// Keep track of the running disparity. If 1'b1, the disparity is positive. + always @(posedge clk) + begin + if (reset == 1'b1) + begin + Running_Disparity <= 1'b0; // start negative + end + else + begin + Running_Disparity <= Running_Disparity + ^ LSB_toggle_running_disparity + ^ MSB_toggle_running_disparity; + end + end + +// Decide whether to invert the encoded data; + wire Invert_LSB = ( (Running_Disparity == 1'b1) + & (invert_LSB_if_input_disparity_is_positive == 1'b1) ) + | ( (Running_Disparity == 1'b0) + & (invert_LSB_if_input_disparity_is_negative == 1'b1) ); + + wire Invert_MSB = ( ((Running_Disparity ^ LSB_toggle_running_disparity) == 1'b1) + & (invert_MSB_if_LSB_disparity_is_positive == 1'b1) ) + | ( ((Running_Disparity ^ LSB_toggle_running_disparity) == 1'b0) + & (invert_MSB_if_LSB_disparity_is_negative == 1'b1) ); + +// Calculate the actual encoded data. + reg [9:0] ten_bit_encoded_data_out; + reg invalid_control; + + always @(posedge clk) + begin + if (reset == 1'b1) + begin + ten_bit_encoded_data_out[9:0] <= 10'h000; + invalid_control <= 1'b0; + end + else + begin + ten_bit_encoded_data_out[5:0] <= + {6{Invert_LSB}} ^ first_level_encoded_data[5:0]; + ten_bit_encoded_data_out[9:6] <= + {4{Invert_MSB}} ^ first_level_encoded_data[9:6]; + invalid_control <= input_is_control + & ~( LSB_is_28 // all MSB bits are valid + | ( LSB_is_23_27_29_30 + & (eight_bit_data_or_control_in[7:5] == 3'h7) // MSB must be 7 + ) + ); + end + end +endmodule + +// Convert 10-bit code to 8-bit binary or 8-bit control code + +module decode_10b_8b ( + ten_bit_encoded_data_in, + eight_bit_data_or_control_out, + output_is_control, + invalid_encoded_data, + clk, + reset +); + input [9:0] ten_bit_encoded_data_in; + output [7:0] eight_bit_data_or_control_out; + output output_is_control; + output invalid_encoded_data; + input clk, reset; + +// Data is encoded as described in the encode_8b_10b module above. +// This module tries to extract valid data or control info from the +// encoded input data. +// +// This module depends on the data being correctly 10-bit aligned. +// the LSB of the input must be the "a" bit as described above. +// +// This module tries to detect errors in the code sequence as it arrives. +// Errors are when an illegal bit sequence arrives, or when the disparity +// of the input data goes beyond 1 bit. This would happen if the sender +// did not correctly use alternate encodings of output data. + +// Accumulate the new data. Calculate ignoring the running disparity; + wire [7:0] decoded_data; + +// Calculate the values for the 6 -> 5 decoding + +// Discover important details about the incoming numbers. + wire [1:0] LSB_02_Population = ten_bit_encoded_data_in[0] // full adder + + ten_bit_encoded_data_in[1] + + ten_bit_encoded_data_in[2]; + wire [1:0] LSB_35_Population = ten_bit_encoded_data_in[3] // full adder + + ten_bit_encoded_data_in[4] + + ten_bit_encoded_data_in[5]; + wire [2:0] LSB_bottom_4_Population = {1'b0, LSB_02_Population[1:0]} + + {2'b00, ten_bit_encoded_data_in[3]}; + wire [2:0] LSB_Population = {1'b0, LSB_02_Population[1:0]} // allowed: 2, 3, 4 + + {1'b0, LSB_35_Population[1:0]}; // illegal: 0, 1, 5, 6 + +// As can be seen, in many of the LSB encodings the bottom +// 4 of the decoded data are identical to the input +// data. (These are noted with a trailing "!") +// +// The bottom 4 bits can be used directly in these cases (which are all cases +// where the number of bits in the input are equil to 3 except for 7): +// 3 5 6 9 10 11 12 13 14 17 18 19 20 21 22 25 26 28 + +// The bottom 4 bits must be inverted before use in these cases: (MSB right) +// 011101 101101 110101 111001 000101 001001 010001 100001 000111 110000 + wire LSB_Invert_Before_Use = ( (ten_bit_encoded_data_in[5:4] == 2'b10) + & ( (LSB_bottom_4_Population[2:0] == 3'h1) + | (LSB_bottom_4_Population[2:0] == 3'h3) ) + ) + | (ten_bit_encoded_data_in[5:0] == 6'b111000) // LSB to right + | (ten_bit_encoded_data_in[5:0] == 6'b000011); + +// Values must be substituted in these cases: + wire LSB_is_0_16_a = (ten_bit_encoded_data_in[5:0] == 6'b000110) // LSB to right + | (ten_bit_encoded_data_in[5:0] == 6'b110110); + + wire LSB_is_0_16_b = (ten_bit_encoded_data_in[5:0] == 6'b111001) // LSB to right + | (ten_bit_encoded_data_in[5:0] == 6'b001001); + + wire LSB_is_15_31_a = (ten_bit_encoded_data_in[5:0] == 6'b000101) // LSB to right + | (ten_bit_encoded_data_in[5:0] == 6'b110101); + + wire LSB_is_15_31_b = (ten_bit_encoded_data_in[5:0] == 6'b111010) // LSB to right + | (ten_bit_encoded_data_in[5:0] == 6'b001010); + + wire LSB_is_24_a = (ten_bit_encoded_data_in[5:0] == 6'b001100); // LSB to right + wire LSB_is_24_b = (ten_bit_encoded_data_in[5:0] == 6'b110011); // LSB to right + +// Notice when these codes occur. They are the only time Alternate D.x.7 data +// can be used. This is looked for below to detect errors. + wire LSB_is_11_13_14 = (ten_bit_encoded_data_in[5:0] == 6'b001011) // LSB to right + | (ten_bit_encoded_data_in[5:0] == 6'b001101) + | (ten_bit_encoded_data_in[5:0] == 6'b001110); + + wire LSB_is_17_18_20 = (ten_bit_encoded_data_in[5:0] == 6'b110001) // LSB to right + | (ten_bit_encoded_data_in[5:0] == 6'b110010) + | (ten_bit_encoded_data_in[5:0] == 6'b110100); + +// Control signals must be called out when recognized. + wire LSB_is_23_27_29_30 = ( (ten_bit_encoded_data_in[5:4] == 2'b01) + & (LSB_bottom_4_Population[2:0] == 3'h3) ) + | ( (ten_bit_encoded_data_in[5:4] == 2'b10) + & (LSB_bottom_4_Population[2:0] == 3'h1) ); + + wire LSB_is_K28 = (ten_bit_encoded_data_in[5:0] == 6'b111100) // LSB to right + | (ten_bit_encoded_data_in[5:0] == 6'b000011); + +// calculate the bottom 4 bits of decoded data + wire [3:0] LSB_XOR_Term = {4{LSB_Invert_Before_Use}} // invert all signals with alternate values + | {1'b0, LSB_is_0_16_a, LSB_is_0_16_a, 1'b0} // make 0, 16 into 0 + | {LSB_is_0_16_b, 1'b0, 1'b0, LSB_is_0_16_b} // make 0, 16 into 0 + | {LSB_is_15_31_a, 1'b0, LSB_is_15_31_a, 1'b0} // make 15, 31 into 15 + | {1'b0, LSB_is_15_31_b, 1'b0, LSB_is_15_31_b} // make 15, 31 into 15 + | {1'b0, LSB_is_24_a, 1'b0, 1'b0} // make 24 into 24 + | {LSB_is_24_b, 1'b0, LSB_is_24_b, LSB_is_24_b}; // make 24 into 24 + + assign decoded_data[3:0] = ten_bit_encoded_data_in[3:0] ^ LSB_XOR_Term[3:0]; + +// The next bit is harder. I don't know if this is minimal + assign decoded_data[4] = (ten_bit_encoded_data_in[5:0] == 6'b001001) // LSB to right + | (ten_bit_encoded_data_in[5:0] == 6'b001010) + | (ten_bit_encoded_data_in[5:0] == 6'b001100) + | (ten_bit_encoded_data_in[5:3] == 3'b110) + | ( (ten_bit_encoded_data_in[5:4] == 2'b01) + & (LSB_bottom_4_Population[2:0] == 3'h2) ) + | LSB_is_23_27_29_30 + | LSB_is_K28; + +// Calculate the values for the 4 -> 3 decoding + +// The bottom 2 bits of the MSB must always be inverted before use in these +// cases: (MSB right) 0011, 1101, 0001 +// When the LSB indicate that the byte contains a K28, and the bottom 6 bits +// have a negative disparity, invert these before using: (MSB right) +// 0110, 1010, 0101, 1001 +// Only 2 of these are needed to greate singular commas. I don't understand +// why they made the other special cases. Very odd + + wire MSB_Invert_Before_Use = (ten_bit_encoded_data_in[9:6] == 4'b1100) // LSB to right + | (ten_bit_encoded_data_in[9:6] == 4'b1011) + | (ten_bit_encoded_data_in[9:6] == 4'b1000) + | ( (ten_bit_encoded_data_in[5:0] == 6'b000011) + & ( (ten_bit_encoded_data_in[9:6] == 4'b0110) + | (ten_bit_encoded_data_in[9:6] == 4'b0101) + | (ten_bit_encoded_data_in[9:6] == 4'b1010) + | (ten_bit_encoded_data_in[9:6] == 4'b1001) + ) + ); + +// Values must be substituted in these cases: + wire MSB_0_value_a = (ten_bit_encoded_data_in[9:6] == 4'b0010); // LSB to right + wire MSB_0_value_b = (ten_bit_encoded_data_in[9:6] == 4'b1101); + + wire alternate_MSB_a = (ten_bit_encoded_data_in[9:6] == 4'b1110); // LSB to right + wire alternate_MSB_b = (ten_bit_encoded_data_in[9:6] == 4'b0001); + + wire primary_MSB_a = (ten_bit_encoded_data_in[9:6] == 4'b0111); // LSB to right + wire primary_MSB_b = (ten_bit_encoded_data_in[9:6] == 4'b1000); + + wire [2:0] MSB_XOR_Term = {3{MSB_Invert_Before_Use}} + | {1'b0, MSB_0_value_a, 1'b0} + | {MSB_0_value_b, 1'b0, MSB_0_value_b} + | {1'b0, 1'b0, alternate_MSB_a} + | {alternate_MSB_b, alternate_MSB_b, 1'b0}; + + assign decoded_data[7:5] = ten_bit_encoded_data_in[8:6] ^ MSB_XOR_Term[2:0]; + + wire decoded_control = ( LSB_is_23_27_29_30 + & (alternate_MSB_a | alternate_MSB_b)) + | LSB_is_K28; + +// Keep track of the running disparity. If 1'b1, the disparity is positive. + + wire [1:0] MSB_01_Population = ten_bit_encoded_data_in[6] // half adder + + ten_bit_encoded_data_in[7]; + wire [1:0] MSB_23_Population = ten_bit_encoded_data_in[8] // half adder + + ten_bit_encoded_data_in[9]; + wire [2:0] MSB_Population = {1'b0, MSB_01_Population[1:0]} // 1, 2, 3 + + {1'b0, MSB_23_Population[1:0]}; + + wire [3:0] Code_Population = {1'b0, LSB_Population[2:0]} // 4, 5, 6 + + {1'b0, MSB_Population[2:0]}; + + reg Running_Disparity; + + always @(posedge clk) + begin + if (reset == 1'b1) + begin + Running_Disparity <= 1'b0; // start negative + end + else + begin + Running_Disparity <= (Code_Population[3:0] == 4'h6) + ? 1'b1 + : ( (Code_Population[3:0] == 4'h4) + ? 1'b0 + : Running_Disparity); + end + end + +// Detect invalid code values. + + wire too_many_bits_in_first_nibble = + (LSB_bottom_4_Population[2:0] > 3'h3); + wire too_few_bits_in_first_nibble = + (LSB_bottom_4_Population[2:0] < 3'h1); + + wire too_many_bits_in_LSB = (LSB_Population[2:0] > 3'h4); + wire too_few_bits_in_LSB = (LSB_Population[2:0] < 3'h2); + + wire too_many_bits_in_MSB = (MSB_Population[2:0] > 3'h3); + wire too_few_bits_in_MSB = (LSB_Population[2:0] < 3'h1); + + wire too_many_bits_in_entire_code = (Code_Population[3:0] > 4'h6); + wire too_few_bits_in_entire_code = (Code_Population[3:0] < 4'h4); + + wire LSB_inconsistent_with_running_disparity = + ( (Running_Disparity == 1'b1) + & ( (LSB_Population[2:0] == 3'h4) + | (ten_bit_encoded_data_in[5:0] == 6'b000111) // X.7 negative disparity + ) ) + | ( (Running_Disparity == 1'b0) + & ( (LSB_Population[2:0] == 3'h2) + | (ten_bit_encoded_data_in[5:0] == 6'b111000) // X.7 positive disparity + ) ); + + wire LSB_code_7_positive_but_MSB_inconsistent = + (ten_bit_encoded_data_in[5:0] == 6'b111000) // X.7 positive disparity + & ( (MSB_Population[2:0] == 3'h3) // too many bits in MSB + | (ten_bit_encoded_data_in[9:6] == 4'b0011) // Y.3 negative disparity + ); + + wire LSB_code_7_negative_but_MSB_inconsistent = + (ten_bit_encoded_data_in[5:0] == 6'b000111) // X.7 negative disparity + & ( (MSB_Population[2:0] == 3'h1) // too few bits in MSB + | (ten_bit_encoded_data_in[9:6] == 4'b1100) // Y.3 positive disparity + ); + + wire MSB_code_3_positive_but_LSB_inconsistent = + (ten_bit_encoded_data_in[9:6] == 4'b1100) // X.7 positive disparity + & (LSB_Population[2:0] == 3'h2); // too few bits in LSB + + wire MSB_code_3_negative_but_LSB_inconsistent = + (ten_bit_encoded_data_in[9:6] == 4'b0011) // X.7 negative disparity + & (LSB_Population[2:0] == 3'h4); // too many bits in LSB + + wire alternate_encoding_not_used_when_required = + ((Running_Disparity == 1'b1) & (LSB_is_11_13_14) & primary_MSB_b) + | ((Running_Disparity == 1'b0) & (LSB_is_17_18_20) & primary_MSB_a) + | (LSB_is_K28 & (primary_MSB_a | primary_MSB_b)); + + wire primary_encoding_not_used_when_required = + ((Running_Disparity == 1'b0) & (LSB_is_11_13_14) & alternate_MSB_b) + | ((Running_Disparity == 1'b1) & (LSB_is_17_18_20) & alternate_MSB_a); + + wire detected_invalid_8b_10b_sequence = too_many_bits_in_first_nibble + | too_few_bits_in_first_nibble + | too_many_bits_in_LSB + | too_few_bits_in_LSB + | too_many_bits_in_MSB + | too_few_bits_in_MSB + | too_many_bits_in_entire_code + | too_few_bits_in_entire_code + | LSB_inconsistent_with_running_disparity + | LSB_code_7_positive_but_MSB_inconsistent + | LSB_code_7_negative_but_MSB_inconsistent + | MSB_code_3_positive_but_LSB_inconsistent + | MSB_code_3_negative_but_LSB_inconsistent + | alternate_encoding_not_used_when_required + | primary_encoding_not_used_when_required; + +// Calculate the actual decoded data. + reg [7:0] eight_bit_data_or_control_out; + reg output_is_control; + reg invalid_encoded_data; + + always @(posedge clk) + begin + if (reset == 1'b1) + begin + eight_bit_data_or_control_out[7:0] <= 8'h00; + output_is_control <= 1'b0; + invalid_encoded_data <= 1'b0; + end + else + begin + eight_bit_data_or_control_out[7:0] <= decoded_data[7:0]; + output_is_control <= decoded_control; + invalid_encoded_data <= detected_invalid_8b_10b_sequence + & (ten_bit_encoded_data_in[9:0] != 10'b0000_000000) // NOTE TEMPORARY + ; + end + end +endmodule + +// `define TEST_8B_10B +`ifdef TEST_8B_10B +// This simulates in between 6 and 7 minutes on a 400 MHz Ultra using verilog XL. +// This does not complete before filling up the disk on a 300 MHz K6 using Verilogger PRO. +module test_8b_10b; + reg [8:0] test_data; + reg [8:0] test_data_second; + reg [8:0] limit; + reg [7:0] control_byte; + reg [7:0] control_byte_second; + reg test_control; + + reg [7:0] eight_bit_data_or_control_in; + reg input_is_control; + reg mess_up_link_disparity; + wire [9:0] ten_bit_encoded_data_out; + wire invalid_control; + + wire [7:0] eight_bit_data_or_control_out; + wire output_is_control; + wire invalid_encoded_data; + + reg clk, reset; + + reg found_singular_comma; + +task set_to_negative_disparity; + begin + clk = 1'b0; reset = 1'b1; #1; + clk = 1'b1; reset = 1'b1; #1; // do reset, setting sender to negative disparity + clk = 1'b0; reset = 1'b1; #1; + clk = 1'b0; reset = 1'b0; #1; + end +endtask + +task set_to_positive_disparity; + begin + clk = 1'b0; reset = 1'b1; #1; + clk = 1'b1; reset = 1'b1; #1; // do reset, setting sender to negative disparity + clk = 1'b0; reset = 1'b1; #1; + clk = 1'b0; reset = 1'b0; #1; + + eight_bit_data_or_control_in[7:0] = 8'b111_00011; #1; + clk = 1'b1; #1; // switch to a positive running disparity + clk = 1'b0; #1; + end +endtask + +task check; + input disparity; + input [7:0] test_data; + input do_control; + reg [9:0] latched_code; + begin + if (disparity == 1'b1) + set_to_positive_disparity; + else + set_to_negative_disparity; + + input_is_control = do_control; + eight_bit_data_or_control_in[7:0] = test_data[7:0]; #1; // inputs settle + clk = 1'b1; #1; // encoded data available + clk = 1'b0; #1; + + latched_code[9:0] = ten_bit_encoded_data_out[9:0]; + + input_is_control = 1'b0; + eight_bit_data_or_control_in[7:0] = 8'b010_00011; #1; + clk = 1'b1; #1; // decoded data available + clk = 1'b0; #1; + + if ( (eight_bit_data_or_control_out[7:0] !== test_data[7:0]) + | (output_is_control !== do_control) + | (invalid_encoded_data !== 1'b0) + ) + begin + $display ("!!! test data, result %d %d %b_%b %x %d %b %b", + test_data[7:5], test_data[4:0], + latched_code[9:6], latched_code[5:0], + eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], + output_is_control, invalid_encoded_data); + end + end +endtask + +function look_for_singular_comma; + input [6:0] data; + begin + if ( (data[0] == data[1]) + & (data[0] == ~data[2]) + & (data[0] == ~data[3]) + & (data[0] == ~data[4]) + & (data[0] == ~data[5]) + & (data[0] == ~data[6]) + ) + begin + look_for_singular_comma = 1'b1; + end + else + begin + look_for_singular_comma = 1'b0; + end + end +endfunction + +task check_pair; // Data then Data or Control then Data + input disparity; + input [7:0] test_data; + input [7:0] test_data_second; + input do_control; + input want_singular_comma; + reg [9:0] latched_code; + reg [19:0] two_bytes_of_codes_back_to_back; + + begin + if (disparity == 1'b1) + set_to_positive_disparity; + else + set_to_negative_disparity; + + input_is_control = do_control; + eight_bit_data_or_control_in[7:0] = test_data[7:0]; #1; // inputs settle + clk = 1'b1; #1; // encoded data available + clk = 1'b0; #1; + + latched_code[9:0] = ten_bit_encoded_data_out[9:0]; + two_bytes_of_codes_back_to_back[9:0] = ten_bit_encoded_data_out[9:0]; + + input_is_control = 1'b0; + eight_bit_data_or_control_in[7:0] = test_data_second[7:0]; #1; // inputs settle + clk = 1'b1; #1; // decoded data available + clk = 1'b0; #1; + + if ( (eight_bit_data_or_control_out[7:0] !== test_data[7:0]) + | (output_is_control !== do_control) + | (invalid_encoded_data !== 1'b0) + ) + begin + $display ("!!! test data, result %d %d %b_%b %x %d %b %b", + test_data[7:5], test_data[4:0], + latched_code[9:6], latched_code[5:0], + eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], + output_is_control, invalid_encoded_data); + end + + latched_code[9:0] = ten_bit_encoded_data_out[9:0]; + two_bytes_of_codes_back_to_back[19:10] = ten_bit_encoded_data_out[9:0]; + + input_is_control = 1'b0; + eight_bit_data_or_control_in[7:0] = 8'b010_00011; #1; + clk = 1'b1; #1; // decoded data available + clk = 1'b0; #1; + + if ( (eight_bit_data_or_control_out[7:0] !== test_data_second[7:0]) + | (output_is_control !== 1'b0) + | (invalid_encoded_data !== 1'b0) + ) + begin + $display ("!!! test data second, result %d %d %b_%b %x %d %b %b", + test_data_second[7:5], test_data_second[4:0], + latched_code[9:6], latched_code[5:0], + eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], + output_is_control, invalid_encoded_data); + end + + if (~want_singular_comma) + begin + if ( look_for_singular_comma (two_bytes_of_codes_back_to_back[6:0]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[7:1]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[8:2]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[9:3]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[10:4]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[11:5]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[12:6]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[13:7]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[14:8]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[15:9]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[16:10]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[17:11]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[18:12]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[19:13]) ) + begin + $display ("!!! unexpected singular comma, result %d %d %b_%b %b_%b %b %b %b %b", + test_data[7:0], test_data_second[7:0], + two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], + two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], + eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], + output_is_control, invalid_encoded_data); + end + end + else // want a singular comma + begin + if (!look_for_singular_comma (two_bytes_of_codes_back_to_back[6:0])) + begin + $display ("!!! missing singular comma, result %d %d %b_%b %b_%b %b %b %b %b", + test_data[7:0], test_data_second[7:0], + two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], + two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], + eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], + output_is_control, invalid_encoded_data); + end + if ( look_for_singular_comma (two_bytes_of_codes_back_to_back[7:1]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[8:2]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[9:3]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[10:4]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[11:5]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[12:6]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[13:7]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[14:8]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[15:9]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[16:10]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[17:11]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[18:12]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[19:13]) ) + begin + $display ("!!! unexpected singular comma, result %d %d %b_%b %b_%b %b %b %b %b", + test_data[7:0], test_data_second[7:0], + two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], + two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], + eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], + output_is_control, invalid_encoded_data); + end + end + end +endtask + +task check_pair_2; // Data followed by Control or Control followed by Control + input disparity; + input [7:0] test_data; + input [7:0] test_data_second; + input first_control; + input want_first_singular_comma; + input second_control; + input want_second_singular_comma; + reg [9:0] latched_code; + reg [19:0] two_bytes_of_codes_back_to_back; + + begin + if (disparity == 1'b1) + set_to_positive_disparity; + else + set_to_negative_disparity; + + input_is_control = first_control; + eight_bit_data_or_control_in[7:0] = test_data[7:0]; #1; // inputs settle + clk = 1'b1; #1; // encoded data available + clk = 1'b0; #1; + + latched_code[9:0] = ten_bit_encoded_data_out[9:0]; + two_bytes_of_codes_back_to_back[9:0] = ten_bit_encoded_data_out[9:0]; + + input_is_control = second_control; + eight_bit_data_or_control_in[7:0] = test_data_second[7:0]; #1; // inputs settle + clk = 1'b1; #1; // decoded data available + clk = 1'b0; #1; + + if ( (eight_bit_data_or_control_out[7:0] !== test_data[7:0]) + | (output_is_control !== first_control) + | (invalid_encoded_data !== 1'b0) + ) + begin + $display ("!!! test data, result %d %d %b_%b %x %d %b %b", + test_data[7:5], test_data[4:0], + latched_code[9:6], latched_code[5:0], + eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], + output_is_control, invalid_encoded_data); + end + + latched_code[9:0] = ten_bit_encoded_data_out[9:0]; + two_bytes_of_codes_back_to_back[19:10] = ten_bit_encoded_data_out[9:0]; + + input_is_control = 1'b0; + eight_bit_data_or_control_in[7:0] = 8'b010_00011; #1; + clk = 1'b1; #1; // decoded data available + clk = 1'b0; #1; + + if ( (eight_bit_data_or_control_out[7:0] !== test_data_second[7:0]) + | (output_is_control !== second_control) + | (invalid_encoded_data !== 1'b0) + ) + begin + $display ("!!! test data second, result %d %d %b_%b %x %d %b %b", + test_data_second[7:5], test_data_second[4:0], + latched_code[9:6], latched_code[5:0], + eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], + output_is_control, invalid_encoded_data); + end + + if (~want_first_singular_comma) + begin + if ( look_for_singular_comma (two_bytes_of_codes_back_to_back[6:0]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[7:1]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[8:2]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[9:3]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[10:4]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[11:5]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[12:6]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[13:7]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[14:8]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[15:9]) ) + begin + $display ("!!! unexpected singular comma, result %d %d %b_%b %b_%b %b %b %b %b", + test_data[7:0], test_data_second[7:0], + two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], + two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], + eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], + output_is_control, invalid_encoded_data); + end + end + else // want a singular comma in the first byte + begin + if (!look_for_singular_comma (two_bytes_of_codes_back_to_back[6:0])) + begin + $display ("!!! missing singular comma, result %d %d %b_%b %b_%b %b %b %b %b", + test_data[7:0], test_data_second[7:0], + two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], + two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], + eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], + output_is_control, invalid_encoded_data); + end + if ( look_for_singular_comma (two_bytes_of_codes_back_to_back[7:1]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[8:2]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[9:3]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[10:4]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[11:5]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[12:6]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[13:7]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[14:8]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[15:9]) ) + begin + $display ("!!! unexpected singular comma, result %d %d %b_%b %b_%b %b %b %b %b", + test_data[7:0], test_data_second[7:0], + two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], + two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], + eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], + output_is_control, invalid_encoded_data); + end + end + if (~want_second_singular_comma) + begin + if ( look_for_singular_comma (two_bytes_of_codes_back_to_back[16:10]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[17:11]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[18:12]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[19:13]) ) + begin + $display ("!!! unexpected singular comma, result %d %d %b_%b %b_%b %b %b %b %b", + test_data[7:0], test_data_second[7:0], + two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], + two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], + eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], + output_is_control, invalid_encoded_data); + end + end + else // want a singular comma in the second byte + begin + if (!look_for_singular_comma (two_bytes_of_codes_back_to_back[16:10])) + begin + $display ("!!! missing singular comma 2, result %d %d %b_%b %b_%b %b %b %b %b", + test_data[7:0], test_data_second[7:0], + two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], + two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], + eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], + output_is_control, invalid_encoded_data); + end + if ( look_for_singular_comma (two_bytes_of_codes_back_to_back[17:11]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[18:12]) + | look_for_singular_comma (two_bytes_of_codes_back_to_back[19:13]) ) + begin + $display ("!!! unexpected singular comma 2, result %d %d %b_%b %b_%b %b %b %b %b", + test_data[7:0], test_data_second[7:0], + two_bytes_of_codes_back_to_back[9:6], two_bytes_of_codes_back_to_back[5:0], + two_bytes_of_codes_back_to_back[19:16], two_bytes_of_codes_back_to_back[15:10], + eight_bit_data_or_control_out[7:5], eight_bit_data_or_control_out[4:0], + output_is_control, invalid_encoded_data); + end + end + end +endtask + +function [7:0] pick_control_byte; + input [3:0] index; + begin + case (index[3:0]) + 0: pick_control_byte[7:0] = `K_23_7; + 1: pick_control_byte[7:0] = `K_27_7; + 2: pick_control_byte[7:0] = `K_28_0; + 3: pick_control_byte[7:0] = `K_28_1; + 4: pick_control_byte[7:0] = `K_28_2; + 5: pick_control_byte[7:0] = `K_28_3; + 6: pick_control_byte[7:0] = `K_28_4; + 7: pick_control_byte[7:0] = `K_28_5; + 8: pick_control_byte[7:0] = `K_28_6; + 9: pick_control_byte[7:0] = `K_28_7; + 10: pick_control_byte[7:0] = `K_29_7; + default: pick_control_byte[7:0] = `K_30_7; + endcase + end +endfunction + + initial + begin + mess_up_link_disparity = 1'b0; + + $display ("test 32 LSB data values starting with negative disparity"); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h020; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + check (0, test_data[7:0], 1'b0); + end + + $display ("test 8 MSB data values starting with negative disparity"); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + check (0, (test_data[2:0] << 5) | 5'h03, 1'b0); + end + + $display ("test 8 MSB data values starting with negative disparity"); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + check (0, (test_data[2:0] << 5) | 5'h0B, 1'b0); // 11 + end + + $display ("test 8 MSB data values starting with negative disparity"); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + check (0, (test_data[2:0] << 5) | 5'h11, 1'b0); // 17 + end + + $display ("test control starting with negative disparity"); + check (0, `K_23_7, 1'b1); + check (0, `K_27_7, 1'b1); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + check (0, `K_28_0 | (test_data[2:0] << 5), 1'b1); + end + check (0, `K_29_7, 1'b1); + check (0, `K_30_7, 1'b1); + +// $display ("invalid control character with negative disparity"); +// check (0, 8'h0, 1'b1); + + + $display ("test 32 LSB data values starting with positive disparity"); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h020; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + check (1, test_data[7:0], 1'b0); + end + + $display ("test 8 MSB data values starting with positive disparity"); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + check (1, (test_data[2:0] << 5) | 5'h03, 1'b0); + end + + $display ("test 8 MSB data values starting with positive disparity"); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + check (1, (test_data[2:0] << 5) | 5'h0B, 1'b0); // 11 + end + + $display ("test 8 MSB data values starting with positive disparity"); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + check (1, (test_data[2:0] << 5) | 5'h11, 1'b0); // 17 + end + + $display ("test control starting with positive disparity"); + check (1, `K_23_7, 1'b1); + check (1, `K_27_7, 1'b1); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h008; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + check (1, `K_28_0 | (test_data[2:0] << 5), 1'b1); + end + check (1, `K_29_7, 1'b1); + check (1, `K_30_7, 1'b1); + +// $display ("invalid control character with positive disparity"); +// check (1, 8'h0, 1'b1); + + limit[8:0] = 9'h100; # 1; + + $display ("trying all byte pairs starting with negative disparity"); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h100; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + for (test_data_second[8:0] = 9'h000; test_data_second[8:0] < limit[8:0]; + test_data_second[8:0] = test_data_second[8:0] + 9'h001) + begin + check_pair (0, test_data[7:0], test_data_second[7:0], 1'b0, 1'b0); + end + end + + $display ("trying all controls then bytes with negative disparity"); + $display ("This finds 24 unexpected extra singular commas when sending K_28_7"); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h100; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + for (test_data_second[3:0] = 4'h0; test_data_second[3:0] < 4'hC; + test_data_second[3:0] = test_data_second[3:0] + 4'h1) + begin + check_pair (0, pick_control_byte(test_data_second[3:0]), test_data[7:0], 1'b1, + (test_data_second[3:0] == 4'h3) + | (test_data_second[3:0] == 4'h7) + | (test_data_second[3:0] == 4'h9) ); + end + end + + $display ("trying all bytes then controls with negative disparity"); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h100; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + for (test_data_second[3:0] = 4'h0; test_data_second[3:0] < 4'hC; + test_data_second[3:0] = test_data_second[3:0] + 4'h1) + begin + check_pair_2 (0, test_data[7:0], pick_control_byte(test_data_second[3:0]), + 1'b0, 1'b0, + 1'b1, (test_data_second[3:0] == 4'h3) + | (test_data_second[3:0] == 4'h7) + | (test_data_second[3:0] == 4'h9) ); + end + end + + $display ("trying all controls then controls with negative disparity"); + $display ("This finds 8 unexpected extra singular commas when sending K_28_7"); + for (test_data[3:0] = 9'h000; test_data[3:0] < 4'hC; + test_data[3:0] = test_data[3:0] + 4'h1) + begin + for (test_data_second[3:0] = 4'h0; test_data_second[3:0] < 4'hC; + test_data_second[3:0] = test_data_second[3:0] + 4'h1) + begin + check_pair_2 (0, pick_control_byte(test_data[3:0]), + pick_control_byte(test_data_second[3:0]), + 1'b1, (test_data[3:0] == 4'h3) + | (test_data[3:0] == 4'h7) + | (test_data[3:0] == 4'h9), + 1'b1, (test_data_second[3:0] == 4'h3) + | (test_data_second[3:0] == 4'h7) + | (test_data_second[3:0] == 4'h9) ); + end + end + + $display ("trying all byte pairs starting with positive disparity"); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h100; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + for (test_data_second[8:0] = 9'h000; test_data_second[8:0] < limit[8:0]; + test_data_second[8:0] = test_data_second[8:0] + 9'h001) + begin + check_pair (1, test_data[7:0], test_data_second[7:0], 1'b0, 1'b0); + end + end + + $display ("trying all controls then bytes with positive disparity"); + $display ("This finds 24 unexpected extra singular commas when sending K_28_7"); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h100; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + for (test_data_second[3:0] = 4'h0; test_data_second[3:0] < 4'hC; + test_data_second[3:0] = test_data_second[3:0] + 4'h1) + begin + check_pair (1, pick_control_byte(test_data_second[3:0]), test_data[7:0], 1'b1, + (test_data_second[3:0] == 4'h3) + | (test_data_second[3:0] == 4'h7) + | (test_data_second[3:0] == 4'h9) ); + end + end + + $display ("trying all bytes then controls with positive disparity"); + for (test_data[8:0] = 9'h000; test_data[8:0] < 9'h100; + test_data[8:0] = test_data[8:0] + 9'h001) + begin + for (test_data_second[3:0] = 4'h0; test_data_second[3:0] < 4'hC; + test_data_second[3:0] = test_data_second[3:0] + 4'h1) + begin + check_pair_2 (1, test_data[7:0], pick_control_byte(test_data_second[3:0]), + 1'b0, 1'b0, + 1'b1, (test_data_second[3:0] == 4'h3) + | (test_data_second[3:0] == 4'h7) + | (test_data_second[3:0] == 4'h9) ); + end + end + + $display ("trying all controls then controls with positive disparity"); + $display ("This finds 8 unexpected extra singular commas when sending K_28_7"); + for (test_data[3:0] = 9'h000; test_data[3:0] < 4'hC; + test_data[3:0] = test_data[3:0] + 4'h1) + begin + for (test_data_second[3:0] = 4'h0; test_data_second[3:0] < 4'hC; + test_data_second[3:0] = test_data_second[3:0] + 4'h1) + begin + check_pair_2 (1, pick_control_byte(test_data[3:0]), + pick_control_byte(test_data_second[3:0]), + 1'b1, (test_data[3:0] == 4'h3) + | (test_data[3:0] == 4'h7) + | (test_data[3:0] == 4'h9), + 1'b1, (test_data_second[3:0] == 4'h3) + | (test_data_second[3:0] == 4'h7) + | (test_data_second[3:0] == 4'h9) ); + end + end + end + +encode_8b_10b encode_8b_10b ( + .eight_bit_data_or_control_in (eight_bit_data_or_control_in[7:0]), + .input_is_control (input_is_control), + .mess_up_link_disparity (mess_up_link_disparity), + .ten_bit_encoded_data_out (ten_bit_encoded_data_out[9:0]), + .invalid_control (invalid_control), + .clk (clk), + .reset (reset) +); + +decode_10b_8b decode_10b_8b ( + .ten_bit_encoded_data_in (ten_bit_encoded_data_out[9:0]), + .eight_bit_data_or_control_out (eight_bit_data_or_control_out[7:0]), + .output_is_control (output_is_control), + .invalid_encoded_data (invalid_encoded_data), + .clk (clk), + .reset (reset) +); +endmodule +`endif // TEST_8B_10B + +// `define DISCOVER_WHICH_CODES_ARE_ILLEGAL +`ifdef DISCOVER_WHICH_CODES_ARE_ILLEGAL +module figure_out_error_patterns; + +// NOTE: For the purpose of comparing with the patent, this exploration +// module uses the notation that the LEFTMOST BIT is the LSB. +// All other modules use the more normal Rightmost Bit == bit 0 == LSB + + reg [10:0] i; + + reg [9:0] full_addr; + reg [4095:0] valid; // storage + reg [4095:0] invalid; // storage + +task do_one; + input [3:0] high_addr; + begin + full_addr[3:0] = high_addr[3:0]; // note LSB to left + valid[full_addr[9:0]] = 1'b1; + end +endtask + +task mark_both; + begin +// both + do_one (4'b1001); + do_one (4'b0101); + do_one (4'b1010); + do_one (4'b0110); + end +endtask + +// The alternate Data encoding D.x.A7 is used in the case +// that e = i = 0 and positive running disparity, +// or e = i = 1 and negative running disparity, +// or a Control signal is being sent, +// all while encoding 7 in the MSB. + +task mark_positive; + begin +// positive list + do_one (4'b0100); + do_one (4'b0011); + do_one (4'b0010); + if (full_addr[5:4] != 2'b00) + do_one (4'b0001); // P + else + do_one (4'b1000); // A + end +endtask + +task mark_negative; + begin +// negative list + do_one (4'b1011); + do_one (4'b1100); + do_one (4'b1101); + if (full_addr[5:4] != 2'b11) + do_one (4'b1110); // P + else + do_one (4'b0111); // A + end +endtask + +task mark_all; + begin + mark_positive; + mark_negative; + mark_both; + end +endtask + +task mark; + input [5:0] val; + input type; + integer type; + + begin + full_addr[9:4] = val[5:0]; // note LSB to left + if (type == 0) + begin + mark_all; + end + else if (type == 1) + begin + mark_positive; + mark_both; + end + else + begin + mark_negative; + mark_both; + end + end +endtask + +initial + begin + +// Clear all bits + for (i[10:0] = 11'h000; i[10:0] < 11'h400; i[10:0] = i[10:0] + 11'h001) + begin + valid[i[9:0]] = 1'b0; + invalid[full_addr[9:0]] = 1'b0; + end + +// Mark patterns which are parts of valid codes + mark (6'b110001, 0); + mark (6'b101001, 0); + mark (6'b011001, 0); + mark (6'b100101, 0); + mark (6'b010101, 0); + mark (6'b110100, 0); + mark (6'b001101, 0); + mark (6'b101100, 0); + mark (6'b011100, 0); + mark (6'b100011, 0); + mark (6'b010011, 0); + mark (6'b110010, 0); + mark (6'b001011, 0); + mark (6'b101010, 0); + mark (6'b011010, 0); + mark (6'b100110, 0); + mark (6'b010110, 0); + mark (6'b001110, 0); + + mark (6'b011000, -1); + mark (6'b100010, -1); + mark (6'b010010, -1); + mark (6'b001010, -1); + mark (6'b111000, -1); + mark (6'b000110, -1); + mark (6'b101000, -1); + mark (6'b100100, -1); + mark (6'b000101, -1); + mark (6'b001100, -1); + mark (6'b001001, -1); + mark (6'b010001, -1); + mark (6'b100001, -1); + mark (6'b010100, -1); + + mark (6'b100111, +1); + mark (6'b011101, +1); + mark (6'b101101, +1); + mark (6'b110101, +1); + mark (6'b000111, +1); + mark (6'b111001, +1); + mark (6'b010111, +1); + mark (6'b011011, +1); + mark (6'b111010, +1); + mark (6'b110011, +1); + mark (6'b110110, +1); + mark (6'b101110, +1); + mark (6'b011110, +1); + mark (6'b101011, +1); + +// Mark patterns which are control codes. + valid[ 10'b111010_1000] = 1'b1; + valid[ 10'b110110_1000] = 1'b1; + valid[ 10'b101110_1000] = 1'b1; + valid[ 10'b011110_1000] = 1'b1; + + valid[ 10'b001111_0100] = 1'b1; + valid[ 10'b001111_1001] = 1'b1; + valid[ 10'b001111_0101] = 1'b1; + valid[ 10'b001111_0011] = 1'b1; + valid[ 10'b001111_0010] = 1'b1; + valid[ 10'b001111_1010] = 1'b1; + valid[ 10'b001111_0110] = 1'b1; + valid[ 10'b001111_1000] = 1'b1; + + valid[~10'b111010_1000] = 1'b1; + valid[~10'b110110_1000] = 1'b1; + valid[~10'b101110_1000] = 1'b1; + valid[~10'b011110_1000] = 1'b1; + + valid[~10'b001111_0100] = 1'b1; + valid[~10'b001111_1001] = 1'b1; + valid[~10'b001111_0101] = 1'b1; + valid[~10'b001111_0011] = 1'b1; + valid[~10'b001111_0010] = 1'b1; + valid[~10'b001111_1010] = 1'b1; + valid[~10'b001111_0110] = 1'b1; + valid[~10'b001111_1000] = 1'b1; + + for (i[10:0] = 11'h000; i[10:0] < 11'h400; i[10:0] = i[10:0] + 11'h001) + begin +// Get rid of patterns in the 6 LSB with less than 2 or greater than 4 bits set. + if ((i[9] + i[8] + i[7] + i[6] + i[5] + i[4]) < 2) + begin + invalid[i[9:0]] = 1'b1; + end + if ((i[9] + i[8] + i[7] + i[6] + i[5] + i[4]) > 4) + begin + invalid[i[9:0]] = 1'b1; + end +// Get rid of patterns in the 4 MSB with less than 1 or greater than 3 bits set. + if ((i[3:0] == 4'h0) | (i[3:0] == 4'hF)) + begin + invalid[i[9:0]] = 1'b1; + end +// Get rid of total patterns with less than 4 or greater than 6 bits set. + if ((i[0] + i[1] + i[2] + i[3] + i[4] + i[5] + i[6] + i[7] + i[8] + i[9]) < 4) + begin + invalid[i[9:0]] = 1'b1; + end + if ((i[0] + i[1] + i[2] + i[3] + i[4] + i[5] + i[6] + i[7] + i[8] + i[9]) > 6) + begin + invalid[i[9:0]] = 1'b1; + end +// Get rid of patterns with the 4 LSB all 0 or all 1 + if ((i[9:6] == 4'b0000) | (i[9:6] == 4'b1111)) + begin + invalid[i[9:0]] = 1'b1; + end +// Get rid of patterns which use D.7.y with the wrong disparity. 8 + if ((i[9:4] == 6'b111000) & (i[3] + i[2] + i[1] + i[0] == 1)) // minus then minus + begin + invalid[i[9:0]] = 1'b1; + end + if ((i[9:4] == 6'b000111) & (i[3] + i[2] + i[1] + i[0] == 3)) // plus then plus + begin + invalid[i[9:0]] = 1'b1; + end +// Get rid of patterns which use D.x.3 with the wrong disparity. 28 + if ( (i[3:0] == 4'b0011) + & ((i[9] + i[8] + i[7] + i[6] + i[5] + i[4]) == 2)) + begin + invalid[i[9:0]] = 1'b1; + end + if ( (i[3:0] == 4'b1100) + & ((i[9] + i[8] + i[7] + i[6] + i[5] + i[4]) == 4)) + begin + invalid[i[9:0]] = 1'b1; + end + end + +// Get rid of case when D.x.3 and D.7.y are used together as D.7.3 + valid[10'b111000_0011] = 1'b1; + valid[10'b000111_1100] = 1'b1; + + for (i[10:0] = 11'h000; i[10:0] < 11'h400; i[10:0] = i[10:0] + 11'h001) + begin +// Get rid of non-control codes which use alternate encoding inappropriately. 32 +// These are all the data items except 23, 27, 29, and 30 which do not end in +// 00 or 11 as the MSB. This excludes control codes, which use alternate encoding. + if ( (i[9:4] != 6'b111010) & (i[9:4] != 6'b000101) // 23 + & (i[9:4] != 6'b110110) & (i[9:4] != 6'b001001) // 27 + & (i[9:4] != 6'b101110) & (i[9:4] != 6'b010001) // 29 + & (i[9:4] != 6'b011110) & (i[9:4] != 6'b100001) // 30 + & (i[9:4] != 6'b001111) & (i[9:4] != 6'b110000) // K28 + & (i[9:4] != 6'b110100) // 11 + & (i[9:4] != 6'b101100) // 13 + & (i[9:4] != 6'b011100) // 14 + & (i[9:4] != 6'b100011) // 17 + & (i[9:4] != 6'b010011) // 18 + & (i[9:4] != 6'b001011) // 20 + ) + begin + if ((i[3:0] == 4'b0111) | (i[3:0] == 4'b1000)) + begin + invalid[i[9:0]] = 1'b1; // not a candidate for alternate D7 at all + end + end + + if ( (i[9:4] == 6'b110000) // K28 + | (i[9:4] == 6'b001111) // K28 + | (i[9:4] == 6'b110100) // 11 + | (i[9:4] == 6'b101100) // 13 + | (i[9:4] == 6'b011100) // 14 + ) + begin + if (i[3:0] == 4'b0001) // cant use normal + + begin + invalid[i[9:0]] = 1'b1; + end + end + + if ( (i[9:4] == 6'b100011) // 17 + | (i[9:4] == 6'b010011) // 18 + | (i[9:4] == 6'b001011) // 20 + ) + begin + if (i[3:0] == 4'b1000) // cant use alternate + + begin + invalid[i[9:0]] = 1'b1; + end + end + + if ( (i[9:4] == 6'b110000) // K28 + | (i[9:4] == 6'b001111) // K28 + | (i[9:4] == 6'b100011) // 17 + | (i[9:4] == 6'b010011) // 18 + | (i[9:4] == 6'b001011) // 20 + ) + begin + if (i[3:0] == 4'b1110) // cant use normal - + begin + invalid[i[9:0]] = 1'b1; + end + end + + if ( (i[9:4] == 6'b110100) // 11 + | (i[9:4] == 6'b101100) // 13 + | (i[9:4] == 6'b011100) // 14 + ) + begin + if (i[3:0] == 4'b0111) // cant use alternate - + begin + invalid[i[9:0]] = 1'b1; + end + end + end + + $display ("LSB is to the left"); + for (i[10:0] = 11'h000; i[10:0] < 11'h400; i[10:0] = i[10:0] + 11'h001) + begin + if ((valid[i[9:0]] !== 1'b1) & (invalid[i[9:0]] !== 1'b1)) + begin + $display ("not set %b", i[9:0]); + end + if ((valid[i[9:0]] === 1'b1) & (invalid[i[9:0]] === 1'b1)) + begin + $display ("both set %b", i[9:0]); + end + end + + end +endmodule +`endif // DISCOVER_WHICH_CODES_ARE_ILLEGAL Index: common/trunk/ddr_2_dram_for_debugging.v =================================================================== --- common/trunk/ddr_2_dram_for_debugging.v (nonexistent) +++ common/trunk/ddr_2_dram_for_debugging.v (revision 48) @@ -0,0 +1,2550 @@ +////////////////////////////////////////////////////////////////////// +//// //// +//// ddr_2_dram #(frequency, latency, //// +//// num_addr_bits, num_col_bits, //// +//// num_data_bits, num_words_in_test_memory) //// +//// //// +//// This file is part of the general opencores effort. //// +//// //// +//// //// +//// Module Description: //// +//// A fake DDR DRAM with a small amount of memory. Useful in //// +//// getting a DDR DRAM controller working. //// +//// //// +//// The DDR DRAM uses a tricky clocking scheme. Unfortunately, //// +//// this will require a tricky controller. //// +//// //// +//// The CLK_P and CLK_N signals provide a time-base for the //// +//// external IO pins on the DRAM, and may or may not be used //// +//// as a timebase for internal DRAM activity. //// +//// //// +//// The DDR DRAM transfers data on both edges of the CLK_*. //// +//// However, in order to make the design insensitive to layout //// +//// and loading concerns, the data is NOT latched by the CLK_P //// +//// activity. //// +//// //// +//// Instead the new signal DQS is used as a clock which runs in //// +//// parallel with, and uses the same loading as, the Data //// +//// wires DQ. //// +//// //// +//// In the case of writes from a controller to the DDR DRAM, the //// +//// controller is responsible for placing the edges of DQS so //// +//// that the edges arrive in the MIDDLE of the data valid //// +//// period at the DRAMs. //// +//// //// +//// The DDR DRAM specs seem to call out that the controller will //// +//// place the DQS transitions between 0.75 and 1.25 of a clock //// +//// period after the rising edge of CLK_* which initiates a //// +//// write. The obvious place to put the DQS signal is right //// +//// at that edge. This means that the DATA for the write must //// +//// be sent 1/4 clock EARLIER! //// +//// //// +//// In the case of reads from a DDR DRAM to a controller, the //// +//// DRAM sends out data and data clock (DQ and DQS) with the //// +//// same timing. The edges for these signals should be at the //// +//// same time. The Controller has to internally delay the DQS //// +//// signal by 1/2 of a bit time, and then use the INTERNAL //// +//// DELAYED DQS signal to latch the DQ wires. //// +//// //// +//// The DDR DRAM specs seem to call out that the DRAM will drive //// +//// DQS between -0.75 and +0.75 nSec of the edges of CLK_*. //// +//// Of course, it will get to the controller some time later //// +//// than that. //// +//// //// +//// To provide bad timing, this DRAM model will measure the //// +//// period of the CLK_P clock (assuming that it is 50% duty //// +//// cycle). It will then deliver data from 0.75 nSec AFTER //// +//// the clock changes till 0.75 nSec BEFORE it changes again. //// +//// This will prevent the controller from using the CLK_* //// +//// signal to latch the data. //// +//// //// +//// Author(s): //// +//// - Anonymous //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2000 Anonymous and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source 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 Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from //// +//// //// +////////////////////////////////////////////////////////////////////// +// +// $Id: ddr_2_dram_for_debugging.v,v 1.8 2001-11-06 12:33:15 bbeaver Exp $ +// +// CVS Revision History +// +// $Log: not supported by cvs2svn $ +// Revision 1.10 2001/11/06 12:41:27 Blue Beaver +// no message +// +// Revision 1.9 2001/11/02 11:59:30 Blue Beaver +// no message +// +// Revision 1.8 2001/11/01 13:33:03 Blue Beaver +// no message +// +// Revision 1.7 2001/11/01 12:44:03 Blue Beaver +// no message +// +// Revision 1.6 2001/11/01 11:33:04 Blue Beaver +// no message +// +// Revision 1.5 2001/11/01 09:38:43 Blue Beaver +// no message +// +// Revision 1.4 2001/10/31 12:30:01 Blue Beaver +// no message +// +// Revision 1.3 2001/10/30 12:44:03 Blue Beaver +// no message +// +// Revision 1.2 2001/10/30 08:56:18 Blue Beaver +// no message +// +// Revision 1.1 2001/10/29 13:45:02 Blue Beaver +// no message +// + +`timescale 1ns / 1ps + +module ddr_2_dram ( + DQ, DQS, + DM, + A, BA, + RAS_L, + CAS_L, + WE_L, + CS_L, + CKE, + CLK_P, CLK_N +); + +// Constant Parameters +parameter FREQUENCY = 133.0; // might be 100, 125, 166, any other frequency +parameter LATENCY = 2.0; // might be 2.0, 2.5, 3.0, 3.5, 4.0 +parameter NUM_ADDR_BITS = 13; +parameter NUM_COL_BITS = 11; +parameter NUM_DATA_BITS = 4; +parameter NUM_WORDS_IN_TEST_MEMORY = 32; +parameter ENABLE_TIMING_CHECKS = 1; + + inout [NUM_DATA_BITS - 1 : 0] DQ; + inout DQS; + input DM; + input [NUM_ADDR_BITS - 1 : 0] A; + input [1 : 0] BA; + input RAS_L; + input CAS_L; + input WE_L; + input CS_L; + input CKE; + input CLK_P, CLK_N; + +// These signals can be accessed by upper scopes to detect chip-to-chip OE conflicts. + wire DEBUG_DQ_OE, DEBUG_DQS_OE; + +// Try to measure the input clock, to correctly apply X's on +// the data wires near when the outputs change. +// I have to try to make X's BEFORE the next clock edge! +// This measurement is irrespective of the frequency parameter, +// which is used only to set the number of cycles between events. + + time present_rising_time, high_period; + time present_falling_time, low_period; + reg data_delay1, data_delay2; + + initial + begin + present_rising_time = 0; + present_falling_time = 0; + high_period = 0; + low_period = 0; + data_delay1 = 1'b0; + data_delay2 = 1'b0; + end + + always @(CLK_P) + begin + if (CLK_P === 1'b1) // rising edge + begin + present_rising_time = $time; + if ((present_rising_time !== 0) & (present_falling_time !== 0)) + begin + high_period = present_rising_time - present_falling_time - (2 * 750); + end + end + if (CLK_P === 1'b0) // falling edge + begin + present_falling_time = $time; + if ((present_rising_time !== 0) & (present_falling_time !== 0)) + begin + low_period = present_falling_time - present_rising_time - (2 * 750); + end + end + end + +// Once the period of the clock is known, start making X's whenever possible + always @(posedge CLK_P) + begin + if (high_period !== 0) + begin // Make X's after rising edge, and before falling edge + #750 data_delay1 = 1'b1; + #high_period data_delay2 = 1'b1; + end + else + begin + data_delay1 = 1'b1; + data_delay2 = 1'b1; + end + if (CLK_N !== 1'b0) + begin + $display ("*** %m DDR DRAM needs to have CLK_N transition with CLK_P at time %t", $time); + end + end + + always @(negedge CLK_P) + begin + if (low_period !== 0) + begin // Make X's after falling edge, and before rising edge + #750 data_delay1 = 1'b0; + #low_period data_delay2 = 1'b0; + end + else + begin + data_delay1 = 1'b0; + data_delay2 = 1'b0; + end + if (CLK_N !== 1'b1) + begin + $display ("*** %m DDR DRAM needs to have CLK_N transition with CLK_P at time %t", $time); + end + end + + wire force_x = (data_delay1 == data_delay2); + +// Watch for cases where both banks are driving the Data bus at once. +// Normally, the second read would terminate the first read. This +// module, since it is only for debugging, only understands complete +// 4-word burst transfers. + + wire [NUM_DATA_BITS - 1 : 0] DQ_E_out_0; + wire [NUM_DATA_BITS - 1 : 0] DQ_O_out_0; + wire DQ_E_oe_0, DQS_E_out_0, DQS_E_oe_0, Timing_Error_0; + wire DQ_O_oe_0, DQS_O_out_0, DQS_O_oe_0; + + wire [NUM_DATA_BITS - 1 : 0] DQ_E_out_1; + wire [NUM_DATA_BITS - 1 : 0] DQ_O_out_1; + wire DQ_E_oe_1, DQS_E_out_1, DQS_E_oe_1, Timing_Error_1; + wire DQ_O_oe_1, DQS_O_out_1, DQS_O_oe_1; + + wire [NUM_DATA_BITS - 1 : 0] DQ_E_out_2; + wire [NUM_DATA_BITS - 1 : 0] DQ_O_out_2; + wire DQ_E_oe_2, DQS_E_out_2, DQS_E_oe_2, Timing_Error_2; + wire DQ_O_oe_2, DQS_O_out_2, DQS_O_oe_2; + + wire [NUM_DATA_BITS - 1 : 0] DQ_E_out_3; + wire [NUM_DATA_BITS - 1 : 0] DQ_O_out_3; + wire DQ_E_oe_3, DQS_E_out_3, DQS_E_oe_3, Timing_Error_3; + wire DQ_O_oe_3, DQS_O_out_3, DQS_O_oe_3; + + always @( DQ_E_oe_0 or DQ_E_oe_1 or DQ_E_oe_2 or DQ_E_oe_3 + or DQS_E_out_0 or DQS_E_out_1 or DQS_E_out_2 or DQS_E_out_3 + or DQS_E_oe_0 or DQS_E_oe_1 or DQS_E_oe_2 or DQS_E_oe_3 + or DQ_O_oe_0 or DQ_O_oe_1 or DQ_O_oe_2 or DQ_O_oe_3 + or DQS_O_out_0 or DQS_O_out_1 or DQS_O_out_2 or DQS_O_out_3 + or DQS_O_oe_0 or DQS_O_oe_1 or DQS_O_oe_2 or DQS_O_oe_3 ) + + begin + if ( (DQ_E_oe_0 & DQ_E_oe_1) | (DQ_E_oe_0 & DQ_E_oe_2) | (DQ_E_oe_0 & DQ_E_oe_3) + | (DQ_E_oe_1 & DQ_E_oe_2) | (DQ_E_oe_1 & DQ_E_oe_3) | (DQ_E_oe_2 & DQ_E_oe_3) + | (DQ_O_oe_0 & DQ_O_oe_1) | (DQ_O_oe_0 & DQ_O_oe_2) | (DQ_O_oe_0 & DQ_O_oe_3) + | (DQ_O_oe_1 & DQ_O_oe_2) | (DQ_O_oe_1 & DQ_O_oe_3) | (DQ_O_oe_2 & DQ_O_oe_3) ) + + begin + $display ("*** %m DDR DRAM has multiple banks driving DQ at the same time at %x %t", + {DQ_E_oe_3, DQ_O_oe_3, DQ_E_oe_2, DQ_O_oe_2, DQ_E_oe_1, DQ_O_oe_1, DQ_E_oe_0, DQ_O_oe_0}, $time); + end + if ( ((DQS_E_oe_0 & DQS_E_oe_1) & ((DQS_E_out_0 != 1'b0) | (DQS_E_out_1 != 1'b0))) + | ((DQS_E_oe_0 & DQS_E_oe_2) & ((DQS_E_out_0 != 1'b0) | (DQS_E_out_2 != 1'b0))) + | ((DQS_E_oe_0 & DQS_E_oe_3) & ((DQS_E_out_0 != 1'b0) | (DQS_E_out_3 != 1'b0))) + | ((DQS_E_oe_1 & DQS_E_oe_2) & ((DQS_E_out_1 != 1'b0) | (DQS_E_out_2 != 1'b0))) + | ((DQS_E_oe_1 & DQS_E_oe_3) & ((DQS_E_out_1 != 1'b0) | (DQS_E_out_3 != 1'b0))) + | ((DQS_E_oe_2 & DQS_E_oe_3) & ((DQS_E_out_2 != 1'b0) | (DQS_E_out_3 != 1'b0))) ) + begin + $display ("*** %m DDR DRAM Even has multiple banks driving DQS at the same time at %x %x %t", + {DQS_E_oe_3, DQS_E_oe_2, DQS_E_oe_1, DQS_E_oe_0}, + {DQS_E_out_3, DQS_E_out_2, DQS_E_out_1, DQS_E_out_0}, $time); + end + if ( ((DQS_O_oe_0 & DQS_O_oe_1) & ((DQS_O_out_0 != 1'b0) | (DQS_O_out_1 != 1'b0))) + | ((DQS_O_oe_0 & DQS_O_oe_2) & ((DQS_O_out_0 != 1'b0) | (DQS_O_out_2 != 1'b0))) + | ((DQS_O_oe_0 & DQS_O_oe_3) & ((DQS_O_out_0 != 1'b0) | (DQS_O_out_3 != 1'b0))) + | ((DQS_O_oe_1 & DQS_O_oe_2) & ((DQS_O_out_1 != 1'b0) | (DQS_O_out_2 != 1'b0))) + | ((DQS_O_oe_1 & DQS_O_oe_3) & ((DQS_O_out_1 != 1'b0) | (DQS_O_out_3 != 1'b0))) + | ((DQS_O_oe_2 & DQS_O_oe_3) & ((DQS_O_out_2 != 1'b0) | (DQS_O_out_3 != 1'b0))) ) + begin + $display ("*** %m DDR DRAM Odd has multiple banks driving DQS at the same time at %x %x %t", + {DQS_O_oe_3, DQS_O_oe_2, DQS_O_oe_1, DQS_O_oe_0}, + {DQS_O_out_3, DQS_O_out_2, DQS_O_out_1, DQS_O_out_0}, $time); + end + end + + assign DEBUG_DQ_OE = DQ_E_oe_0 | DQ_E_oe_1 | DQ_E_oe_2 | DQ_E_oe_3 + | DQ_O_oe_0 | DQ_O_oe_1 | DQ_O_oe_2 | DQ_O_oe_3; + assign DEBUG_DQS_OE = DQS_E_oe_0 | DQS_E_oe_1 | DQS_E_oe_2 | DQS_E_oe_3 + | DQS_O_oe_0 | DQS_O_oe_1 | DQS_O_oe_2 | DQS_O_oe_3; + +// The top-level code here is responsible for delaying the data as needed +// to meet the LATENCY requirement. + +// LATENCY, +//parameter LATENCY = 2.0; // might be 2.0, 2.5, 3.0, 3.5, 4.0 + +ddr_2_dram_single_bank +# ( FREQUENCY, + LATENCY, + NUM_ADDR_BITS, + NUM_COL_BITS, + NUM_DATA_BITS, + NUM_WORDS_IN_TEST_MEMORY, + 1 // enable_timing_checks + ) ddr_2_dram_single_bank_0 ( + .DQ (DQ[NUM_DATA_BITS - 1 : 0]), + .DQS (DQS), + .DQ_E_out (DQ_E_out_0[NUM_DATA_BITS - 1 : 0]), + .DQ_O_out (DQ_O_out_0[NUM_DATA_BITS - 1 : 0]), + .DQ_E_oe (DQ_E_oe_0), + .DQ_O_oe (DQ_O_oe_0), + .DQS_E_out (DQS_E_out_0), + .DQS_O_out (DQS_O_out_0), + .DQS_E_oe (DQS_E_oe_0), + .DQS_O_oe (DQS_O_oe_0), + .Timing_Error (Timing_Error_0), + .DM (DM), + .A (A[12:0]), + .BA (BA[1:0]), + .RAS_L (RAS_L), + .CAS_L (CAS_L), + .WE_L (WE_L), + .CS_L (CS_L), + .CKE (CKE), + .CLK_P (CLK_P), + .CLK_N (CLK_N), + .bank_num (2'b00) +); + +ddr_2_dram_single_bank +# ( FREQUENCY, + LATENCY, + NUM_ADDR_BITS, + NUM_COL_BITS, + NUM_DATA_BITS, + NUM_WORDS_IN_TEST_MEMORY, + 0 // enable_timing_checks + ) ddr_2_dram_single_bank_1 ( + .DQ (DQ[NUM_DATA_BITS - 1 : 0]), + .DQS (DQS), + .DQ_E_out (DQ_E_out_1[NUM_DATA_BITS - 1 : 0]), + .DQ_O_out (DQ_O_out_1[NUM_DATA_BITS - 1 : 0]), + .DQ_E_oe (DQ_E_oe_1), + .DQ_O_oe (DQ_O_oe_1), + .DQS_E_out (DQS_E_out_1), + .DQS_O_out (DQS_O_out_1), + .DQS_E_oe (DQS_E_oe_1), + .DQS_O_oe (DQS_O_oe_1), + .Timing_Error (Timing_Error_1), + .DM (DM), + .A (A[12:0]), + .BA (BA[1:0]), + .RAS_L (RAS_L), + .CAS_L (CAS_L), + .WE_L (WE_L), + .CS_L (CS_L), + .CKE (CKE), + .CLK_P (CLK_P), + .CLK_N (CLK_N), + .bank_num (2'b01) +); + +ddr_2_dram_single_bank +# ( FREQUENCY, + LATENCY, + NUM_ADDR_BITS, + NUM_COL_BITS, + NUM_DATA_BITS, + NUM_WORDS_IN_TEST_MEMORY, + 0 // enable_timing_checks + ) ddr_2_dram_single_bank_2 ( + .DQ (DQ[NUM_DATA_BITS - 1 : 0]), + .DQS (DQS), + .DQ_E_out (DQ_E_out_2[NUM_DATA_BITS - 1 : 0]), + .DQ_O_out (DQ_O_out_2[NUM_DATA_BITS - 1 : 0]), + .DQ_E_oe (DQ_E_oe_2), + .DQ_O_oe (DQ_O_oe_2), + .DQS_E_out (DQS_E_out_2), + .DQS_O_out (DQS_O_out_2), + .DQS_E_oe (DQS_E_oe_2), + .DQS_O_oe (DQS_O_oe_2), + .Timing_Error (Timing_Error_2), + .DM (DM), + .A (A[12:0]), + .BA (BA[1:0]), + .RAS_L (RAS_L), + .CAS_L (CAS_L), + .WE_L (WE_L), + .CS_L (CS_L), + .CKE (CKE), + .CLK_P (CLK_P), + .CLK_N (CLK_N), + .bank_num (2'b10) +); + +ddr_2_dram_single_bank +# ( FREQUENCY, + LATENCY, + NUM_ADDR_BITS, + NUM_COL_BITS, + NUM_DATA_BITS, + NUM_WORDS_IN_TEST_MEMORY, + 0 // enable_timing_checks + ) ddr_2_dram_single_bank_3 ( + .DQ (DQ[NUM_DATA_BITS - 1 : 0]), + .DQS (DQS), + .DQ_E_out (DQ_E_out_3[NUM_DATA_BITS - 1 : 0]), + .DQ_O_out (DQ_O_out_3[NUM_DATA_BITS - 1 : 0]), + .DQ_E_oe (DQ_E_oe_3), + .DQ_O_oe (DQ_O_oe_3), + .DQS_E_out (DQS_E_out_3), + .DQS_O_out (DQS_O_out_3), + .DQS_E_oe (DQS_E_oe_3), + .DQS_O_oe (DQS_O_oe_3), + .Timing_Error (Timing_Error_3), + .DM (DM), + .A (A[12:0]), + .BA (BA[1:0]), + .RAS_L (RAS_L), + .CAS_L (CAS_L), + .WE_L (WE_L), + .CS_L (CS_L), + .CKE (CKE), + .CLK_P (CLK_P), + .CLK_N (CLK_N), + .bank_num (2'b11) +); + +endmodule + +module ddr_2_dram_single_bank ( + DQ, DQS, + DQ_E_out, DQ_O_out, DQ_E_oe, DQ_O_oe, + DQS_E_out, DQS_O_out, DQS_E_oe, DQS_O_oe, + Timing_Error, + DM, + A, BA, + RAS_L, + CAS_L, + WE_L, + CS_L, + CKE, + CLK_P, CLK_N, + bank_num +); + +// Constant Parameters +parameter FREQUENCY = 133.0; // might be 100, 125, 166, any other frequency +parameter LATENCY = 2.0; // might be 2.0, 2.5, 3.0, 3.5, 4.0, 4.5 +parameter NUM_ADDR_BITS = 13; +parameter NUM_COL_BITS = 12; +parameter NUM_DATA_BITS = 4; +parameter NUM_WORDS_IN_TEST_MEMORY = 32; +parameter ENABLE_TIMING_CHECKS = 1; + + input [NUM_DATA_BITS - 1 : 0] DQ; + input DQS; + output [NUM_DATA_BITS - 1 : 0] DQ_E_out; + output [NUM_DATA_BITS - 1 : 0] DQ_O_out; + output DQ_E_oe, DQ_O_oe; + output DQS_E_out, DQS_O_out, DQS_E_oe, DQS_O_oe; + output Timing_Error; + input DM; + input [NUM_ADDR_BITS - 1 : 0] A; + input [1 : 0] BA; + input RAS_L; + input CAS_L; + input WE_L; + input CS_L; + input CKE; + input CLK_P, CLK_N; + input [1:0] bank_num; + +// DDR DRAMs always capture their command on the RISING EDGE of CLK_P; +// This fake DDR DRAM understands: Idle, Activate, Read, Write, Automatic Refresh +// This fake DDR DRAM assumes that all Reads and Writes do automatic precharge. +// This fake DDR DRAM understands writes to the control register +// This fake DDR DRAM always does 4-word bursts. The first word of data +// is always the legal one. The next 3 are that first word inverted. +// DDR DRAMs always capture their data on BOTH EDGES of DQS +// DDR DRAMs always output enable the DQS wire to 1'h0 1 clock before +// they start sending data +// DDR DRAMs will be allowed to have a latency of 2, 2.5, 3, 3.5, 4, 4.5 +// from the read command. + +// DDR DRAM commands are made by using the following sighals: +// {CKE, CS_L, RAS_L, CAS_L, WS_L} +// 0 X X X X power-down +// 1 1 X X X NOOP +// 1 0 1 1 1 NOOP +// 1 0 0 1 1 ACTIVATE +// 1 0 1 0 1 READ (A10) +// 1 0 1 0 0 WRITE (A10) +// 1 0 0 1 0 PRECHARGE (A10) +// 1 0 0 0 1 AUTO REFRESH +// 1 0 0 0 0 LOAD MODE REGISTER +// 1 0 1 1 0 not used? + +parameter NOOP = 5'h17; +parameter LOAD_MODE = 5'h10; +parameter ACTIVATE_BANK = 5'h13; +parameter READ_BANK = 5'h15; +parameter WRITE_BANK = 5'h14; +parameter PRECHARGE_BANK = 5'h12; +parameter REFRESH_BANK = 5'h11; + + wire [4:0] control_wires = {CKE, CS_L, RAS_L, CAS_L, WE_L}; + +// This simple-minded DRAM assumes that all transactions are valid. +// Therefore, it always captures RAS and CAS address information, even +// if there is an obvious protocol violation. + + reg [NUM_ADDR_BITS - 1 : 0] Captured_RAS_Address; + reg [1:0] Captured_RAS_Bank_Selects; + + reg [NUM_ADDR_BITS - 1 : 0] Captured_CAS_Address; + reg [1:0] Captured_CAS_Bank_Selects; + + reg RAS_Address_Valid; + reg Full_Address_Valid; + reg DRAM_Read_Requested; + +// synopsys translate_off + initial + begin // only for debug + RAS_Address_Valid <= 1'b0; + Full_Address_Valid <= 1'b0; + end +// synopsys translate_on + +// Capture RAS and CAS address information + always @(posedge CLK_P) + begin + if ((control_wires[4:0] == ACTIVATE_BANK) & (BA[1:0] == bank_num[1:0])) + begin + Captured_RAS_Address[NUM_ADDR_BITS - 1 : 0] <= A[NUM_ADDR_BITS - 1 : 0]; + Captured_RAS_Bank_Selects[1:0] <= BA[1 : 0]; + RAS_Address_Valid <= 1'b1; + Captured_CAS_Address[NUM_ADDR_BITS - 1 : 0] <= + Captured_CAS_Address[NUM_ADDR_BITS - 1 : 0]; + Captured_CAS_Bank_Selects[1:0] <= Captured_CAS_Bank_Selects[1:0]; + DRAM_Read_Requested <= 1'b0; + Full_Address_Valid <= 1'b0; + end + else if ((control_wires[4:0] == READ_BANK) & (BA[1:0] == bank_num[1:0])) + begin + Captured_RAS_Address[NUM_ADDR_BITS - 1 : 0] <= + Captured_RAS_Address[NUM_ADDR_BITS - 1 : 0]; + Captured_RAS_Bank_Selects[1:0] <= Captured_RAS_Bank_Selects[1:0]; + if (A[10] == 1'b1) // automatic precharge + RAS_Address_Valid <= 1'b0; + else + RAS_Address_Valid <= 1'b1; + Captured_CAS_Address[NUM_ADDR_BITS - 1 : 0] <= A[NUM_ADDR_BITS - 1 : 0]; + Captured_CAS_Bank_Selects[1:0] <= BA[1 : 0]; + DRAM_Read_Requested <= 1'b1; + Full_Address_Valid <= 1'b1; + if (RAS_Address_Valid == 1'b0) + begin + $display ("*** %m DRAM accessed for Read without first doing an Activate %t", $time); + end + end + else if ((control_wires[4:0] == WRITE_BANK) & (BA[1:0] == bank_num[1:0])) + begin + Captured_RAS_Address[NUM_ADDR_BITS - 1 : 0] <= + Captured_RAS_Address[NUM_ADDR_BITS - 1 : 0]; + Captured_RAS_Bank_Selects[1:0] <= Captured_RAS_Bank_Selects[1:0]; + if (A[10] == 1'b1) // automatic precharge + RAS_Address_Valid <= 1'b0; + else + RAS_Address_Valid <= 1'b1; + Captured_CAS_Address[NUM_ADDR_BITS - 1 : 0] <= A[NUM_ADDR_BITS - 1 : 0]; + Captured_CAS_Bank_Selects[1:0] <= BA[1 : 0]; + DRAM_Read_Requested <= 1'b0; + Full_Address_Valid <= 1'b1; + if (RAS_Address_Valid == 1'b0) + begin + $display ("*** %m DRAM accessed for Write without first doing an Activate %t", $time); + end + end + else if ( (control_wires[4:0] == PRECHARGE_BANK) + & ((BA[1:0] == bank_num[1:0]) | (A[10] == 1'b1))) + begin + Captured_RAS_Address[NUM_ADDR_BITS - 1 : 0] <= + Captured_RAS_Address[NUM_ADDR_BITS - 1 : 0]; + Captured_RAS_Bank_Selects[1:0] <= Captured_RAS_Bank_Selects[1:0]; + RAS_Address_Valid <= 1'b0; + Captured_CAS_Address[NUM_ADDR_BITS - 1 : 0] <= + Captured_CAS_Address[NUM_ADDR_BITS - 1 : 0]; + Captured_CAS_Bank_Selects[1:0] <= Captured_CAS_Bank_Selects[1:0]; + DRAM_Read_Requested <= 1'b0; + Full_Address_Valid <= 1'b0; + end + else // NOOP, Load Mode Register, Refresh, Unallocated + begin + Captured_RAS_Address[NUM_ADDR_BITS - 1 : 0] <= + Captured_RAS_Address[NUM_ADDR_BITS - 1 : 0]; + Captured_RAS_Bank_Selects[1:0] <= Captured_RAS_Bank_Selects[1:0]; + RAS_Address_Valid <= RAS_Address_Valid; + Captured_CAS_Address[NUM_ADDR_BITS - 1 : 0] <= + Captured_CAS_Address[NUM_ADDR_BITS - 1 : 0]; + Captured_CAS_Bank_Selects[1:0] <= Captured_CAS_Bank_Selects[1:0]; + DRAM_Read_Requested <= 1'b0; + Full_Address_Valid <= 1'b0; + end + end + +// This debugging DRAM requires that entire 4-word bursts be done. +// At present, this design does not implement DM masking. +// This debugging DRAM captures data using the DQS signals. It +// immediately moves the data into the CLK_P positive edge clock domain. + + reg [NUM_DATA_BITS - 1 : 0] DQS_Captured_Write_Data_Even; + reg [NUM_DATA_BITS - 1 : 0] DQS_Captured_Write_Data_Odd; + reg DQS_Captured_Write_DM_Even, DQS_Captured_Write_DM_Odd; + reg [NUM_DATA_BITS - 1 : 0] Delay_Write_Data_Even; + reg [NUM_DATA_BITS - 1 : 0] Sync_Write_Data_Even; + reg [NUM_DATA_BITS - 1 : 0] Sync_Write_Data_Odd; + reg Delay_Write_DM_Even, Sync_Write_DM_Even, Sync_Write_DM_Odd; + +// Capture data on rising edge of DQS + always @(posedge DQS) + begin + DQS_Captured_Write_Data_Even[NUM_DATA_BITS - 1 : 0] <= DQ[NUM_DATA_BITS - 1 : 0]; + DQS_Captured_Write_DM_Even <= DM; + end + +// Delay data captured on rising edge so that it can be captured the NEXT rising edge + always @(negedge CLK_P) + begin + Delay_Write_Data_Even[NUM_DATA_BITS - 1 : 0] <= + DQS_Captured_Write_Data_Even[NUM_DATA_BITS - 1 : 0]; + Delay_Write_DM_Even <= DQS_Captured_Write_DM_Even; + end + +// Capture data on falling edge of DQS + always @(negedge DQS) + begin + DQS_Captured_Write_Data_Odd[NUM_DATA_BITS - 1 : 0] <= DQ[NUM_DATA_BITS - 1 : 0]; + DQS_Captured_Write_DM_Odd <= DM; + end + +// Capture a data item pair into the positive edge clock domain. + always @(posedge CLK_P) + begin + Sync_Write_Data_Even[NUM_DATA_BITS - 1 : 0] <= + Delay_Write_Data_Even[NUM_DATA_BITS - 1 : 0]; + Sync_Write_Data_Odd[NUM_DATA_BITS - 1 : 0] <= + DQS_Captured_Write_Data_Odd[NUM_DATA_BITS - 1 : 0]; + Sync_Write_DM_Even <= Delay_Write_DM_Even; + Sync_Write_DM_Odd <= DQS_Captured_Write_DM_Odd; + end + +// For Writes, the CAS Address comes in at time T0. +// Data is available on the external DQ wires at time T1 and T2; +// Data is available as Sync_Write_Data at times T2 and T3 +// The SRAM can be written as soon as the last data is available, +// which seems to be at T4. +// +// For Reads, the Address comes in at time T0. +// The DQS signal needs to start being driven to 1'b0 at T1 +// The DQ signals need to start being driven with valid data at T2 +// Both DQS and DQ need to be valid until the beginning of T4 +// +// At first glance, it would seem that the Read Data needs to be +// grabbed out of the DRAM before, or at the same time, as the +// data is written into the DRAM. +// Fortunately, the parameter TWTR says that there must be 1 extra +// clock between a Write and a Read to serve as a Write Recovery +// time. Write data is available out of the internal Sync DRAM +// storage element in plenty of time to get to the bus. + + reg [NUM_ADDR_BITS + NUM_COL_BITS - 1 : 0] DRAM_Address_T1; + reg [NUM_ADDR_BITS + NUM_COL_BITS - 1 : 0] DRAM_Address_T2; + reg [NUM_ADDR_BITS + NUM_COL_BITS - 1 : 0] DRAM_Address_T3; + reg [1:0] BANK_Address_T1, BANK_Address_T2, BANK_Address_T3; + reg DRAM_Read_T1, DRAM_Read_T2, DRAM_Read_T3; + reg DRAM_Full_Addr_Valid_T1, DRAM_Full_Addr_Valid_T2, DRAM_Full_Addr_Valid_T3; + reg [NUM_DATA_BITS - 1 : 0] Delayed_Sync_Write_Data_Even_T3; + reg [NUM_DATA_BITS - 1 : 0] Delayed_Sync_Write_Data_Odd_T3; + +// Pipeline delay the Read and Write address so that it stays available +// all the way up to the time the data is available and the whole +// lot of it is written to storage. + + always @(posedge CLK_P) + begin + DRAM_Address_T1[NUM_ADDR_BITS + NUM_COL_BITS - 1 : 0] <= + {Captured_RAS_Address[NUM_ADDR_BITS - 1 : 0], + Captured_CAS_Address[NUM_COL_BITS - 1 : 11], // skip address bit 10 + Captured_CAS_Address[9 : 0]}; + DRAM_Address_T2[NUM_ADDR_BITS + NUM_COL_BITS - 1 : 0] <= + DRAM_Address_T1[NUM_ADDR_BITS + NUM_COL_BITS - 1 : 0]; + DRAM_Address_T3[NUM_ADDR_BITS + NUM_COL_BITS - 1 : 0] <= + DRAM_Address_T2[NUM_ADDR_BITS + NUM_COL_BITS - 1 : 0]; + BANK_Address_T1[1:0] <= Captured_CAS_Bank_Selects[1:0]; + BANK_Address_T2[1:0] <= BANK_Address_T1[1:0]; + BANK_Address_T3[1:0] <= BANK_Address_T2[1:0]; + DRAM_Read_T1 <= DRAM_Read_Requested; + DRAM_Read_T2 <= DRAM_Read_T1; + DRAM_Read_T3 <= DRAM_Read_T2; + DRAM_Full_Addr_Valid_T1 <= Full_Address_Valid; + DRAM_Full_Addr_Valid_T2 <= DRAM_Full_Addr_Valid_T1; + DRAM_Full_Addr_Valid_T3 <= DRAM_Full_Addr_Valid_T2; + Delayed_Sync_Write_Data_Even_T3[NUM_DATA_BITS - 1 : 0] <= + Sync_Write_Data_Even[NUM_DATA_BITS - 1 : 0]; + Delayed_Sync_Write_Data_Odd_T3[NUM_DATA_BITS - 1 : 0] <= + Sync_Write_Data_Odd[NUM_DATA_BITS - 1 : 0]; + end + + + assign DQ_E_oe = 1'b0; + assign DQ_O_oe = 1'b0; + assign DQS_E_oe = 1'b0; + assign DQS_O_oe = 1'b0; + +// Storage + + wire [(4 * NUM_DATA_BITS) - 1 : 0] write_data = + {Sync_Write_Data_Odd[NUM_DATA_BITS - 1 : 0], + Sync_Write_Data_Even[NUM_DATA_BITS - 1 : 0], + Delayed_Sync_Write_Data_Odd_T3[NUM_DATA_BITS - 1 : 0], + Delayed_Sync_Write_Data_Even_T3[NUM_DATA_BITS - 1 : 0]}; + wire [(4 * NUM_DATA_BITS) - 1 : 0] read_data; + +sram_for_debugging_sync +# ( NUM_ADDR_BITS + NUM_COL_BITS, + 4 * NUM_DATA_BITS // NUM_DATA_BITS + ) storage ( + .data_out (read_data[(4 * NUM_DATA_BITS) - 1 : 0]), + .data_in (write_data[(4 * NUM_DATA_BITS) - 1 : 0]), + .address (DRAM_Address_T3[NUM_ADDR_BITS + NUM_COL_BITS - 1 : 0]), + .read_enable (DRAM_Full_Addr_Valid_T3 & DRAM_Read_T3), + .write_enable (DRAM_Full_Addr_Valid_T3 & ~DRAM_Read_T3), + .clk (CLK_P) +); + +// These are the important DDR DRAM timing specs in nanoseconds: +parameter LOAD_MODE_REGISTER_PERIOD_TMRD = 15.0; // stay idle after load mode +parameter ACT_A_TO_ACT_B_TRRD = 15.0; // Activate-to-activate minimum time +parameter ACT_TO_READ_OR_WRITE_TRCD = 20.0; +parameter ACT_TO_PRECHARGE_TRAS = 40.0; +parameter ACT_TO_REFRESH_TRC = 65.0; +parameter ACT_A_TO_ACT_A_TRC = 65.0; // needed if failover +parameter WRITE_RECOVERY_TO_PRECHARGE_TWR = 15.0; +parameter PRECHARGE_PERIOD_TRP = 20.0; +parameter REFRESH_PERIOD_TRFC = 75.0; + +parameter CLOCK_PERIOD = (1.0 / FREQUENCY); + +// These timing requirements become CYCLE requirements, depending on the +// operating frequency. Note that 133.333 MHz = 7.5 nSec; +// These calculations assume that 133 MHz is the fastest this circuit will run. +// These are calculated by doing (N * 1/period) for N big enough to result in > 85 MHz. +// Each 1/period gives a frequency to test for, and each N gives the cycle count. +// Example: 20 nSec gives N * 50 MHz. So for N == 2, that gives 100 MHz > 85 MHz. +// If FREQUENCY > 100 MHz, use N = 2, else use N = 1; +// The cycle count is the number of cycles to HOLD OFF doing the next command. +// p.s. Note I don't know how to take the integer part of something in verilog! + +parameter LOAD_MODE_REGISTER_CYCLES = (FREQUENCY > 133.334) ? 3 : 2; +parameter ACT_A_TO_ACT_B_CYCLES = (FREQUENCY > 133.334) ? 3 : 2; +parameter ACT_TO_READ_OR_WRITE_CYCLES = (FREQUENCY > 100.000) ? 3 : 2; +parameter ACT_TO_PRECHARGE_CYCLES = (FREQUENCY > 125.000) ? 6 + : ((FREQUENCY > 100.000) ? 5 : 4); +// parameter ACK_TO_REFRESH_CYCLES = (FREQUENCY > 123.075) ? 9 +// : ((FREQUENCY > 107.690) ? 8 +// : ((FREQUENCY > 92.300) ? 7 : 6)); +parameter ACT_A_TO_ACT_A_CYCLES = (FREQUENCY > 123.075) ? 9 + : ((FREQUENCY > 107.690) ? 8 + : ((FREQUENCY > 92.300) ? 7 : 6)); +parameter READ_TO_WRITE_CYCLES = (LATENCY > 4.0) ? 5 + : ((LATENCY > 3.0) ? 4 + : ((LATENCY > 2.0) ? 3 : 2)); +parameter WRITE_TO_READ_CYCLES = 2; +parameter WRITE_RECOVERY_TO_PRECHARGE_CYCLES = (FREQUENCY > 133.334) ? 3 : 2; +parameter PRECHARGE_CYCLES = (FREQUENCY > 100.000) ? 3 : 2; +parameter REFRESH_CYCLES = (FREQUENCY > 133.334) ? 11 + : ((FREQUENCY > 120.000) ? 10 + : ((FREQUENCY > 106.667) ? 9 + : ((FREQUENCY > 93.330) ? 8 : 7))); + +// The DDR-II DRAM has 4 banks. Each bank can operate independently, with +// only a few exceptions. +// +// Each bank needs counters to +// 1) prevent refresh too soon after activate +// 2) prevent activate to same bank too soon after activate +// 3) prevent activate to alternate bank too soon after activate +// 4) prevent (or notice) precharge too soon after activate +// 5) count out autorefresh delay + + reg [3:0] load_mode_delay_counter; + reg [3:0] act_a_to_act_b_counter; + reg [3:0] act_to_read_or_write_counter; + reg [3:0] act_to_precharge_counter; + reg [3:0] act_a_to_act_a_counter; // double use for act_to_refresh and act_a_to_act_a + reg [3:0] burst_counter; + reg [3:0] read_to_write_counter; + reg [3:0] write_to_read_counter; + reg [3:0] write_recovery_counter; + reg [3:0] precharge_counter; + reg [3:0] refresh_counter; + +parameter POWER_ON = 0; +parameter WRITING_REG = 1; +parameter BANK_IDLE = 2; +parameter ACTIVATING = 3; +parameter WRITING = 4; +parameter WRITING_PRECHARGE = 5; +parameter READING = 6; +parameter READING_PRECHARGE = 7; +parameter PRECHARGING = 8; +parameter REFRESHING = 9; +parameter WAITING_FOR_AUTO_PRECHARGE = 10; + +parameter BANK_STATE_WIDTH = 4; + + reg [BANK_STATE_WIDTH - 1 : 0] bank_state; + reg Timing_Error; + + initial + begin // nail state to known at the start of simulation + bank_state[BANK_STATE_WIDTH - 1 : 0] = POWER_ON; // nail it to known at the start of simulation + end + + always @(posedge CLK_P) + begin + if (ENABLE_TIMING_CHECKS != 0) + begin // if out the entire case statement! + case (bank_state[BANK_STATE_WIDTH - 1 : 0]) + POWER_ON: + begin + if ( (control_wires[4] == 1'b0) // powered off + | (control_wires[3] == 1'b1) // not selected + | (control_wires[4:0] == NOOP) ) // noop + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= POWER_ON; + Timing_Error <= 1'b0; + end + else if (control_wires[4:0] == LOAD_MODE) // no bank involved + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING_REG; + Timing_Error <= 1'b0; + end + else + begin + $display ("*** %m DDR DRAM needs to have a LOAD MODE REGISTER before any other command %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= POWER_ON; + Timing_Error <= 1'b1; + end + load_mode_delay_counter[3:0] <= LOAD_MODE_REGISTER_CYCLES; + act_a_to_act_b_counter[3:0] <= 4'h0; + act_to_read_or_write_counter[3:0] <= 4'h0; + act_to_precharge_counter[3:0] <= 4'h0; + act_a_to_act_a_counter[3:0] <= 4'h0; + burst_counter[3:0] <= 4'h0; + read_to_write_counter [3:0] <= 4'h0; + write_to_read_counter [3:0] <= 4'h0; + write_recovery_counter[3:0] <= 4'h0; + precharge_counter[3:0] <= 4'h0; + refresh_counter[3:0] <= 4'h0; + end + + WRITING_REG: + begin + if ( (control_wires[4] == 1'b0) // powered off + | (control_wires[3] == 1'b1) // not selected + | (control_wires[4:0] == NOOP) ) // noop + begin + if (load_mode_delay_counter[3:0] > 4'h2) // looping + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING_REG; + Timing_Error <= 1'b0; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b0; + end + end + else // nothing else legal until load mode finished + begin + if (load_mode_delay_counter[3:0] > 4'h2) // looping + begin + $display ("*** %m DDR DRAM cannot accept any other command while doing a LOAD MODE REGISTER command %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING_REG; + Timing_Error <= 1'b1; + end + else + begin + $display ("*** %m DDR DRAM cannot accept any other command while doing a LOAD MODE REGISTER command %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b1; + end + end + load_mode_delay_counter[3:0] <= (load_mode_delay_counter[3:0] != 4'h0) + ? (load_mode_delay_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_b_counter[3:0] <= 4'h0; + act_to_read_or_write_counter[3:0] <= 4'h0; + act_to_precharge_counter[3:0] <= 4'h0; + act_a_to_act_a_counter[3:0] <= 4'h0; + burst_counter[3:0] <= 4'h0; + read_to_write_counter [3:0] <= 4'h0; + write_to_read_counter [3:0] <= 4'h0; + write_recovery_counter[3:0] <= 4'h0; + precharge_counter[3:0] <= 4'h0; + refresh_counter[3:0] <= 4'h0; + end + +// All interesting work starts here, except for read, write followed by read, write, precharge + BANK_IDLE: + begin + if ( (control_wires[4] == 1'b0) // powered off + | (control_wires[3] == 1'b1) // not selected + | (control_wires[4:0] == NOOP) ) // noop + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b0; + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == LOAD_MODE) // no bank involved + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING_REG; + Timing_Error <= 1'b0; + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == ACTIVATE_BANK) // activate only if this bank is addressed + begin + if (BA[1:0] == bank_num[1:0]) + begin + if (act_a_to_act_a_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM cannot do an ACT too soon after another ACT to the same bank %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b1; + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b0; + act_a_to_act_b_counter[3:0] <= ACT_A_TO_ACT_B_CYCLES; + act_to_read_or_write_counter[3:0] <= ACT_TO_READ_OR_WRITE_CYCLES; + act_to_precharge_counter[3:0] <= ACT_TO_PRECHARGE_CYCLES; + act_a_to_act_a_counter[3:0] <= ACT_A_TO_ACT_A_CYCLES; + end + end + else // some other bank + begin + if (act_a_to_act_b_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM cannot do an ACT too soon after another ACT to the same bank %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b1; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b0; + end + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + end + end + else if ((control_wires[4:0] == READ_BANK) & (BA[1:0] != bank_num[1:0])) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b0; + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + end + else if ((control_wires[4:0] == WRITE_BANK) & (BA[1:0] != bank_num[1:0])) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b0; + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == PRECHARGE_BANK) + begin + if ((BA[1:0] == bank_num[1:0]) | (A[10] == 1'b1)) + begin + if (act_to_precharge_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM cannot do an PRECHARGE too soon after ACTIVATE %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b1; + end + else // ignore precharges when in idle state + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b0; + end + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b0; + end + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == REFRESH_BANK) // all already precharged + begin + if (act_a_to_act_a_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM cannot do an REFRESH too soon after ACTIVATE %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b1; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= REFRESHING; + Timing_Error <= 1'b0; + end + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + end + else + begin + $display ("*** %m DDR DRAM can only do Activate, Refresh, Precharge, or Load Mode Register from Idle %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b1; + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + end + load_mode_delay_counter[3:0] <= LOAD_MODE_REGISTER_CYCLES; + burst_counter[3:0] <= 4'h0; + read_to_write_counter [3:0] <= 4'h0; + write_to_read_counter [3:0] <= 4'h0; + write_recovery_counter[3:0] <= (write_recovery_counter[3:0] != 4'h0) + ? (write_recovery_counter[3:0] - 4'h1) : 4'h0; + precharge_counter[3:0] <= (precharge_counter[3:0] != 4'h0) + ? (precharge_counter[3:0] - 4'h1) : 4'h0; + refresh_counter[3:0] <= REFRESH_CYCLES; + end + + ACTIVATING: + begin + if ( (control_wires[4] == 1'b0) // powered off + | (control_wires[3] == 1'b1) // not selected + | (control_wires[4:0] == NOOP) ) // noop + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b0; + end + else if (control_wires[4:0] == ACTIVATE_BANK) // activate only if this bank is addressed + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do an Activate to a bank which is already Activated %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b1; + end + else + begin + if (act_a_to_act_b_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM cannot do an Activate to a different bank too soon after this bank is Activated %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b1; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b0; + end + end + end + else if (control_wires[4:0] == READ_BANK) // no bank involved + begin + if (BA[1:0] == bank_num[1:0]) + begin + if (act_to_read_or_write_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM has to wait from Activate to Read %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b1; + end + else if (write_to_read_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM has to wait from Write to Read %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b1; + end + else + begin + if (A[10] == 1'b1) + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING_PRECHARGE; + else + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING; + Timing_Error <= 1'b0; + end + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b0; + end + end + else if (control_wires[4:0] == WRITE_BANK) // no bank involved + begin + if (BA[1:0] == bank_num[1:0]) + begin + if (act_to_read_or_write_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM has to wait from Activate to Write %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b1; + end + else if (read_to_write_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM has to wait from Read to Write %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b1; + end + else + begin + if (A[10] == 1'b1) + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING_PRECHARGE; + else + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING; + Timing_Error <= 1'b0; + end + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b0; + end + end + else if (control_wires[4:0] == PRECHARGE_BANK) // only do precharge if this bank is addressed + begin + if ((BA[1:0] == bank_num[1:0]) | (A[10] == 1'b1)) + begin + if (act_to_precharge_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM has to wait from Activate to Precharge %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b1; + end + else if (write_recovery_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM has to wait from end of Write to Precharge %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b1; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= PRECHARGING; + Timing_Error <= 1'b0; + end + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b0; + end + end + else + begin + $display ("*** %m DDR DRAM can only do Read, Write, or Precharge from Activated %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b1; + end + load_mode_delay_counter[3:0] <= 4'h0; + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + burst_counter[3:0] <= 4'h2; + read_to_write_counter [3:0] <= (read_to_write_counter[3:0] != 4'h0) + ? (read_to_write_counter[3:0] - 4'h1) : 4'h0; + write_to_read_counter [3:0] <= (write_to_read_counter[3:0] != 4'h0) + ? (write_to_read_counter[3:0] - 4'h1) : 4'h0; + write_recovery_counter[3:0] <= (write_recovery_counter[3:0] != 4'h0) + ? (write_recovery_counter[3:0] - 4'h1) : 4'h0; + precharge_counter[3:0] <= PRECHARGE_CYCLES; + refresh_counter[3:0] <= 4'h0; + end + + WRITING: + begin + if ( (control_wires[4] == 1'b0) // powered off + | (control_wires[3] == 1'b1) // not selected + | (control_wires[4:0] == NOOP) ) // noop + begin + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING; + Timing_Error <= 1'b0; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b0; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == ACTIVATE_BANK) // activate only if this bank is addressed + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do an Activate to a bank which is being Written %t", $time); + Timing_Error <= 1'b1; + end + else + begin + if (act_a_to_act_b_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM cannot do an Activate to a different bank too soon after this bank is Activated %t", $time); + Timing_Error <= 1'b1; + end + else + begin + Timing_Error <= 1'b0; + end + end + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == READ_BANK) + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do a Read until Write completes plus recovery %t", $time); + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == WRITE_BANK) + begin + if (BA[1:0] == bank_num[1:0]) + begin + if (burst_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM cannot do a Write to a bank until the previous Write completes %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING; // might want to go to activate! + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else + begin + if (A[10] == 1'b1) + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING_PRECHARGE; + else + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING; + Timing_Error <= 1'b0; + burst_counter[3:0] <= 4'h2; + end + end + else // was to a different bank. We are done + begin + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + end + else if (control_wires[4:0] == PRECHARGE_BANK) // do idles when it is safe to do so + begin + if ((BA[1:0] == bank_num[1:0]) | (A[10] == 1'b1)) + begin + $display ("*** %m DDR DRAM cannot do a Precharge until Write completes plus recovery %t", $time); + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else + begin + $display ("*** %m DDR DRAM can only do Read, Write, or Precharge from Write %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING; + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + load_mode_delay_counter[3:0] <= 4'h0; + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + read_to_write_counter [3:0] <= (read_to_write_counter[3:0] != 4'h0) + ? (read_to_write_counter[3:0] - 4'h1) : 4'h0; + write_to_read_counter [3:0] <= WRITE_TO_READ_CYCLES; + write_recovery_counter[3:0] <= WRITE_RECOVERY_TO_PRECHARGE_CYCLES + 1; // to let write finish! + precharge_counter[3:0] <= PRECHARGE_CYCLES; + refresh_counter[3:0] <= 4'h0; + end + + WRITING_PRECHARGE: + begin + if ( (control_wires[4] == 1'b0) // powered off + | (control_wires[3] == 1'b1) // not selected + | (control_wires[4:0] == NOOP) ) // noop + begin + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING_PRECHARGE; + Timing_Error <= 1'b0; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + Timing_Error <= 1'b0; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == ACTIVATE_BANK) // activate only if this bank is addressed + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do an Activate to a bank which is being Written %t", $time); + Timing_Error <= 1'b1; + end + else + begin + if (act_a_to_act_b_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM cannot do an Activate to a different bank too soon after this bank is Activated %t", $time); + Timing_Error <= 1'b1; + end + else + begin + Timing_Error <= 1'b0; + end + end + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING_PRECHARGE; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == READ_BANK) + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do a Read until Write_precharge completes precharge %t", $time); + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING_PRECHARGE; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == WRITE_BANK) + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do a Write until Write_precharge completes precharge %t", $time); + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING_PRECHARGE; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == PRECHARGE_BANK) // do idles when it is safe to do so + begin + if ((BA[1:0] == bank_num[1:0]) | (A[10] == 1'b1)) + begin + $display ("*** %m DDR DRAM cannot do a Precharge until Write_precharge completes plus recovery %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING_PRECHARGE; + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else // was to a different bank. We are done + begin + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING_PRECHARGE; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + end + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else + begin + $display ("*** %m DDR DRAM can only wait from Write_precharge %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WRITING_PRECHARGE; + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + load_mode_delay_counter[3:0] <= 4'h0; + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + read_to_write_counter [3:0] <= (read_to_write_counter[3:0] != 4'h0) + ? (read_to_write_counter[3:0] - 4'h1) : 4'h0; + write_to_read_counter [3:0] <= WRITE_TO_READ_CYCLES; + write_recovery_counter[3:0] <= WRITE_RECOVERY_TO_PRECHARGE_CYCLES + 1; // to let write finish! + precharge_counter[3:0] <= PRECHARGE_CYCLES; + refresh_counter[3:0] <= 4'h0; + end + + READING: + begin + if ( (control_wires[4] == 1'b0) // powered off + | (control_wires[3] == 1'b1) // not selected + | (control_wires[4:0] == NOOP) ) // noop + begin + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING; + Timing_Error <= 1'b0; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + Timing_Error <= 1'b0; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == ACTIVATE_BANK) // activate only if this bank is addressed + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do an Activate to a bank which is being Read %t", $time); + Timing_Error <= 1'b1; + end + else + begin + if (act_a_to_act_b_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM cannot do an Activate to a different bank too soon after this bank is Activated %t", $time); + Timing_Error <= 1'b1; + end + else + begin + Timing_Error <= 1'b0; + end + end + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == READ_BANK) + begin + if (BA[1:0] == bank_num[1:0]) + begin + if (burst_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM cannot do a Read to a bank until the previous Read completes %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING; + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else + begin + if (A[10] == 1'b1) + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING_PRECHARGE; + else + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING; + Timing_Error <= 1'b0; + burst_counter[3:0] <= 4'h2; + end + end + else // was to a different bank. We are done + begin + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + end + else if (control_wires[4:0] == WRITE_BANK) + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do a Read until Write completes plus recovery %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING; + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else // was to a different bank. We are done + begin + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + end + else if (control_wires[4:0] == PRECHARGE_BANK) // do idles when it is safe to do so + begin + if ((BA[1:0] == bank_num[1:0]) | (A[10] == 1'b1)) + begin + if (burst_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM cannot do a Precharge to a bank until the previous Read completes %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING; + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else + begin + if (act_to_precharge_counter[3:0] > 4'h1) + begin + $display ("*** %m DDR DRAM has to wait during READ from Activate to Precharge %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING; + Timing_Error <= 1'b1; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= PRECHARGING; + Timing_Error <= 1'b0; + end + end + end + else // was to a different bank. We are done + begin + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= ACTIVATING; + end + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else + begin + $display ("*** %m DDR DRAM can only do Read, Write, or Precharge from Read %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING; + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + load_mode_delay_counter[3:0] <= (load_mode_delay_counter[3:0] != 4'h0) + ? (load_mode_delay_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + read_to_write_counter [3:0] <= READ_TO_WRITE_CYCLES; + write_to_read_counter [3:0] <= (write_to_read_counter[3:0] != 4'h0) + ? (write_to_read_counter[3:0] - 4'h1) : 4'h0; + write_recovery_counter[3:0] <= (write_recovery_counter[3:0] != 4'h0) + ? (write_recovery_counter[3:0] - 4'h1) : 4'h0; + precharge_counter[3:0] <= PRECHARGE_CYCLES; + refresh_counter[3:0] <= 4'h0; + end + + READING_PRECHARGE: + begin + if ( (control_wires[4] == 1'b0) // powered off + | (control_wires[3] == 1'b1) // not selected + | (control_wires[4:0] == NOOP) ) // noop + begin + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING_PRECHARGE; + Timing_Error <= 1'b0; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + Timing_Error <= 1'b0; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == ACTIVATE_BANK) // activate only if this bank is addressed + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do an Activate to a bank which is being Read %t", $time); + Timing_Error <= 1'b1; + end + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING_PRECHARGE; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == READ_BANK) + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do a Read until Read_precharge completes precharge %t", $time); + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING_PRECHARGE; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == WRITE_BANK) + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do a Write until Read_precharge completes precharge %t", $time); + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING_PRECHARGE; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else if (control_wires[4:0] == PRECHARGE_BANK) // do idles when it is safe to do so + begin + if ((BA[1:0] == bank_num[1:0]) | (A[10] == 1'b1)) + begin + $display ("*** %m DDR DRAM cannot do a Precharge until Read_precharge completes plus recovery %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING_PRECHARGE; + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else // was to a different bank. We are done + begin + if (burst_counter[3:0] > 4'h1) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING_PRECHARGE; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + end + end + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + else + begin + $display ("*** %m DDR DRAM can only do Read, Write, or Precharge from Read %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= READING_PRECHARGE; + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + load_mode_delay_counter[3:0] <= (load_mode_delay_counter[3:0] != 4'h0) + ? (load_mode_delay_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + read_to_write_counter [3:0] <= READ_TO_WRITE_CYCLES; + write_to_read_counter [3:0] <= (write_to_read_counter[3:0] != 4'h0) + ? (write_to_read_counter[3:0] - 4'h1) : 4'h0; + write_recovery_counter[3:0] <= (write_recovery_counter[3:0] != 4'h0) + ? (write_recovery_counter[3:0] - 4'h1) : 4'h0; + precharge_counter[3:0] <= PRECHARGE_CYCLES; + refresh_counter[3:0] <= 4'h0; + end + + WAITING_FOR_AUTO_PRECHARGE: + begin + if ( (control_wires[4] == 1'b0) // powered off + | (control_wires[3] == 1'b1) // not selected + | (control_wires[4:0] == NOOP) ) // noop + begin + if ( (write_recovery_counter[3:0] > 4'h1) + | (act_to_precharge_counter[3:0] > 4'h1) ) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + Timing_Error <= 1'b0; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= PRECHARGING; + Timing_Error <= 1'b0; + end + end + else if (control_wires[4:0] == ACTIVATE_BANK) // activate only if this bank is addressed + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do an Activate to a bank which is being auto_precharging %t", $time); + Timing_Error <= 1'b1; + end + if ( (write_recovery_counter[3:0] > 4'h1) + | (act_to_precharge_counter[3:0] > 4'h1) ) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + Timing_Error <= 1'b0; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= PRECHARGING; + Timing_Error <= 1'b0; + end + end + else if (control_wires[4:0] == READ_BANK) + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do a Read until bank completes precharge %t", $time); + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + if ( (write_recovery_counter[3:0] > 4'h1) + | (act_to_precharge_counter[3:0] > 4'h1) ) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + Timing_Error <= 1'b0; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= PRECHARGING; + Timing_Error <= 1'b0; + end + end + else if (control_wires[4:0] == WRITE_BANK) + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do a Write until bank completes precharge %t", $time); + Timing_Error <= 1'b1; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + end + if ( (write_recovery_counter[3:0] > 4'h1) + | (act_to_precharge_counter[3:0] > 4'h1) ) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + Timing_Error <= 1'b0; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= PRECHARGING; + Timing_Error <= 1'b0; + end + end + else if (control_wires[4:0] == PRECHARGE_BANK) // do idles when it is safe to do so + begin + if ( (write_recovery_counter[3:0] > 4'h1) + | (act_to_precharge_counter[3:0] > 4'h1) ) + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + Timing_Error <= 1'b0; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= PRECHARGING; + Timing_Error <= 1'b0; + end + end + else + begin + $display ("*** %m DDR DRAM can only wait from Write_precharge %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= WAITING_FOR_AUTO_PRECHARGE; + Timing_Error <= 1'b1; + end + load_mode_delay_counter[3:0] <= 4'h0; + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + read_to_write_counter [3:0] <= (read_to_write_counter[3:0] != 4'h0) + ? (read_to_write_counter[3:0] - 4'h1) : 4'h0; + write_to_read_counter [3:0] <= (write_to_read_counter[3:0] != 4'h0) + ? (write_to_read_counter[3:0] - 4'h1) : 4'h0; + write_recovery_counter[3:0] <= (write_recovery_counter[3:0] != 4'h0) + ? (write_recovery_counter[3:0] - 4'h1) : 4'h0; + precharge_counter[3:0] <= PRECHARGE_CYCLES; + refresh_counter[3:0] <= 4'h0; + end + + PRECHARGING: + begin + if ( (control_wires[4] == 1'b0) // powered off + | (control_wires[3] == 1'b1) // not selected + | (control_wires[4:0] == NOOP) ) // noop + begin + if (precharge_counter[3:0] > 4'h2) // looping + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= PRECHARGING; + Timing_Error <= 1'b0; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b0; + end + end + else if (control_wires[4:0] == ACTIVATE_BANK) // activate only if this bank is addressed + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do an Activate to a bank which is being Precharged %t", $time); + Timing_Error <= 1'b1; + end + else + begin + Timing_Error <= 1'b0; + end + if (precharge_counter[3:0] > 4'h2) // looping + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= PRECHARGING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + end + end + else if (control_wires[4:0] == READ_BANK) // no bank involved + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do an Read to a bank which is being Precharged %t", $time); + Timing_Error <= 1'b1; + end + else + begin + Timing_Error <= 1'b0; + end + if (precharge_counter[3:0] > 4'h2) // looping + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= PRECHARGING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + end + end + else if (control_wires[4:0] == WRITE_BANK) // no bank involved + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do an Write to a bank which is being Precharged %t", $time); + Timing_Error <= 1'b1; + end + else + begin + Timing_Error <= 1'b0; + end + if (precharge_counter[3:0] > 4'h2) // looping + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= PRECHARGING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + end + end + else if (control_wires[4:0] == PRECHARGE_BANK) // ignore extra precharges + begin + Timing_Error <= 1'b0; + if (precharge_counter[3:0] > 4'h2) // looping + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= PRECHARGING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + end + end + else + begin + $display ("*** %m DDR DRAM can't do anything from Precharge %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= PRECHARGING; + Timing_Error <= 1'b1; + end + load_mode_delay_counter[3:0] <= (load_mode_delay_counter[3:0] != 4'h0) + ? (load_mode_delay_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + read_to_write_counter [3:0] <= (read_to_write_counter[3:0] != 4'h0) + ? (read_to_write_counter[3:0] - 4'h1) : 4'h0; + write_to_read_counter [3:0] <= (write_to_read_counter[3:0] != 4'h0) + ? (write_to_read_counter[3:0] - 4'h1) : 4'h0; + write_recovery_counter[3:0] <= (write_recovery_counter[3:0] != 4'h0) + ? (write_recovery_counter[3:0] - 4'h1) : 4'h0; + precharge_counter[3:0] <= (precharge_counter[3:0] != 4'h0) + ? (precharge_counter[3:0] - 4'h1) : 4'h0; + refresh_counter[3:0] <= (refresh_counter[3:0] != 4'h0) + ? (refresh_counter[3:0] - 4'h1) : 4'h0; + end + + REFRESHING: + begin + if ( (control_wires[4] == 1'b0) // powered off + | (control_wires[3] == 1'b1) // not selected + | (control_wires[4:0] == NOOP) ) // noop + begin + if (refresh_counter[3:0] > 4'h2) // looping + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= REFRESHING; + Timing_Error <= 1'b0; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b0; + end + end + else if (control_wires[4:0] == ACTIVATE_BANK) // activate only if this bank is addressed + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do an Activate to a bank which is being Refreshed %t", $time); + Timing_Error <= 1'b1; + end + else + begin + Timing_Error <= 1'b0; + end + if (refresh_counter[3:0] > 4'h2) // looping + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= REFRESHING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + end + end + else if (control_wires[4:0] == READ_BANK) // no bank involved + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do an Read to a bank which is being Refreshed %t", $time); + Timing_Error <= 1'b1; + end + else + begin + Timing_Error <= 1'b0; + end + if (refresh_counter[3:0] > 4'h2) // looping + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= REFRESHING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + end + end + else if (control_wires[4:0] == WRITE_BANK) // no bank involved + begin + if (BA[1:0] == bank_num[1:0]) + begin + $display ("*** %m DDR DRAM cannot do an Write to a bank which is being Refreshed %t", $time); + Timing_Error <= 1'b1; + end + else + begin + Timing_Error <= 1'b0; + end + if (refresh_counter[3:0] > 4'h2) // looping + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= REFRESHING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + end + end + else if (control_wires[4:0] == PRECHARGE_BANK) // ignore extra precharges + begin + Timing_Error <= 1'b0; + if (refresh_counter[3:0] > 4'h2) // looping + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= REFRESHING; + end + else + begin + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + end + end + else + begin + $display ("*** %m DDR DRAM can't do anything from Refresh %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= REFRESHING; + Timing_Error <= 1'b1; + end + load_mode_delay_counter[3:0] <= (load_mode_delay_counter[3:0] != 4'h0) + ? (load_mode_delay_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_b_counter[3:0] <= (act_a_to_act_b_counter[3:0] != 4'h0) + ? (act_a_to_act_b_counter[3:0] - 4'h1) : 4'h0; + act_to_read_or_write_counter[3:0] <= (act_to_read_or_write_counter[3:0] != 4'h0) + ? (act_to_read_or_write_counter[3:0] - 4'h1) : 4'h0; + act_to_precharge_counter[3:0] <= (act_to_precharge_counter[3:0] != 4'h0) + ? (act_to_precharge_counter[3:0] - 4'h1) : 4'h0; + act_a_to_act_a_counter[3:0] <= (act_a_to_act_a_counter[3:0] != 4'h0) + ? (act_a_to_act_a_counter[3:0] - 4'h1) : 4'h0; + burst_counter[3:0] <= (burst_counter[3:0] != 4'h0) + ? (burst_counter[3:0] - 4'h1) : 4'h0; + write_recovery_counter[3:0] <= (write_recovery_counter[3:0] != 4'h0) + ? (write_recovery_counter[3:0] - 4'h1) : 4'h0; + precharge_counter[3:0] <= (precharge_counter[3:0] != 4'h0) + ? (precharge_counter[3:0] - 4'h1) : 4'h0; + refresh_counter[3:0] <= (refresh_counter[3:0] != 4'h0) + ? (refresh_counter[3:0] - 4'h1) : 4'h0; + end + + default: + begin + $display ("*** %m DDR DRAM default jump should be impossible %t", $time); + bank_state[BANK_STATE_WIDTH - 1 : 0] <= BANK_IDLE; + Timing_Error <= 1'b1; + end + endcase + end // if out the entire case statement! + end +endmodule + +`define TEST_DDR_2_DRAM +`ifdef TEST_DDR_2_DRAM +module test_ddr_2_dram; + reg CLK_P, CLK_N; + + initial + begin + CLK_P <= 1'b0; + CLK_N <= 1'b1; + # 10_000 ; // make times be even + while (1'b1) + begin + #10_000 ; // 10 nSec + CLK_P <= ~CLK_P; + CLK_N <= ~CLK_N; + end + end + + initial + begin + #2000_000 $finish; + end + +// hook up sequential test bench to instantiation of DDR DRAM for test +parameter DATA_BUS_WIDTH = 4; + + wire [DATA_BUS_WIDTH - 1 : 0] DQ; + wire DQS; + + reg DM; + reg [12:0] A; + reg [1:0] BA; + reg RAS_L, CAS_L, WE_L, CS_L, CKE; + reg [DATA_BUS_WIDTH - 1 : 0] DQ_out_0; + reg [DATA_BUS_WIDTH - 1 : 0] DQ_out_1; + reg DQ_oe_0, DQ_oe_1; + reg DQS_out; + reg DQS_oe; + +// MUX the two data items together based on clock phase + wire [DATA_BUS_WIDTH - 1 : 0] DQ_out = CLK_P + ? DQ_out_1[DATA_BUS_WIDTH - 1 : 0] + : DQ_out_0[DATA_BUS_WIDTH - 1 : 0]; + +// Either send data or tristate the bus + assign DQ[DATA_BUS_WIDTH - 1 : 0] = DQ_oe + ? DQ_out[DATA_BUS_WIDTH - 1 : 0] + : {DATA_BUS_WIDTH{1'bZ}}; + +// The DQS signal is OE'd BEFORE the Data. Called the preamble. + assign DQS = DQS_oe ? DQS_out : 1'bZ; + +// {CKE, CS_L, RAS_L, CAS_L, WE_L} +parameter NOOP = 5'h17; +parameter ACTIVATE = 5'h13; +parameter READ = 5'h15; +parameter WRITE = 5'h14; +parameter PRECHARGE = 5'h12; +parameter REFRESH = 5'h11; +parameter LOAD_MODE = 5'h10; + + initial + begin +DQ_out_0[DATA_BUS_WIDTH - 1 : 0] <= 4'hZ; +DQ_oe_0 <= 1'b0; +DQ_out_1[DATA_BUS_WIDTH - 1 : 0] <= 4'hZ; +DQ_oe_1 <= 1'b0; + + CKE <= 1'b1; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + DQ_oe <= 1'b0; DQS_oe <= 1'b0; + @ (posedge CLK_P) ; // noop + +A[12:0] <= 13'h1555; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= LOAD_MODE; + @ (posedge CLK_P) ; // write reg + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + +A[12:0] <= 13'h0; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= ACTIVATE; + @ (posedge CLK_P) ; // activate + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + +A[12:0] <= 13'h0; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= WRITE; + @ (posedge CLK_P) ; // write DRAM + +DQ_out_0[DATA_BUS_WIDTH - 1 : 0] <= 4'h1; +DQ_out_1[DATA_BUS_WIDTH - 1 : 0] <= 4'hZ; + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +DQ_out_0[DATA_BUS_WIDTH - 1 : 0] <= 4'h2; +DQ_out_1[DATA_BUS_WIDTH - 1 : 0] <= 4'hE; + +A[12:0] <= 13'h0; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= WRITE; + @ (posedge CLK_P) ; // write DRAM + +DQ_out_0[DATA_BUS_WIDTH - 1 : 0] <= 4'h3; +DQ_out_1[DATA_BUS_WIDTH - 1 : 0] <= 4'hD; + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +DQ_out_0[DATA_BUS_WIDTH - 1 : 0] <= 4'h4; +DQ_out_1[DATA_BUS_WIDTH - 1 : 0] <= 4'hC; + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +DQ_out_0[DATA_BUS_WIDTH - 1 : 0] <= 4'hZ; +DQ_out_1[DATA_BUS_WIDTH - 1 : 0] <= 4'hB; + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +DQ_out_1[DATA_BUS_WIDTH - 1 : 0] <= 4'hZ; + +A[12:0] <= 13'h0; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= READ; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +A[12:0] <= 13'h0; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= READ; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +A[12:0] <= 13'h0; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= PRECHARGE; + @ (posedge CLK_P) ; // noop + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +A[12:0] <= 13'h0; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= ACTIVATE; + @ (posedge CLK_P) ; // activate + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + +A[12:0] <= 13'h0; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= READ; + @ (posedge CLK_P) ; // read + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data // + +A[12:0] <= 13'h0; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= WRITE; + @ (posedge CLK_P) ; // write + +DQ_out_0[DATA_BUS_WIDTH - 1 : 0] <= 4'hE; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +DQ_out_0[DATA_BUS_WIDTH - 1 : 0] <= 4'hD; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +DQ_out_0[DATA_BUS_WIDTH - 1 : 0] <= 4'hZ; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + +A[12:0] <= 13'h0; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= PRECHARGE; + @ (posedge CLK_P) ; // noop + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= REFRESH; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +A[12:0] <= 13'h0; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= ACTIVATE; + @ (posedge CLK_P) ; // activate + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +A[12:0] <= 13'h400; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= WRITE; + @ (posedge CLK_P) ; // write + +DQ_out_0[DATA_BUS_WIDTH - 1 : 0] <= 4'hB; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +DQ_out_0[DATA_BUS_WIDTH - 1 : 0] <= 4'h7; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +DQ_out_0[DATA_BUS_WIDTH - 1 : 0] <= 4'hZ; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +A[12:0] <= 13'h0; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= ACTIVATE; + @ (posedge CLK_P) ; // activate + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +A[12:0] <= 13'h400; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= READ; + @ (posedge CLK_P) ; // write + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + +A[12:0] <= 13'h0; BA[1:0] <= 2'h0; + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= ACTIVATE; + @ (posedge CLK_P) ; // activate + + {CKE, CS_L, RAS_L, CAS_L, WE_L} <= NOOP; + @ (posedge CLK_P) ; // noop + data + + end + + + + + assign DQ[DATA_BUS_WIDTH - 1 : 0] = + ( (DQ_out_0[DATA_BUS_WIDTH - 1 : 0] !== {DATA_BUS_WIDTH{1'bZ}}) + & (CLK_N == 1'b1) ) + ? DQ_out_0[DATA_BUS_WIDTH - 1 : 0] + : ( ( (DQ_out_1[DATA_BUS_WIDTH - 1 : 0] !== {DATA_BUS_WIDTH{1'bZ}}) + & (CLK_P == 1'b1) ) + ? DQ_out_1[DATA_BUS_WIDTH - 1 : 0] + : {DATA_BUS_WIDTH{1'bZ}}); + +ddr_2_dram +# ( 100.0, // frequency + 2.0, // latency + 13, // num_addr_bits + 12, // num_col_bits + 4 * DATA_BUS_WIDTH, // num_data_bits + 32, // num_words_in_test_memory + 1 + ) ddr_2_dram ( + .DQ ({DQ[DATA_BUS_WIDTH - 1 : 0], DQ[DATA_BUS_WIDTH - 1 : 0], + DQ[DATA_BUS_WIDTH - 1 : 0], DQ[DATA_BUS_WIDTH - 1 : 0]}), + .DQS (DQS), + .DM (DM), + .A (A[12:0]), + .BA (BA[1:0]), + .RAS_L (RAS_L), + .CAS_L (CAS_L), + .WE_L (WE_L), + .CS_L (CS_L), + .CKE (CKE), + .CLK_P (CLK_P), + .CLK_N (CLK_N) +); + + wire [3:0] BANK_STATE_0 = ddr_2_dram.ddr_2_dram_single_bank_0.bank_state[3:0]; + wire [3:0] BANK_STATE_1 = ddr_2_dram.ddr_2_dram_single_bank_1.bank_state[3:0]; + wire [3:0] BANK_STATE_2 = ddr_2_dram.ddr_2_dram_single_bank_2.bank_state[3:0]; + wire [3:0] BANK_STATE_3 = ddr_2_dram.ddr_2_dram_single_bank_3.bank_state[3:0]; + +endmodule +`endif // TEST_DDR_2_DRAM Index: common/trunk/sram_for_debugging_sync.v =================================================================== --- common/trunk/sram_for_debugging_sync.v (nonexistent) +++ common/trunk/sram_for_debugging_sync.v (revision 48) @@ -0,0 +1,307 @@ +////////////////////////////////////////////////////////////////////// +//// //// +//// sram_for_debugging_sync #(NUM_ADDR_BITS, NUM_DATA_BITS) //// +//// //// +//// This file is part of the general opencores effort. //// +//// //// +//// //// +//// Module Description: //// +//// An SRAM model which contains only 32 entries. //// +//// This SRAM trades off time for storage. By only storing //// +//// a very few entries, this SRAM takes constant storage //// +//// independent of how many address lines it exports. //// +//// The limited storage means that the entries must be read //// +//// soon after it is written. If too many writes happen //// +//// before an entry is read, the entry returns X's. //// +//// This SRAM has 1 other debugging feature. When a write //// +//// is executed, the SRAM ;atches the bit number of the //// +//// least significant bit of the address which is HIGH. //// +//// The special address 0xAA00..., with the top 8 bits being //// +//// 8'b1010_1010, returns the stored number when read. //// +//// As an example, assume that a write is done to location //// +//// 20'h0_0040. //// +//// After the write, but before any other write, the user //// +//// can read location 20'hC_C000. The read returns 4'h5. //// +//// //// +//// Author(s): //// +//// - Anonymous //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2000 Anonymous and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source 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 Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from //// +//// //// +////////////////////////////////////////////////////////////////////// +// +// $Id: sram_for_debugging_sync.v,v 1.2 2001-11-06 12:33:15 bbeaver Exp $ +// +// CVS Revision History +// +// $Log: not supported by cvs2svn $ +// Revision 1.3 2001/11/06 12:41:27 Blue Beaver +// no message +// +// Revision 1.2 2001/10/02 06:22:08 Blue Beaver +// no message +// +// + +`timescale 1ns/1ps + +// instantiate as "sram_for_debugging_sync #(NUM_ADDR_BITS, NUM_DATA_BITS) instance ()" + +module sram_for_debugging_sync ( + data_out, + data_in, + address, + read_enable, + write_enable, + clk +); + parameter NUM_ADDR_BITS = 1; + parameter NUM_DATA_BITS = 1; + + output [NUM_DATA_BITS - 1 : 0] data_out; + input [NUM_DATA_BITS - 1 : 0] data_in; + input [NUM_ADDR_BITS - 1 : 0] address; + input read_enable; + input write_enable; + input clk; + + reg [NUM_DATA_BITS - 1 : 0] data_storage [31:0]; // 32 entries of SRAM storage + reg [NUM_ADDR_BITS - 1 : 0] address_storage [31:0]; // 32 entries of SRAM storage + reg [5:0] write_counter; // enough to count to 63 + reg [NUM_DATA_BITS - 1 : 0] stored_write_address; // store bit number of address LSB set to 1 + + integer i, j, k, l; + +// synopsys translate_off + initial + begin + for (i = 6'h00; i != 6'h20; i = i + 6'h01) + begin + address_storage[i] = {NUM_ADDR_BITS{1'bX}}; + data_storage[i] = {NUM_DATA_BITS{1'bX}}; + stored_write_address[NUM_DATA_BITS - 1 : 0] = {NUM_DATA_BITS{1'bX}}; + write_counter[5:0] = 6'h00; + end + end +// synopsys translate_on + +// Write to next address, remember which LSB write address bit was ~0 + always @(posedge clk) + begin + if (write_enable == 1'b1) + begin + $display ("writing %x at %x %t", data_in[NUM_DATA_BITS - 1 : 0], address[NUM_ADDR_BITS - 1 : 0], $time); + address_storage[write_counter[4:0]] = address[NUM_ADDR_BITS - 1 : 0]; + data_storage[write_counter[4:0]] = data_in[NUM_DATA_BITS - 1 : 0]; + for (j = 0; j < NUM_ADDR_BITS; j = j + 1) + begin + if (((address[NUM_ADDR_BITS - 1 : 0] >> j) & 1'b1) != 1'b0) + begin + stored_write_address[NUM_DATA_BITS - 1 : 0] = j; + j = NUM_ADDR_BITS + 1; // only remember the FIRST bit set + end + end + if (j == NUM_ADDR_BITS) // NO bit was set + begin + stored_write_address[NUM_DATA_BITS - 1 : 0] = NUM_ADDR_BITS; + end + write_counter[5:0] = (write_counter[5:0] + 6'h01) & 6'h1F; + end + end + +// Starting at the newest, search back to oldest to find if the word has been written + reg [NUM_DATA_BITS - 1 : 0] data_out; + reg [4:0] read_address; + + always @(posedge clk) + begin + if ((read_enable !== 1'b1) | ((^address[NUM_ADDR_BITS - 1 : 0]) === 1'bX)) // no read, return X's + begin + data_out[NUM_DATA_BITS - 1 : 0] = {NUM_DATA_BITS{1'bX}}; + end + else + if ((read_enable == 1'b1) && (write_enable == 1'b1)) + begin + $display ("*** %m sram_for_debugging_sync cannot handle a read and a write at the same time"); + data_out[NUM_DATA_BITS - 1 : 0] = {NUM_DATA_BITS{1'bX}}; + end + else if ((read_enable == 1'b1) && (write_enable == 1'b0)) + begin + if ((address[NUM_ADDR_BITS - 1 : 0] >> (NUM_ADDR_BITS - 8)) == 8'hAA) // read magic location, return Address Bit Number + begin + data_out[NUM_DATA_BITS - 1 : 0] = stored_write_address[NUM_DATA_BITS - 1 : 0]; + end + else // otherwise search history to see if the word has been written recently + begin + k = write_counter[5:0]; + for (l = k + 6'h1F; // half way around, same as last minus 1; + l >= k; // write address not valid + l = l - 1) + begin + read_address[4:0] = l; + if (address[NUM_ADDR_BITS - 1 : 0] === address_storage[read_address[4:0]]) + begin + data_out[NUM_DATA_BITS - 1 : 0] = data_storage[read_address[4:0]]; + l = k - 2; + end + end + if (l == (k - 1)) // didn't find it at all! + begin + data_out[NUM_DATA_BITS - 1 : 0] = {NUM_DATA_BITS{1'bX}}; + end + end + end + end + +// synopsys translate_off + initial + begin + if (NUM_ADDR_BITS < 8) + begin + $display ("*** Exiting because %m sram_for_debugging_sync Number of Address bits %d < 8", + NUM_ADDR_BITS); + $finish; + end + if (NUM_DATA_BITS < 8) + begin + $display ("*** Exiting because %m sram_for_debugging_sync Number of Data bits %d < 8", + NUM_DATA_BITS); + $finish; + end + end +// synopsys translate_on +endmodule + +`define TEST_SRAM +`ifdef TEST_SRAM +module test_sram; + reg [11:0] address; + reg [8:0] data_in; + reg read_enable, write_enable; + wire [8:0] data_out; + reg clk; + + integer i; + + initial + begin + read_enable = 1'b0; + write_enable = 1'b0; + clk = 1'b0; + for (i = 0; i < 12; i = i + 1) + begin + # 0; + address[11:0] = (12'h001 << i); + data_in[8:0] = i + 4; + # 0; write_enable = 1'b1; + # 0; clk = 1'b1; + # 0; write_enable = 1'b0; + # 0; clk = 1'b0; + # 0; + address[11:0] = 12'hAA0; + # 0; read_enable = 1'b1; + # 0; clk = 1'b1; + # 0; + if (data_out[8:0] !== i) + $display ("*** Debug SRAM read failed %x %x", i, data_out[8:0]); + # 0; read_enable = 1'b0; + # 0; clk = 1'b0; + end + + for (i = 0; i < 12; i = i + 1) + begin + # 0; + address[11:0] = (12'h001 << i); + # 0; read_enable = 1'b1; + # 0; clk = 1'b1; + # 0; + if (data_out[8:0] !== (i + 4)) + $display ("*** Debug SRAM read failed %x %x", i, data_out[8:0]); + # 0; read_enable = 1'b0; + # 0; clk = 1'b0; + end + + # 0; + address[11:0] = 12'hXXX; + # 0; read_enable = 1'b1; + # 0; clk = 1'b1; + # 0; + if (data_out[8:0] !== 9'hXXX) + $display ("*** Debug SRAM read failed %x %x", i, data_out[8:0]); + # 0; read_enable = 1'b0; + # 0; clk = 1'b0; + + # 0; + address[11:0] = 12'h003; + # 0; read_enable = 1'b1; + # 0; clk = 1'b1; + # 0; + if (data_out[8:0] !== 9'hXXX) + $display ("*** Debug SRAM read failed %x %x", i, data_out[8:0]); + # 0; read_enable = 1'b0; + # 0; clk = 1'b0; + + for (i = 0; i < 32; i = i + 1) + begin + # 0; + address[11:0] = i; + data_in[8:0] = i + 32; + # 0; write_enable = 1'b1; + # 0; clk = 1'b1; + # 0; write_enable = 1'b0; + # 0; clk = 1'b0; + end + + for (i = 0; i < 32; i = i + 1) + begin + # 0; + address[11:0] = i; + # 0; read_enable = 1'b1; + # 0; clk = 1'b1; + # 0; + if (data_out[8:0] !== (i + 32)) + $display ("*** Debug SRAM read failed %x %x", i, data_out[8:0]); + # 0; read_enable = 1'b0; + # 0; clk = 1'b0; + end + + end + +sram_for_debugging_sync +#(12, // NUM_ADDR_BITS + 9 // NUM_DATA_BITS + ) test_this_one ( + .data_out (data_out[8:0]), + .data_in (data_in[8:0]), + .address (address[11:0]), + .read_enable (read_enable), + .write_enable (write_enable), + .clk (clk) +); + +endmodule +`endif // TEST_SRAM + Index: common/trunk/sram_for_debugging_async.v =================================================================== --- common/trunk/sram_for_debugging_async.v (nonexistent) +++ common/trunk/sram_for_debugging_async.v (revision 48) @@ -0,0 +1,283 @@ +////////////////////////////////////////////////////////////////////// +//// //// +//// sram_for_debugging_async #(NUM_ADDR_BITS, NUM_DATA_BITS) //// +//// //// +//// This file is part of the general opencores effort. //// +//// //// +//// //// +//// Module Description: //// +//// An SRAM model which contains only 32 entries. //// +//// This SRAM trades off time for storage. By only storing //// +//// a very few entries, this SRAM takes constant storage //// +//// independent of how many address lines it exports. //// +//// The limited storage means that the entries must be read //// +//// soon after it is written. If too many writes happen //// +//// before an entry is read, the entry returns X's. //// +//// This SRAM has 1 other debugging feature. When a write //// +//// is executed, the SRAM ;atches the bit number of the //// +//// least significant bit of the address which is HIGH. //// +//// The special address 0xAA00..., with the top 8 bits being //// +//// 8'b1010_1010, returns the stored number when read. //// +//// As an example, assume that a write is done to location //// +//// 20'h0_0040. //// +//// After the write, but before any other write, the user //// +//// can read location 20'hC_C000. The read returns 4'h5. //// +//// //// +//// Author(s): //// +//// - Anonymous //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2000 Anonymous and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source 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 Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from //// +//// //// +////////////////////////////////////////////////////////////////////// +// +// $Id: sram_for_debugging_async.v,v 1.2 2001-11-06 12:33:15 bbeaver Exp $ +// +// CVS Revision History +// +// $Log: not supported by cvs2svn $ +// Revision 1.1 2001/10/02 05:23:27 Blue Beaver +// no message +// +// Revision 1.3 2001/09/27 08:05:43 Blue Beaver +// no message +// +// Revision 1.2 2001/09/26 09:46:20 Blue Beaver +// no message +// +// Revision 1.1 2001/09/25 10:49:34 Blue Beaver +// no message +// + +`timescale 1ns/1ps + +// instantiate as "sram_for_debugging_async #(NUM_ADDR_BITS, NUM_DATA_BITS) instance ()" + +module sram_for_debugging_async ( + data_out, + data_in, + address, + read_enable, + write_enable +); + parameter NUM_ADDR_BITS = 1; + parameter NUM_DATA_BITS = 1; + + output [NUM_DATA_BITS - 1 : 0] data_out; + input [NUM_DATA_BITS - 1 : 0] data_in; + input [NUM_ADDR_BITS - 1 : 0] address; + input read_enable; + input write_enable; + + reg [NUM_DATA_BITS - 1 : 0] data_storage [31:0]; // 32 entries of SRAM storage + reg [NUM_ADDR_BITS - 1 : 0] address_storage [31:0]; // 32 entries of SRAM storage + reg [5:0] write_counter; // enough to count to 63 + reg [NUM_DATA_BITS - 1 : 0] stored_write_address; // store bit number of address LSB set to 1 + + integer i, j, k, l; + +// synopsys translate_off + initial + begin + for (i = 6'h00; i != 6'h20; i = i + 6'h01) + begin + address_storage[i] = {NUM_ADDR_BITS{1'bX}}; + data_storage[i] = {NUM_DATA_BITS{1'bX}}; + stored_write_address[NUM_DATA_BITS - 1 : 0] = {NUM_DATA_BITS{1'bX}}; + write_counter[5:0] = 6'h00; + end + end +// synopsys translate_on + +// Write to next address, remember which LSB write address bit was ~0 + always @(posedge write_enable) + begin + address_storage[write_counter[4:0]] = address[NUM_ADDR_BITS - 1 : 0]; + data_storage[write_counter[4:0]] = data_in[NUM_DATA_BITS - 1 : 0]; + for (j = 0; j < NUM_ADDR_BITS; j = j + 1) + begin + if (((address[NUM_ADDR_BITS - 1 : 0] >> j) & 1'b1) != 1'b0) + begin + stored_write_address[NUM_DATA_BITS - 1 : 0] = j; + j = NUM_ADDR_BITS + 1; // only remember the FIRST bit set + end + end + if (j == NUM_ADDR_BITS) // NO bit was set + begin + stored_write_address[NUM_DATA_BITS - 1 : 0] = NUM_ADDR_BITS; + end + write_counter[5:0] = (write_counter[5:0] + 6'h01) & 6'h1F; + end + +// Starting at the newest, search back to oldest to find if the word has been written + reg [NUM_DATA_BITS - 1 : 0] data_out; + reg [4:0] read_address; + + always @(read_enable) + begin + if ((read_enable !== 1'b1) | ((^address[NUM_DATA_BITS - 1 : 0]) === 1'bX)) // no read, return X's + begin + data_out[NUM_DATA_BITS - 1 : 0] = {NUM_DATA_BITS{1'bX}}; + end + else + begin + if ((address[NUM_ADDR_BITS - 1 : 0] >> (NUM_ADDR_BITS - 8)) == 8'hAA) // read magic location, return Address Bit Number + begin + data_out[NUM_DATA_BITS - 1 : 0] = stored_write_address[NUM_DATA_BITS - 1 : 0]; + end + else // otherwise search history to see if the word has been written recently + begin + k = write_counter[5:0]; + for (l = k + 6'h1F; // half way around, same as last minus 1; + l >= k; // write address not valid + l = l - 1) + begin + read_address[4:0] = l; + if (address[NUM_ADDR_BITS - 1 : 0] === address_storage[read_address[4:0]]) + begin + data_out[NUM_DATA_BITS - 1 : 0] = data_storage[read_address[4:0]]; + l = k - 2; + end + end + if (l == (k - 1)) // didn't find it at all! + begin + data_out[NUM_DATA_BITS - 1 : 0] = {NUM_DATA_BITS{1'bX}}; + end + end + end + end + +// synopsys translate_off + initial + begin + if (NUM_ADDR_BITS < 8) + begin + $display ("*** Exiting because %m sram_for_debugging_async Number of Address bits %d < 8", + NUM_ADDR_BITS); + $finish; + end + if (NUM_DATA_BITS < 8) + begin + $display ("*** Exiting because %m sram_for_debugging_async Number of Data bits %d < 8", + NUM_DATA_BITS); + $finish; + end + end +// synopsys translate_on +endmodule + +`define TEST_SRAM +`ifdef TEST_SRAM +module test_sram; + reg [11:0] address; + reg [8:0] data_in; + reg read_enable, write_enable; + wire [8:0] data_out; + + integer i; + + initial + begin + read_enable = 1'b0; + write_enable = 1'b0; + for (i = 0; i < 12; i = i + 1) + begin + # 0; + address[11:0] = (12'h001 << i); + data_in[8:0] = i + 4; + # 0; write_enable = 1'b1; + # 0; write_enable = 1'b0; + # 0; + address[11:0] = 12'hAA0; + # 0; read_enable = 1'b1; + # 0; + if (data_out[8:0] !== i) + $display ("*** Debug SRAM read failed %x %x", i, data_out[8:0]); + # 0; read_enable = 1'b0; + end + + for (i = 0; i < 12; i = i + 1) + begin + # 0; + address[11:0] = (12'h001 << i); + # 0; read_enable = 1'b1; + # 0; + if (data_out[8:0] !== (i + 4)) + $display ("*** Debug SRAM read failed %x %x", i, data_out[8:0]); + # 0; read_enable = 1'b0; + end + + # 0; + address[11:0] = 12'hXXX; + # 0; read_enable = 1'b1; + # 0; + if (data_out[8:0] !== 9'hXXX) + $display ("*** Debug SRAM read failed %x %x", i, data_out[8:0]); + # 0; read_enable = 1'b0; + + # 0; + address[11:0] = 12'h003; + # 0; read_enable = 1'b1; + # 0; + if (data_out[8:0] !== 9'hXXX) + $display ("*** Debug SRAM read failed %x %x", i, data_out[8:0]); + # 0; read_enable = 1'b0; + + for (i = 0; i < 32; i = i + 1) + begin + # 0; + address[11:0] = i; + data_in[8:0] = i + 32; + # 0; write_enable = 1'b1; + # 0; write_enable = 1'b0; + end + + for (i = 0; i < 32; i = i + 1) + begin + # 0; + address[11:0] = i; + # 0; read_enable = 1'b1; + # 0; + if (data_out[8:0] !== (i + 32)) + $display ("*** Debug SRAM read failed %x %x", i, data_out[8:0]); + # 0; read_enable = 1'b0; + end + + end + +sram_for_debugging_async +#(12, // NUM_ADDR_BITS + 9 // NUM_DATA_BITS + ) test_this_one ( + .data_out (data_out[8:0]), + .data_in (data_in[8:0]), + .address (address[11:0]), + .read_enable (read_enable), + .write_enable (write_enable) +); + +endmodule +`endif // TEST_SRAM + Index: common/trunk/ddr_2_dimm_for_debugging.v =================================================================== --- common/trunk/ddr_2_dimm_for_debugging.v (nonexistent) +++ common/trunk/ddr_2_dimm_for_debugging.v (revision 48) @@ -0,0 +1,94 @@ +////////////////////////////////////////////////////////////////////// +//// //// +//// ddr_2_dimm //// +//// //// +//// This file is part of the general opencores effort. //// +//// //// +//// //// +//// Module Description: //// +//// A fake DDR DIMM containing a number of fake DDR DRAMs. //// +//// Useful in getting a DDR DRAM controller working. //// +//// //// +//// Author(s): //// +//// - Anonymous //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2000 Anonymous and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source 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 Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from //// +//// //// +////////////////////////////////////////////////////////////////////// +// +// $Id: ddr_2_dimm_for_debugging.v,v 1.2 2001-10-29 13:37:57 bbeaver Exp $ +// +// CVS Revision History +// +// $Log: not supported by cvs2svn $ +// Revision 1.1 2001/10/29 13:45:02 Blue Beaver +// no message +// +// Revision 1.1 2001/10/28 11:15:47 Blue Beaver +// no message +// + +`timescale 1ns / 1ps + +module ddr_2_dimm ( + DQ, DQS, + DM, + A, BA, + RAS_L, + CAS_L, + WE_L, + CS_L, + CKE, + clk_p, clk_n +); + +// Constant Parameters +parameter num_addr_bits = 13; +parameter num_col_bits = 11; +parameter num_data_bits = 4; +parameter num_words_in_test_memory = 32; + + inout [num_data_bits - 1 : 0] DQ; + inout DQS; + input DM; + input [num_addr_bits - 1 : 0] A; + input [1 : 0] BA; + input RAS_L; + input CAS_L; + input WE_L; + input CS_L; + input CKE; + input clk_p; + input clk_n; + + +// Storage + reg [num_data_bits - 1 : 0] bank0 [0 : num_words_in_test_memory - 1]; + reg [num_data_bits - 1 : 0] bank1 [0 : num_words_in_test_memory - 1]; + reg [num_data_bits - 1 : 0] bank2 [0 : num_words_in_test_memory - 1]; + reg [num_data_bits - 1 : 0] bank3 [0 : num_words_in_test_memory - 1]; + +endmodule Index: common/trunk/grey_to_binary.v =================================================================== --- common/trunk/grey_to_binary.v (nonexistent) +++ common/trunk/grey_to_binary.v (revision 48) @@ -0,0 +1,306 @@ +////////////////////////////////////////////////////////////////////// +//// //// +//// grey_to_binary #(N), binary_to_grey #(N) //// +//// //// +//// This file is part of the general opencores effort. //// +//// //// +//// //// +//// Module Description: //// +//// Example of how to convert Grey Code to Binary. //// +//// Example of how to convert Binary to Grey Code. //// +//// //// +//// CRITICAL USAGE NOTE: //// +//// These functions produce combinational outputs which //// +//// have glitches. To use these safely, the outputs //// +//// must be latched using the same clock before and //// +//// after the combinational function. //// +//// //// +//// There are other sequences of numbers which share the //// +//// property of Grey Code that only 1 bit transitions per //// +//// value change. //// +//// The sequence 0x00, 0x1, 0x3, 0x2, 0x6, 0x4 is one such //// +//// sequence. //// +//// It should be possible to make a library which counts //// +//// in sequences less than 2**n long, yet which still //// +//// change only 1 bot per increment. //// +//// //// +//// To Do: //// +//// Might make this handle more than 16 bits. //// +//// //// +//// Author(s): //// +//// - Anonymous //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2000 Anonymous and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source 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 Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from //// +//// //// +////////////////////////////////////////////////////////////////////// +// +// $Id: grey_to_binary.v,v 1.5 2001-10-22 12:29:08 bbeaver Exp $ +// +// CVS Revision History +// +// $Log: not supported by cvs2svn $ +// Revision 1.3 2001/09/03 12:12:44 Blue Beaver +// no message +// +// Revision 1.2 2001/09/03 12:09:24 Blue Beaver +// no message +// +// + +`timescale 1ns/1ps + +// Convert 2-bit up to 16-bit binary value into same sized grey-code value + +module bin_to_grey_code ( + grey_code_out, + binary_in +); + parameter NUM_BITS = 1; // instantiate as "bin_to_grey_code #(width) instance ()" + + output [NUM_BITS - 1 : 0] grey_code_out; + input [NUM_BITS - 1 : 0] binary_in; + +// Consider the sequences +// Binary Grey Code +// 00 00 +// 01 01 +// 10 11 +// 11 10 +// It seems that G[1] = B[1], and G[0] = B[1] ^ B[0]; +// Now consider the sequences +// Binary Grey Code +// 000 000 +// 001 001 +// 010 011 +// 011 010 +// 100 110 +// 101 111 +// 110 101 +// 111 100 +// It seems that G[2] = B[2], and +// G[1] = B[2] ^ B[1], and +// G[0] = B[1] ^ B[0]; +// +// But how to write that using a parameter? Well, instead of +// figuring it out, how about just making something which works +// for a range of widths, like 2 to 16? + + wire [15:0] widened_input = {binary_in[NUM_BITS - 1 : 0], {16 - NUM_BITS{1'b0}}}; + + wire [15:0] widened_output = { + widened_input[15], + widened_input[15] ^ widened_input[14], + widened_input[14] ^ widened_input[13], + widened_input[13] ^ widened_input[12], + widened_input[12] ^ widened_input[11], + widened_input[11] ^ widened_input[10], + widened_input[10] ^ widened_input[9], + widened_input[9] ^ widened_input[8], + widened_input[8] ^ widened_input[7], + widened_input[7] ^ widened_input[6], + widened_input[6] ^ widened_input[5], + widened_input[5] ^ widened_input[4], + widened_input[4] ^ widened_input[3], + widened_input[3] ^ widened_input[2], + widened_input[2] ^ widened_input[1], + widened_input[1] ^ widened_input[0] + }; + + assign grey_code_out[NUM_BITS - 1 : 0] = widened_output[15 : 16 - NUM_BITS]; + +// synopsys translate_off + initial + begin + if (NUM_BITS < 2) + begin + $display ("*** Exiting because %m bin_to_grey_code Number of bits %d < 2", + NUM_BITS); + $finish; + end + if (NUM_BITS > 16) + begin + $display ("*** Exiting because %m bin_to_grey_code Number of bits %d > 16", + NUM_BITS); + $finish; + end + end +// synopsys translate_on +endmodule + +// Convert 2-bit up to 16-bit binary value into same sized grey-code value + +module grey_code_to_bin ( + binary_out, + grey_code_in +); + parameter NUM_BITS = 1; // instantiate as "grey_code_to_bin #(width) instance ()" + + output [NUM_BITS - 1 : 0] binary_out; + input [NUM_BITS - 1 : 0] grey_code_in; + +// Consider the sequences +// Grey Code Binary +// 00 00 +// 01 01 +// 11 10 +// 10 11 +// It seems that B[1] = G[1], and B[0] = G[1] ^ G[0]; +// Now consider the sequences +// Grey Code Binary +// 000 000 +// 001 001 +// 011 010 +// 010 011 +// 110 100 +// 111 101 +// 101 110 +// 100 111 +// It seems that B[2] = G[2], and +// B[1] = G[2] ^ G[1], and +// B[0] = G[2] ^ G[1] ^ G[0]; +// +// But how to write that using a parameter? Well, instead of +// figuring it out, how about just making something which works +// for a range of widths, like 2 to 16? + + wire [15:0] widened_input = {grey_code_in[NUM_BITS - 1 : 0], {16 - NUM_BITS{1'b0}}}; + wire xor_15_12 = widened_input[15] ^ widened_input[14] + ^ widened_input[13] ^ widened_input[12]; + wire xor_11_10 = widened_input[11] ^ widened_input[10]; + wire xor_11_8 = widened_input[11] ^ widened_input[10] + ^ widened_input[9] ^ widened_input[8]; + wire xor_7_6 = widened_input[7] ^ widened_input[6]; + wire xor_7_4 = widened_input[7] ^ widened_input[6] + ^ widened_input[5] ^ widened_input[4]; + wire xor_3_2 = widened_input[3] ^ widened_input[2]; + wire xor_1_0 = widened_input[1] ^ widened_input[0]; + + wire [15:0] widened_output = { + widened_input[15], + widened_input[15] ^ widened_input[14], + widened_input[15] ^ widened_input[14] ^ widened_input[13], + xor_15_12, + xor_15_12 ^ widened_input[11], + xor_15_12 ^ xor_11_10, + xor_15_12 ^ xor_11_10 ^ widened_input[9], + xor_15_12 ^ xor_11_8, + xor_15_12 ^ xor_11_8 ^ widened_input[7], + xor_15_12 ^ xor_11_8 ^ xor_7_6, + xor_15_12 ^ xor_11_8 ^ xor_7_6 ^ widened_input[5], + xor_15_12 ^ xor_11_8 ^ xor_7_4, + xor_15_12 ^ xor_11_8 ^ xor_7_4 ^ widened_input[3], + xor_15_12 ^ xor_11_8 ^ xor_7_4 ^ xor_3_2, + xor_15_12 ^ xor_11_8 ^ xor_7_4 ^ xor_3_2 ^ widened_input[1], + xor_15_12 ^ xor_11_8 ^ xor_7_4 ^ xor_3_2 ^ xor_1_0 + }; + + assign binary_out[NUM_BITS - 1 : 0] = widened_output[15 : 16 - NUM_BITS]; + +// synopsys translate_off + initial + begin + if (NUM_BITS < 2) + begin + $display ("*** Exiting because %m grey_code_to_bin Number of bits %d < 2", + NUM_BITS); + $finish; + end + if (NUM_BITS > 16) + begin + $display ("*** Exiting because %m grey_code_to_bin Number of bits %d > 16", + NUM_BITS); + $finish; + end + end +// synopsys translate_on +endmodule + + `define TEST_GREY_CODE +`ifdef TEST_GREY_CODE +module test_grey_code; + reg [7:0] test_val; + wire [1:0] grey_2; + wire [2:0] grey_3; + wire [3:0] grey_4; + + wire [1:0] bin_2; + wire [2:0] bin_3; + wire [3:0] bin_4; + + initial + begin + for (test_val = 8'h00; test_val < 8'h04; test_val = test_val + 8'h01) + begin + # 0; $display ("test val, result %x %x %x", test_val[1:0], grey_2[1:0], bin_2[1:0]); + if (test_val[1:0] !== bin_2[1:0]) + $display ("*** Encode, Decode failed %x %x", test_val[1:0], bin_2[1:0]); + end + $display (" "); + for (test_val = 8'h00; test_val < 8'h08; test_val = test_val + 8'h01) + begin + # 0; $display ("test val, result %x %x %x", test_val[2:0], grey_3[2:0], bin_3[2:0]); + if (test_val[2:0] !== bin_3[2:0]) + $display ("*** Encode, Decode failed %x %x", test_val[2:0], bin_3[2:0]); + end + $display (" "); + for (test_val = 8'h00; test_val < 8'h10; test_val = test_val + 8'h01) + begin + # 0; $display ("test val, result %x %x %x", test_val[3:0], grey_4[3:0], bin_4[3:0]); + if (test_val[3:0] !== bin_4[3:0]) + $display ("*** Encode, Decode failed %x %x", test_val[3:0], bin_4[3:0]); + end + + end + +bin_to_grey_code #(2) bin_to_grey_code_2 ( + .grey_code_out (grey_2[1:0]), + .binary_in (test_val[1:0]) +); +bin_to_grey_code #(3) bin_to_grey_code_3 ( + .grey_code_out (grey_3[2:0]), + .binary_in (test_val[2:0]) +); +bin_to_grey_code #(4) bin_to_grey_code_4 ( + .grey_code_out (grey_4[3:0]), + .binary_in (test_val[3:0]) +); + +grey_code_to_bin #(2) grey_code_to_bin_2 ( + .binary_out (bin_2[1:0]), + .grey_code_in (grey_2[1:0]) +); +grey_code_to_bin #(3) grey_code_to_bin_3 ( + .binary_out (bin_3[2:0]), + .grey_code_in (grey_3[2:0]) +); +grey_code_to_bin #(4) grey_code_to_bin_4 ( + .binary_out (bin_4[3:0]), + .grey_code_in (grey_4[3:0]) +); + +endmodule +`endif // TEST_GREY_CODE + Index: common/trunk/specification_template.dot =================================================================== --- common/trunk/specification_template.dot (nonexistent) +++ common/trunk/specification_template.dot (revision 48) @@ -0,0 +1,1259 @@ +ÐÏࡱá>þÿ ÊÌþÿÿÿÈÉÏÐÑÒÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì¥ÁY  ¿³bjbjóWóW }‘=‘=¨ôÿÿÿÿÿÿ]2222‚‚‚4¶¶¶¶h,J¼¶^1nZ6ÊZZpjé¼¥`#1%1%1%1%1%1%1$Ì2ôÀ4¬I1‚ ?@  I1y#22ZpÏZy#y#y# Þ28Z‚p#1¶¶2222 #1y#€y#ù%29/¼j‚#1pTñCs©ZÁ¶¶ã!–õ0. +Sample IP Core Specification + + + +Author: Lior Shtram +lior.shtram@flextronicssemi.com + + + + +Rev. 0.8 + TIME \@ "MMMM d, yyyy" October 22, 2001 + + + + + + + + + + + + + + +This page has been intentionally left blank. + Revision History +Rev.DateAuthorDescription0.130/1/01Lior ShtramFirst Draft0.22/201Rudolf UsselmannRemoved Header and Footer on Title Page. +Changed Page numbering to start after Title Page. +Changed Document Title Font to Times.0.306/02/01Richard HerveilleChanged OpenCores.com to OpenCores.org. +Changed tables so WISHBONE signals fit into cells, centered width column. +Changed page-numbering, start counting from Introduction page using Arabic numbers. Use Roman numbers for other pages. +Changed date on title page to autoupdate. +Added Contents page, used crosslinks for automatic header and page number generation.0.413/3/01Yair AmitayAdded “Clocks” section.0.53/5/01Jeanne WiegelmannCapitalized and modified headings. +Added shadings to tables. +Saved template as ‘dot’.0.613/5/01Jeanne WiegelmannModified document styles. +Created new Table of Contents.0.615/5/01Jeanne WiegelmannAdded Appendix and Index.0.729/5/01Damjan LampretChanged chapter order. Added OC logo.0.822/10/01Damjan LampretChanged all port names as per new coding guidelines convention. + Contents + TOC \t "Heading 3,2,Index,1,Appendix A,1,Heading 2 name,1,Appendix B,1" Introduction  PAGEREF _Toc518887500 \h 3 +Architecture  PAGEREF _Toc518887501 \h 3 +Operation  PAGEREF _Toc518887502 \h 3 +Registers  PAGEREF _Toc518887503 \h 3 +List of Registers  PAGEREF _Toc518887504 \h 3 +Register 1 – Description  PAGEREF _Toc518887505 \h 3 +Clocks  PAGEREF _Toc518887506 \h 3 +IO Ports  PAGEREF _Toc518887507 \h 3 +Appendix A  PAGEREF _Toc518887508 \h 3 +Appendix B  PAGEREF _Toc518887509 \h 3 +Index  PAGEREF _Toc518887510 \h 3 + + +Introduction +This section contains the introduction to the core, describing its use and features. + + +Architecture +This section describes the architecture of the block. A block diagram should be included describing the top level of the design. + + + +Operation +This section describes the operation of the core. Specific sequences, such as startup sequences, as well as the modes and states of the block should be described. + + +Registers +This section specifies all internal registers. It should completely cover the interface between the core and the host as seen from the software view. +List of Registers +NameAddressWidthAccessDescriptionTable  SEQ Table \* ARABIC 1: List of registers +Register 1 – Description +(You shall choose the style of register you prefer. Do not use both options in one and the same document.) +Bit #AccessDescriptionReset Value: + Reg_Name: 0000h + +31302928...876543210Table  SEQ Table \* ARABIC 2: Description of registers +Reset Value: + Reg_Name: 0000h + +Clocks +This section specifies all the clocks. All clocks, clock domain passes and the clock relations should be described. + +NameSourceRates (MHz)RemarksDescriptionMaxMinResolutionclk_pad_iInput Pad1040.1Duty cycle 70/30.For external interface.wb_clk_IPLL200--Must be synchronized to sm_clk_iSystem clock.sm_clk_iInput port55401There are multi-clocks paths.Clock 55MHz for State machine.Table  SEQ Table \* ARABIC 3: List of clocks + + +IO Ports +This section specifies the core IO ports. + +PortWidthDirectionDescriptionwb_clk_i1InputBlock’s WISHBONE Clock Inputwb_rst_i1InputBlock’s WISHBONE Reset Inputwb_sel_i4InputBlock’s WISHBONE Select Inputsfoo_pad_o1OutputBlock’s foo output to output pad…Table  SEQ Table \* ARABIC 4: List of IO ports + + +Name +This section may be added to outline different specifications. + +Name +This section may be added to outline different specifications. + + +This section contains an alphabetical list of helpful document entries with their corresponding page numbers. + OpenCores  TITLE \* MERGEFORMAT Specifications Template  DATE \* MERGEFORMAT 10/22/01 + + + +HYPERLINK "http://www.opencores.org/"www.opencores.org Rev 0.8 Preliminary  PAGE ii + + OpenCores  TITLE \* MERGEFORMAT Specifications Template  DATE \* MERGEFORMAT 10/22/01 + + + +HYPERLINK "http://www.opencores.org/"www.opencores.org Rev 0.8 Preliminary  PAGE iv + + + + + +HYPERLINK "http://www.opencores.org/"www.opencores.org Rev 0.8 Preliminary  PAGE 9 of  SECTIONPAGES9 + + + EMBED PBrush  + + + +"UVZcd|}Ž’ŸÌÍÞû<ì$D{}¾¿  ' ( q r  € š › œ ž ¬ ­ Ç È É Ê Ë Ö × ñ ò ó ô õ + + +úöòòîåîåßåîòÙÖÎÌÉÉÉÉÉÁúú¾·¾­·¾·¾·¾£·¾·¾·¾™·¾·¾·¾júUmHj}UmHjUmH +jUmHmH5CJHOJQJmH55CJ$OJQJCJ( +6B*CJ 5CJ mHj5CJ U5CJ 6CJ 5CJ4 jU: !"6VWXYZc‘’“”•–—˜™š›œžýûôôôññôôôôôôôôýýýýýýýýïýýý3$$ +Æf! !"6VWXYZc‘’“”•–—˜™š›œžŸÌÞãèïûü !%+<e—½¾ÂýûùöóðéâÛÔÐÉ»´°©¢›”†‚{ " +àþÿÿáþÿÿ " +ÿÿÿ " +9ÿÿÿ " +bÿÿÿ " +sÿÿÿ " +yÿÿÿ " +}ÿÿÿ~ÿÿÿ " +Šÿÿÿ " +–ÿÿÿ " +žÿÿÿ " +¢ÿÿÿ£ÿÿÿ " +¯ÿÿÿ " +¶ÿÿÿ " +»ÿÿÿ " +ÀÿÿÿÒÿÿÿÿÿÿÿ3 0žŸÌÞãèïûü ýúóðððð¢”ððððM$$–l4 +t¯Ö    Ö\”ÿÐ3¶ +À!< c ƒ  +  Ö˜˜˜˜"$$¤à¤ð$ !%+<e—½¾ÂËݸtµµµµµµn$µµµµF$$–l +t¯Ö    Ö\”ÿÐ3¶ +À!<cƒ +"$F$$–l +t¯Ö    Ö\”ÿÐ3¶ +À!<ÿÿÿÿcÿÿÿÿƒÿÿÿÿ +ÿÿÿÿ ÂËÝOÆðFGKS_wx|ƒ•¸Òëìðø +$CDHPùòëäÝÖÏËĽ¶¯«¤–ˆ}vohaZVOH " +Vüÿÿ " +Züÿÿ[üÿÿ " +züÿÿ " +”üÿÿ " +¦üÿÿ " +®üÿÿ " +²üÿÿ³üÿÿ " +Ìüÿÿ " +æüÿÿ " + ýÿÿ " +ýÿÿ " +"ýÿÿ " +&ýÿÿ'ýÿÿ " +?ýÿÿ " +Kýÿÿ " +Sýÿÿ " +WýÿÿXýÿÿ " +®ýÿÿ " +Øýÿÿ " +Oþÿÿ " +™þÿÿ " +Áþÿÿ " +Óþÿÿ " +ÜþÿÿOÆðFGKS_wx|ƒ•¸Òëìðø +$üüüüµÄüüüüµÐüüüüüüµ`üüüüF$$–l +t¯Ö    Ö\”ÿÐ3¶ +À!<cƒ +"$$CDHPb|}‰˜¾¿ÃÌÛ   ' üµäüüüüµüüüüµtüüüüµ³¬$¤à¤ðF$$–l +t¯Ö    Ö\”ÿÐ3¶ +À!<cƒ +"$Pb|}‰˜¾¿ÃÌÛ   ' Ÿ Ì ö +R +‹ +² +Û + 1 W Y Z [ h ½ ¾ ùòîçàÙÒÎÇÀ¹²®«¨£ž™”Š…€{vqlf`[XUÿÿÿòÿÿÿcÿÿÿÿ +  +Eùÿÿ !Gùÿÿmùÿÿ˜ùÿÿÃùÿÿìùÿÿúÿÿLúÿÿ~úÿÿ¨úÿÿÒúÿÿÿúÿÿwûÿÿûÿÿ‚ûÿÿƒûÿÿ " +Ãûÿÿ " +Òûÿÿ " +Ûûÿÿ " +ßûÿÿàûÿÿ " +üÿÿ " +üÿÿ " +üÿÿ " +!üÿÿ"üÿÿ " +<üÿÿ " +Nüÿÿ ' Ÿ Ì ö +R +‹ +² +Û + 1 W Y Z [ h ½ ¾ ¿ Ì M N P Q [ þ ÿ ùùùùóóùùùùùîåãáßßãáßßßãáßßc  +Æ àÀ!3Ë!dh +ƶ! + +ƶ! + + + + + +2 +3 +M +N +O +P +Q +k +l +† +‡ +ˆ +‰ +Š +’ +“ +­ +® +¯ +° +± +» +¼ +Ö +× +Ø +Ù +Ú +æ +ç +       , - . / 0 7 8 R S T U V W X N O ² +Ø +ñ +õîëîëîëáîëîëîë×îëîëîëÍîëîëîëÃîëîëîë¹îëîëîë¯îëîëîë¥îëîëžîœ5 +jCJUjâUmHjeUmHjèUmHjkUmHjîUmHjqUmHjôUmHmH +jUmHjwUmH<¾ ¿ Ì M N P Q [ þ ÿ + + +  +² +· +¿ +Å +Ì +Ø +Ù +Ú +Û +Ü +Ý +Þ +ß +à +á +â +ã +ä +å +÷òïìéáòÞÛÓòÞÍÆ¿¸±ª¦Ÿ˜‘Šƒxqjc\X¼ÿÿÿ " +½ÿÿÿ " +¾ÿÿÿ " +¿ÿÿÿ " +Àÿÿÿ " +ÁÿÿÿÂÿÿÿ " +Ãÿÿÿ " +Äÿÿÿ " +Åÿÿÿ " +Æÿÿÿ " +ÇÿÿÿÈÿÿÿ " +Ôÿÿÿ " +Ûÿÿÿ " +áÿÿÿ " +éÿÿÿ " +îÿÿÿ +_ÿÿÿ  +Rÿÿÿõÿÿÿ  +pÿÿÿqÿÿÿòÿÿÿcÿÿÿÿ  +ÿ + + +  +² +· +¿ +Å +Ì +Ø +Ù +Ú +Û +Ü +Ý +Þ +ýûù÷ôôôôôšôôôôôY$$–l4 +t¯ÖÖr”ÿÐŒ +jf!<8„Þü Ö +”””””"$cÞ +ß +à +á +â +ã +ä +å +æ +ç +è +é +ê +ë +7¢¨¯­ªªªªª­ªªªª¥­£¡Ÿªª "$$"$Q$$–l +t¯ÖÖr”ÿÐŒ +jf!<8„Þüå +æ +ç +è +é +ê +ë +7¢¨¯»¼½¾¿ÀÁÂÃÄÅÆÇÈÕæçêíùòëäÝÙÔÎËĽ¶²«¤™’‹„€yrkgda\UN " +4ÿÿÿ " +7ÿÿÿ38ÿÿÿIÿÿÿVÿÿÿWÿÿÿ " +Xÿÿÿ " +Yÿÿÿ " +Zÿÿÿ[ÿÿÿ " +\ÿÿÿ " +]ÿÿÿ " +^ÿÿÿ_ÿÿÿ " +`ÿÿÿ " +aÿÿÿ " +bÿÿÿcÿÿÿ " +oÿÿÿ " +vÿÿÿ " +|ÿÿÿçÿÿÿ +áþÿÿ µÿÿÿ¶ÿÿÿ " +·ÿÿÿ " +¸ÿÿÿ " +¹ÿÿÿ " +ºÿÿÿ " +»ÿÿÿñ +ò +  +¢»ÈÕç ./DEFGboý),?/0EFGH°‚—˜™š¨©ª³´µÌÍäåæçýþ   123DENZ[úú÷úõóõúú÷úóõõúú÷úõúú÷úêåõúúúúú÷úßÔßÆÔ¿Ôº´©j0JOJQJU B*OJQJOJQJ 0JOJQJj‚ +B*OJQJUjB*OJQJU B*OJQJOJQJj_OJQJU65mH jU@¯»¼½¾¿ÀÁÂÃÄÅÆÇÈüºüüü~üüü~üüü~;$$–l +t¯ÖÖF”ÿÐf!<8^A$$–l4 +t¯ÖÖF”ÿÐf!<8^ Ö”””"$ÈÕæçêíðó÷ùûýÿ ù÷õòòòòòòòòòòòòòò"$3¤x¤íðó÷ùûýÿ  +   +ùòëäÝÖÏÈÁº³¬¨¡š“Œ…~wpib[TMF " +ÿÿÿ " +ÿÿÿ " + ÿÿÿ " + +ÿÿÿ " + ÿÿÿ " + ÿÿÿ " + +ÿÿÿ " +ÿÿÿ " +ÿÿÿ " +ÿÿÿ " +ÿÿÿ " +ÿÿÿ " +ÿÿÿ " +ÿÿÿÿÿÿ " +ÿÿÿ " +ÿÿÿ " +ÿÿÿ " +ÿÿÿ " +ÿÿÿ " +!ÿÿÿ " +#ÿÿÿ " +%ÿÿÿ " +'ÿÿÿ " ++ÿÿÿ " +.ÿÿÿ " +1ÿÿÿ  +   +<<99999"$Â$$–l4ÖÖ8”ÿÂÙúüj†¢¾Úö.Jf!.!|€ ֘˜˜˜˜˜˜˜˜˜˜˜˜˜üüüüüüüüü"$  !"#$%&'(bo€ˆüý )*ûôíæßØÑÊüµ®§ ™•Š‚}zwpib[TPWÿÿÿ " +cÿÿÿ " +kÿÿÿ " +wÿÿÿ " +~ÿÿÿ " +ƒÿÿÿ„ÿÿÿøÿÿÿcÿÿÿÿ  +¯þÿÿ¼þÿÿ öþÿÿ÷þÿÿ " +øþÿÿ " +ùþÿÿ " +úþÿÿ " +ûþÿÿ " +üþÿÿ " +ýþÿÿ " +þþÿÿ " +ÿþÿÿ " +ÿÿÿ " +ÿÿÿ " +ÿÿÿ " +ÿÿÿ " +ÿÿÿ " +ÿÿÿÿÿÿ M<JJJJJJJ"$±$$–lÖÖ8”ÿÂÙúüj†¢¾Úö.Jf!.!| !"#$%&'üüüüüü÷"$$"$'(bo€ˆüMKGECAEc¤ ±$$–lÖÖ8”ÿÂÙúüj†¢¾Úö.Jf!.!|ÂÂÂÂÂÂÂÂÂüý )*+,04?@Aýúúúúú¢`úúúúúúúX$$–l44ÖÖr”ÿ8ül"`¿`à» +`p`¼ Ö +”””””"$*+,04?@ABLVY[_q‰Š“—›ŸÀÎÏØãæùòëäÝÖÏËĽ¶¯¨¡š–ˆzsleaZSL " +þÿÿ " +¨þÿÿ " +±þÿÿ²þÿÿ " +Àþÿÿ " +áþÿÿ " +ãþÿÿ " +åþÿÿ " +éþÿÿ " +íþÿÿ " +öþÿÿ÷þÿÿ " +ÿÿÿ " +!ÿÿÿ " +%ÿÿÿ " +'ÿÿÿ " +*ÿÿÿ " +4ÿÿÿ " +>ÿÿÿ?ÿÿÿ " +@ÿÿÿ " +Aÿÿÿ " +Lÿÿÿ " +Pÿÿÿ " +Tÿÿÿ " +Uÿÿÿ " +VÿÿÿABLVY[_q‰‘ ŽŽŽŽŽŽŽ"$n$$–l44ÖÖž”ÿ8æ +¶ +ül" ¼ ¼ÅÅ1 1 1 Ö +‰Š“—›ŸÀÎÏØãæéë (š———————šh——————’"$$"$d$$–lÖÖž”ÿ8æ +¶ +ül"¿àÅÅ1p¼æéë ()YZ[dŽ”š¤°±º¼Âßàéëñ ùòëäàÛØÐËÈž·°©¥ž—‰…~wpie^WP " +@ÿÿÿ " +Bÿÿÿ " +KÿÿÿLÿÿÿ " +iÿÿÿ " +oÿÿÿ " +qÿÿÿ " +zÿÿÿ{ÿÿÿ " +˜ÿÿÿ " +žÿÿÿ " + ÿÿÿ " +©ÿÿÿªÿÿÿ " +¶ÿÿÿ " +Àÿÿÿ " +Æÿÿÿ " +ËÿÿÿÌÿÿÿöÿÿÿcÿÿÿÿ  +'þÿÿ WþÿÿXþÿÿ " +wþÿÿ " +•þÿÿ " +—þÿÿ " +šþÿÿ()YZ[dŽ”š¤°š˜–”’––"$c d$$–lÖÖž”ÿ8æ +¶ +ül"¿àÅÅ1p¼ °±º¼Âßàéëñ±¼®®®®g¼®®®®gÄF$$–l +t¯ÖÖ\”ÿüʶ +À!hSn"$M$$–l4 +t¯ÖÖ\”ÿüʶ +À!hSn Ö””””  ?@JLStuwxyz{­®¯´üüü÷°Ôüüü÷°üüü÷°®¬ª¨$) F$$–l +t¯ÖÖ\”ÿüʶ +À!hSn"$$"$ ?@JLStuwxyz{­®¯´óôù89:¨Íäþ ENbdgÇÈÉÊ +!#&')*+š›œ²³ùõîçàÙÕÎÇÀ¹µ°­§¢Ÿ™—‘Œ‰‰‰‰‰ + + +# $ +d úÿÿÿ$ÿÿÿÿ +) ­þÿÿ ßþÿÿàþÿÿ " +áþÿÿ " +âþÿÿ " +ãþÿÿ " +åþÿÿæþÿÿ " +ÿÿÿ " +ÿÿÿ " +ÿÿÿ " +ÿÿÿÿÿÿ " +:ÿÿÿ3´óôù89:¨  + fgÇÈÉÊ&'()*+š›œ°ýûùýý÷óñýìììýñýìììýýýêêêýýý$d¤#$d[abdefghirst‹Œ£¤¥¦¼½ÅÆÈÊËðñò + !#$%&+,QRSdenz{‚ƒ„ˆ‰–—˜ùîåîà×ÒÐËËËËËÈË·©·¢·àœîùîåîùà˔ˢ˒îùîåîùîùîåB*jïU B*OJQJ 0JOJQJjJB*OJQJUjB*OJQJU B*OJQJmH jU5OJQJj' OJQJUOJQJ0JOJQJmHj0JOJQJU 0JOJQJ9˜™œ¬­®¯³ôïçâï j”UjNÓ> +UV jUj0JOJQJU°±²³ýýù¤8 +000€0&PP/R °Ð/ °à=!°"°# $ %°. 00€&P/R °Ð/ °à=!°"°# $ %°+0€P/R °Ð/ °à=!°"°# $ %°nðE +³LZ­d7T6Z/•Ûvï7¶ÿ‰PNG + + +IHDRÇc'gAMA±ˆ•˜ô¦ pHYsÃĈ.>£ ÖIDATxœíÝ;–ã¶Pô[Nô|z¾<€zAµËe}HÄçØ;êU-‘H#R”ôããã#À¡ÿМӜӜӜӜӜûmô&ðó÷?>ÿñ×ߎ À(Ž-N|UÅÿ¶¢-Ž<׃Âö¤-ÞzW +ضxí¸°mñBN( `+ÚâQ~ +( `Úâ?®€Â6¡-þUý +ضøåNè+ `yÚ"¥q¯0€µi‹jA¯0€…íÞu#^a«Úº-Z„»Â–´o[´‹u…¬gÓ¶hè +XÌŽmÑ'Ê°’£Ç0L‡@÷JÀ¶n‹/MkCa ÐÿѨ60;mñB‹ÎPÀÔ´Å[Õ;CaóÒ'êv†Â&µã´—ÔÍw—Õ“rl‘«bÐ;¦ãØ"Wňw„LG[\ 0€mi‹k°'mq™Â6¤-J( `7ڢ¶¢-Ê) `Úâ…lB[Ü¥0€ü6zuäçlðÏQÿüýà#ö4÷7Üy1ù  ͬmQ+ÞGR@(óµEØŸ*ò{ÀÂ&{—»ÑûÀU[=ܽé +Ä1ͱEŸè¼™øa{nšãØ¢Û«ì›+j‘ìŽ0€&h‹Îq0 ØMô¶”q.Ìý¢0€±¢·_0P趘1£9樀Äm‹áÉX<€¦W1 +Ÿ`OqÛ‚wÐ_жˆA†ñ,ìÀ€Um‹ÙuøHÂzŠØ¡r0Ô`D°˜ˆmA>…ô¡-¦§0€µEÀì 8¤ñGÌ.\[PFaMi‹VúÓ¸ÂÚÑKQ@#Úb5 +hA[,HaÕi‹5)  .m±,…T¤-V¦0€Z´ÅâP…¶XŸÂîÓ[PÀMÚ¢•hm<À\´ÅFP,\[ôÿz¥S‡TLae¶…`ŠÉv +´j ‘™­\Õ¤-n†Q¨3?¡S‘Â.©ßßchÛHšâO1H ˆÊmQ+€‚¼¢2Œv©f[ˆžÙj@Žjmñ.tŠÃhøëúâL—¿Ó +è¯N[4Š›…1¼«:SÀ± +m!hÖ`;î¶ENÄ܉¡!¯ñï¬têÌzð@S·Ú¢O¸t.ŒÝÎA=PÀKåmq)Vfù¼ÞÍ­µk< + ®w+”*‰ß.ȺÒ,Y¼ù1ð ¤-Æ^Û"m&cäòPÀ—Ëmä-ëÅ>4ž¢ÖFœùƺÖ÷­nú©®º¢ÕF؉zºÐ‘_Îçm–ì Õ³LÐNn[T /Ñ“/NgØj°¹¬+hëfVœŒ/NFÛj°¹óc‹õ¾jFAÂÚVƒm[´ © ñ7‹ 1m«Á¶ŽŽ-:DCœH„¼¶Õ`Co-ú¤R„ì›K„¤¶Õ`C¯Û¢gˆž«Ðß‹¶è¢ç*…tVów¹ï=3j·Õ~¼Òh]ë1{q¬´-¢´ERª~ˆsütšýÉÖšÙ‹cÉmñúš¨±Áá4Kpšµîf*xæ”}Ùþª®N Ùkdá=ùõ±ÅؼŽ…‘E˜ŸáUQ|¯%L…Ùkaí=yðç-Ž9Èx6|£¤Uñe–×eíÜ™@³WÑò{òÉ7¬—M¼œ´°¿uUŸªx¹[^ºñ&^ÎÉ󄘺ÖvØ“‡}OÔUÁ;ãÒ,•=–b`Uß+øÓ¬‘«SaêÙdOÎúÆò9õ%ZmôùE¦› ÅPÏÌÙ!Ÿïù9ÖÎÕy˜.žf±Éž<à÷-j^Ý~*ÂäÇ©Š›÷}¹‚§èê<ɯ.³` u§ýæ£Îß7g»é™Ÿ±{ræÞÜÛ-¤ÿoçµÓ­?ªOÅÁÈ#L{‹‰½=9w1w²ãô̲Ô;Xì»–M`Yj?ꂇ|óí–ÌUç,!s9—VÑgO®õ–U~÷þ]îjE^»Ixa„ oÔÁ¡žc™c¸=Cz·À>'1Z<ä̶®¾êâå²'çÌaæ~•ß×>Ë=üäO±øUñ¼ð…«âYŸÓµ§ÏŸƒäGϥʹqÎmVEúçÃÉw–YV·¼z=k­=tØ“«TEæm¾»üÍóÆ}âûkkWÅýgæýw.ݬQôDþXÖÀOüµ˜í'÷×[v—çÝ\Â×^Ù”5B–å[æ³=5}YPå,ÊéB2ß (8³®;ÚŸž’îpª` /‡QpBéþlgž]¹?Ã÷ä—÷ÊÙ4ïÞ~«ànGªbϯ+O.'ŠSòå}‡Ë‰››/Ïß½Ìo=Ûǃ¹³þŽ•nyú—SåßA»p åÏa-·¾±|ŠX¹9HU±’ºA¿‚4æÇ7£ÇÒVþɱ«Ûîîï[¬.»±5ŸÝ —Iƒ©õ°k]ózpßÓ+¡g¯!%]á׎˜­,ÞŽŽ/¥}§çê;MgÛ†»¤Îoç-4ª¢¯Œf9%BWßØ(댭öäj¿´³0bŽ*³´•}^J‡ÝIÕü]n¡3£ [­ÑÇßVuóÒ}N¿\ºä©ÖÙ­¦·¨f[¤0Ñsß&§¡–Ù^==*øÀèÁ>úžMÎÚ×}ÔUf;ìæ˜Kå¶HhѶT~lux9¶O²¼h±'çw^]{ý¶Hñbˆg÷QõW 97+xÚôy³´@Áɨâ±_!V¶Ì—ªÏöÁmjm Ù“‡hÒ)@ݱüi¨°[çôùá„ûiå ¼¦¶]¬¿¼{‡X0Û®²½´Ìh{òóº +ÖÞª-R€H>€˜âLËÕ³/óWZåi“¹Ö¯_.ÿR¬¿aÎ’»=䫳]pÔõ¼K†ìÉWÇSÐy¶EŠL|Š¶Ežf™¯é +ž`§‹}XfÙsoà)…>SWe™ ¹?Û/+§â«û!{rgmÛ"Å‹§ÅÜwž$-ž`/—ö™\<°Ó;|È÷W=¤àCíÉ9 ¼ºÒæm‘¢†Ôn"o…º‡ÿÕWTpßžQÛnò—\ýúÔû³=¤íºíÉ™‹=¾ªøê{´EŠU;ˆ?ÿ—âæN6^•_vßü…´puöê.¹]ØåܦJ VÜjÝöäâU¯´S[¤kUÍüÇ? +þ÷êZŽÿR0ÂÌ`}pÿ–9c;ýßœ%çÿýåz ps¶—pú¿·¹4þºÛâÎ>/áê}¿ôk‹4Ul-cÒ9~zÜÙËOWQe„u‡wG£ÙøëÆeÏñ÷_oÝwï¿ëÚiÚðš”Ù†=å\…õì¸Éz·EêaËÈ>½,Œ«‡ Ú"…²àÃ˱ÀC +¼;>ÈüØÇ1m‘ÄYKæ¸êô +•am‘„Zf6WvÀémF¶E +mavlÒau]ºø*ó–ƒÛ" ¸zÌäƒÈ¹BÇ{þÕçÅø¶H-cnŸË¢TðN•}„h‹2ì鉆 +L*J[¤‘pHϦ$0»@m‘ßuf è#V[¤ñwó­‹ÈqylÀbµEŠ‚ÑÆó)樀UEl‹$ +Ϙ ³ m‘ªâýëh{¦ó_ÿy¼:Uô·-R°X< +ñZkyøÇ»ôº-R½p¬õ1½¦aý°ðçu© +`”èm‘âEd‹ñ¼;pùþÇhólåÇ,_žSåà nàv;^ùùûªkš¶HQ߬¾3*Ìb¦¶HQ #]˜’¦3Y[¤À…ñåå50µùÚ"-ýe1MpMÔ³›q¿Ï^Ô2e[$…Ð׬m‘@G·ER½ÌÝIat1}[$…ÐÞ +m‘@c‹´ER-­ÓIa43åg¹Åÿj€é,ulñé~Ö;Èx°à±Å§€¿‡0¯eÛ"MòëªSX¹-RÕsJ:ØÙâm‘j¿ ¡3€=­ß©Ù»ÖšØÇm‘Ú_æ¤9€µíÒièu±º˜Ý‚Ÿ·xgTd« +`µEܪXÃ^m‘úÆ·ª–±][¤^!®*€•ìØ©}”« +`1›¶EjèªXϾm‘Úĺª–´u[¤Úá®*€UíÞ©^Ä« +`aÚ"¥A¯*€µi‹_îĽª–§-þUúªضø«Ñ¯*€Mh‹Gù *€}h‹rj@U[ѯ—ªv£-ÞzW ªض8ò\ ªØ“¶8ñ½T°­~—€bŽ-8§-8§-8§-8§-8÷I_ÿµiÏFCIEND®B`‚`!ð2˜)f’D"ùy¯u“Tšü‹ü&ç|ÄÃ,êþxœì½[o£I– –Ý;Þ1ËN,~4 |3ëZdŽ]É;%S–(±:·»ªrKÕ3Ý.´LŠ’XE‘j’ÊTŽ,?~Ø¿aß 0°?À/ù0ü²o?ùÁH€Žs‹8'">’R*«+gšÌOÉ/.'Î-Nœ¸ÿâAåÁƒvóßüòÁ?{ðõ§Üç¿pÏõKùõ_ÿòyðŸüs÷ë_ýóõà—~¡âÿÜ=où‹ôù3÷|â^¼ÿÝ?ÿËÿÏÈÒ=x°\.}º_àÿþ *µû/ŠoÜ»äÿ¹ç?ãûWò‰aÿîâAøpáM÷œ¸çµ{Þp@Ó='îyíž7îYr¢¦{NÜóÚ=oܳäŒM÷œ¸çµ{Þ¸gÉÀšî9qÏk÷¼qÏÂ!'îyíž7K*¾'îyíž7îY2M÷œ¸çµ{Þ¸gɈ5Ýsâž×îyãž%#Ûtω{^»ç{–L@Ó='îyíž7îY2QM÷œ¸çµ{Þ¸gÉ„6ð}íž7îY2ñM÷œ¸çµ{Þ¸gÉ iºçÄ=¯ÝóÆ=KfRÓ='îyíž7îY2ãšî9qÏk÷¼qÏ’™Ùtω{^»ç{–Ìà&bò¿oܳd¦7Ýsâž×îyãž% ¢éž÷¼vÏ÷,Y8M÷œ¸çµ{Þ¸gÉkºçÄ=¯ÝóÆ=KbÓ='îyíž7îY²`›È•7ˆ +|—,ì¦{NÜóÚ=oܳdhºçÄ=¯ÝóÆ=KVŠ¦{NÜóÚ=oܳdEiºçÄ=¯ÝóÆ=KVž¦{NÜóÚ=oܳ\’¶œ G–ˆ (XÓ='îyíž7îY²Ò5Ýsâž×îyãž%+bÓ='îyíž7îY²r6Ýsâž×îyãž%„¹šxâž×îyƒµò/ä߃¿ø øûWòïÁ_ýüÝ—ö÷áïoå߃ßþþ¾”^¾„¿ÿ^þ=ø÷ÿþþù÷à?üøûå߃ÿøáï’þÓ‚¿ÿ ÿüÃ?üÖñ%ÿYò%¿,éI??¾…o6êýäè|û£úþ佟OJço3ß?f÷ûIèô„eÈýc xOŸ˜ÎXzÿXˆè,QÒ_‘-+åõAké È—ó*²¡Ó“µ–˜N¶†Îr2?xb5LŠEy-1†"k:Å 1ë%÷s—m$Ïå*›û!+r"ϵŠ÷a*²¢“PÞL +w ö+[Eç-È 9>E¶òÌ©íZ?EÎÈÓÄoŠÞÏØŒC`*OGç³05ÂqÚ’Ï»»BžFeý/ãQ0¬’÷eœO7@Q®êíí9¢ómFžÚEàÿ“E‘¹„“¨ yT¯ìŠÍ÷Zk +dÉö[bµUh[…Uù +ÒK5fLÙ犬èÌ©mâ6h‡=ðQ™¡¥!ÆËSœ8 +jDÂ2e})1yÙú° Ïœº¨ŒÆl,5™ÁûQŽ<¥Œë»u—Z'–Ažo•>lRsWËyWÊÓ‚“€¥èß´·kkóÒ³Áš6CØ2ü/7"uYn‚(çjy.…”–[&NÉÓ(¹'t©â,©Ï•ÖoH½ŠÚLÅ_4ºyŠ:•6;1j¶Y)ó€­Ïås.—KYàDðÖò=Ÿ‰ +UþÌRË!"ZI˶¤–ÌØkÊÉSJÎJ¬œXÿë° ™¶&h +Ñ‘w›s—‘å2b—–§uc§ñÇ2E6Zd幡yò +Ñ?„3õ2£¨úíÇK3DcùÖW¸RÛÂÿßEž%DÇJq~i–¥VÛHž–$[¿ãØXä$ÎC¸›¦m-UÛŒ<—ºRä-·",z_y¾“Ú¦ä +W³n¤5*a*Ü’¤ë·VæŒ"›÷Džï ¶éÇ#å­B!¯ð«ê§Qà2vZLÞ<rK¡¥n 5z† 0HOiE¤ÈQ.á{‘§EÍš‡Ô©Ð5ímª¶å%_¦Š;¦^žo7‘ç;©­È©ˆæ›e"ÏT‘¸´<}c» +ÓÒÆø¶Åõ5ŠË9ñˆ—’Rkc¬¶FžkÕV)ß;*¸âzÊ6S[£_Jm³ò̉AÈynª¶±ñ¸ë'¨b\›!oSɦҋŸ˜ +/˜ +åi‹×fåˆÍ©ÄÁ{["ã@Š…—â +Ð7”gÎkÕ¨Þ•Ò¥%¶Ì e]AÁ(iFâw–ç&f(çµ$ßPAˆà„š[î6¦f(ÿfåy µ]S +Ñ·$Q¢‡œÛø6#OÁ+¼i¼Y„n¥¶ÊÙ×*£rÒUv=ãÙp +•:ä)7C›É3d«$kÿ¾Me~ä*#´Ê _9†ÁØo$Ïàž•ËÓòXKøh5&ªÄŠC¢ü·“çR³ãG¦»KÐå=Ô×-g8NÊU-O±råèxéhåQþihT;,§jÞ•â”u¦²$ehyn®¶?zûµÔÄ*~›¶NÛâ¸}¼ë'!&nVRïöÇ ÏÕj”P§5òTí¨V倈örî£Öªß® æ”zy*¹¨´±YHMEl‘­w|/5×ÔÝPNxóbÙHžKÕÁY¾ÍÉSºJžë Ç­?Y{0ò|»NžJm=1K/M„F}…<-’ïJh†Xîåi¬bˆEIqNy'‰yøñ­Ujþý6Ãq•ã]OªÂÛHžËUòTöÒgò\ú_ 'µ‹Z¿¬£}ïµVÁ~»¡<ƒÚZ…ÔòLò¿Uj«ëlfŠªýRÞ}ª-Ïòä¿‘LŒ<-™?¾5JmTØ„.—mHÛâ»~´å ò\á!ZIxyÆ.Ç+Å¡$E\ >uïÁ"ç器€€Ö2'á¶DC¬ª—iCäˆÈ·¦3#ÏRBW#™¤V²4cX‘¬–ŽµqƒtÙþ¨Z{i?7p䃬¬<”‚DS¤²ÆIlêläk…Z¿1ÁZmQžª†UÉK‡¬¬škKª¥H² +üUï¡I+w òø†¼<Å›+FI +Ê_Ö¬$n·I陑01T…`MÖkåjæíTÂ)}Ò¶¦ÍŠ/Ñ:q3¦jØ2°vés¯jxRy¾Õ7o·Ê¬kP»eP¾Ä -C0¤{òlž2}(G/’§6AVNÉ6RÙàUú¢Òv64cÇÃÿÔoSz ™jœÄÏ—éè[»LêŒVÆ 1%;Ÿ*R[ÃS¾5xš-Ù­P2ÿ™6ÕÑw=¥†1ù¿që™ÈSiGâ¾$nãj¼ŒÚ.ýz“\¦»ÊV¡Ñä_±<5™±¦Ùš~3¤×Sß+±yÙªº–ñxÓš¬ë÷Û(4ä*Å –ç2£¨Q®»(²iíBëg Z{«å%ñ¢¼‰Ú®-[×F盬&&ßÌ"ÿHc¬«»!UÞïZ]ª®ß›œß%¸+±‰;îM€ÊáZòº–Ç튭ږœ;¹1wUä4O Oû=š%nãFò\Cç{$v¥Žrý˜,e†tÊ{‘çmˆ¹“"—!üã[£ ^¨ß!d +ÖË3Bæ}ÈÖÃVP–Ú +\Õý[òÇ·º p :=BïƒØL•ðœ›±\;RÛ[Ò¹!1wPd›Ò›mc—÷®Èœâç#OõI‰½óXã^m^òTŸûPd µq?/:éóNŠìÓ[&ýéÄψ5)£?[:ésEŽFƒùó3§“>·’mÑ)>:ñ³ÞÙ9+ù‡Nú¬UäÊ„|htÒgl3Òþ0éÄO±Y¥þ€é¤ÏŠ¦E>x:ñ³¾Îþã “>¥® û¨ûO<ø?ð÷ÇN~qü‹¿8Áà +!ã*I3¿|^hQh BÜñèEãU‚ˆáÞµc÷ÃU(_ãÅåž_Ž)Ÿ'î‡W¡0¢2<üÈ”à2.fýÉ|Ü_ }Yÿw~Ò|R+\ +êÁ‡}üq×Õ¤ÅtöiÑÅÓñørîŠqA¾~\lS¢Ý§ÛGœðo‡³ùh:ù´Ø¡¨ä}ôõåñt|Rüv>ŽÏû“ÉãâÑd:>†ߌã¡Kóòù ñdx1ì‹upö1Ÿíj»ZsÕ¬ñi»Q<ûìM/'Ç£ÉéÞôêS¬PÝ r¹ºñ¿}=œÇ‰ž4Z;mHù¤Ñp?Zú“v§ãòµ·žì4ÚMȸ?\ž'‹g³é`8Ÿw§ãélþiÑ}ÕŸ_8;1Yô‹ßÇãéKúðòâb<»B§—3—ñÓâ˜ĸ£ñðÅpÜ8Ú}Ú.êOòæi>ÿâèóYÿxä@¹øZ0—§ç §ãÒ5ó锸À’„ýÅb8›p¢’R`!‹†‹ÞÎEÏÏúÀbcÛÃpðŽz£ñÐ ÿ¼¿(ZO(°Iüvî(p…ßþt2_Ÿûƒá1R8ǘ­#|9.® ÇÔ: ðõç{Z:Ÿ5ü>úökg›‘p§9ß=&ÍìP¡‡Ã‹>E8`Žû>&îOú—ãaS„TîçâqAu!sÌÕqÕñ©«ÿÝw›±ßOêðOÞr¿àw£h-*çÙ³}(£A :5§—.ºÁêIH4" <üfx~u•½YëŠPQƒ9Å7ýÙéph|¹@²]“¸//ÏÓ5œy€ÛG_] 'ßLÿ1tlîÔw€S­V±Sß"q8©ÔZE½ÝV¥@6È$඀õÏœŽ}5¹†ýSäiNóèYÿb8ûz8X|ú‰ ßÚ"V¹ß’à ‡3eú„ŒÅý|6:z»Õ(¶é’üd[=;ò`Î#Ç'W-ý5õÍÙåùóI4vÔ7¶‹Î6ÕÄ=ðDœì»àZg»UüjxUì½Z`Ý©¹O³ ;ø»³»] m6áÿfb›Mˆm6)¶×Ãì”­Ód¼u:¬ÓdN¯'@wv ÍΤÙq̾³Évv ü‚¿¬Û…dÝ.dív!¦Û…4½Äözfïõ A¯G™iB™0¢2)²J|l8üÉ€.ø É€.¡–â€(ø i€(ø‹´ ;(3Ðá +ˆ‚¿Š˜E (ø‹´Ãº Tâ)aÉ€4ø iz=)!òÄiâ%± +þRV¢ž ô ;*‘QIú@2 þ($QNq,8øÉ€F‘4±†2ðÞ€@ÒøËÈCü…d@#ü%a’ºs (St‘MÑŠÄ{HFÌÞõD"O¨QÉ[ÄFIäi€@ÑQ ³å +4Â_HFº4_(3ü…4@ Ë.Z.5‰ØGe¦‹:‹ÒˆÞ!ò¤2¤RID¶Ä}ÂxO%óyŒÐGèC2)ŸÀŠ§#O•4›dO "=ü*‡ÚOy\v©½¡ž ³B= M—:4³m’š¤-¼Òœ„˜=°DД¥dLYëõ~à6•uþ4þ§O«Eïáú¸ìí6…ÿéãZTü„ÿé³½MïÛÛ¾ômþìîRTøŸ>{{ôþ§Ë¾¿OAáúÐ{øŸ>5ÿa;2„¿$_z—7úhl´º­voØØÝíîîuáÛmöö·Ú.¤Ùmîµ÷º½®ûÛ†7|oC|gŸ´‹˜³: ½ýÚÄpÂ¥‚ØžJÊ I÷UÒZ”´ À]šdo€To¿M‰vÉ“‚…l{L9Æegèb »¤îãpqYÚMÇÄýLžÐ®¢©,ŒÞeœ·no¿µ¯9ÕÃÒ=DF¯©Y$1õºÃB™È‚´ ,E厙 ¯o3Q.ÚhxäQÚíœèòqõ}À†9Oljvcé¢8Æó§‰È;H +‰t ˜M² ËëÁ6Ù41+H„2ÓBÝ&ÊÝ•Q[!>£,:¦^7r—êÁÑ=R€þgÙ7ö‚p!{)“zݸ4Á‹Î;qmÝ×g@X‘€b`&T,‡A;e(©Vš®å5•îâ[ø?3pxæêxWê  /žHëV©Hÿ³¢c<šD»„PÔ®_»žNæ:—ËÀ‘±„OWTŒ4pgâÝèzÊD¦c7Ø®Yê]°!옳B$Ù@e‰Î žl‡‘u±Æ+3Ý=Dº;#R#ÑLZE²²fˆxù Ø®h`y•‰Z©èÒË]* Š§-Bd% +V¸Ée·œ¶h]“QfÕô:/µnã’Š…ÙKL“FXXºëõŽxÕ%Á‘-e¦Ÿ]é]¯‹ÌLí.82BÒN<7F»§«*Ô„=iùv•ô©ÁÒ¢® F¦_´¯Kl&»×f¥uY=ßDyŽ“w¹õ-PÈ“ð´mEåë0GvY÷X7)»n’¸V÷H<]o*}S…¤Åa~RibCK²°<<îP‹ª¨©ŽmRJC„×8Ô¾]_erZϪLt;Ø4–Ào*™³Âq­@ÁTz„«1i]OÚu±l^”€ð.#½%Ö–]ª®j¬ƒ©”_^Ð<ùºÐf¬ëp™]Aª-/E쉋ÈjÃáÊIÉ|mïŠð8\qß«M0?ܦ¶9bë°>Ô„ÒF¦=hµ·f”µ+æÊW±¹ ”8/v}WÚxÖ|ch{º">ˆv/È›ŒCl8YÖ^?zÂæ@ûÊ®(,jYWpÓª„5dWüœ6Q϶MÖ$4JÁ¯ +BcDÚ»Aƒaåa#µ« '5»Ji5¿‘Ú½Àåà:-¸‘YJí †B¬‹¯í`ªt× ”DUÁ¨)‰·_ß‹ý[á*ûrµØ4µvÄRmi&K#LÂóe³—´ÎÛ<¶ó^¿2[y“w5ï<#pßDŠgU' 'ê,¦*fž4ÐPb; +U}™¡TØcÅ*B !¹2ÛA´Â^°6û¾Ã³‹Lb¿±çÑUÌê…&zOÔ¥ÞÔÈúf±Íµ íŠ§\vèàho +úK`Wu;üì`.ºE.Y·®Þ«dͳ•×{•Þ†´ƒ§Áºòö•Õ×<)]øÊåÆ­œXx1ܾ+[&V\io_ŒÐˆó]rÈ»¶§(n‚·éÁÃi[\•sâýxÝkÛ%Ʋ÷Þ¶Ô>±óܶ±^îzžüø7¾‘²g¨ÛQϦ#RîçjsÀ¿zT)½µhWxO^%9m¡íÑÔÝ6Ó†‡z:bÔX‰S ÍƒBÕ7tEoé=¸ b +<Xez^¯ L×vˆ¹ƒæ]$Â5ôã¶(†ª[ÊÚIÐOÒyÏY¶·¾#ÆÜ~½<r Uvå;uƒMcQJwÈw¼ên%UƳHº›ªù`ŽëÛe¥uÈyTµƒl¼*V_Û×çŽIOt «ý«àÁz3®\Dű·¶\5ƒú4Yýp éÁ{/€»„^¦Í¸M“f2h`Œ%÷(%;æ»A&¢‰ªî£¯G`66¤yôn²˜nñl}³¼=ösdøQw@T…zÅIÐÀ{BâÒõ•–Ç*UŸv7€dGŬ&s{74X¾£æûÂ:©QÞ§“q¤^0õŸßHp-A–ëµoUH 4Ú¢Ìd}§Ì{X¡Žû,ܶr¹ºwãÇ0µé–ξø\ûBË«]…F=Øpö¨Ð(»Ç d‚T_Ã{YjÜF©«8Dì °EÝwöí©Cj“"òPqÁÒÖ•Õ튨mž§·É…x¼¨-d?G÷æTõ0x0ßfÈ»B[bó³ãɦB8;6ÊûuO·tO¬™ÖšGEyÎKe•ßÒ»£,Ú×Ò ¼«`Íuø +£`°È#L†=ý€@0 DðœX9òF¹Å±]PCŸá½õñ¸k` +pÌ]Û“ÑVpO´ÎŽIªù eÜ;/=7=(ÐôN±·-º.XÙÏÑvFê;Qj{ö±¾;l‚„>ßÙÞohïƒ÷åÛz®Ç¡…W|[\(ñ²5ª[W +–mèY„&Äw¹‰”~UÐ7Õ³ÝÓâDþ‹à¼Ïî©ËO?´¤ÂÊoñ4ÈÒl:éž×yjDx€¬S[ƯˆãÜg—ŒaÕ7Ÿ2Ì]?ü¥µ‹3·% £.Ý'5›a]›Œ;ÿ½¸SГFZ4S›‹H³¸ +ùþ›/'na½7­ ¤Òò®p;HÝ«TP›Ä4Ƴ]?4,c-3OÁm«ïF?²'=©2]é÷L$Þ“,vÓºJó}#¥Ì„¯ÿÙ)?;ýÀ +´ŒÚxÉ÷Ÿ•yÓm^V¦‘ò£V=OLO÷é²¼cæM´?ˆxŸ™¹ 5N×Ö‚-›§íQp'ÈÚ(÷Ï»Mí6ƒý“Ž›¨ø´L‹òi{Úª%SÜžÌÖ;‚"'V$?Š±kKõ+ôØE½oå[Ę9TÆvËæHE:Ð%ôªa\´ó )…H Û +¦HuyÙÏàNhÆêD¬ÓÚÓüF#XÀSOkš‘­¦‘‰Ú + ˜ó¾üf‚àJ#òЯIØoì¨ÎŒ”x‡D׳0ŽÅÖÆ#Ý•V +ËêZ.¤«#ÔÔžžl蹑]+Ìžê˜ø¢\#l*H"T\3±k[Ów ÛÜà«?:]ÂûdIIh&æŽx-¡Í +øˆ—_÷kŒµñjiæD5¿[5£uÛz‚‰*¡îëgÚÔØp†úŽ –º…„pËê[ª‡Ñ$#Ù f„›nÕ¶ÚâgH36–ÔÔuEì,cg¶Êµ¢ÝQ5¼ë^0íLÓ±‘±Ú~ìÎzÆdØiyýÛ du ÃsÐÍTû!®Ñ½wÝ0tdtøãƒÉ1, +æŸÝé9,æ†%Á´`øÙl:žžúWÙ°°É~Ù©‘l)`/ïü(ÚOjÅo wÑ(Î/Ǹœãû½!¢Ýæñ¨ÖªÖkÕæãâí™^¼šNÏ.îQ÷qQßÙÞú¤¾³ÓáÝ(‡¯æ‹áù¼x:LgS‡Ëð¸Ø‹¯!Ó¼pÄ +g/†ÇØ¥û…›¹ª } +Ùæuy!»»*— ÷·zÑü0<îÏfýWÅ˳ál[¥\ĵ{*¤d2éá“U({î5,ÁÇÓÉ£oŠç£ ï[r™ó!ÿhrZT/¦ÅxÚ‘ƒËÙÌÉQ¨maÚÏS©8ŽV` ?½pÍÇ´ËArGÀ±´Ó+`Ä&£Å¨?ýýP(NX'”Jª‹áì|4qÂ|\â’ÀþÁ³J(a* Ôóþìîp8½›žpÇF"•ê‰Ë38õƒJdñ·*}ñû_u176<ƨNI/À>/ûõç{)Ôö¨–œ·é‘ú €B8]A3’óƒ +¤îÓ¢ÿ8ªÒ* +Ã+ØLæCê…3 üzãÔôÂÕLzkÃþ +ˆ ðk`±à\¹ÑECEÊrDPôˆ$+Mþ_b+¼£q~ù\BšóbU*MMDN¥•Òl==LFTrÇH*f­•g™r•èj7ñU½ J¤7\A@{vŸÎý¦¥SÒ1D,„K0}1œ]ÌFÄ¢!œ ³ÛÌTˆ4M’ñ xT]Üç4|¨sn}[U;ª9Ëü¸¨î_ŒCPßâ4…Ÿ›ï +ÙúXâ˵WDA«r£XåòžÕ +pëtÑÜþ¬CR\¿àÖjðbæž+WÌppSȆØëÁxØŸ9½…´`oŠëævqº t}"¯M-·ÿì)l÷©¹Ò³ÑUÁXÞp£æÉtvŽÔƒæж\~ݬó?Ì5C8™ÍÏ\Ø›>íON/û§CŒ-~˜L_NØV —P¥ÉO]“ßpUã…rQ‡ƒÙp8éÍ â:`¡©ë@kSùU|²˜N†ß¼º:ÕW¦K…|—ÃÉà•2ê6O#Éó¹çú|í$ŸläKñÔºhûË-TÈV€yav;u è3F!)äÆ'™cXÁ†Ík òTÀéÖJ×Ó˜UT-3‚5æI½î†Ú;Q@SÞs*Ôi„Û‘ÕÈʼn4‚²Á‘Ó y§ +UB‚Ä?RpÆÃÁâdZ +E¢^BûŽùà-4d P·*6ßø3nÂÎû? =¼¸ÙÀm×*V›v°]>ÊzA¸÷6ËyˆÑ4|¸Úï;Päwhê°$g|úÜNeËæÿ” ÚŸ¼Â–ü3Ñ_Ð3yjÅ„¬ˆõç ÞéK9Náèøa4?§H§³!úÌy˜®ý ]©g³éå陀÷åW“_ÕúéùÅt>Z !ì¯-.[VK£)ÁŠhHPÝwÈñ#¸CÑë¾~iÄ3·:xÕŸ|V¬¢É» ç´«ý³b‰>õ+ÜûþY±Š`ŸøùØ9¿Ÿ«¨—´JÚ®ë1‡dÎwø¬ B<ŽR§À#lXÅ3‰•Ë«+|ÀæŠÉe‹K—äAæN_»¤kÒ]P½ºpÉáýoûcg> ¯¡Pp༂mîç Hã–@X«üˆ‡·<ª!WÜe7=v4z­"©‰ÈÊ ÇŽ] [©,G¹L/Ÿ*ØÚg<õuh&M—h\àè噳zx„+X±+ª®‹8øá«KÒ+¯ A9ƒC´Zäì]Œ’çGqÇ‚¨Ë*­nì™w‘Κ„êòš<þ6öÕ=ƒTWŸÝCeK´ë#%ã»®ÒM Ѽhˆ½uP×bK5EÚ°¡b8¸@0 +X"»£3õχY»ŠÒkBš-!PâQ×¾~a_o_M¯ex1'4RPÅŸN~ð`¸¶ë ªø:µY ¡ˆ@Dùmfy#VGŒãºGT +œÿcä[=:ž/Š« K¡¨  !>e™µL±€K‹Tì © º]‡“ÓÅYV‘èoIŠ +}§`š få•åóU$†+-£«X‚W‰¯RMÐ ü{$Wk•ñ@Ü€ê¢Jí-Œ±sÇ´]L„šhøVJÜD™ŽƒÝœGS)¾Ÿ{réH1èNÔÄD +Øhœ=5@ÊábzÁZ…)¯ÆCõCû†ÒWQ5_jŽª¨æIÃiJjr1.xÏë °S^ <¦ÿÓ°µ¦g·$c¿S|S]©rT¶t‘œ·„b!àE§ø¤á‰–ŒNÁ0´-·ÑÄ"ÆJ9%Õ#]Å<Žt¥¢P©¢Ê«R~2ÆÐ{]aÀGRÅCkÎÀ)AÜà*äŒóD%pÍ1ãmÊÒûèà‘„ÈóKÝ×O'Œ‡´ \JM·*P3ÄÀ„ +áÙ¤ÓÖ$¡Ÿ‰cu‘.LR¤î8gáx8ƒî6â1›k§Ä4’é`U:¬ $B'Î×pZ…[i–FYß’ã, +9g‰uüÑ…óï3®¦:j€¹·<<¡ãÖ28è­Ÿšë 5÷æ‰~$ƒ¬v<Íë(4ô·è]„(šª§YB&¹ƒ þ²¬<ŸNg‡gýcA¤úµƒjj~4”—Ê@õÙŽàô¤q~N9‚¦§wÄ¿ó C'ñˆ~æ“ùÎåþÊ$ +¢“!¹£ÉaN”ç†,UlPJ‰òtÜ5‚ +¨Å tÕ‘a>Œ/Þ[Éj½(/áp¸šÆyVÊ ì ÿJç‡í‚tÙ¨b~ጌ¦åÜɺ’‡2o' ¦>™ÆËQ>ÝÂî(ý¶cñ`G2Úa‡; $ÔÄd„ƒ“aOC8 ‰¹Ä«5°,³5fÌ?nÆRãݦ“C`î¨ñ˼‰gÕìÜNbÓãá—ÓÙyåÛZQÿŽ`IøSìC•oëEM¢âÎU4šA~‡D½TçšEœz†Rý¤‡¦käh²?š/œ•†‰ӵɆVü çéVl)¯ +yú¥Ãæ5R‚^ãZ5$zcd¼†|ÕŠ†Í`ØéÔ}}æb¥QËŽXãì ŒÉí£`««é‡8)íƒü´âLÂöF‹ù3ç˜ÁÄèf¢%âWC˜ö¯7:^œYH¼ÆKl‰æ›!úº¢’ÙþDz\£’Y/©±"G³¦Ç•ï_HX±šìÙ©“—Ìúܺ“‘)EU£¨ +Lùf‘V¨–§Ô*„$  +g4S £àüªÌYß·$Áö…0o&CPÐödnˆÃ¡¦úùA»´×xÀ‚Uèm+;ˆ¯^Ø@Âz˜S‹<#Šîd)®lˆ‘ܱRv0øÐôrÚKº¥bc$÷‚d\[tÓ‚¾c +¾%NšK:›±ÕqGIeãaymÖjvê1æóvtZóÓ¾‘é.Æ­Ÿ Q­_Ä8̸¡p–„B|Á²s51‹}àMOV5¤àU¯>`•tÂ|±ŸŽ«ÜÞ´ËWÚ¡þ)Xû3ãeËVÛ±62ˆþRg.ìp rB1ˆ +ù¡1*L·©Pàýªi5ãGô3]®oY4_ +S¾½Ÿêi“¶Z÷îüwâ©(—¶æH +a~ëaf(¾R«Çê!ÖÔŠ¿FÅ[³ªèÊ2î>±lÜ–m™gö3™aÙ|…Ƙa˜µPEèÊæš™*6Ã"ëzQʼn?ø]…Ù?÷#$Ýx,AkäQI·^©×²ðu;sw€ù,°„¼‘`¨ÂÆüáqÙÉÇÃ:üØÊ¢Õ4%·ò%o­)¹3)¹“-¹aJnæKî¬)¹3)¹-¹½hI¡´•Ú1Ð& ýC†m©Ó£wgÝ䜜LKèkŒJø¦ Hglx|B- +ðƒXõâtÁ ”ã+Wmy*áÛçã!×}ç·j)8Gq¯§zÔ­ßêÒ¿ sÝÚÑì4"yÕZIe€}›@WA÷õiÜcÃæf=èuàü/ŒØ¼Dæk¥£ðzÄ»‹­^.¶úÆb«ß»Ø~¢ªo,*ZS®R9SúxB'?Ψ—J$#ˆfq< ŽÐkýÝ Â¡¼]®tS= þ”Þ”Èr¥‘ÎïÁ%:2¤‡ì¤J:£C>ÉôP-<ð>DÆ÷Åê™9´5{²{dåØê±Ð#¿E-ÒIGC3C¦f*ÞƒÞnÔT +›*K¿vºÑs.× +l4Ɖ\9ëO&Ã1óDqÂϤ…å#¾Ïe+ÏT|H²phŸB.&Ö¯ˆ£¾(ú}yÔ¯³Q‚!Gx6 çÒÉ—¦ÖkõqNh`œ™dC½&‡y6æÍ•°Ã_–ë™%°~b‘Ƙt>—Ñ®óóÃP1·yÍdv¹›&wkK4’SðààæZç·@â@@u2üÏÃÙÔ¯)¾1±o¢’UNª[Â6á~¸Z‘FâRõ-Þ™ý +ÕÐÐœ_‚mà‡¯HÅgF¥skêU½.Á5ÙlQ‚l)¶J|%ø– ‘­£lU-a½O+Jõhq~ÁFj„#Éȵg…H²‰–€mÜÜFíyû¤o‘„ÐÐ0z*…÷¾«ª¹f@´ÅÁsÍw7WbiFd«Çz®®›žQg5PLl«x±mп@;'° +§A"tô¬B@­DÿWi~~ÐPXhi+îDÄ=ÝCO áüQ{K2³Îý–°ÈÓ¡a!‰\e„YUîÅyß™R+{ d¢Åý+»mz2ò'굕©ÐO×sûPTH÷õÞêTßTÞ[Ï#ðÏ=oÅÿ'» +¿H–äöàËîæF­žß‡þ˜mßùÝ÷ñ¦÷áoû3Ẋ†îñWñh%t7yÕ)í«ó{Pá´èÑßüÍce( +¦—“ŸÍÔ(FÇ£ä—ø“0ŠkSÎÞBDowzFàÂju0tþ˜((ùÍðL4Äç¸`˜% UÅýûÃåpöŠj„äp›|&ãÔ‚¬3ÇGV \ˆ-3#ê¾ãH¥àW!Ëyÿêë4¼¼¿^Æ+¿©!<¬• ¯#@>'ж|«jÃyRί˵–Ù‰ ÐU˜j§ß&Ö§?#”ˆÇ'Ò–cC¬Ï"¬u_ßÅà†®Î¯~5 +µöJ¿8Ü~5;¿¼ÀpÜ]‚Éñ—SÊxSGŸIÂEV«Õ'“ÑZ¢ªt”ÐJüe +=N +=N U…­ÃEÌdQÓŒÂ'¦q%’û ’û,vL1À&7åÍC§Zöcù*ò]¡°÷HKœªúXå,Ç/ͱñþyBÖó`Öïâåã°¹'ºD‚BíIfú¬™^kéQk€JZf8Þl%cöÆìÆèé!}²iaO9åfÒÊ\‡²F>9Š«”p?â¦[PÃz.#ìÍu +ÚŠ¼ÌO°‰¤L58–Z6ôªcÙHÚÅÃ\›h&ãýã‰ÅŒEÞ:!ý.1ú¿£ïÜGæÙ,ÓÕU£,Ô¿Qëf!ofyɱÄÃRïs®íƒC-g@v;´rÃØ<×¢Kƒu íiÑôsX +¢Ìr`ì# ¶âUÇ/ê=×[1;† + +|(#A:@0®³{x6çzèE…’µ /ŽB®Ô~$uˆÁSîbÉî¦8™XˆÕ#×[ ¿™âLY,¦,7À% ›–[5‹690·ª—TlrhnU-ÝØäàܪ9å&dÑE×V£ƒª8ÝC¬†U'+‚Û¬a»iÖcŠGMa-*^.­!•Ô”ë]ôºªNµ¨*%û¢.H¶Pµƒ¶ÃÞãéþèÅÈÉt8?›ŽK7ÛDZ-©eÕ£¹?~=¸\Úz;u0À™÷kÅ¥Såí€+õò9M;~õkì0*~ZÇÔ¡LåÏ">&U&=5ˆpï°%LF+d<[9£’O\—Ῥ5Ϊ ‚…ɨÈ%ÎLÒÈ°fA7 ~‰Õ¹ëò.¦¤Çv§ÓÙ1­ƒ{6…Ñ^‰„•&êx8O6ÇF»P#ž¶0Ç +I=îsbÍuÖ(8Tl5ãúØõ·¯Ùéö¢`ú“%QGÇNÂ`„Ai,Ýú”ûÑ{­ üΨ:v g/úã°\LjC¿H.’J6¯Ž~‘¼$£4¯€xÎFŠ+Ù +Ò+ƒ‚ì¨M™>:Q'ST^ÜlMM-4®¸ÖrμÐólè«lè™PÚU{“Ëyžû…$5}ðþô¼?rh©8IÚy,<ŸbEcDäãõF7ô>~Ô¥zpµ€µ ßj½¥&Œ Ž…ÃÕª¹Ë¥êX +Š<æߘ•Ê£iÂP/âQf0tn,NF©Y÷à +ÂwÓ|1jwP“õ.u€Pظ:I¿q¯1fžÍ3¹ŠÓüSÅù)*ŽoBÚ âÀtŒ—.*Å«$$T'¨\AXT»xõ¬LøȘçúbp@aL«šÌòI€ø1ÔV×T»Vg–³¬0˜×;Ù1\¦JùÒS“ S:&‡¤ö¤ +FŒ-Ü +Ÿƒ\µÈX$[¼RÄ®Ž8ÊÆ Š—ßšõÓ«”¢·#…:x~¤x«v~ŽU-— ×@£šANPEæ_M:=í`µµþdy¨ª!ü'Rì³'\/ˆGþôX1 aº\ *øfQF¬¯=§Ôv»¢æ`HdÖ𛽑ŠÉ¦ÚuXÄÇ™~åwD +rXµ-çüÑÉ‹0á÷{Óë-–VðŒÞ­b—oέ™–£UryõK2ŒÓÓ‚¸®+£ ÝÎkÿ*ÇAêãÑ aHÖÔT\µ[¿qj’ù¨[K“Ôn0O"gÖÜdÀ•¥Ý Dc¸ØÛ` Ä»nBQ÷+W²¾ª§Ç^¨§>:Q^… nÓ€`‘÷5T +9O¡Ô—¥ŽiÒ0—gH“jŠ|3§ºÖÚ.eeš4"¤…HÖÌ曩\)¡éaè¡ÍŠ·;&£-~y<¶¨½8VU6$Wo":û¹ôDg} ³iºÅ¦•ˆLñbù¸}2 +—¾TŽ¨c²ý§0&-Âå0jšeG"7ykRùyÈ÷sI‰™ee' «˜>÷xåØîÿÉßýí³*¹ +Ho¢ËÞÓ£¥ÉTò®øähuºÜ\_´òKÙʯ≑/Ì%—Ô`\rͽº¦¤¤Ö*ú:kèSÆH/C,ùÒÝT)<â*¬inÕ1—êh–RÈJÆZQN†ÑýFú,3Rîì]TJÓÞEl*ÉA.µNÍ¢ñ†õ‡\2€»Üb™»…Ò˜ºìíááJ¤²;¬VYÜEèJÛ`ö2åwrßÇŽìòÍ×ì½^ƒÄwø–oæÝ`//%[³Kñ¾ëDP! x ŠÀqW¨ˆ´ÖBgÁàp +_àâ³ìZF± +äÿô ýB‡Ò5šØ{Á nB7Ó†›þØÊ9 +’Â8¹_¸b +û>Z 1¹Ÿ¿£=@f9­„"`A!iÀ.ú¼bg¼(š¶¨AÞ¡FºM‘êvµ"àô‹þ Ï÷µ1Áûòm'õ–„èy;ÍË*h£¢+ãâbHFä¿ÎfÎêVñ? C·Y9órì0‚9Cñªç‹ô8uÓ´ï +ù0‹ƒJA‹0 +Y–öñ2ÄÁt2èÃ×’]æ‡ wX9! ãÈeSóÏ4ýÀ0V\ä#þfÀTLJFgà"¯7VØ©Ò}}a¹3›Þ G(×/a›ß‰nÅeõŠR:åì%ÚÔÏ+)Õ:>†h±7Õ„l¾9ŒM`0î<¢©ÜÐgH6ÞÐJÀÒ®„ïHdï;yÔîl¾PDFT÷ä=à;=ï~U{ŒéûvÒCzO¤é~×{*BõæÞ›|¤Çö> + 2ÒáÛô.Ÿª"$#Xœ sÞr8¨eØ°þݲúéဲá°ÜŠ@^öÞŠØ•£ŠIÆHìß…¢ƒógX]Îqͯ÷JÍšäÜÆVÝRi~—#øFjµ·ã˜‹Q±S+`Ea-Ü[Û$ÝMÁ®p(*Ú™¤¦ŽBh»ƒ'X1×pbŠdë‡qõ'¸yô-u¬$ï¼­‹µÓ”šƒ#X’±x*Ñ…yjà˜¡¬Pî,½2ÝkÖsa%CÈŠ)žt³û;À׋Åôæ[3\î»Þfûù)í|²›iµËv®’ǨwÙ$Û£#‡9Av‘òÒ9 Ucö%ZnP ÿèEí°);WðOJàº~¾ÑÉßÖÑ vÇXŠ¥Âõ +ý®ãoµØž‚Iµ’>MÒÌ'©­Jb×àwB¯ûMEIÿÓBÙ÷äšZÑŸ + •¶¨‡+?ÌšF™‚‹t'ÙV +RZ½Z…«àúéHY6Ùè\èMÎjeg½/Äî«`ÙÁŽ™ü~„U¶üÿ†*E6 ëŒL®¬¯‘Ù*opçò|Ÿ;ª÷aTd¸ø’ܨãÌ=OßÃ/mUõhŒË¯Fz4=>{ˆz²œY–»›ñ™@Àµ·L8U†#7b +¨ +‘¸Tâ_¾§âÚxþ†íЙ’Ú÷+}‚¦'(!Ý`® +çs•²a!75äL‹#ήá—IØÞ½/t9Y­ûú!_nU6sOË:l½½àÓHQÏC„ŸÇp™™Oâ¾~4“„2œ1¦ãë>¾ÒVÕ8?‹TÙ6-e~Ò§¤A,f—ßnÇ&ÿ\h«ò{áÅí=úµYÜï*•Å}áôª,®[l%qÊß.ùý³‘kh,§ã×Åö +wVÐX¯­ ²^ߌÊ:/\P®Þ:HŸá/žM÷ZëWN‰ÖFËP%ÃPdœÝ*½ïxçê0­. @\·bxE•PUJÚTý?.ÚR«î5]aç~,huN°?UD«|#QÊqe:wN:‚ÐDxT·<ÉšŠ|’.%ig’„˜“”3[9f¶ÿÈÌÌÑ1³³ž™[뙹ýNÌTÎGh´’Ö‘Ûèþ7°k­Z_†i¨T®zI.nn9¥ÚT ñÐRµá2’›€-©«e(nFþzmPײ—¬ó +h£êeGÍW‚ìsk°"òE}!­Ùøð5íb)!±¯c|®¶=\*&èÆD(&B=î¥^UTÌ +vèÞˆj¸j°|eJ“‡«6Ò _”fø"Ÿá÷¥~ŸÏðëÒ ¿Ž3”‘J[Ídmehto6`_©6i‰vv›Ö¨!8U5­wNr5éJ͆º^µªÇ꯸¤g$ÌÏJ¨Ö:ŒTýÚDþÛ¨ÂÓNÃtkHA«oµ:,Ò¸="Ô ^óࡦ [w½ju^ZDû¾‹XÉ«Î{,-ÃÉï +Õ}–ÎyÉXì5wÉìÒ—‰WÉò?Rg9Ê šY”™j×u|:8 ÜK}No<Jq“C,ž«9½XŒÎa Kt£aæêuù5ïî‰F†õy§£Ï‘¶ýΊ‡ȃǖ¶{\Cœ#KV9«u9ãI˜JWOØÕ…ŸÐŒð È«¬tÆñmº2s<„Å:E–6‡}|žËgtE„¯a2ÉùäCŸIÛSX|I‰u_ßÛ4°h²ÏRz +I>B9*€õŠæ@Ô¤…ßÌæÞÒ !2œ+ÂÅax­¨ú-‰@¢åœ §ðÙ~Š\ÓhJ3»†ŠØ‘¬T¡¡²§“Ñ‚†ˆ&_÷SÅöCM8ÌäåÇÂùÄW¿2 ‰„î¤nc¡‡Ô¦†ÁÙ%+*ÒŠJL©ü»Ö'„W xÞ <> L†?ýº” +r•zq=&Âle¦Ü|"†øØùÚ-àÅïOÖp­w®áJØ +ž‘÷ŠÊ®²„Ê2F½1=P]=ºÚë"Ðt{eŒ‰°ýçHwyfs¤³5Ò++›ìTKÿý1Lájý›g]Ì)ÔhŸC½¥&wÒ¹å/ÞÙ&£³vEOnÝh¸_*ZÆZ¾hÔO=üð¥Î[²úôVd%¸ßðÿ©Þ'ÚáL%*Q…+é)V7²«Bê¸õù– à¤)Î5 YMÇyàz6.3E˜=]º÷[Ã}¸4†A84Ñ7½ÃÑ4ؾçÑ6íÕ +<© u1M’ ÇæH„B7n0ýö»Éf®¤vÓÿIÛ«:kÑýÈa¹9¾ªm2 +Ÿ2 +›ÿÐæäÔ:“XÑFÀ5çd¼sv?[Ç –žŽ÷wy3qbö0‚·X¸mçßßá–ƒ:.>¥»uŽ°|tävŸvŠú“&ì¶Q7áäRù3Gé@5©ÛMZ‡MKqÉ÷[“EéÛ1иf3ø«tr‘Ѽ¡¹D„X¯.a­ó*ë7IÉÍ"…L$Þ²’—ï¡p˜Â$77ä0<‚‹%W‡ [úŠ!«<±p¦zªK¦Ä¹›þàÓáK¸í©kú+x”ã ž5LéBÔŠnsp¶và«Ð0࣡B«×º}Í ç ú8Õ§‚`¿÷Ü=¿û{²×]¼­3…•?Õd-G3Ž@d¯¦'7)¶'® +² +kùs+ ¿š!>&™ÚØ8ezš2¤3ûõ3™ìuÓÞe‘t¼ZOOªêµtþçM ¶A ÂÖ´¼E‹Vl2[…Nü?*Ç›,‰¢½ðר'Të÷„À¼3óN@ô¦žAJ×ä$KÅ|©¢A +„'i>“Ñ -òyë6«wæUÖ†ž0ŽŒä¾›~-¦Ø;^k4#Ô¦#,ß"º‘m +fFÝ…ÎFöÊðD7F™,µw0Õ? ±«ˆÆ +ÛR×(£+ý^Ó!îIZ°‡/špÝŸ7lñôéº×at²Ri[d*0¦Ò}ý‡86íÚ&l +¿'Þb +UDØ×VŒk«Wx:¾çŠâ§ûçPE;­|øÑ‚@Ãîp&„á¦e!¤½ã§šUhSéf®èV+–i’ØbKQ¹({)ÜC¥Ð€€Ë„OL6¼„u:¦žmŽ¬gv3®!ᚺ“W +׌ÓäÅ"øÚ(ò̈†Îq‘†*®¹¾¯gðÆxßÚF´Y¼uIM*õ¢†èžPOЇ§&ÖP”ûÙZaG+±ÍÆ@vˆD¡ +¥K«Š“*êG6‚Ý3ü¨ˆ«Á§Ò€«xuÛËqJ%wÚ˜‘_”ïTgRLå3„ö]ËÛôôeZô˜T—›ëTýP-àƒ™Cék iíd¼G¥ôØ3ßeBÁz0Ûò¹èfÏÅ[€v–ç¡õÁ®zíææš×6©8Ý¿r=032Îx&¢hÖXÆÏú/SÌ€ñ'VKr ƒÇ¹r«‚ª&`hõ«ŒMàp‡ñ +û™²„ÄtŒ¹»e»ê76`<ܤ7X (×ãÞ9q =»ì™ÒÌñ)鯆ë¼×Tª‹‰eó5ËÓÅ”’ê­ž3a¬¶"ÏÄúö¦ö¬b`¶îÂà–5SS™d +±§¦2ãÀzRKB-!ð¡™¿ åé+“æ>©4*ì¶$¡?#vyŸ? u-$Ü|‡ƒ*þÜ:ÊM!rßI¿HkÀ”‡«%†Çª hy®á¬ $ã² „NÚj⮡î4óA¡?Y ?Ø&!O÷.%>Ìr=8%±yÛL4ïì1ÅD¥hµV7×&ímLx±i’• žvoàôp‰MG¾nô°›ΉM`êlGÈʉ >nåVÁY‰ +ø_&¼\#‡GÝa/‡ŒT­DÎbVæ§Ø‘Ô‡éÓy°á Æh±G)\Š;“Ž/È( +Ù¨¯_>'04¯Mk+ž–V‹•-®÷ÀÒ™ +Ó1i‡[Ž<›xÐ:bÁâ6ªØamZÖk~NrJ¾:}Aî×=ë=Î25veP*ÄZèX–ÝÜ#Ú.÷ˆ¢ åJ…]tœ$w%¯®ü·ñž~÷ôKgóžŠÞ‡`µœÓ²Y«d×3Éüá·Ñz¦Z”ŽnfÅ;·ô +#ö3õsW\‚Ã7²8Ø•WïŒ ¯ +C§Û®j2k ´ÑHÐþ‰Q¦.Z™¦—^鞘BösÄÓëšïax½Y2žø»³MWûøU;²âÎ h[sQÉw¼DNGÕüAqXE§ ç­ +zCeÌèhìl,-“'ƒãu–£ípÑï~µ1‹|·9‚ ëWà é¢Î‡ÓÝ;_‰ÖüEBÐõ"DÅ$ Î7^¦U¶( +ʾ«öñîø WàŽð»æÓt÷0œV§‹ÚÊhÇËD#¢ï\'2«VT“¨tÕi2lc'a0ñ*":(ø&“0¢ÔygQ»c¯ZL”ŠWô‚TS€Y + ¹ìºÜàü¨Õ¯ªÄ({ŬõU+×ÖuhphÀ9ÇÃÝž`,mž| +‹XqÁå©\}èWñù”A¦Ê‘1ç¤ +jâÍÁ["UåDò昜@SïOyX™Z‘]]Ú$àoÜÂÛAüöÙ/òi=Þá‚÷‰</ïû˜3mÙ(òñÇߌc—ú&+T²âÑ׋¿å±¦í'µ¢ + +o<=} 99îÓ«ë$ ãNNˆ²YݪÖwvZ«ŠÑÓ‹W30f.îQ÷qQßÙÞúÄ%Ø&‹CmžO]¥œ]Laò¸Øu…~ +™æ…£m8{1<~ì·dȶ\Я÷ÎÄûS"ò^@ëP¯7x#†Ü1öð#l0«GŸawE‰¢z4œÚwô à–m~¿8ÁÖèÆ¿Ïã÷$Aœâû$É÷Išé¸/ v«GÇÓ.œo(ïƒÙ.yâÔÉ#ê*ýt§Ò  Ï=8ëϲ¯¦?L³‹óBoĬò½‡‹>ìíýÎw¯ÕlqsÏÔ=CØó +¾»gä”ä;›óÙå£)û§:ªë'ÉëWæg£“ÜÈVóiúWí°[Ä­Â*|<Ä»h¼±ÈC$TŸ/®¢¹ë•uþe­áÁ½º8NŠGŸ<–“éd×zÖtÈî|0 {G(lHº¯oØ$öõÔ k¸{ü½Óss8OÚ‘CØ’ñrÌ«íJUGªF…F¿­Ã}°4qúðbo#Y‡_–D¹}ÁwÕú°‹Éb¦RÀÉ…ECí‰rì;Áak8SM#'¸UWÅo®Lùæ{óÚýµÅV£Ý§MÜ_xÖXÇœž¨Í.Ž#'vsñxâW†qØÈfšžXSSÆÜ–1Ï”1OÊ°™¦s[Æ<*ã– +j–:[Zo›‹X¯OÎM'ÇÑ«}ŸÛÔó(6J=2oãésç»8Ù÷A´k ˜4˜.”zž½ÐUܽ½Òo/Ÿë·I©«ýóÑê‚)Ê…Åø¹ EôÃðUœñØßµÂÌ.‹ê1 µÏŽñV•ð9:IIu¥“÷)D%w:½"ð7{=À@®+ÚÜIÔ ¬Z£iOÄ×åÃýzÃ*l¥«©PÂó…ïL‚8Õ"ïk~,† +œMÄÔÔpš!i5 7¢5Nƒñ°?ã+§5µöÊ0ÂÇSÂ>%ÆÔ«z)f÷‡©÷A¤nÈÔ»Cü‚xšÇ +«YotŽRÆI‚2˜úì3ø¨T5ÃÉ @_àá™ý¸¥’Ñg +Y…¬Å"5¹¢^ËFꛂí ïþ¸èÏç—p¨ÜlŽ~n‹i¾¸W¸UõL = ^;é»'3Õ,ÍÖb]¼QŽÑÊD6ÙP•j–Þ*iÛÏŠ%Þ g5÷ÐxJ6ÓárÝU,Ù\%ãtYtbõ·¹e•¹T´ÑŽ)˜½¥⯠hçÛ1T†IQýÒ9¶EõÐõ"Šj¯¨>/`aÃÚµ’_Ô-7X±ráað•õ²Y7%ë«ßÌŠ*H/,¹ªî=‡3¦ù÷^}꼬vw}ªóâºcC„êlgÅuK§¡«È~ó\v[pÿy+ìNñCmÚ›¬†<úö&á^ü߀¼ÃIMv09ÆO`O°8GfuqÔlˆSWÕIü7W10ôûL(þ‰Î†/¬^ÐiÐþ ”ÜÚKàWN/ÌF.¸XÕßðrT’Ïü•"ÕÊ + b?8Z“ÀH)á=¾ð¿§/ÏeÞv÷è²<{ÖŠ2x?뇋ÅP ØäýòB&}Ž£/§“gÐuvÇh†eÛ$ÑúÝ pB£0vĶø–$ºúÚܾî~n¾Æz¡ØN÷锬Cü‚Ùñtl—|Á"ÿ·jEÝÀõ’ÂVd÷*[,ýžêO(>ØIHÓòk›m²0YM½Á|*ÓÇ„LB] ¥›NƯHôd1~÷Œòê¾~­ßí—Ð…pÖßýZv¸‡³¥Î·žðÁõÛìÑ~R+žQöâ+Þù9÷¨g÷¨5«Nu§¹îxÎO~¼Ç-·ï´ßiWðÿd´ý_™·ã‹°¼—ìÙÑñ…¬c[gûA(_ý~ «ŒµŸrtÜ7s4ýIŠálÔ$7û=êf5N×çÞaÚs;sŒe´X¨{\·Çj]wç +¶P†Ä"5¾T9K;~Í…y[Ó“«áPφ΅Õá¤]\]¥Ô|ò½ÚÇkG:xÞs¨6öâmAÚ­Z ‹ )”¡wWës˵LÃ9üÖ%½‰pµŽ—J|-ñÏ‘x¬ÏOª]Î^ÅW6`<~D)&öU_À{ cþåBÇôQ2úr=Rïcsk°ÏeQçf.C8:6‹i?Ôm‡ÛÚ£”àYÈtÅbÐæ²À +$K½¤®§X€‘È+Øè·"?¹ø²Fß™è*zMþzu9",ø‘»„ýˆ^–ÜÕNîZ¸§Ý÷{î+–Î !« +÷ÝuoÚë +Ðaº¦@uÐt„aý˹ª,löqß…ŸÕ£“Iáüw§aê>ÆøT3§pnðbNC-ÿ¥¬àN1\Ë{¤Ì é…̸”zbcGÛ.àÔ– +8Ͳe"éØŒ"h Å´|,%^€'wêýI=†^AŽRFîºR—\ï„ÎGl^Ó9nþ õ©º_—ú`öpð·th! +Ó`þLÈtÉ<©“ÔJyks"Jsb,•·$'ÇÜ–7 Ib´¤Æ„Í˲m Á«ü킪æÒ +²$®Âê0t]I²dXŒ^|p`² +ÅqZ( ©©§µ»«Š®¨$ ³>\ëæ}ïDp€JnF 2“’’ãÆrÜ!4¶Q°Te.w•X;”‘×~…ùßû”óü¥Ù„žXþ“¬7–u½‘¶žÏâSìIJŽ³ÜŸÀ¿ÏK¼lÅ»´£óuíè3iG盵£ó²vt^ÒŽê¾>§Ú¼MçÚÔy®MߪM¿[›:Ï´©óL›:OÛT¿8a]ýœ¯¨Ÿs©Ÿó|ýœ«ú9¿ïú9ÿ©êç*ËŠ8ößd¨¼˜ÈäV:«ê³Ý^½œŒpÂMš¢TM!«ßab‡ÐÖ¡pà4ŸZ‰¾.]æ­ï­TÏ’{"ª/ãû!ªê,ks6/>:ëºC‰E³a‡ãªóñh0tý„0…W¡ *,¡¥¡3øiÈâ6xúÃlQœ8Åž©[Þ8ßKÕž3Â{{S-„ÑT:@FY¿t _o¡ŽæVçtVý¹Ô±è>üŸCö.GããîY&6Œ+»º£dÅ~òÜÁ@RljB*üüL,ÌaÌù +’‘ÑÎ¥ÃKH¾7ÉBéÏU¯ÆÅ÷©õ +ðtS‚P½:u‘ÔP–%yåÀ¬q™ØSKÊÒpíÖ³Ž³Ìz5ÄK¾éXñD|(À.¬‹š„¹`º¹±bÔ¯Æþl3øʾ:þvt¬yÅüÒøƒ4_ Ò饄`ðñž”¿À(¸ú€Õ+udQÅáñJy„ï§ú}lßõQ¸ÃÂZ™G0§dôÁèé…Ì)8[ñɹ\]©Yö®†P©OfP>‰P<æÀàCkIˆ&K[¢ûú#u#¥:{þmuµù’œ°|›ì[t ƒ$Ã<>…‹ •áä<¤·(kn°o€sÎiau›t*‚@4^?T£b` +¢m…¦Õ_œE sVùtYoìųFu)· +í¡ p­k’ZªBÇ´Q˜,)øð£l +ç´.¢wÊ\+âlª4I­£Œ•(Æ„ño›ÕdÄÓE§!†U“aݳ_ˆRÑ:毥s"; +h–/jfÛýƳ‡Êe4”™ô_¸Ïâ¯ÅŽã·ÖÄG‘П÷Ûzµ’©Á Sqô?%Sâ”jÅAñ†JÐII!IB“jçzˆ”®^#œ˜RdðïGJÒ¦›¤r—¨²é•ÈÒž¢oñàiñ%î8~~êCA‘Q™“ÖJÅ{z”22ÐEb£ úجF7‰Q—GS³ô{µ*ÚèBEæiÁÁ÷>¨¶Bõx´Á{˜¸ðEúij A9·7õÚ ±È:¬ºÚ_Pì«Rrõ´* Y­ v!ù¨‚ÄH<5SÑaT¾boGÍA§QP¯y0ìïÀì(D°®ZK¢M–À‡`T”6§F»PËô6hENùã(9ß¡­ÓïQRa¿¹ÅLzÊ*.Z`nKX^4¥Ýb œU—WTÀзžù&[´Œsž} +,¿_Ì5S¥yº‚feU^¨9BÙ,v +ž¦ +çxÆÚ!­ðÙXô»œ&Ü%«8™išJ;U»D¥¶C#i…w«BãÅr¨Í!©ú³J'^d¦ÿ àŸîN‡j.ìgs„÷íOùÿ¿¢Ýá2€pq”XÍV8\;Ar"ÞÛÑßöÞ +ðwŒ’¹ÿâýô}ËÓþãÿï,+9tsãSÄÃzsª~g%Õ/®Þ·ót_Þ1¼ähpÏþ5J,'´GÿßÎàÎXÆ@ÈÊÛ¶#¶Ø(×xóžº8äáG¶Åyƒ¦—ÛÞºµ‹úú@÷V¡Î7D>—Þ}àD7!ä‚cŸ%M¤Ûo…ÃOg±?dsí{QƵ¾½aàÃþdÆÿf¼••á‡Æÿ¿ƒ omÞ[kÍ{IåýiíýVŽõ‡&?V[Ç ß¡%ØYÑhÞÅ×ETJ9]Ú.XQ¬ilÇ'íÛïÐ0 óm‚ŒZ†wÜ6Àö¦ñ¤Vlë]a7ƒ{)OySVÙÖ/Ÿ-ÚúU¯6šÕíò_;Ÿhç‘WoE‹ŠüÇ^Ñ8à±_AÃb2µ·¸ù0SJ~Z=U§L¢Ž¹éôª¯C´À1ÜTêÛñQB·©ÚÖ^îS•íü°Ò§A)œO…)‡ºŠüIÝ«¬ñ0®žV®oL«gŒ½†¯üòϳDú?ƒ[@ãþíÊŽ­+Ü`®“¶(²m¨üŸ4Wg‰sp®Ò‚t_ÿ¤|›ñŽØü¬Kœ3í|Ç'µu»ó·‹CÊP<#0ñnüZv7~½Q­oUw¶ÖíÆߺ½O¦ÎEžô/ÇÞ;‹œ5°Êk6ÃÚ:·­^›Îh}7sŒÌwq_ çg…z.‰7Vä×8jÀ|îRÖ%ãB cœ¯r—këíßØæoî\ú³öþ—˜ùשÎë£ ¤¼US«ó0$½ÅK§8˶°ÆmèüÇ ÏœøžnCÜ€5àånH`'@‚xÉ*©Áü Gý +Ú¶vð91‰e¡×X†\‡«Y[-*qGãË´â+” &Ý}Ú…A ó²˜âQ!s|ñ]ßjyò‹y”žT—N‡GÍZ½ö¤^ëàY†KÃÅü|:]œM†ó93+èKíI­VÃ+qB"­?ð ¦çÓùH¸áÐt–¢ˆ& +ê±{›Ï~ßt¼>'98ˆ0ÙàÉ¢5Ÿ÷Îa5òÜ1âˆâ7#×âCˆ“Ýnµ*€ÚÑÜÁª(ó1xÃÜê>®‡û–3ªÙi<˜‹ois>ßÙ†rÄC“ž¡=K¼¢>:!s’r8%1(n½¡*eF£+U¶ý¸µã×¢Žógp*¬ŠF{UO㜴'àrlG1½qÿTé¼<ˆ{ØK{~y‚®±^ë‹‹™œéPu|#•V™]˜ó?'G¸Ow<_äÂH°ÅRâÑØ +¢–ös}±Fßü™u“šøŸ\#W7Á„Ÿ/á…®GIi=YÓ +§õ©c`oTí¹ö@è:(X,¹ÁåºpV¬Lë`S+@+0nb5¤)xͼ¨ß(]U ÍPöÁGÎŽ/úŽmõÎ69•Š }ô¸¨^>﹬\”œçw*¯ Øà|‚÷w°êîa÷éÓívIvUöµ JZ)èµv +΄—Â7ÃØ8j>Ђ—m1•:®Ö:Fb}ßMó+_®¥ê8¥f¬Ôšš›ëGS›Àä4®—ÐãµÛÐSïÜš Wö}RDWùÉ0@­8]0Ò¢SU`†5²z +R8½2£ÞË–··éÉ‹9{Ž´ž¡¤8²ä-<­Õf¸¨¬b¹ì1œöBçº|%<¤&ر„O†¤uäúD%Á“’ªC$e}ffaÓe ‡EÖ²D +Zußë…7 …x5žoÂœ€:J›ZôeqŒ]áÌ:}¦áªÕ©€öN»ÝücIƒÉ¥}^‚îí…Ò0B!‚X,/ ôÃd"#™+ŠTá!´"&“½±<ÉúÊx«ŽŠˆ³È°Ü‹yôñcçã +Îœëìë8A‘îCÙ&—:ñß^õ'Ÿ¹öõ† >+^ +ÇãéËÏŠçc×»ü¬ Ãû°±ÿì»âú¶ÓP"Óöœ¢¾~µ?Ìi_LKo£ðñÂY¢y>ÆYS'Z•Š»’ºg`WÜ™>Êõ +5Âo7…à€S-iˆ¬§‘PXHÐH8î‚®^áúö²™¦ÔµD“©QÒöÚðÅžj8æoèJ¨}w§]EÈ^k(×Ò›–=;"dÝýu²/ÏN‡šëcøe{O”a6ÔÔùúó=¦)ëæÚ`î½+:”^ é*EÁ£æؔݢþˆì´¦A“®€3ýæÈ+»ƒ‰Í“aöu¸¬Aæ (»~j¨ÄÚMÓÜ·²Ê¤—¤X#Hâ¨Pwï¤'g6ÂNýÍg›rh5ƒ¾™v¿øý¯­¬Â@Á}–óìú@¦¨(Sz*tE÷²ãyÕ‡8ܺN²ãOIùKúÆÇ3ѧz34FëA^—ƒŸqs3÷lC%\_³¿Ñð9^”à.è½Na5R­»"µ)&‡þ·;‰ëT5sáŽðÃ:Jû#QšŒg8)§î·jä.ï)ê¹ûuÌ8!{p°]ºãüW>µáFá65Ùj3Ò›ŒB +MqKÏö4m‘ºQåþf\]Ö²©¨`„Æ÷î,§ 2"+qa¸ùM¬!Ðú2“ +u´Ó{ZûÙ£IøîTõ$6ï¬t!TíéŽãn®¦'™…œ™ÑÝkœ×ç˜âzðbfnJ(ðƒäÒOæ¿ûuã£=°SŽÉ.Â?Ñ4ÍÊ©+8´Üq{zê籇 èo„‰›#÷óÇ™atrH:d®Jãü,'Á‹9/ä‹£G4²Ú¨4Ï2¾Ž´Ú,;a£ǬJÓ|ô¢?›ùœw?ÿâÈ5qÇ0»©aî>}'¨éò¹èb×å)to\ÒÎʤz*ê(Iî(ÐÇÏ?üΧo{B˜ôiñhZõÿ±ø»3çª=~ø‘}/à”Ÿ=§}ß>üè_?ü¨×ëôö{ÝÞ^o··ÓÛîmõ:½v¯Õkö½z¯vÐ;88Ø?èìììlltÚ­ƒæAã ~PÛïíìïïw÷÷öw÷wö·~´¿µßÙoï·ö›ûýú~­Ûët÷»Ýî^w·»ÓÝînu;Ýv·ÕmvÝz·¶×Û;ØÛßëîíííîíìmïmíuöÚ{­½æ^c¯¾Ws,ëíìîïvw÷vwwwv·w·v;»íÝÖns·±[ß­íôvvöwº;{;»;;;Û;[;öNk§¹ÓØ©ïÔ¶{ÛÛûÛÝí½íÝím‡ãöÖvg»½ÝÚnn7¶ëÛµ­ÞÖÁÖþVwkokwkgk{kk«³ÕÞjm5·[õ­Z§×9èìwº½Îng§³ÝÙêt:íN«Óì4:õŽÃ±Ýk´÷ÛÝö^{·½ÓÞnoµ;ív»Õn¶íz»ÖêµZû­nk¯µÛÚim·¶ZV»Õj5[V½UköšÍýf·¹×Ümî4ŽÍ­f§Ùn¶šÍf£YoÖ½ÆAc¿Ñmì5v;íÆV£Óh7Zf£Ñ¨7jõ^ý ¾_ïÖ÷ê»õúv}«Þ©·ë­z³Þ¨×ëÇšgÍ ¤¶WsL«9²kšC­æ€;«åRü +,íÿøho†êN_»V¸;tÚv¤‚öæ?ªÓkˆ÷»·Ï +ꌗ¨§RYÝ××êÛ=›MÏQqù®*ë”ïîšïNôÝN¾Nºâ–úv¢o{Í·•|›bÓ|Ñ7þÔ⯕ù:a¬ùî¯ývõ×AE°ßÝ軓|·Íw‹¿øæ nGß8GœßB¡o•¿bT”¾ +ü2“XeN ($[ÍUµ¬náÛŪ·‡Õo«àVC¨ˆ[X;üª¥+¹EŸ¦ÿ6ðK"&”zXi°âîcåíb–ï.~wð zÛUé-¬ÖáÛÆ*ÞÂjÞĪÞÀê^gr{þ{€ß}üváûð#g +è»Ëßün£qØBÑA#ÑFCÑ"à +ú*ÖÐpôÐx8½=àï>š’.š“PÓâšjL[Õ® ÷¢×pÖå «¤‰Vó´ž}plw:ÑR¡õ!Ò ×lícÓ¾{øÝŦ 3hΤA“&-Ó¨Q“暶–oÒlƒ7g¶1óM7d¾sM5d¹f¬¬s··Ë°‡ݵ Ë6`¶ã7¨(Õ®ÒF êI=iÆ°!‹›±¦“OÒ”ÅYÜœ…Í4i¢MlËvM³& +[hÚþ5Û“ü·u—¯×F­“å_À&~¾b&ôÖ_Õ˜8ˆióNß[C\ûqïù³¢·¡­GßFômFßVòu•ÈAl«o'únEßí軓|wÄ]óÝ‹¾Ý軟|£ƒØ³ß^ìrÔ£o#ù6õ×u%š®Û`¿íèÛI¾[Ñw;|Dø'úîFß½äÛ¾ûòuéWB¼|D'°9¥Ü…6~;øÝÂ/˜áüÒg¿®Apö¾$(B°vY©Á÷€Ü‘6~;øu¦ÛµðÝÁ/…O¿ûø%‘;L¡Ô„RCMN¸ èì¸6 ¾üºžk§à»ƒ_DÒg¾?bõ–ýÿì½[¯\K’öÞÀùûIð @"ïÀæ.r ¶=Æ¡A-º%·M¶„™iæß;¾¸e®UU›×¶% YÍ橨\¹ò÷ˆÍb‹"âˆ0UùCÌ„ø">ƒ?“?˜¼ ”º$Žyy+€„²ôûI[gÊOž˜ýlè)ÞÞ.|_˜½cðÂUÁÌ…‰;Æ +Ã-‰Æ8f8ïDÉ@¿ q‹ÆRï$ŽóH[ð–¦ôD„._ÊÄŸ +uâX“8×#mÎ[šì‘åHÜ-—«Äíˆûß›„h´qoi)žˆ%Dâ’™¸e%®Ù‰{NBÁGÚÔ·´HOÄb"‰q™ømeyu~Cht¡myWh¤ÄÈ" {™DØJÜ»Ÿ„º„ +oiiŸH”ŠÄï3ñýJü¿“0 © IÞÒ²?‘ÀI^È$7T’hŒ$ILBøGB¡·´%O$˜EbØ™dJ2H'YdÒax$äzK›õDÂ[$‰%“äRI‚餎O:&„voiiŒÄ¦#Ÿ®ÂgªóIzççç%ò)|2:Ÿ‡7| +€ýOŒñ‰ñøMcd¼~ÃØüø˘›_+cé`Ì|dl|Ç8ó +c[g{Ãx|¢12%ÆžÊ83˜ò<2n¼Sœ(ª*n¨Tô¨º…é¬K¨|dÚCP)éê ›¬dÒñÕ\P™I¤¦³ÜTU¶O.Ñ›ÿhØK;-ŸÎûÞXú«*WHDe€ øoΰløćó-ÿ¥áÚ[•/UÉKŽø;ï Cv‘#w]Ÿ_[C HÄH‚O´Ñ^ñ¡u¢_iz’+<²ëQϳ³ÔœE=~:±Y ŸÀÆ­'6p½c#×ÛÃ_µnû0Uß:ï„I±ïT—ztjlҬȳ°˜e ¸dû´ôêk©ÚïÀï:tú`йuþ¾ýô9N>2{bÊã´Ç¨Óú#ôÇ(Ñ ¡BF‡”ýò;§FBŒ"M2ª$«bëb+ckC«#¦°ÃgòU€q¿2#h›D”×7Ì™5\x e+ñÿOÌ(L:,ËŸÄŒ#«ê ”ÔhÌHºªÛ“ÊTeü‘YË…Ù þ¾uõý‰ÿ>©.’ 蘘ýd5TfD•™Qc‚2™-1‘àÉìé"û…Õ[%DàÞb˜xbÖÔh™‰%5fàÿ…”ÁÈ!„5ÊÍÒ™ÕÙgêGä¯eN¹0´Éà´Ž&ƒnš˜,dÒÏ2âfö£}†}hÛ'3Vû<úç¬öíA$ˆŠ¦Úí˜Ñ®0ðâ¢bƒcЀÍ%I…ˆ¬¸PÕÙU¤0U‘ݶ¶Ýæýµ=¦õN¾ÃÅöÕ÷³«Ø2t§îáÅwðîÞ!‹Ö;ªh“˜QÚ>Ý¥®û¦:™Á¾Q±Çvaœ ¿0S¨ Ùöž݄шXT™)A8ʪDHz£ìì¢lŽÙž°B"VcR†)”°R0Õq £Õ…Åá”ÁhÂÓ&4šØØô´›èHdWÄÇM€t’wgõq ‘1r$]”¤|§ç%n«måTLg‘R×1¿,RÒêDÞ~YˆЕ@Úß2iÂŽMlNÒ¯EJ!äL‰”ï"åQ tfv`eÆÈŒ 3F=²i Lؘ—°.0.°-aZƲCÕòGMÁ>)ÔNüeŒ/›]^2LSÔcÞ YGÓX;|vcý0ãÿÁÄÏ´Žz4^øFñþÍæj¸lTÐ>f‡y’³¡tÑxdTÉxev‡ËrÆ´VöçœÎÉ”“zêiŸwÎiT4&û³¨è‘’6ã¡¬Ô +5Ä+eŠúhÔEÜ'ö½¾ceSÔÎÇMx¬ va›Š¼ecÓQŒ%l\b¬»ßŒÝfînªh‹Ñ;«q‹Mß,¨<±ü©ïòç¦ðG±l°š/*gÃxSƒ@aŸof¿oâåéõ‰=ÀïÔÄð– +bÑxÃô©¦‰ÎžáÆÞáÊ& ñ¨$6¬G•‚ŸØÀþŽ}ÆoY(½<ÊŸ7lrŸlvlL³JeorQ1"±)ŸÀù'5Õ¼eóå +)LlwyÃFúɆúÁ&1ÿT6Øö>gÞ\AªÀü'µÙ½eCþ…ùÔ#w$û§;›÷aà‡‰¿l8±cÄㆠ;쪌íÿ;õÓ_6ñ¤Íűï·îµìó¶Çûþ®½-kW 'âqOu7ߨ3díãÚCß?Ý=Þ9Ý7ÐåµgÇý²½ZûôVãÖþ¬½©¶+j¾Û÷ÄöãQ+k|ØÑ’˜Lu·¼c4§)17zÃÑ“/uéª.˜ÌªHd}ì‰]1M€x‚GV^à¬Î4VmhÇÙ5#ΙÈ:Üۇ߲“æÒ8ñ?R„Æ®ëÿ5Zã/­aúiØþí›òº™þwÇî +'R‘OþПƒDwPè +ì‚×A>_‰4g”„!Ä9£ÌúF q€08÷ߎ.Ž,;ªâÄE•#¢hÆŽ,(õ‹÷òßâ v{¥Y,IIUM‘þ­G9°rG3˜ªîuV5VTCvfÖ@˜ j¤š +ÞºEsY5Õè`‘ ËÊÙ5–¡©á„°ÌbYò¨µŠTVNÃÓÙpñ؆Ýð¸Å7 ·ÐÉZÛ_‹s -§÷Hû›¶X‹{ˆѳÿÕHûKÚ··‡(ž=ZçsŒÆé+ ÇJ°ozù™ÝëJÉ9jèr÷÷c¶wºw½lÿßüÿêî8L~ÃRüC=šªpTl„ûÿß‹c:ŒOÇy½Ürzò㟕¤¥•5'êñh\Æžõ9ÇU=nÿosvõøõqXçÈ©®#D¹{!zê¥èöæÇ/¨©é Šê9*âG£nñ§üÑt|ÛGã,~þoÀ=>æ'x6—_“hùOñl.¿&ñàŸâÙ\F(ÅŠgs£H–ù)žÍåYaÅù'x6—_“‹ûžMÂ÷Åd6ÛaÍ̳<2¬ä¨WÆý2²Š™méæ›é웬@™Æ=4î£Y^šÂjÙî©™¬D?²uŽ8¦®ºúlÔXÅC¼E=ÄYL‹¯ }»¨_lÅU¬ˆŠ¢ûØ<ŽbEP\4vâGMpÄÉò/Qu»GI¼ñè1IZTDÔ]χX‰‚@„ùO÷ØÇf©çè•û,Ç–=ŠEãXظE²hàÅíX–c4ËϲE´Ð*ï1-§¸–ÕrŠk‘}¸ÛBúÍ9¾epÙb\.÷£\lßò)æÑa·£]V¤×9ÞåüžîzÉó!«ÝŽ}ñh*Ý„=bêSVb€FùÏô°ëú§úIH†ªó!¼Î±7ú‡Nx¡BœøF”ß 1pb +=G=Ûà;ž•w’¨C?•Ð+߈ Uú§Ž€Ç +w¢m ßþè–Qæ9¢ÌÃïñê÷¨#žÄ1Ó0ñÞP æd:aÒÊ"&™Xxüü¥è‡Ý»sJVùB:ËY%½öýFo·Ÿž£%õ?¹Ò½‡Õ¬ ñ¦ŸÛ¦Ø-¥nŸÛš× +_•GulŸÍõBêÏÔ ›<½"žæ¹æø¨û;ÃòP¿¬v|s°ùIüZõ柤+¬_þ¼ú~¥JÝŸÝ×÷{Ö?áã=~…úºT¶ïQË^RÊ~ùÝ÷¨e/)e¿üî{Ô²—”²StÀWªe/)eÄ¿C-{I)#Îõ +jÙ_'#wcÓ3ÅL®K›œ ìôádÑ8S™:У£å`i‘ž—}eè8ÚÛ…XŽôëÚî²ì+éÐòØk±XdO(âÝ“h¼&öM·nNœBØ”X5/.%ÍÄg'ø +Û2qJ%¾îŸÅ©V̬öË‹Š(tro×…ËCàDÐI`[å#¶Nò +¨e Jyio842u¼0e„M41p8há :(TP¬æSˆîê½eŠ78î¹­3J:*‡¡q pf‘r ð›m;÷?/i’/?y+Ôãë,Q_9ªÑvÿ´ ¼üçÿ{-þ+WjØŸyø¼9|ŸËáóöð!íì@÷ +O'±ìXm*>žØFÒœÜëSŸvøôÃç81þC=ÚŸ7‡Ïãá£Ùÿ¶R?†qËÞ‡¸ÚïøeïãØßïøeïC¬òׇaœ¥…~“¢W.×_KÜß!ÞÚƒ/Yd¿¼;ËûFÃ,Þn–ØspÌ»++ì +XšM®cÉð\Då ñ]•ÚƒwÍö–†wÚÛ>®!î|Gÿ[ö¿·?'”A¯4Ñ»ãÅg×õ_=}¨w›ÉQã>WÞ›Ëâ¦÷xîY›¾Öœof ­ZvýyžÂ*ß\ýÝÿëœzÙBS@äÒMó½!eo¥}nzÜ*k²ðp)ƒêV¶ë9Gü­ì±ì6>Ö?¨G×B^üÄ-Ðä¥"+„ný›^v,Ìh¿_=X4Ïå…N‡n”::‡¹¬BSÞ¦ŽFVËþ®‘uííºpÑõ‡ÎÙúoÿxž–„ìüw*ÍýÜo†ü~…4'Oþ¥ÆøÓ%Î>_ò4ŒÿAó¼þšÛõ—Ííº•#üxÈ ]QVíéœ|,r£v%µw]gïyÁ–%š÷¬`Ë ö\QÍ&,Û3FoåoÙÀž7j™£—«<àÎ’~•|; ø–½sží¿ün·x¾`ï|¼kïpˆÅÞºlq”.ÎòÅ£RüáÒÅ.[˜dñ³äŠï’*Øoÿ=RÅ þC.ww.Ž ©â¶Lq_¢pÿ!¿w©bÉ_+Q˜ÿPŠÄŸãZ‡ãÏònÏÒ!©âÿó/»®ÿ×"—-ryL ‡ÌO)@h82 p9˜%Jè¯eÉ08ÜñÏjnDou{N²¢z©ÜK-˃ãñÍÏê;5‘B’L'™øsòO‹M€_òp;¼øû:зãºWàkøÜxðhŽ<ÉõH±vy®^üÍÏÊ;e?l‰@#ø–öh©.é°•_n¬½Êg co¬á¡Ó/¶ýÆ|•ßø&Ò‡óðwÿøû?ý—?<ü=ýòûH_¹ó ½m¿çNrýµåuÉ:_–,VoK¶È'ÉàZÆx¹Ç¯“w¾`ɽ)ó}¥Ìd£9ØÄ­õJóß³'–Ïä¶×dã*ÄEv¾b5 ÁUÎ<å\ñîg!ªÖ´šà=ïÖ·q’¾7š}<Þ°߈ĸ[(þº,ü-/ÆùÏ­òï_Š•2ïÇBï{=2 Ø8Ʋ\NV‡½"Ù^£j}ꩬ~Þê”™U‚>?Åžú²ð'YïZ¿ËN‰f‡ê£ßØ×Á¾ôÿüÔ‰¨Ç—B¢¿ãó#=^Õi3kín¯½¶ØÞ¶ÙnZÊ?\6óUvÛ4,b“§KWÖ7ÚnÙBõ‘šÐ²nœÓlæ__»JÎܶdœùÓËqµÇhÚ/GÔ¾K»_Ýu+ŽöåÚ=zö(~¿(w¥‡8¿ZHãÆ*¤¥ÎùÍ¥"A˜D岄Ô9€ò •·$ûïëà âAö‹_½zùJDú-Ëoÿ»Ü숻ÿñþ¾‘ÿƒeÉžð¿ÿ üüøú=<üýô÷SÆ\i¯øGf&§…wþÿ(2t Ååáßÿþ—ß}ûC„góð¿Ðkyí0êçßÿëPÒíáßÑ€þoÚ­y(ÿëÃøááÿü%<üû¿ÿ…oæû„hϤ¾¦õÿùç?ÿÂãîPíz×õå5óðo¶ÙÇZKúÿûõã ¯óͶñº„Ù1N–}ûøËï~¥&-¾NaÚoòåY~ª…g ý;饽&:ÓôGû¦?æùš4‡¢?Ú7û1!§?ÙúML•F`CÕ/úS4€jCµoö#mu¨ö }³7Òû›F¾ðOX "wû +9ˆ–"E]&ž;)‘[;i;îg:ËÞÎA{;L,î­°·Áb¨{+íílÀ5“†s ]!7ç°µ3µ;Ìakg C;òÖJ‡66à­•ílÀô¢:ÛaŒó4‡­ƒ´Ýa[;íídÈ[+ìmlÀ[+íílÀè"÷¸šÏû°µ3µ;Ìakg C;òÖJ‡66à­•í|ÀA6gß™ýa +[3ßiv˜ÁÖÌwak¦ã]t¶&>ØÕÈ÷`kFç"Ξ +†Ñ+$H ÉR[ƒhÚÑ<[ÝDÄN\´Ç­A¬ùaë@þ+ÈÒÙ€lÙ·1bFŦbãÚÚ9hogÃÛÚ9hog£ÜÚ9èПŒvïN!Úê0 ;Û, ÅŽë½ÚèÐÎWuµ3С-îj¦ku‘˜mtvˆ£ÛÚù€÷v¶ [;Ç“½ +ykç;ô'ÿ½w§óšÛ!³!±ßfÖËi[;ÚÙ·v:´³!oí tìOƺw'ku˜E¯§ðnŸ–~F”Õ̧µ7³¯f>«½™w5óIz“ñné”´ÑÇEØpNAÔ<Ëw›L÷Þ©„»~¿-#_þëŸþóþùŸÿÈW.Û?”שѫzÃ÷Ê_îÈÍß!9Þ’l··~Òoú^ˆ·íÖ÷l_ËáÛµð{Kà +<ìðã/QªöÐhB;ÆÒå¯ãðyñ¸Ûú±×Œ%úsç™´¾5à'jóîËkÒ7j} +c:ñ¸‡½‹¶¾ZôD)üÐB=”zC{ÈÕ߀2½fÑÅì¿gô—Ú6L"¦­ +9æ5š =‹¯B[Ø+èÁç×Wé ñ* ›C#å²Òª³ ÉšLë#ãÜ7ìDڤкΈ½ +¤˜Ëæë^HV¦³oâR§nHwN¯{›:”™HŠ}ÝÓÔ±t¸–¨E#µcé¼#pû8 +¢‘¤n#¡1a°u¸t$$ ÖP°­¡r'5ê}ÊC Ñèuï<ú>èµ…¾7N%º@TòuŽ2›þ:Ñl@zt2¹ÓL!KeÒJ±&t€H3¯¯KÖ—ØÚ%V¼j]#‰Uýu™:ÖDBÐÄñJ*.ÑŠ’øO««Ð¾Ba ‘!ßšá<ˆ–žMeò8‰×ƒ[1ÓŸi«O¤ö¬t-ê vá +‘×À8)oh85ÛËÌVùDŒ… ‘q¯Ñçù¥½©é˜µ½ ñ™‰«-øèØ5ª\iÀ8¾ZÐÃÇÀã!Âܶ\5mË5Ø4æ ‹ÊªFz!LJ[m˜– ŽÀÙM.dî°ψ7ßü°Ó“…ÙöpeNP2 i +’X?¶*"101EÄ +›h£~_TÐÉ6³ËàU@Gi"l'Îm9[|9™æ縵ƒ žÎrx9ŠáéJ +?¬E9Éàí a—“€ÝâsÒ. ×![MË7ùàÑŽo›’9Â[àÄÊ“Žt×Ig)ÁøÞ£|—‰$0eÞH;>Y_ø‰0°ÂÓLßç —ÞOÚyqUA&íæ®ëWFßر£,¼sÓÁG„!“`…Gð”£KÃÁÑÓ“Ä„C„ép{Cßm¥ÊÎ1ÁH ŸµÆÔ™…¢tˆRÜÄ-UxNAݲ Gcã cÐ…­×q$na7êC¥S…iŒƒV‘p´Ów™m½Q, ¶ˆ˜˜2í½#Ô¥kçLÔˆ$'c¤ãŽvÈQLb;ƬÙП!ù¼`‚w#h§N +Ë8t›<á¡;ò÷"E'è:M&Òµ% ¶M—¼Ì„&™HV~9ɼÏQÏ&Ô0,ýÔôe ·:Ä¡v(ãYÇ5BcÜËA†ÞCdE÷ "qé|à +xÞ…­L HTVŽ@2Zö¦B”ì–NK–fS!ZF¢|È™QsÀóäpc{dv“£"4„uík’|&,LmˆC!Æ„’é¨h¼ÆhÐΛ†ˆu ïèæ=sèX;. +)؇ÁÄ— 㨙_Ä‚ÇE-þ4<þ„ÿb!‚PPåp&av fGh)7 2ÁL#ˆÉ&„+ÐH’ðó*â(0d~§ƒ‚W†œbb†'hi×Щ]lj¨‰…·A´Mp¹OU^yK [ÅȲá.Ü€ƒ +ÚLä ¦ôT*°ö\a0}Ÿöü„ཉED†JÛŠ®³ŠÖµˆ™‡R~Þ„pVLðz7‘0©‹^à&R’ø‘ùwP.bã.“yrî왈C ~•h ¨2T³!Ô@ô 7)‘>¥c±à¡kF  +ß ¤Ë ;‹@Ë*w¡s +Ì”PŸ ! ]àÔfH/lœOu 1zÀQ3&/‰$dÖüëB™ ‚abQÆÉ| +ê.øî$ÆÜ…ñ‚d^ÄÀÅ H_•ÇÕ +ÎOÎ-–’vlODfE—§ þ³([áB¡…§ƒÇ¼A˜Y6ѡɶ‚3«Ö ‚f»Lc`æhÏ-dªðRO¶Ô±dá=¨”'O´XgŸD1KL×*ì*°"jR +^ÂëŠ>;|@¼‡]¾«ø€‰”è'Ò¾‚ 6Ó(ÍA!á" +™BÆ!*1»BÆ!t`6ŒFKÒc2 V²ˆjd1²ìY¿oÉ52¢i¼Ö¦‘5%»›JFM*˪“õ(Lß”²üÑδ²ãt‰¦•ÁÝ5EIc­¬aú›VFMH‡Š®•QiédpWÒì:Т˜J†€½Ö’ëd½BáÏ»NÖ!¼Íä:Yïbô0 zjÆ3yMŠ¨T¬•Á3Õº+ex mÑ®”u•ÛM)ë0ý…èJPwWÊÔGJ®•au\%£WÔò®’uŽÅH®“u˜`zr YFe:YÇÏÅu²Ž¢1¹Nÿ0„„M'kSxÓɈ\+®“âl:üº3ÓÉ€j¸Ó0|'†´ëd„°•6ÉT2ÂðRiX¦“5P4],Õɶ«JÖ`*Ï*Yƒ‚›\çåQÁx–NÖ ¢õâ:⦾Dt2„QñTU'£N‰í—ÕC‚H_v ®ÉºT2pÔ^£«dà‰Õ±‘U²dꪑ!*%4L#C‡9o +f6Á¡a©BΪ!è ‰^i +BHƒ*d +d·Æ‡3Á¹|Á—÷õžÔ_ÿùÿøßþðOp¡ÚŸ„Gd^( |„ðí®U/¡z%­Ö.áô?®^RàLæ*üÚÖßà#„3úÚKHÇûÒéôðsˆ8þ%˜”ýhß½|ú!¬§í»7€`á¿òÿ è¸wnß½ñ™õ,Y›Çgí»7÷_ùËÒ8Nʾ{"4‡IÙ÷ÿžŒÔ!¿=þãŸÿéÿò¾þ§ÿíÿò ßâß`o þüK|xóß^v¿ê$Ò¾†³’þ§€å3Æ=Àè +ÈÀŸ~ù3u/¯þ;\Vü_¸QµFU_DÇ˜È +†0Aýg½”„5)n¯ë,Ê3Çzú…àåªCXS!êÖ1Å]€.ƒ£4þ)¢Ë>%x;…Ór— n] ëA¢L“f$yÐôwL:Mc„âÌï‚4£SÇ) :-Ù¦Ú¾·•½kSˆaº–7š6ŽØoÒ–:©mqôaƒà¶l¹ÒiÜjëàQÄ©ç'B¹²œ>%k–¤c¬¬ç2§ôÀúãEFL#Ÿ“ÑTŸtv¥ PëJL‡¯Æuïy ®ê½-q(Ý£ÙŽÓ0¤1ÂNÒs’‰ä5ë}1ò¾F¥„b´£‹E‘1­ æ/$Í^ ^åiÀó*33'6 +BóoAhþ9dÔÔ‡ÙÎÂK=:4Z;:æ¿ Äž#½Yç×_~2ûõç°_¿LÀv]ÿEböëÏ'f¿þlbvØ“EÌtOZö=2 +FñîìÝÝÙ‘ŸBýé´ñ×_þ>,èp¾N8K:ø‚\0ä ˜Pa¯‰z>àsíÕ©[¹ +’E8ø;.‚2y.ÓÎVºW–{Í¥.è¹Ww50=€I†PÝž!¡4°V‰#B)?ì=„ç†ío†¾}F×LšAÊÏd"e¢‘*)‡®Ç¢/l0ó +ƒ<ß«Æï½™PÈ“8 ©ï×ÙKJÒs&â`ü*áEDIÈO(dzZ§±Áe=@ù… +ÖE™!Ü Eøã ÿJåáæÚýº‰m^ÏWææÖúA±aQᮌ“çR“8Ò˜H;¯¶J°9„ªpÒ¸yÌx{¬QzˆSwý:&êX§ŠÈív[¥g¤ 0@Æ'…âJÓÕ^€V¿f›7FÍ·év[ÏéáÖËxÿð‹W»iRM’7—‹Lb¿aÙâ<šSh,x@nR–Df:¯T\Äkfã05N’‡û›±ìXyµo~æ0¡Ü¤ +`†õ…Þ÷Þ˜©ÌL÷ºXÙsˆCˆë@ජ*&’DŸ¸‚¤ ª +tTB>5ÎãÙ|6y.¸ÊÙ¨9qïb¨Ú\’„*O|ß\;EUÕd´öM–ê›*›„Œ$!It`”äQñà€éol¸-1êÕ.ö6ݨ¬+#4ç:‰T´«ˆw¬‡?:T»Úñå +Ôgaud¢º7†QjÌÕáöýðâßF¹zÜæs5wêá?)CÍBn@Bnî«‚ 7¸œóŽÊ@>aÕK6¸†±2·c¯U¼XÇ!(Ð׶¢cÛ&ÌñØëF°ÀÛh½ÓmZWk૓ٳʲĵE“Š¼ +—RžŒI)¦I’¡mÉ6¶â;tÛÕ!³Á`¾8l0;¶m:¹½S‡`à}°Þç>­óØÚ û!†"4‹]ëΣ‡È_`j= +S±ž¨4Ûlnx¨³=ºE"c0à#Ê0XÚâ•Ñaëõ܆°Á×x½×}bW«àëƒ8Ù9%%ãMç1„"gñgH/±Ln›ØE¬‚6Ë,´–¸GÅex.ÀÞ<¿ÁûÛ²Câ@v¾ºHsªå[‘ƒEy†ò‘åiÄ>å,CJˆC÷Ç'È2¿ª„Œ<6‘OmÃŽóç…ùó/Â}t0¦×iâÜSÐà"UU9*„³5œaU¬òL3x·Ç±W¸`[{8AÚGjœÚF„ØäS¯ x‚¯áz§Û´®ÖÀ¶ðXUªc}ÛU»:Y 5¸H2Dº’C(g ¼.ŸÍG,ìÝÖ-"¾f8ŽA¾<ìÚ=6†|Ä’ÞÞíÇ°àÛ€W·ÛÔ®Öa[!`b¢Ä1C.,æÙëª {AÂÀŽèc?]Á÷¹=ºE>\ùá0.šùÔ6Jüı×<Ááûx­×}b‡U8Þ¹·­ì¬ÑÖU +Fàƒåj¿bÃX‰I©t›ã DiBç Ž@„ìí½"ަà ¨t‰°=6nˆŒ;÷êÀÓ|¯w»Ïìj|}¦ixÈ&Dœ¯OŸ# ¼©ôЋ4‡Å1t8RU©gŸkTèÂRU3î ®³à´õJ’²"ä მ¯ôTLÉvàYßÆÊ°Sm:®€z@ڇܙDA”ŒhVÂœ•·]//ìfÛ¿¥=ßÊÌÌ"\«1¹‡Ò vó–^&þÈïŸ,fÕË•1‚K°ÀÈö‘÷ +T™)m9~û7—’‚á»t¾ÈØ„ì<­©õÀµÔ¾ÙmYgÉ[·“·×à›ëï€EÕ Nm²Â{1±.Ê–#Óº +Óš[LÜk­YdΞXÖC:W›Þƒæ,¼ùŽAу a„•Å¤^šf5 ==kZSUd”áújFGJ,›A‡Ÿ/¦&Å0 Š-³Ña§p ÿfZB ÌÙr^Š?b|dƒÓ#¯LWžJÔÆ­tëô:ÕÏ;¢~~³±±£yÁEj%Ù…q‰ÊìÊlº *-৵-Br Þ²X‡ó(ö  +{ + /tîÚÇÆL±Ðk fƒ¹"ê¢sÈáÅÈ;¡X•ÆM¬"ÒÖtqàY¶Ü€»˜@‚š3*7¼ºaÎp{G.HStn°û¡³ustOi˜ÅüpYò˜lì”͘™ðqÜ“8’S>÷l]s†“E 4õ¹Ž@¤òµ™lÕ@ômìKr~‘Ý‚¯m•Xh>i¹7e$•ë‘伪œˆÔȺ¼,½"P#ŒÉHÇRgPÚ€Ò@—óŸ%¬Hzó1â¬ëXN(ÿâ9p„ïáy6­jÛÉ¢÷3<óÕÄò§6E„„LÒªH°½qÌšyn\‚œÊË˃ÖÁ{›³Ø56a0JÌ‹A¿7Æ3ƒhkDÖ‹,å¶jȧ +Ž9ä?„x«.‹@%±jæxo{l=ü_ÌÆWšìg“¤%E'æhÐŽzs¤î˜w kð™$8“§$“à5åµ%.69µlr\·œ!0ÞMsзŽs‡EyHÕý|'NP&^9`CRÛ.f‚ÎS}&E +”Bsa“Á÷îkA +%€ˆë +89âj\D‘C øSràÅj +}ï»1FˆïÑ\_-JÓ ‹º# '£ ;5ÃA:µ‰e£+bÕFÚfä1ˆÇ´:‹E&—ºÙò®z¢±¤ìçI²ZCEø[okÝÊìÊ…ZT[-gŒ*ŸçèØßlzµwí#NÝ¢›„¬‘ b„$-¨dòåipy6˜éb…“`”š¤¥IALLE4fOF Ôƒˆƒ^äxß%Ýb„àÅ‹ÞËèJ¤\ÛN‚¹èv:ýE=‚šFeÜ‹øbÞ›ž¨Ú€£Þ î± +|ï6ÆÖ²À9°èÙdÇ("‹Á…=ˆúסEEC îþ[H3KÍ,Ü1€Æ¡îñ—ˆä¶!=›¤ +æÎKŒèúl*g"ˆ?Ì´ô!)^SÝ?‡~}oú¬:Â\‚ S"P‰Àà‚7Ydÿ…w\¢‚Å„.2ˆVj»â´x=€J2Š5øÁdF%,Ú\9ŒÉÓ—E£BŒJLáá¬bW#dBí6.XW ª‹NÉz\R*Ç9+"³XŽT\œ‘D8Xõ#Ý kÏ\yÀæÑ\X”èg¾ZÀ Ö"djÅÃ@‚ 牄¨ähëyM꓈ƒ ðIßß'×kÜÂ{’¢$ÚïÑ=× stýÂ6%@§Hr˜GCpIs_PI’°hmï<{ŸÀ7‚h±QTä?ôlÀ̓ÇØ°7æRغ½³Ç¤DyR¤ÁÙ-¦k(õ嬒g³~(i]5Xž-żª¶‰Z·Ã¼L}æ+X@Uwuƒ’w –¶«óHFkó™ˆñÄuM>™FÕªJÅ¿ñŸæ>í¾'¨˜ÈÄRØ4;™Êµ Ü]÷éü:Ä–#²H8Žµ³Æè؈=élkë² Ý@ð‘³bN¦Ømœñˆ +ó¨„T +';j‡ÅDÚã8mDzT +Àn"ìtœ¸ìiN6‹ÄŽOqO PÇ5˜k¦=?ä Oq%å‡QÝï`€mÖ#ì€);¸¦lÝPìMôçO³p„ŽÅCDý +SXMƒ'êÙøI_I8³éÅYðéY‚ØØ c`ÛÂÍúR'ãª@BäK©pœ4 µ8×!Ð46øé`y{6Å +"A‹°|.?,Ô)ür¯_èCi’”'J,âG·¡dY>Ž¾½³UÓŽ +Y*ðüãнЄ3^)³^¿p[¹â2ïÙ'ÉB7hé¹&âYQOtKKs Q•|MÇæÔ›’®HDC¨~;â^7"ÅI·†Óð9«XÀæoÅýìvõ¢ù÷jjë:üŠJ˜QƒÓk5ð‚y4LÑLÙÐäòNŒÓ”ÍnÁ‘æ^„¨ßüý´jɸÈÌÝ#0Ô›ƒòYÙCN܈ɥ–VÈI(jñL),Ê4È9­gŽÅÀE›Ú¬§Æ˜p=õš¥ØÛÕ +g+Ëp5½ºË«T“A,ÂôE@ÉõÌ:›VƒÙ#HjRßBKZPqáúŠË9¢¹054÷ƒˆA¤jQ=c_æ¢Åõ‹×IÈÏÚ|Ò ¢\ç vf• Î1ôú. ÆëªÈ}.Æ­gÞb†…Î càäM>pî/ Fî5¿÷ƒ1H®á(N•*äµ²¹¯E|o¢&l¸¸¢E×jSˆµ>Çð+÷R“:EˆûÜ·ÎY¿Eù$ ²Õä§Z•'Õ:3J.ù©Äsc컂Âpé©ñyÀÖ\t-L£m9 +ãYkÚihÕÎd+U©Ó4²H§(q¢zÒ«¦$¤âtîD?˜pý¢uþÆÄ:ü7™×ó)¾>±®®o¦ÖAŸ ¥BŒ0®7ªƒ«)«×rÓ‹ZØ +d'רÅØͼŸÚP–_‚jªÐRÌð“ônÂ6b§¦\Ì.v¯ÍŒÓY1ÍÔƱR%|9Xü+1‡î’†¤Æãá&^¡IÉ’‘ÍÐ5îu°ÇI3²¸°â+6×s1?¢˜k*k¼@çL´ã¤¢íÍõÿð…Ô¤CþŽ ¾ô®ãÅë–p‹Œ oHˆ<*n›aûjáÏ@–Úâ=«5“oÚiÖ³ôÁ“jóöT<“åj™´k½ÄN–IÉôH&?Œ Ná}hóµÖ +”_í iUƯ‘¢¦¡À‰ly1 a{Çœ*Óê× ù +NSî`—÷ýßÏ™;oýXzéw /-ß ïûjŸ6ÊQ¿…tüúãf“\¾Án"%9‹0¬0g”‰ªbzSøó ŽâvzKå¡Ÿ{ð­£üœ7e¥Ó%ojhƒ\ܵžº^™Œ]z! b‘%vU3eÂeMþ™ÄUôÉT8s€ªæ‡!ŽÎÀ¡E#?‹à„ ºp°TN3\~v;ˆœG‰JÅÈ,T#I*Ög“ƒfdÛ2+žÁ–,x5‰¡ã³ +ô4½ojKN³|® ò4Ê~ Dä³±Y]‚ÆB¿Q£¬öò1Ë’Ìã\UÓFâ +G(J=|6ò¬=³ÿùzX—¹`è2ÂdÍÖû¹ZÑ}7½„K›E <6éÑo$Û6I_sLÙ÷W”¥y¯¶eX›™°ó]ê&U6¼guó CqyW½À\{ +#8|¬ž]m,‡†ª =C“ÑÆÐIÄp W^òfÑ—¯¹‰°§Êv¼]eßU<.ü† +ÌûàSª¶ô¶Äˆî’…`™›Þ!¹öTM9'ñƒ8ÑŸú¸ßzÙ³“Á;=I¹ ä„?åFåºÐº5ô¥Õ<¬Šï‚ð, +¶ƒËª˜«0E ++±¸Säfv%÷øa×õ©XP߇fù’ºåßÊ.,-ƒá¾ÌnËØ)¾â¬í)‘‹VóKjUâ==„¡¶ÌÞ£kê2SÙqy’/„ÕÖ6£Œæ¯E)Û&‡SGÀ×|F3ºÓykB¿& [z¥Ñ5Ómk\4ó)‡W +—,L°žl§™TQîçAJÐþ¬–²¬Nº  +¸)Dï¹~œ§ûYÔ˜Ve—´a¦Œ>–Û!k2Ä Ë9”ät¾lT‚Øš.Teðn,³œbZ“*Ž":ÅiQCcË®qòƒ¦~kÑ(K·o÷ÖËN`õ*’šOc7üÆH‡¡'ŒY+GK<ÃXn“ ›F)E ¿Õ«}ó,Ü<5·¦#CkBá¬^‹çØ Guë6¨Æ‹åÖFTü™æÄãªrîá’¥šå~éB}Â0mÛê_-ŽìVŸPùf#IUÞÖëÀˆ<ƒâj(ŸÌy¹0̦A›|{€÷V’FŽ0q™ ‡™Ã%yz±IÑJËåÚnâÄÕ£ºªùù³¼y‚¸Œ)¬§lqmTWéêzƱÖýy­_¬mÒï[ÚTH…Ý/G¯1µØbmFòP·¨oF·›»ö›­õõßÂ…›CI­ÄbQÐÝKM  F½ŒðËí©Á<9âL‹92CšDÕmŸËãP¹~¹@G³|Œ ¤™K\hº ¼J]cº8‚bÅ• 7ì]v_('ÓJÖMNæ U9Ý@ÅZ3ãûÝ%¤L +àáf) +œVìèjÍøXóƒïCââ|ž¥"Ü_äÔ +ÈnÃâWºp ¦JhâË-¤/³óDbä‡ôqƒúk‚Wn|Å¡)I=\Q¢d½Jð‚†)Ù¬%ͺÚ÷Ò¬â“A¬ °ÁZiã ydà•È²r{D• +AcÛKdÌ +Hè¡m9Ï\Srij·08 +©AZäzh¤ÜB‡:HÅ '«Íå‚OšÚiŽ7ßzs|w&!ÂOùv)õÄÕê?­ÁšIBG<4—¯ðâA“%Þ°¯ò½Ïch’m~¾3=¾õîoÿ #ÑÛMŽŠé¨Ž¼îí«S—j(aC»øß-ö¥ñ5-–/gS/`Tˆ~¶B<ž/=šþ²ÂkЛøL9ÓhX‘™›ÀS.Üi`!Ò¥b1z¬Iî°Á«|z=Jù'‡Áªbñå""j*¢Ä‡2úoeÊÕËÍhEz.>Åbx_MßÇ¢ïÍé{ßè{6ú¾×ðØé~›7˜ÁMà9Död6ypÍ_ŒPþí?@•³¡“ù1‘¨Ô¤·Êµ¬êd"S59SÆO÷O¡ÌY+—à.‡W8G’á0%±ðƒ†Hü ’²–'7ëTÐd<Ð!Mo¥‰ É¿^¯‹ä#z6¸{b@jÍL†<, ¯Û«J×”mØéÌšcóŠMkš~Ì·ù)¿?¯ÚåÈ°H<ôšLûò û2ªt5ÇO¿± 7—îÞ:ßÚ”›ÛwÞëC¾þ +¤½I¬¯h»‡Ôk@•]ƒ)‹¦þ( C3.ï +Iw$ª›²×é^¾ýšT•EëÌRÖ8©j*§©Šè_‘ƒC4šíâ=ë2j9}•«¡{>›FóRØ +.x† µPyNóø늿v fCë´ ¹­ G½÷gjn÷xʉ XE8}$~Sh’ëy)žÇ"B‹ò^Q‚T&žîIѶeÊåj•àv‘¬ì¡×þÈÒqÐ3¿’%ÍoðìELŸú¹ßúÙBÉÏ…&îx3ƒ80‘².9pöm“¬ø_kˆ4LÆÃÚ¦‘­€ml¹L|)ÉeHæMáø>Xó߬VØ¥€-ü%õÀ9ÓêX‹ $-‡øÑ9£$8ášQ-X’Y|paÛ‡x‘8°4ÅìñRSÊ÷å(Âã«.•™4ÝXÅ°“Œ{ j3QU¨$ÕÔ[PSκh1=Y`¤œPðøæRÓŠ”öáûü,aOÄXõ¦Íâªú¾›µiŠæÔêóÆixUnÀÐÅ· hya9¥<‹‘”ì!2Tâk±R1›êXrÖÒ”u:TåÞ++ ;äŠÞª©E'2‡Î2v%‹ïw…ï°õ˜e®WÁGpóü<©„xYø‘Õf °I…Ù<¹)Š©À”í’Öó‘°q¾5Q?8ÙF`š V僟tÉ+\uãÐÆ|Ió™&¤U ðêEƒ\ñ:‘5 ÃÆu:×Þà þqU¤KÉêp°cÃJgùÖ2ÏúÐ(mÓ=¾±(,GäÂW)}«šþ+±c ¯ÀÍ\=[j3×+æóÆÚžç©G•e³[B@Ý:tÐ]ÃÚ9„(T©lš„xcÊ6ÜnAöY¶rlôÚ|G‡Y ÇD®±¨‚ÖlžÙ(kqw_[ºs€[îî”{œäxNÉçæ¤'9ÖfÒ„/‰;Æä†óÂFÚµxI²„:-¹º%ÅCH|jãË —4ã˜å¼úKÓ ³HR‰WõëVå—/…‹M­UO³zN;4jØüûN"µ6ù¦Ò`b´]0Õ’ô¿‹“صô “NŠýÄå¯ùƒy䇖 `­«Îå1H"8@™i1ûJD ×(¾bC¢è5O\ý*UnZf8iVKNè8tZÁ­Ê[ô~aï“Þ%X¼u+Ÿ¦qü[¶E«Vr=GÜ·#üŠ£šxæ|XÑ%tÑôä%ÎD^Þ²#ü£Ã)›\Â(À”«òŒhî”r Y)máñ|šÀÍr7$¹]€³›‹ã¸CÞÁìJÉb­ù6ÈîE˜ók©™‹yw“jÂT²‘- <µh„ÒÊbƒÖ£á,t†Ö…(EÔLYw +G­é¼Bò“úâ2Aã‹-§F䌦×i2ŒE!ßOÖýn [|g_µr-+®JÐ''—mÙKÖl²œ²ßf-ÓÁlkZ¥'ʳωWª†F˩Ѐs^îbÉ…Ýï¡kˆI +J¼3WàÖ +W›èìºþ©Í†F]=š…H\¤¼(Ib;ÈWO1pŒiã·Ê‡êæfuzÁÄ¥õúk4$R“¼H%ßÿµ²Rà΢´!ÁÁXG2ƒ–Fçsm ó8²x°¼ò"Bñg3²j$Kf×JgÈÁ(ž¢ÀÄØ"¯4Ç¡X} Qî¶ßJÌaï€ÔïSSK§[†bÑg[7áÓæL\È%YqlG鎉Óì/#;ì°¹Ûó;Ø‘Aï¢åÅåªJ«v¬ºñª\ùJ“ż¦x5Ÿ–½EËÁžda4°V/€#CéLi&csn”ç¥I±6ð‚鹶\Pcj[KžêVÈnOÉB^ Õ%ÙÙê0;Iݲà¦1$6õdÑêAHÓðJ‡×ð×zi"N5”ÔLÉ.×ɾÚ@ô6wÞwÁ™u^ÖÙ +—w¹Vïæ®y'¸í3ø€Î0ȵ‘î-éjØ«bDxÅ&Ò$…P Û4«bZì+Öœ—!Q¨)7É ŒãD˜“eék•¾Šºnµ6æ0#¨w@²U²0¹ä·Ù +È©¹«ƒjå +ÕÂ<ŠÚ+­à'¨U©jƒå­w3±N„òIÔ ‹Bâ) +'«•KÖdSÎù¾Ø*ª²Âò{´²«”hÖ|,dæ¦ÈZ÷+^ɦV˾Eí²¤uÑÒ*QÎfX¶yÈ60È`9yžó©WËjìd¶ΚÉI-»…‹ØXØk‰ª7Áea€¦ÀÒVþ_ªemE,]9h_9ÄEÍÄS`‚bêîIRþrmEԜѮT(Ä¡7‡hZq–`æJ'h¶-ZlÙÓ­¸®ôÉ753ó}#ÕWÜô’NÀÔÔi–=•>fÉ«ƒUIÞÊ7š©ròÍiBwqcT¥é‰6,WqßPøV’m”œºŒCuÆ,˜‰º¸)ÄÃ*m<†bn5Nâ*éÑlÍŠšÓô&TïAmÚ©y0*Ü’ŽšÚëºêßTqåØ朲ˆCÖN%Û<¹P¬B’’Ø,Tþƒy!ŽàÖZQ¬pŠh]45KÌAjï…ª…»TqñŽ531k‘klêp1ßîõæx'¸SÞ!´†Í´¼W^ziE;­žÈU¢ÔþÔu=4ßÙbÔ×Õ‡ ßî§JÞ¸‚™Ÿ?½¨Š€ ?îjmjš….œ¹ç +VüF³€Qi:%/Ñ]„ØqbŽÝ´Ãvô{¯–­ÁêýGÙ, +úì„<Uh‘Ã% 6‚shÜyéWÊ¢¼#zAˆhr¶7&V°®RØ+ÍôÑ¥¡Cl8E`U~ëçã+õ›ÀÆX=dÕ +‘an+)ZMð¨WÁõhÖ=ØZV9óÉeO­xS]1{\T¦hÕ˜£ 4\ÖKÿtK~e›®X[x5³ruPöOó£“\áóÁ<%\“Q¤cµ×Àp.3kYƒ÷Ø­£uzø¢õfb¯Rp‘ B yÙú àz˜‚”ÜäéiÕTN©Üë¬Æ/dÒ$ ŸqÓâƒ_–Ü’`w•óëÙîôªK +HTâãî"eÇ*—?ª8¥ÎŽL_sAE›…­C+H(\pŽ@­.µH¨Û›´à¢T¢»±ö àA@=±?€±±7Z)Cä»zªáŒ&ä¡ ? ÁÔH…§öUTVeà䕺¥Â —HqÅ…ëŒ7m:¦—õ^@Î등Î,=¬zÀÛ0tat›ÂZª?Š»h¾°#[2¢”Zò"Rûp[«%4Ž +ËÄu#º·¬Âô¸¼Z1ucÀ}¦ÙMYjÊ(¥kVu‚Ã[œZÁU«?Ú¼ž€j¬å4úl7)­ªéS<øÖüê\ +&ª¼Uà×tô²µ¼Ã×½¥¯îlEõë*5\TwÕ°·©©{ +AšÍ+>Û%+Û$¯VôÃJâÑŠ‚0؉àI~š´Æõ÷ªSË÷šû52V[AnRUóí±qŽ–¤o¦6dª]&Èâ¯w åh½sÒØÌ> .ÊP6«®fàfíæQÆjÄCÔ¯• +VöÙº]†9!Œ若‡ˆèÍ¢5ù~sÃioÿÕKòRMÚÍ'§ þ„§ +E«V£yTKm^-&ò=zÖ3~=ÇTÇÍ þàU)8ÑØÉ‚Êm™Ø»ÆiÑ=%=™‘ê¨*üÁH£Õb˜r‡·•Ÿbº*Î^¯S†fÎT$5Blñû7ÕxÞºËüË +ƒ¼; i?ôp>K¨¼":ñƶ5––ISó»TQ÷š—å;ì• +ê•ÃZ¸»MeA +ùý`³'ˆu,0˜ÀÓ2lÇYäº>·œ]ã…MàrðÔŒ­x?-uŽä·²‚S‹EDµî"gæxëN‚’Dk"A¬ˆ¿h×ÐYLÕÖ­6––Ù l÷‚@N¶VÁ¼®’H´îZ äz>¬¦KL{Ö6RˆD°„\Ô½@°ò=.Î× Ï/rççƺXðŠ5û•M稗»{Àê<‚\@èZõtñm¡ÐÒ*®-ið(j}Öëø°¤u;»›!¬*/(±8 +15•ç…Ç몟ý¢f5¹&EŽ~µËñ  +äheÔ"f›é2§–dàK“W¨HviQïÍzbÓ€*ïE,Ê·yÊÅšƒâº,±Š±½Ê•Ø ¥ œV¥ìz?Ø)?¦SâwVt”«D-OߊW$CËã·­~ãŸïÞ¨ ©˜ªÕzèj3ó0n\dàáSlÐ.³²ŸôU—+sÀsËÓÃ=p+kN€[Yû Šv™Ë¡0>H;ï×I„ìWætk(³?ܪ ”&A¨×Åy¥„`Àd£ƒrRZ¼´>‚Ù ’Ôpii‘Ä%#YÖEÝ>!/ô=±,²˜d½‹!º0ÃNnNF +ZXj1£b3 .ÊeãX˜–¬S]×)'÷â³çpӧЖÍÌXo+Œz´ *œÈõåÁ²ÚfnãX-‚Ò…ÔãŽZší³9öùf‚/ÜŠ;“dÍâ¹Î‚Úí2ì€Ccl0ýìjš ÍRÝ@þ¥qè"K|¶S¥ü[¨^j +dNâZ°¹[f?*Ÿˆ]pµE\-Ãg«y ýH¢ÉŸôÒ{Ô7—~¢Þ+í‰î:›ˆììl7’ª6ÂÎØçºG.Üx ‹ð×ÒÌè”é7†\%F-‚“ø‘®§UNg©PÎÆ”8Õ‹ysKìÔ‹wŸMÇ‘+•#ÔÜb‘ILš}®ë6Åñ‚d»M¯i*Tlb¢öKR´$^ìë4L ˆH×ß.TÑ{-.HNž&@§(f{Dël HzuÖ+VñTŒSôÉ÷æob<‹YäKÕÝërm¹–dœeݨŽÑ• )øù +Õ®>Õ{•b—XóßÜk%ÊRGÁ5,Øš»D6ø­U\wÚ•¸+䲪ó¨0ÁlT–C×õ‚£¡è)øE‹r K™ÅE?Ônã„QÒžIqÞÙø&çæù³93šÅ/1ƒnÀ‘î þ¬Ó~°ÅËœŽ1ì÷{sl 86 »ƒ Øvà¡U³,,@Ùl=M­mª G*»1QÅóV¡·?ÐXµù¤&VP +nE³ÈeZ!ŠŠ©è$ẇè—Ö7“&@‹{‹›-"øún»’%–’iy9&#Ü3y‚‘†_Á¥?‚N3ú•˜'Ä0"¬%05 !0¶• §áÒ z#ye1†)WXil¢YÔ*9’¤ zŒÛ¬>USûiÐUé )·dï‡w¦t‘¥¬¹YøkÞšjmylãÊÊRÇü‰ +Ÿí.öˆ«Ejâ³e5Я©``j‹«¾qBüçЋB²úÒ 8ƒÜض¤æÁM‹`A‚­?©ƒÒÊ“&ŽÂe{[w]&ùõìãw{2Á«,J¦èAÆíérÓ89°{úÓ*øŸƒD¬0Ü.\PVµp»E?€Õ3y¼"ôäê&¾òCꢡNŽw`{‚MMe~ð=—îS×àȺܱ©nÕ0r3˜¥0§íæÛ´—ê )XÛ ·!rIˆ,ɪ–úõq‰|V IÝØu¹(’ tµÝ=¡‚%Ü+уš'Ù£g)š{^&[IÔUpƒ?rHµ^P6•pÍÑæ+ø†×.&Ü ˆRŠ43%æIW§9Rû‚Ÿ<²Ë¨«l*¨’ ¿ª‰ó]¯ÃD±|_e¶B~6'¬ùt’ç}]¯†ÉM±›q·kd†ÉM$"À°µ<±&‹M¸ZS#wâ4Qˆ0ÃD¡D$H•<³¥`•w¸Ý´‹ é<“nLÖ +&ØßfµIMWNÕnq°øÕ=G8D/×SWÚ»(HúãØ.¾K×ojCá,Iñlm¥/&»<±iI_m DW{ +_Á"0Z"] ŽÈxoÛ$ªr•jøˆCí,ñð…¥Í®sʞ݂ ++zÑ3X¢Šà"ÂÕÖïâäd·—š» Ní/A|‹Úpž6à^/!ήi×ZÊ‹ÃÔ›ŽéìSôšL(X§Q}À"½°#‰©«•Âeã,Ñb™È„ad»Ö„F?ùð¢ÒT 0I^Å×!émb‰sε5p>ؘ£\òˆpµ!‚EDŒyÑn¹x¹LDÌ_ˆ[_ŽÒÈ—¿+™Q?i솛Uk+P‰€ü½XŠY£ßœÇ=X¶ö^rhÉfB“âš\©G ø”‹úEXu•E0¶ —Ÿ~ðæÚXx~J&ÔV-+,@»f'‰{ôƒíƒ$Àõº+åA«Ý¥ÀnõdzÛ°‘J +£a00)a¯öø Œ¬ÇhIðËcšj–™–(‚0h•=cñƒ_EžülK9‡¥ã‘Bc;Ç—ô2•àbIÞ8÷‘¨‡8V»¢~kÿlènÉÕ{E¿ÅÒ"`7ŽV¬-Úõnì’S”íÂØÏ»¢‹¸ªj8bLâD¼^ˆÏ–¿&e”_-WGëÔÑru´j,W?jh;\òõ±Hzk‡ÊÙèë‚<˜q³Râá!î|æTj®%ÏÙ•=‚ò$u$7¿ÑWaŸn÷'xS©®¢C Ínù­Ý®ž¿|~65к(SµÞsÏìó8..½×Ö¶˜¬°D6¡k5µóÂ\ä¼ünׯ7"ëÍÖ+ä|ìɉV +A½ Ò瞯z:•°½eX†0žüI|:Á/Ó]ˆÙÛ«“C)D48¼HP+Ïíᄆ¼ó|êßJ¢žáMS(Ûh­@x³O”¬&Ôˆç ˜døŽ*ì‹«4-gV)ZT@­Ñx)R×ÐÒÖ TT e7Ê'ƒWÉ<²M@µ #ä×oCÆâkÐæS­~DÜ.ܾXɵxâío ÕMô»ÂUY,Øí´q³J¿žDXv-ÖtsÞzÀ¯ŠåÈš)ªYd­ö7€Í_:ß÷ÖàΚ]¯±Ã»aWã6ƽ·®5Ö÷jHÅ^1öáØ¥Ú:­ÅËFðúXïŠóš”È ©í=¤®ì±ÙJ7èTìÖy~S2”gÉ}z9ppY'©NªÒ‹ÒŽ*5|ª x…kì¨[ÚB×8eGSËSô&Ž‚!4SÝ>Ú–CSܸ1û›™´²qy°ûÈ`r +N¦ep1Z‹åá)-o², ±alÑþlú`ñ*˜/ñ“ªŸëÅP:‘ELB¤lç`APP\Í +‹¾ˆÄ‰8:‘¸EH¯)îuö…Q»Ÿ-Ø¢}¤ÓÚ:aTz¸»c7±ýÖ¹¸K¶ïÐø/pc.+ˆ +ƨˆH5b"[°ÿ³+-Yé/˜ƒ¢#é±Õ`¹ÌÃóö/À Dö7f!G* #<ÀÐ>Nÿlì ||z/«¹kqÃQt4.VŸ÷e»Z›TK+àבÉã”ïîäî-F°ºqøØD  V@Ç#$3ÿêW—»2sX=2ªLIe­$ØDƒðº¾s[äâJ9<»o„ ˜N4\Æø4ÙÕ•=.˜(¥½ÜCvZ£Y1 Íïo¿íÙXœ—rí‡  måefsÎÃ{µ& nþF‘Œœ³¬• +:ªëYëݪ[õì×&£ƒfÁ¬€ëåÆ|¥8G[2P+ë7»JZ2µéZ^zëa\õ~𠼯Ӏ¢“P{È(/R²Üí%3«›€¡«LhH}ø$¦U0ìZ2]Õĉdd˜ba“]4ë@ÃÒ¥øëolÇ;ÛóQœ +_eÄ‚«hÈ}M³*\i!’$% E©„ W‰²ôEÓH§ŽsÛäزjMZ¢º˜]À^…ø0mÎÕî›e „„¨¼šQGÀ ²«‡WÉ@’n-¡P½%2†Ö6 ö°ÖM1 ¸Dƒå“I:I‡;S|œy¬Ë€`Š¬=ëíÕÀ»ª½:÷Éî>ëšðÁwBÖù±m íXèÑî —@ä^²£ñÔÅáƒsVG¸ãO¶Þu}¢¥”wgãÕ IéÜ–Û9#9¨ú3¼ØBç8Œ®ÚŽÖ¤c`‘axÅbª44¥zÓêAê®Ò÷0TÌÔ»R(YçÚ{-xêht#Zý€C]áïP@üðpj‘Õ,a% +¬Þtlõ ¥C"ª¬W}Ù›(&(l@ß:ÖnLÎË>c%æ´µT.€æºæ0ì–á·l0Pø €ÍwCëc¸ ;Ü% ôTÝÈ5x‡XÀ£ív?(§h®“t1¾Òx‰^Jt•<èλ¢D +›l¢1¿ûúx7Ú¦f@óÃb|Øø¹cÎÇ…ÅÀ-ÛÎ5¬æîɶgKÐöÊ& ÏÖ$¬ >=ZØDzmi›‚Ó +æž!Ìå£Ã%¨Àà +Ö6ëȼ®©½cïuÍ7K¸N8Ý ?Uš–ˆÓËs1\ äƒí¤š× +°]ë„ +lTëÀhIÙ"yOð<]TXÃ2a¹™PÁK¾¡šŸ¤,Á-¢îCéÕpa » •”ξ-ùtx1EO2CùŽgÛá)!”Œ½.¸ÖzëˆwSZž6ñVÖ†.jgf½Å‡ +ë!Puž£z뚸^ýŠI6§úzc–#U²ôE‰·D¬bL£Ú!B„’áj3\õ°%kÎ[ n'£»ý¦Èõ·èÀêàÞ¾F€ýâÃO6e­jš”Jâ•Tâ^9#¬rX…8]2 ™WO­‡ËpKµÒ ,TqÀdœ™IëêÙj8—²šúóQ(wšl!ùbxº#æ 9ÒEk»Ð*qb§,„&¿Š=IÝauãí*2\…Þa 2H<¾“bãÜê!Žž¬‡$ñ¹Ú¸†]‚yÔõ¥Á:°’A‰‹’leË,~Í–D“ã±$‹êpls-Û&>;¼Z‰s&g϶´±Xv¦Hë Š° —œÜvÇ8æNZ­]ÙW- ŒœÕW†/x[G½†M£÷s_Ù&Ea1²¨²Vƒ?<kG¸Ÿ¡j™½(É>Ý0…e¦Ià’Ë°y%ô:AD6cršŽÊÎä„â28k+©tªâÁÀ¡$¿™…áêi–%Ä@5Œù…/šÇw°eÙIö4E«fÙÕ =^Xm/·mOµ(H˜‰j–%n,$ { +?Ì+»šÍðdkS•ÐV«/ ªj×û°á÷k¦k³AÕ-b¹X%ÚäYY +-t3¢pAx±’àBä´¸u°8)ÀýŒuˆV’ÍGâM‹åΈ€›rçF,®.4|*Á*p©:Ó©[Îó +j?–xf^) 1‚Üaäâ‚:Ã^½±P}!–­›3€V ®:zöâPXðèœô´ ÛðmßLBIRwÜ÷­L˦d¨Ø’Eúe +M–ê1Ë"cE¦‚™t¬Hçðäø#,ç\Ú¶iÒ½õY5n`Δ|â§Pà¦åÈv&Í:åY™KÃq½¹–“䲓MLÉ઩5»Ì< 33qp¨?£ndŽÅDƒÏ8¼ƒ¦£mJ½¯ö`up„û®%¿p^o×ødÈÞª zšÕ„Ò²;`SR†ƒc}² MÅoXexp°n´\ÝÆçŽ@xvÖ,´E¯µÅò=dv»}ëµj+E*0¡ÌËP‘TËÕó2SâV¢óéû½&³N¨¡Š»uÃ\`mqëaXãzóÆMQE›[±z8Â}ó¢Y¯áfJëȯ²¬"Ck•±«+ˆŒÆʯ9lKòÍf‰~‡³Õ€3.—ÆÖ-[ÝW ®È4Ì;4ÒÝÆЇ­Ü— X]snCâù(l“4²D÷S+ÑÀ +Sý ìÌ{ö¼=o¯âÛ3­Ïbë]ýñã&¬çpÛ6ÜQ§rOB/3 ¤±ñDS'ÓPöÀ±–ÉŽßv'@/ýËp)!Æp7uZ}6ô:Š›sßÎœä,•l¤×6)ÎQìqU + è›®¥šÞ +C´”0€Ù±1Vo™g]›®ªw7`„ª}À˜Ëõ¦(25Å¡Ûi² Ï÷æ>¬1á;“üUËf‹ÓÂx`â18_MŠVfÏ–WtÝÄ)MÁ®Úe%gþèå† &t¿LšábÏfá¨Vï!iM4ø]5m@gA’~F°Zhƒ+°6†â=Tkɦ¥Õ›-$XJ€qZC¥U.oå4gq·m^ó*zl³ß(ŠK°zßÔ( +bø0=,¥ê·m«õnùžnïaƒWÈ“6˜¡ó¼ +ÛvðG»‹¯‹ÕðJ‰PÐ˹†]ÉÅ…-<5Kæ9{깜ÛÚgIÞEÄ@ëfp2w W»YËõ¾¤SŒ¥¬ÓºŠ{ùÂ]×·7W•I¹7a°Ûº—ZîÛËÒ$Ö +¸y‰†E?H=7™ Ukj¾[±ÍboŸ›·"…Ô6øa»xüa!åG¬êã·@ 3´ +«×ÎKßxØŽ·w飡p8…Þ+±ƒ"±^Mƒ+¶”áÕ‚±E*“¸æ¡r7ÃÝ3¥3cñº²(+f‡N^M`­ÃÚ³ÝtÊ@5d;m ó†e1äéÕi³Û™¸×iU¸¤Š9@ù|Þ®q•áÛV¦(Vš#¶5¶ K ‘CÝhªÍ–¡ +²`–`$Ï‹¼Xçf'Ýà¦ztµ‘óº¦õþÃ&|¸³9v´%ê^Îïño]¢Nøþ½u¼×â ^ÐkT€QÍ4$V²åü÷*^à¸Û¢Õ/þJµ¼®Qã›MZÞ’¶=¯0³šA½°ã«73PLf¦wê½âxû( ÅÛ™äQÕš~–°9 mŸ|øsï5+U™b_UJ˜}¦Þ Í#pjí4o Ž?íÀ‡;;³é˜YÜEÀm܇ëzÅ—‹FR͇ŸíædN\˜V¸n£É€kL> +¸Ói,&"[¥?6;â\Rbõ åí{¶ª»òºbY6JÓ`Ý_`›ç7˜NŒÉY`Gtq3Φ6æbDbÝÅðni>»aK*±ænq-u`N› ÞÂJAN¼úòËŸ¶báÿ!‚<ÍŽhU «R­t0°1<ª*Xh«VÉÂ1èÄ—ƒø!Ôä¢R1©¨o¢Ò¬c‘ÃâpÙÕPêUåTcÁ‚µèG5i”S“ëJdfc$ +¼`G†.ƒªcMœÈ~Ò’ªopuO íÒ¢TÜX­Lv1Ç{•õ¼xV‹Û†•z¸¹îlÐæöqN9pù©‰èˆ*߶D°}M5·Ø÷Ýê\Û"q¨Ÿe&jMSeg:0»F¿Cß4j R‚_rUV÷’æ2†87àr‹ëðÞMMjÞxŽ`ŽîƬçð–U4ù^hªfëVš<È®ÜE$c“Uc»XÝ‹cÖR.’m¼EËw +UEØv%BÉÇÑŒ¬Ø]¤ƒäÁa}¾óÊgÏÁÔäK©³Ác^˜=eo'²ZWºÇ)¯cå{ÜÉO²Ä gíGt'Åõn`³ËÐ^.ÉÜ}ø<{NY6ûèMßšÕAÃ>§á™BiXFúnï¥ÝÌ+~3n·Ñh±ëµîævÝIõ¸‘ªñêVf‡Ãð’*A-Jv g[Ò«[I2—;{kI.’öØäpO!tQ¿-í l©Í‡ccÙ§32«¨uÆÐæ\„U âH<ÚJE=¼ó7+ô=Ù-Åí§Yl,ŸnÀÍòU¬€#»¨-OÃG¶‚?46/»Qž.Ñ‹à`ÖðF$(Du&sØþŤ)Õ‡æð{ô&œ ½º÷@Ò,›n 8 Bgnnp ‹OMÔ†7S®´äàHzMĵ¹˜gkžÐÁ}Ú­ƒãbÏ/O¦YM‚± +00_Oo´± |ªØ…S|C[ôj@°×éj±Ô0Ñ»†U=Ú®°ñçâÖöbë—‚ÅøëEØC/ °†IgÍ‘ÿ«MO¯Í|‡¢Ì¶BY.‡b ”ù↛4j[í"Gž–:gõ¦*] +Ø/êa—Ÿ+­³§ÞJi57]³Û° TVÏ_Å^Û UZ’z°U°ëõÊÏ{óÁÎê[ ßWå¾ãYfC@‡è-…Ïë©kȪzÿ·Ƹ̊’I• +Ò&ŠC¥ÆeÚ¸G|jÅC8Wýö!¡Š=låDP(XB·iE +ð»—ªhE6”Ô28a‹C\¯D:Ö2£³ê%7¬‰¨ÕW-)W‰úܽlCÓŽã×ÚšÉóÍù± +ÞÊ3¸ºÑ‚å8ØEëGO«Ïq2ÝŠïÛ¡/|_㡈ʫÒñWé׋+Ù]b«ö--RrJÁ?ξ³ÃÕ/2€å«ÕÔ¢{}Z!~÷‡ +id”®™ppô>!„ˆiØ‚ô6¯lŠ7ß¾ÉÖ=; g…ÿA.bÝÁ¨Yíò îEáÁ®wÄ+…] Î/-í066w~^ì +|Xì<íNƒmaøvâãZãvv +‹Ù×÷¡I×jŠz“âÚں䫰R»Zð +¾¯:Š4x˜ªwyF¹­oV½ÜÁYFé¿ý‡_~'„@PuõÆXÄÆG»&kƒ#ÒWæ%¥¹èB8¤ð4 +zþ¿í]]Çq¥ ò>/6D $§?§ûÁâ&ì\Y„$$ C¸\^“+ÝýÀåR´þoß‘>§ª{>îìr)’ØimmOÔTWW÷t#DU(ãÞ¬«,ܵ°5õnØ +/©@¨¦ ¡oä*£„K¾n1P³~¸+V/“h®Os™É•òIeR¯Iö>/ëkˆ}¥ÿŠ¿#dv + +ôÝÓLºò‡N4è !4š©—Àµ'7¨}æpx/«’”ñ¶ÔùBî­|šœ Á*/-.ÆY‘™¿£Ç´¦!Œ9¡Dšã•·l½²”á2›Ù@³9 ©C%U6õ•ØF›É…í+5¯K“ÏüпÌz7‚u§·µ]®7š¶Ù{%§'\˜<ßG…ª´|-Pž^¸ +¸€}BÀ¬ÆÆâ4‘'ÁÍ…Ð í€ !á\éq,Y1KÇ ß©ø!ŒŽK÷3©OÒ àÆZ)@t¢©}g›Ë}lž¯oÍaɼa4»Ã߃m‚·yÛâþœ+ËN |»ãBŽõWÓ·Ë<ÙO’E&×1&ò§ŠØ²8¹z˜‚[ÝajYà8p¡òk¶Â¾ôEU6¯ÿóç¦ç¨¹–Qu¬×ð¬ +{[”©ß\™Ú”Œ™gBMðUC1±²0á “òIÀRŃF0šº<:6ý[å"”Ī©lô_ó +š”[©m(Gy½¢+B_o‰Q —›j^ìtò \xÍaÆ–qSd[Ù)±Vœq‡i(ò¹~E‹"e+Û…Ò'Ù®ÚÑí´,XvxÓüY¨ù]ut£?›¨aF½zvrƒ§\[æDòr9ê½³ó…[E˜qD.%â/¹éd³1‘ë%[1Üý 8¾ ÞN9zÀ.uÔ°h篇€0±ÅZ'p}O¢v@:6‘k‡÷õ˜Ãê._=-…©Þ.WRƒ‰°*í¤Õ rÆj-—‡'žÙMäÒ"9óD,'VšÅÍc*ŠðõHH8xö“ºÝ!Zÿ(ß/äà†æÇqoä-cÊÙv)Oïóa‡á…°8 L‹° ɵkÔm}*¿ìU¡ª‡¶>Näûjz‹bRIÊuÛ1i-cbüQ×F9ˆÊõ?„Â\1î(œë,»u‘¥†~Êg!þ…Ð(,Òäý¤T7kUx²˜0ów|<Á6u¾çÆ9ŽûfsÐjæ-£nü”1ÌPi‡›Ü)Í +-»lžM÷bþL;#µ!Vc—‚ ×è‡usì{q`ÏN•ÜÏ*P)ä3"ÿÞŸwsƒ’çé´îÒ˜y.„œJ5\åÇVUðB³šåìÖHlÝùU'-ȺC”a-Ã`…ñÁ†<£T/üäQ?[k+z3^†o†c3©á ì†JÒí5(uÖ—ÖÈìÆ GÁü^ÑŠqü€@Ý›ûÓg½(á¼ê\Y;ˆËªzõ+o²Â´¹ÚñÒ…o¦5óÞÁøío¨¼\¼ âjÍ!à>‘qfýUÔŠ_³V +B#žbá5k /*BÄQqñ[פÝÖã# læ뀼}2¦MGhëǾQï’ÝöÖg œÕŠ•`wÕÞºÖê>ÒÓùG2Ù·YìòÅ¿ïô›öÞgZ·ºFqþKçÝ7ïéËí»¡´W´iEZO›¢çA +Då&yZ%od +âZQÑv÷rÓ¡‰è‘ +žjM>¶ö¾¦Þq§A.vawÊ’=Þ¢]W«|³§Ég§Š)t,š<ýË9rB#6¬>Ž½'¶_Eó•bâR&Oß$«[;ïÊ’C8£_™“0Þ@“@$ZùÎ+…¤†ÆX÷ªüÜ%ØP ϹÙc¥(Á<ñJŒÞb¡AOÅ‘)hX‘}h[Œ#yszÿÖÈ›ÌE½ÕÁ*¡ßç€oØñœØß:–j09$û^/¡,¾?(ƒÏ±nN4?E>ÔzÑõ ×ûª»WY!,ÞѪ™5g쑪YBog6U§¾Þ­¨Ѐ#gëD×È;ñf¡k+˜\K:2_•/u!c¦kì»äRdU5/@åx¤jÂÎ×Ò¨ê¤W9Vus2¢"¿3óSß¡gŠÆÝå¨h’VŒŒªè%Óf©h’ã†0W4˜½›ë,OaˆGz¦<Æ#=Ãí´ÛXUÑ8SÕëÙMÑà +òõ”z¢j){7×t¬ùáEëæ½lz¬nî>FUOÜǨê‰ûU=sMîcÔôè=fšžx™¦'Þc¢éÑ}Œšž¸QÕsÒT=ñMÕ÷q¬›“p“%£‘[ýFn^ÅÿA¹˜ï¼˜Ùà4ú[ ü–^µécÑZÌ÷C8Ò5ƒ!dÚÒ`’sG“sëÌ`´èÌ`4qjhÿØ^(]1½×97Ò-Í%6\Ï™¹Ô²3si¨–jysIwß|º†?á囿^:Ž +/òé^¿âWŽeàÐS[HÆ:o’׶ôàÍÔ„8fÔ¯˜îÑè“mXªQ#§dR=Ççõ¯-ör©o6@ÐEÍ®"¸N“{Á_b¢ñ$'«ØIq¼÷P»†°ÏVúdNTR»¼è>EJBȃyÐýç·•9²F“•>ObŒÜ{õo¶¿Á,‰ÛøúÕ¨ÂpË»ms""òSI›™š—À*h˜ƒÏÉxzÓ€„úšÊ˜‘\è´,A›¢*å¡°Ópê«Ñðˆþ'¿}ðkŒ™¸-¶ÚË÷‘~TÛèÛg~6îëˆð™ì»zœë@ÕÞõÝ]ú(3­¦DjÞ“8ÅÜKú’¬ö©š ¸™€õwÔÄ;[ÀCÞw‰¶æòÚ;Dz×í¯d®)NKR,Ó;uì=ƒðôÇíí"jÐU'Òú<‘orNVß¾YøuÑäé‹ÛV—ºb¸1Áþ·¢S+´Q"ñ”nÖÕññVHß3»ì×0¿8ó¡Þé¬å~æ+3¶f$±\Ýë¼g_„Ç5¿_ÚŽ€•2aÖÅ©æì$?i,;de›T ÍÉŽxÒ~Uç颟B“¼‹qPµðÏ‹Á…'šª…Å5¥Ž½˜h¿uwþ’ÞH¿ÿãåÅÓÃÙÅõÙÅ‹‡UNÃþæþ'¼šõÓýëò÷WÏ~Ø^£þìùå³]Ǻ/·Û»C÷Õáùîðàm¿ìä·'ÛýþìÅa{õòìT‹~{y¹ÜÅîêºû|¿½îßRôAWzþ)0=žøê§íþ¶¤¨­E§•K]ëOØ»W^ «k©«ûúòõÅó[ÀGB_[‹~sÊ×ÅRRW-û/—/ºoÛÓ_­•­¥>/Mu›Ýö/‹BÚ¯iÑÍöùÏÏ^¿¸­¶§øϧgó2R×¼ä7ׇí›g»ÃáçÛêûöÍÙÅûò»ëíA´#u•âŸ®¿º(¶úröÀ—ÛûC­r½Ì·Û«Ýa÷¼ûFêº>\þ¸»ý‰Ï‡Ë7·‘ºžnËdxñ[ºðóUkRçÛ¤Ôò=¾~VT°9»Ø½ºù™ñ%½>ìöc9ã +¥¿¾¼Úuttæ–Ù>Ÿ·Á¿gÌòÑZñ“éÏXßÍã¶Ö”_ñoÓþ–fùÃUéö½{ïÚ,YéœóìÐÑy…?1Â^}Å %C+v÷‘áÿ?”£?˜TºtAýÐ×y»ÒuÓ—‚㲜HýWþ•‹<—Mùá‘e•U”Õ®ÜnW_²¦ò¨*çgWü ç÷½A6˜¨(>¨OÃO]é£{0Ý믌eXÚö¨xròÃC\uãïàa6Î;Š¹}”QÌüïÊ‹°µ×F»E^Ô°ìl£oé߇ö47,£G[¦ÔYXTø¯ëùÇޥ˿´ù1®ö‡®ìí‹ÿ€ é>nÛv1ôò³ükú¾ó}—¤ïåEokQÆ;ª{6‹Öñçc ¡¤õÒt”V½Ç¿w²Ô_ØöªjÛ]ÂèË¿™ÿÞiÜz–¬E( Êôèœïf«qxÜÕŽVŽÁŒ{Ã_®Ç›ú%!ÞZÇÒØ/íŒiÂGêÌð­uh¢(q81ä–y^º×l]µP—AîªÎܬmúøªC ¼ª´~®µ”o;{ùbrTæíqác2z«kû;èóCÏ£›br‰nÇ~mÌÑ.~v‹Ÿ}Õ#HIá×@ +ýYÒm£½ÅjÿÃÂE,Ç3<^>‘·8!Oyáþ×íÏÚXŒ¨z£-úN¿7ú˜¾ÅcÆôžn÷»Ò’œ²=}6ž¶}ú§¯Ëï_•ÐG~€£·W¥Ù¥øéi}¦×yŒºOO~×w_–?ß•?ÿö»~Znz’·(We-‰SãÉ=Gb2õ2G11§<å|l§>-Ç°‚ßYopjίù€ÇšT–­ :R‰€C‰C…àèÑE2!¼´¿‚ŸdÈb'ŠVƒ§KEa¥" Ί£¢#°â ª•ÇÿÍêËÒ±iuzL]±®€TÒFš‚™¾™ ~ÉŠŽú$ß‹k—´/Âè®ôîâFy!Ukó¡vh^•€)9ÑPSŒ}r8;ýñÁ¬ùçO“ÚþÜ]EùØÉåÅ_Š_=»Û“ci>¼ÙmÚ½êÊéUL÷ú³ê–ϳÒ–]•ˆàNj…ñèÓ'ãBÒ–‹·/²}q¸|}õû‹¿\N×ɲ<îwÏKõõ4ž?vòH‘nÎ~ªÂGÛ³«o¯r}éíæôW­™-Þ¥‘Õвù^•ß´ënþ}kè†gïÒìÊAL·ú«ÖØñc;ë‘ÆoŠð›Ýõë«©Íl¶?ïȪ4³i9äÎØÔÉJ[Üòæ#ÁRA÷æâè.=¿Çëú£ù‰¾UŽìdyªŸá»?” +ã[ù¤éM®*:Žžg½Š¨KCö°Ä¼¡yŠÄ8©lª +®[öC‘`ËuRÜ,ˆïœ rccSd½Ò: É!ÃöÀN/ ŸsyÙ¹H4éÀùAÐ)Je&ãZq©Þ÷ §”ì“‘áábi\¯Â˜¬Ê8aÀ9 n¦ò URÆR›(’ø|ÀõTÇ5¾^BÀ®–áú^?ú`€^þ£ÏÂå=Hw=STV*{ußEãw)?êå·Yðˆ: xGµ1WÓ +Š«æû šq•™TLGv(¯‡3œ46;ÕÑR›{(¾}Ø@ú9(Áâ×V”ÁD©BRÉ¡¢@ëÍ4’µö ¼'.;`ݬÕ9oHo€hEß-¨™ÏEØóMâJ\ÙºX¤è‚õ’ô;Jx׋>aJ9‘Ø]Æ!§!á})H²)–bq5ÓEŒM[Ü^7ú\žÃlHÝ"Ø0$¼¥‰Á­S}Ïp!$rµ¸@ KA1΋+‰öêB¹¡k{ +–M¼BéàAŽN‹ÈWÐÈ3\qv¼“¦ +–ŽÖS Pì.#}­¸'‹ïŽ +ª?烸H‘áXy[N^Xä:(JnâÝú¾ ah°x°L íY[„\O÷î}™Ñ+eß,9X&X7èMk³È}ŠÆJúl( šî}%\=xXp( éæ0DϨð,P´‹©U&"A©`”Åz#Í—) +б ½IÂÃ`‰>Œÿä> [ÌnàS§ Â§xÐIÎÖ8¦Ö:Ô€kŸì9’–PyY7e,7Ƈß&Ë¡o‡K\pNãØ&ïîWºËÕ‹3t±ØãËUv•0%‚ÛÉÌi„2Àß6!»þØ^„SBÚ,ÀÃxÄîp¸‰ïà\½ƒ$½—1 Â! !ɾ8ˆ(ÈÖ´d˜ë^G;ë.GAð<(Ìci ÌÅÈ âëÁ–ªCî’kÐtÒa¬c6 +:äŸ;ñ®@¿ë¤*Ôo”ÄÎayŽ^SYœo±Î7BâƒL`åDíaQ`Ì0IüЫÀUÃZúTO (ñi¦„è̾Ä%WØ$ÊÁ\pÐm‰F‹gˆj¤ +ÿ„›¼û5m¦öLÀ,:!¬w¨Ì+Æ…sFHÖÐl%Ò ±Œ€Ž +F†ðOÅÑÿ!æ}aÌòì1‚R,ã^4tÔ¡r'ÆÊ ÚÌtB7ˆgˆ9’‚&;uª¢ 8‚#6àýòú ¢\uJ."ä°X&é=ˆ +{<ÂÓÑ„€5Œ3-ú$Å\(‘ž\ˆõàíE +†‹£ÅÕTÄd0Ç2ý¦{}ZEqþ¢ èiÀ¤êÁ#5ÝGŒØ;DÏ„O$øL^Ý‚S¤k"ãiì"Ùqo’Œ•u ªX¡KÂúHKé£ljÊž£Tå¼k»ãÁž›CÀ GÝV9Ë¡GØ3yy´#Äðd#òŽã½A;ȬEY¶e¤› ciê‚#pf–E0•`ŸÂñæŠçþ€¢,lxç}ﵕ^¶bðƒ–+; 0XQ÷ `NÎ÷dt€ÈOY m¸µºž£QÏ?3ñ¤Á$nC1*®â`7 +²:\Á4'¥àÎb›JB´XYBí—+•Å2¹K/ÞHª$°˜'°zߪ,{P/Fîƒ +{ 0 ½ YZؓʳ´,‘ÒM2«Bùpø@*¥Ðñ#Ex4òy +A`m:&VÊ®Bâ’;Ĺ hz‘Õ‚&¬¯–FjDBÈY„2XïA„Hå»»f þ '°:P¿QGk½8j˜_Fî$ê/*³'–·¤|ÆÎ)D‰ ð iœ“§n²Bœ +dPèetŒ½PœÖÝU‰fhFà1±—!™˜4Š +/Ü!—KüŽÐ²!°YrÚ`ÃÙSÎUÁqÛZÖEkè³Ê$ÆÔ+á $)ÌEõžx«'ÈY¡i™Øšû\]Gþ¿U@7Ña·C*"Y¸1&,pŒ Q» z…[ý˜n–¿|eƒî'k¯{n +ØM—ÕBk CÝ—õeóA!æ¶ +<—“€Xä`o¦HÆxXYcr0pA¢,á=DœXÀvðµ#6d¯ü+¶!e•£–b‹Â¡ã˜æ[–‹Ž„¥æítÏâ±g³b’=¶0SÁ xLÇ#—4ìý ÇRìFÐjƒÈdØ€Àpð-Å1Ó/ˆ\\X¢2“œÊs¬J’‘Á.gL'doÜð–­a‘øF$ˆ +¯Å.&b-‹Ü©¨J‹8ÂdrÃdB/„d¶X¿G„cv²ÁŠÏr¤41hn9¼ãÅ{$]„ÁX-’ +Ð%%ã–ƈí6€©‚d…Yæ` +´ƒ“„óy5䈪RÆ`¯ÊõÈ!‘ÆhI’EP†ÛòìX¸FÑBŒS!Œw{«–ÐœååÐ,É|€ŒÑ!Ô’£—B8T +áP(ä+È4:@mꋯ, t>ÔzG"¶±ÊÊFl Md¤+«†h8XÀ¤2b×ÂnI²¢»ãOK3LžÚ¬½‰Åæ.ë;áhó°Jx?|QaÐ][/`kr2ìe+Ç5Bòar'ƽ¡ï093Ï8y4G ††ÑGMH`ÃNF9¨E€‹“là+CBnøÓµÛ<Ð÷tešf!yD¿ìø¹ä袋Æ9'Ö¬¨½DÓ=òýa)0T*D§¯>e2Ž±0Èir*òÐÆì‡9j´œÔ`7b­žQZRJÑô²hψçŠí’®àök[ ßV9’GÙ“bgˆÓvYP î$JωdpL½_yz²¹ê)K¯Ä+kÍ%ÜSï‘5ÁöÖsIÆñ—„wHö‰†:9ŒCÈ\ßVαa$ÅN$yz®{RéáD’þˆÂòz‡Å©Y£~ÜË5ñ¥8Ÿwâ—PŒî8$WZ+#hðúˆ¿‘Bñ•ÀÉ9ªm6–ËÉä,a#Sã©ä[ntàø0‚Dñ}Ø zÎ⤼ޛ•NÎP€ª#`sÌÕÏòšz%²1bxkTŸ`‹ªO•%ËBÆe³Vç¼É²€£Ý%åÄåF`À ]'¯Š#¸¯WLdz;†^doᢠ·Èm,½à1PŠ+¯#ædˆÀŒ9FæW2ß0Tɘod;³åä$ŒÝ¯uWN;‚ÓmhÖÍÓ¹”%™8Îzy¾‚¶=°ø áY÷'b ½LîSÙ´äˆp.eÙ!BB°LXªÌ l%4 y‘Ot¯$V>ˆâ0Šqu}‹úŽ;<™’Eû`ªÀlõƒpÁ5ðÐŽ‘ßb0‚á¨À†P&L4Ô¾E0É#Ny”Ó,[rÓIU˜KÈfãÉ  Dà? !G-T2 pè½?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾þÿÿÿÀÁÂÃÄÅÆÇ<ýÿÿÿýÿÿÿËÎþÿÿÿCDýÿÿÿýÿÿÿýÿÿÿýÿÿÿýÿÿÿÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿRoot Entry HHÿÿÿÿÿ""ÿÿÿÿÿÿÿÿ  ÀFprër©ZÁ hVs©ZÁÍ@Data V ÿÿÿÿÿÿÿÿ +ÿÿÿÿÿÿÿÿÿÿÿÿØ_ xÖ¿‰ÿÿ§WordDocumentÏ xÖ`¡ +ÿÿÿÿÿÿÿÿ} ObjectPool +ÿÿÿÿ°¾s©ZÁ hVs©ZÁ_1054035473ÿÿÿÿÿÿÿÿ +ÀF°¾s©ZÁPEs©ZÁOle +ÿÿÿÿÿÿÿÿÿÿÿÿCompObjÿÿÿÿMObjInfoÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿ + þÿÿÿþÿÿÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ +ÿÿÿÿ +ÀFPBrushPBrushPBrushô9²q þÿà…ŸòùOh«‘+'³Ù0¨˜¸äðü  0< +X d p +|ˆ˜ Ole10Native ÿÿÿÿÔ¤ÏOle10ItemNameÿÿÿÿÿÿÿÿÿÿÿÿ1TableÿÿÿÿGl5SummaryInformation( ÿÿÿÿØ  +   + !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ  +   + !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ  +   + !"#$%&'()*+,-./0123456789:;þÿÿÿ=>?@ABþÿÿÿEþÿÿÿFbHIJKLMNOPQRSTUVWXYZ[\]^_`aþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÏBM†Ï6(ÇPÏÄÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿ{ { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ { { ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÀbðq +³LZ­d7T6Z/•Ûvï7¶ÿM +عnðE +³LZ­d7T6Z/•Ûvï7¶ÿ‰PNG + + +IHDRÇc'gAMA±ˆ•˜ô¦ pHYsÃĈ.>£ ÖIDATxœíÝ;–ã¶Pô[Nô|z¾<€zAµËe}HÄçØ;êU-‘H#R”ôããã#À¡ÿМӜӜӜӜӜûmô&ðó÷?>ÿñ×ߎ À(Ž-N|UÅÿ¶¢-Ž<׃Âö¤-ÞzW +ضxí¸°mñBN( `+ÚâQ~ +( `Úâ?®€Â6¡-þUý +ضøåNè+ `yÚ"¥q¯0€µi‹jA¯0€…íÞu#^a«Úº-Z„»Â–´o[´‹u…¬gÓ¶hè +XÌŽmÑ'Ê°’£Ç0L‡@÷JÀ¶n‹/MkCa ÐÿѨ60;mñB‹ÎPÀÔ´Å[Õ;CaóÒ'êv†Â&µã´—ÔÍw—Õ“rl‘«bÐ;¦ãØ"Wňw„LG[\ 0€mi‹k°'mq™Â6¤-J( `7ڢ¶¢-Ê) `Úâ…lB[Ü¥0€ü6zuäçlðÏQÿüýà#ö4÷7Üy1ù  ͬmQ+ÞGR@(óµEØŸ*ò{ÀÂ&{—»ÑûÀU[=ܽé +Ä1ͱEŸè¼™øa{nšãØ¢Û«ì›+j‘ìŽ0€&h‹Îq0 ØMô¶”q.Ìý¢0€±¢·_0P趘1£9樀Äm‹áÉX<€¦W1 +Ÿ`OqÛ‚wÐ_жˆA†ñ,ìÀ€Um‹ÙuøHÂzŠØ¡r0Ô`D°˜ˆmA>…ô¡-¦§0€µEÀì 8¤ñGÌ.\[PFaMi‹VúÓ¸ÂÚÑKQ@#Úb5 +hA[,HaÕi‹5)  .m±,…T¤-V¦0€Z´ÅâP…¶XŸÂîÓ[PÀMÚ¢•hm<À\´ÅFP,\[ôÿz¥S‡TLae¶…`ŠÉv +´j ‘™­\Õ¤-n†Q¨3?¡S‘Â.©ßßchÛHšâO1H ˆÊmQ+€‚¼¢2Œv©f[ˆžÙj@Žjmñ.tŠÃhøëúâL—¿Ó +è¯N[4Š›…1¼«:SÀ± +m!hÖ`;î¶ENÄ܉¡!¯ñï¬têÌzð@S·Ú¢O¸t.ŒÝÎA=PÀKåmq)Vfù¼ÞÍ­µk< + ®w+”*‰ß.ȺÒ,Y¼ù1ð ¤-Æ^Û"m&cäòPÀ—Ëmä-ëÅ>4ž¢ÖFœùƺÖ÷­nú©®º¢ÕF؉zºÐ‘_Îçm–ì Õ³LÐNn[T /Ñ“/NgØj°¹¬+hëfVœŒ/NFÛj°¹óc‹õ¾jFAÂÚVƒm[´ © ñ7‹ 1m«Á¶ŽŽ-:DCœH„¼¶Õ`Co-ú¤R„ì›K„¤¶Õ`C¯Û¢gˆž«Ðß‹¶è¢ç*…tVów¹ï=3j·Õ~¼Òh]ë1{q¬´-¢´ERª~ˆsütšýÉÖšÙ‹cÉmñúš¨±Áá4Kpšµîf*xæ”}Ùþª®N Ùkdá=ùõ±ÅؼŽ…‘E˜ŸáUQ|¯%L…Ùkaí=yðç-Ž9Èx6|£¤Uñe–×eíÜ™@³WÑò{òÉ7¬—M¼œ´°¿uUŸªx¹[^ºñ&^ÎÉ󄘺ÖvØ“‡}OÔUÁ;ãÒ,•=–b`Uß+øÓ¬‘«SaêÙdOÎúÆò9õ%ZmôùE¦› ÅPÏÌÙ!Ÿïù9ÖÎÕy˜.žf±Éž<à÷-j^Ý~*ÂäÇ©Š›÷}¹‚§èê<ɯ.³` u§ýæ£Îß7g»é™Ÿ±{ræÞÜÛ-¤ÿoçµÓ­?ªOÅÁÈ#L{‹‰½=9w1w²ãô̲Ô;Xì»–M`Yj?ꂇ|óí–ÌUç,!s9—VÑgO®õ–U~÷þ]îjE^»Ixa„ oÔÁ¡žc™c¸=Cz·À>'1Z<ä̶®¾êâå²'çÌaæ~•ß×>Ë=üäO±øUñ¼ð…«âYŸÓµ§ÏŸƒäGϥʹqÎmVEúçÃÉw–YV·¼z=k­=tØ“«TEæm¾»üÍóÆ}âûkkWÅýgæýw.ݬQôDþXÖÀOüµ˜í'÷×[v—çÝ\Â×^Ù”5B–å[æ³=5}YPå,ÊéB2ß (8³®;ÚŸž’îpª` /‡QpBéþlgž]¹?Ã÷ä—÷ÊÙ4ïÞ~«ànGªbϯ+O.'ŠSòå}‡Ë‰››/Ïß½Ìo=Ûǃ¹³þŽ•nyú—SåßA»p åÏa-·¾±|ŠX¹9HU±’ºA¿‚4æÇ7£ÇÒVþɱ«Ûîîï[¬.»±5ŸÝ —Iƒ©õ°k]ózpßÓ+¡g¯!%]á׎˜­,ÞŽŽ/¥}§çê;MgÛ†»¤Îoç-4ª¢¯Œf9%BWßØ(댭öäj¿´³0bŽ*³´•}^J‡ÝIÕü]n¡3£ [­ÑÇßVuóÒ}N¿\ºä©ÖÙ­¦·¨f[¤0Ñsß&§¡–Ù^==*øÀèÁ>úžMÎÚ×}ÔUf;ìæ˜Kå¶HhѶT~lux9¶O²¼h±'çw^]{ý¶Hñbˆg÷QõW 97+xÚôy³´@Áɨâ±_!V¶Ì—ªÏöÁmjm Ù“‡hÒ)@ݱüi¨°[çôùá„ûiå ¼¦¶]¬¿¼{‡X0Û®²½´Ìh{òóº +ÖÞª-R€H>€˜âLËÕ³/óWZåi“¹Ö¯_.ÿR¬¿aÎ’»=䫳]pÔõ¼K†ìÉWÇSÐy¶EŠL|Š¶Ežf™¯é +ž`§‹}XfÙsoà)…>SWe™ ¹?Û/+§â«û!{rgmÛ"Å‹§ÅÜwž$-ž`/—ö™\<°Ó;|È÷W=¤àCíÉ9 ¼ºÒæm‘¢†Ôn"o…º‡ÿÕWTpßžQÛnò—\ýúÔû³=¤íºíÉ™‹=¾ªøê{´EŠU;ˆ?ÿ—âæN6^•_vßü…´puöê.¹]ØåܦJ VÜjÝöäâU¯´S[¤kUÍüÇ? +þ÷êZŽÿR0ÂÌ`}pÿ–9c;ýßœ%çÿýåz ps¶—pú¿·¹4þºÛâÎ>/áê}¿ôk‹4Ul-cÒ9~zÜÙËOWQe„u‡wG£ÙøëÆeÏñ÷_oÝwï¿ëÚiÚðš”Ù†=å\…õì¸Éz·EêaËÈ>½,Œ«‡ Ú"…²àÃ˱ÀC +¼;>ÈüØÇ1m‘ÄYKæ¸êô +•am‘„Zf6WvÀémF¶E +mavlÒau]ºø*ó–ƒÛ" ¸zÌäƒÈ¹BÇ{þÕçÅø¶H-cnŸË¢TðN•}„h‹2ì鉆 +L*J[¤‘pHϦ$0»@m‘ßuf è#V[¤ñwó­‹ÈqylÀbµEŠ‚ÑÆó)樀UEl‹$ +Ϙ ³ m‘ªâýëh{¦ó_ÿy¼:Uô·-R°X< +ñZkyøÇ»ôº-R½p¬õ1½¦aý°ðçu© +`”èm‘âEd‹ñ¼;pùþÇhólåÇ,_žSåà nàv;^ùùûªkš¶HQ߬¾3*Ìb¦¶HQ #]˜’¦3Y[¤À…ñåå50µùÚ"-ýe1MpMÔ³›q¿Ï^Ô2e[$…Ð׬m‘@G·ER½ÌÝIat1}[$…ÐÞ +m‘@c‹´ER-­ÓIa43åg¹Åÿj€é,ulñé~Ö;Èx°à±Å§€¿‡0¯eÛ"MòëªSX¹-RÕsJ:ØÙâm‘j¿ ¡3€=­ß©Ù»ÖšØÇm‘Ú_æ¤9€µíÒièu±º˜Ý‚Ÿ·xgTd« +`µEܪXÃ^m‘úÆ·ª–±][¤^!®*€•ìØ©}”« +`1›¶EjèªXϾm‘Úĺª–´u[¤Úá®*€UíÞ©^Ä« +`aÚ"¥A¯*€µi‹_îĽª–§-þUúªضø«Ñ¯*€Mh‹Gù *€}h‹rj@U[ѯ—ªv£-ÞzW ªض8ò\ ªØ“¶8ñ½T°­~—€bŽ-8§-8§-8§-8§-8÷I_ÿµiÏFCIEND®B`‚äSpecifications Template#Template for Core's SpecificationssDLpLpSpecifications Template.dotsimonac2moMicrosoft Word 8.0l@@Þ·†Á@Úõh©ZÁ@Úõh©ZÁCé þÿÕÍÕœ.“—+,ù®DÕÍÕœ.“—+,ù®T +px„Œ”œ¤ ¬´¼Ä +Ì ðäDocumentSummaryInformation8ÿÿÿÿÿÿÿÿÿÿÿÿ +lCompObjÿÿÿÿÿÿÿÿÿÿÿÿjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿeÄÚj Specifications Template Title(RZ² +_PID_GUID _PID_HLINKSäAN{2A822151-6EB2-4CF6-9EA1-2347DCE63919}A\$Khttp://www.opencores.org/Khttp://www.opencores.org/Khttp://www.opencores.org/9u¨oc_logo_small.wmf9ugoc_logo_small.wmfCÿÿÿÿC:\OpenCores\wbc4windoze.epsþÿ +ÿÿÿÿ ÀFMicrosoft Word Document +MSWoe +[>@ñÿ> Normal $¤xa$CJ_HmH sH tH XBX Heading 1#$$$ +& F&d0@& +Æf!5CJ`OJQJP@P + Heading 2$$$ +& F&d$@&5CJ`OJQJP@P Heading 3$$¤ð¤h@& +Æf!5CJ OJQJVV + Heading 4$$„Фð¤ð@& +Æf!56CJOJQJD@D Heading 5$$ +Æf!@&a$ +6B*CJ FF Heading 6$$ +Æ3Ë@&a$6CJ HH Heading 7$$¤à¤X@&5CJ$OJQJBB Heading 8 +¤ð¤<@&6CJOJQJD D Heading 9 + ¤ð¤<@&56CJOJQJ<A@òÿ¡< Default Paragraph Font>@ò> Header&d +ÆàÀ! CJOJQJ4 @4 Footer¤ +ÆàÀ!CJ(U@¢( Hyperlink>*B*&)@¢!& Page Number>>@ñÿ>Title +$¤ð¤<5CJ`KHOJQJPþP Headeing 1 Name$¤°@&a$5CJHOJQJ8YR8 Document Map-D OJQJ,@, +TOC 1 +¤x-D5;.@. +TOC 2 +„ð¤:CJ8r8 +TOC 3„Ødh¤ 5CJmH** +TOC 4 +„ФCJ** +TOC 5 +„À¤CJ** +TOC 6 +„°¤CJ** +TOC 7 +„ ¤CJ** +TOC 8 +„¤CJ** +TOC 9 +„€¤CJ8V@¢ñ8 FollowedHyperlink>*B* 2"@2Caption $¤x5CJ:þOa: Contents!¤ð +Ƽ! + +:;CJ&þO"& Table "$¤@þO!2@ +Index #$$ +& F¤¤x&d0@&CJ`.þO1. + +Appendix Name$8þR8 subtitles %$¤xa$5CJ0Tb0 +Block Text +&„ „ 4þñÿr4Style1'$5CJ`OJQJ&B‚& Body Text(:þO!: +Appendix A) +& F&d0CJ`0P¢0 Body Text 2*dà.Q². Body Text 3+CJDMÂDBody Text First Indent,„Ò8CÒ8Body Text Indent-„hHNÑâHBody Text First Indent 2.„ÒBRòBBody Text Indent 2 /„hdà@S@Body Text Indent 30„hCJ&?&Closing1„à0"0 Comment Text2CJL@Date30+B0 Endnote Text4CJX$RXEnvelope Address5&€„@ „üÿ„ôÿ„ð/„´+D¼OJQJ>%b>Envelope Return6 CJOJQJ2r2 +Footnote Text7CJ* +*Index 1 +8„ð„ÿ* *Index 2 +9„à„ÿ* *Index 3 +:„Єÿ* +*Index 4 +;„À„ÿ**Index 5 +<„°„ÿ**Index 6 +=„ „ÿ**Index 7 +>„„ÿ**Index 8 +?„€„ÿ**Index 9 +@„p„ÿ:!‚: +Index HeadingA 5OJQJ$/"$List +B„h„˜þ(22(List 2 +C„Є˜þ(3B(List 3 +D„8„˜þ(4R(List 4 +E„ „˜þ(5b(List 5 +F„„˜þ20r2 List Bullet G +& F 66‚6 +List Bullet 2 H +& F +67’6 +List Bullet 3 I +& F 68¢6 +List Bullet 4 J +& F 69²6 +List Bullet 5 K +& F +2DÂ2 +List ContinueL„h6EÒ6List Continue 2M„Ð6Fâ6List Continue 3N„86Gò6List Continue 4O„ 6H6List Continue 5P„212 List Number Q +& F6:"6 +List Number 2 R +& F6;26 +List Number 3 S +& F6<B6 +List Number 4 T +& F6=R6 +List Number 5 U +& F\-ñÿb\ +Macro Text)V$¤x +Æ àÀ €` @ +à OJQJmH \Ir\Message Header&W„8„Èû$d%d&d'd-DOJQJ2‚2 +Normal IndentX„Ð,O, Note HeadingY4Z¢4 +Plain TextZ CJOJQJ(K( +Salutation[*@Â* Signature\„à6JÒ6Subtitle ]$¤<@&OJQJD,DTable of Authorities +^„ð„ÿ<#<Table of Figures +_„à„ þ:.: TOA Heading`¤x 5OJQJDþ!DHeading 2 Namea$„¤¤°CJHHþOñÿHHeading 2 name c$¤°5CJHOJQJ0þO‘0 +Appendix B d +& F³ÿÿÿÿÿÿ’Z³nÿÿÿÿ:nÿÿÿÿjnÿÿÿÿaa¿¿¿¿  óóóö +ñ +[˜³ 45ž $' ÿ Þ +¯È  'üA‰(°´°³!"$%'()*,-/0136ÂP¾ å +í*æ ³#&+.2c|'q›¬ÈÊÖòô2NPk‡‰’®°»×Ùæ-/7SUWñ  + +. D F / +E +G +—™³ ”ÿ•€ +4ÿ%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À%4ÿ•À•Œ 4ÿ•€ 4ÿ•€ 4ÿ•€ 4ÿ•€ $<>U^cŠœ²¹¼Ëãûý"I[qx{ƒª¼ÒÙÛàîðötÿ•€tÿ•€XÿŒ!tÿ•€tÿ•€tÿ•€XÿŒ!tÿ•€XÿŒ!tÿ•€Btÿ•€:”ÿ•Œð˜ð/ðXbð$³LZ­d7T6Z/•Ûvï7¶ÿM +—n2ð$2˜)f’D"ùy¯u“Tšü‹ÿ$ä{@ñÿÿÿ€€€÷ð&ððÄð( ð +ððö² +ð +ƒ ðÆŠA ?¿ÿ‚Ö¿ÐÉêyùºÎŒ‚ªK©  àÉêyùºÎŒ‚ªK© 4http://www.opencores.org/http://www.opencores.orgðððŽ² +ð +c ð^AÁ:¿ÿC:\OpenCores\wbc4windoze.epsðððB +ðS ð¿Ëÿ ?ðN³{ýÿÿpÿÿÿ»4Û x›õ 4ÿÿ Introduction +_Toc518887500 +_Toc518887501Clocks +_Toc518887502 Registers +_Toc518887503 +_Toc517168571 +_Toc518887504 +_Toc513532500 +_Toc517168572 +_Toc518887505 +_Toc518887506 +_Toc513532498 +_Toc518887507 +_Toc518887508 +_Toc517168576 +_Toc518887509 +_Toc517168578 +_Toc518887510 +_Toc513532494 +_Toc514386859 OLE_LINK1[[¿QQ     ë  + + ) +[ +®¯óô9$™­´ + +ggËZÿ ± ± 6 +6 +6 +‡ Y +c +®³óø9%™®´*./5  + !<ÓÜäî +SWX^ì$D{}¾¿ÂÃËÌÚÛÖ +Þ +p x B K Š ’ · ¿ Ï × ± +¹ +à +è +@I[^¨´åæZes¤¥Æ$z„ˆ™›œ±´6A!$%*+;17Weìïð÷ø  +#DGHOPab{}€ˆ‰—˜½¿ÂÃËÌÚÛ¨´åæZes¤¥Æ$z„ˆ™›œ±´ÿÿsimona=C:\WINNT\Profiles\simona\Personal\Specifications Template.docsimonaGD:\Program Files\Microsoft Office\Templates\Specifications Template.dotsimonaGD:\Program Files\Microsoft Office\Templates\Specifications Template.dotsimonaRC:\WINNT\Profiles\simona\Desktop\HDL coding guidelines\Specifications Template.dot|ÿÿÿŽfV2Uÿÿÿÿÿÿÿÿ}ÿÿÿòèÚhTÿÿÿÿÿÿÿÿ~ÿÿÿÐc˜:Sÿÿÿÿÿÿÿÿÿÿÿ¢Q|Rÿÿÿÿÿÿÿÿ€ÿÿÿèÁ†8KÿÿÿÿÿÿÿÿÿÿÿÜ^F˜Jÿÿÿÿÿÿÿÿ‚ÿÿÿ¤ˆ~IÿÿÿÿÿÿÿÿƒÿÿÿRoäôHÿÿÿÿÿÿÿÿˆÿÿÿÆô*tQÿÿÿÿÿÿÿÿ‰ÿÿÿL™Gÿÿÿÿÿÿÿÿe/½ +ŽðÌ) ,l5\C¼æÿÿÿÿÿÿÿÿÿ‹À>>Ö>ÿºw¨M¨EF0#c&EP|mXxÿTãV&#LÏd¥:Á_1–«)gj8hÂrFu‰9^z ÿE‚{ ÿ„„˜þÆ.„ „˜þÆ .„8„˜þÆ8.„Є˜þÆÐ. „„˜þÆOJQJo(·ð „ „˜þÆ OJQJo(·ð „8„˜þÆ8OJQJo(·ð „Є˜þÆÐOJQJo(·ð„h„˜þÆh. „h„˜þÆhOJQJo(·ðÿ„„ ƈ56CJ`OJQJo( Appendix A„h„˜þÆh^„h`„˜þ.„„PþÆ^„`„Pþ..„È„þÆ^„È`„þ...„À„xýÆØ ^„À`„xý.... „¸„èüƨ ^„¸`„èü +..... „° +„XüÆ^„° +`„Xü ...... +„¨ „ÈûÆà^„¨ `„Èû....... +„ „8ûÆ°^„ `„8û........ +„à„`úÆ€^„à`„`ú.........„h„˜þÆh^„h`„˜þÿ„„Æh56CJ`OJQJo(Index„h„˜þÆh^„h`„˜þ.ÿ„„ ƈ56CJ`OJQJo( Appendix B„„Æh56CJ`OJQJo(„h„˜þÆÐ „h„˜þÆhOJQJo(·ð„h„˜þÆh.‹À> ,l5c&EP‰9^zE‚{¥:Á_e/½ +ºw¨M‰ÿÿÿƒÿÿÿ‚ÿÿÿÿÿÿ€ÿÿÿˆÿÿÿÿÿÿ~ÿÿÿ}ÿÿÿ|ÿÿÿºw¨Me/½ +gj8hTãVÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@€(1ë³P@G‡ŸTimes New Roman5€Symbol3& ‡ŸArialA&Lucidabright5"Geneva?5 ‡ŸCourier New"1ŒðÐh[±Z&[±Z&ª#WfCé ÎK +!ð¥À´´€0dÚ ÿÿSpecifications Template"Template for Core's SpecificationsDLsimonardDocWord.Document.8ô9²q \ No newline at end of file Index: common/trunk/ver_plan.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: common/trunk/ver_plan.pdf =================================================================== --- common/trunk/ver_plan.pdf (nonexistent) +++ common/trunk/ver_plan.pdf (revision 48)
common/trunk/ver_plan.pdf Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: common/trunk/LPM_gates.v =================================================================== --- common/trunk/LPM_gates.v (nonexistent) +++ common/trunk/LPM_gates.v (revision 48) @@ -0,0 +1,725 @@ +//------------------------------------------------------------------------ +// This Verilog file was developed by Altera Corporation. It may be +// freely copied and/or distributed at no cost. Any persons using this +// file for any purpose do so at their own risk, and are responsible for +// the results of such use. Altera Corporation does not guarantee that +// this file is complete, correct, or fit for any particular purpose. +// NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. This notice must +// accompany any copy of this file. +// +//------------------------------------------------------------------------ +// Imported to Opencores directory. Date Sept 10, 2001 +// Split related modules into separate files, as the manual splits them. +// Added example instantiations to the beginning of each file. +// +/* EXAMPLE INSTANTIATIONS: + +lpm_constant +#( 1, // lpm_width + 0, // lpm_cvalue + "UNUSED" // lpm_strength, optional, {UNUSED, WEAK} + ) lpm_constant_example ( + .result (const_out[lpm_width-1:0]) +); + +lpm_inv +#( 1 // lpm_width + ) lpm_inv_example ( + .result (data_out[lpm_width-1:0]), + .data (data_in[lpm_width-1:0]) +); + +// NOTE: Bits data[lpm_size-1:0] are ANDed together to make result[0] +lpm_and +#( 1, // lpm_width (output width) + 1 // lpm_size (inputs to each gate) + ) lpm_and_example ( + .result (data_out[lpm_width-1:0]), + .data (data_in[(lpm_size*lpm_width)-1:0]) +); + +// NOTE: Bits data[lpm_size-1:0] are ORed together to make result[0] +lpm_or +#( 1, // lpm_width (output width) + 1 // lpm_size (inputs to each gate) + ) lpm_or_example ( + .result (data_out[lpm_width-1:0]), + .data (data_in[(lpm_size*lpm_width)-1:0]) +); + +// NOTE: Bits data_[lpm_size-1:0] are XORed together to make result[0] +lpm_xor +#( 1, // lpm_width (output width) + 1 // lpm_size (inputs to each gate) + ) lpm_xor_example ( + .result (data_out[lpm_width-1:0]), + .data (data_in[(lpm_size*lpm_width)-1:0]) +); + +lpm_bustri +#( 1 // lpm_width + ) lpm_bustri_example ( + .tridata (data_tristate[lpm_width-1:0]), + .data (data_to_tristate[lpm_width-1:0]), // CHOICE + .enabledt (enable_data_to_tristate_bus_HIGH), // OPTIONAL + .result (data_from_tristate[lpm_width-1:0]), // CHOICE + .enabletr (enable_data_to_result_bus_HIGH), // OPTIONAL +); + +// NOTE: Bits data[lpm_size-1:0] are SELECTED to make result[0] +lpm_mux +#( 1, // lpm_width (output width) + 1, // lpm_size (inputs to each mux) + 1, // lpm_widths (number of bits in output select bus) + 0 // lpm_pipeline, optional, {0, 1} + ) lpm_mux_example ( + .result (data_out[lpm_width-1:0]), + .data (data_in[(lpm_size*lpm_width)-1:0]), + .sel (data_sel[lpm_widths-1:0]), + .clock (clock_if_pipelined), // OPTIONAL + .clken (clock_enable_HIGH_if_pipelined), // OPTIONAL + .aclr (async_clear_if_pipelined) // OPTIONAL +); + +lpm_decode +#( 1, // lpm_width (number of bits in input to be decoded) + 1, // lpm_decodes (number of actual outputs decoded) + 0 // lpm_pipeline, optional, {0, 1} + ) lpm_decode_example ( + .eq (decodes_out[lpm_decodes-1:0]), + .data (data_in[lpm_width:0]), + .enable (force_all_outputs_LOW_when_LOW), // OPTIONAL + .clock (clock_if_pipelined), // OPTIONAL + .clken (clock_enable_HIGH_if_pipelined), // OPTIONAL + .aclr (async_clear_if_pipelined) // OPTIONAL +); + +lpm_clshift +#( 1, // lpm_width (width of input vector) + 1, // lpm_widthdist (width of shift distance port) + "LOGICAL" // lpm_shifttype, optional, {LOGICAL, ROTATE, ARITHMETIC} + ) lpm_clshift_example ( + .result (data_out[lpm_width-1:0]), + .overflow (overflow_means_arith_bit_lost_or_result_became_0), // OPTIONAL + .underflow (underflow_means_result_became_0), // OPTIONAL + .data (data_in[lpm_width-1:0]), + .direction (low_means_towards_LSB), // OPTIONAL + .distance (shift_distance[lpm_widthdist-1:0]) +); +*/ + +//------------------------------------------------------------------------ +// LPM Synthesizable Models +//------------------------------------------------------------------------ +// Version 1.5 (lpm 220) Date 12/17/99 +// +// Modified LPM_ADD_SUB and LPM_MULT to accomodate LPM_WIDTH = 1. +// Default values for LPM_WIDTH* are changed back to 1. +// Added LPM_HINT to LPM_DIVIDE. +// Rewritten LPM_FIFO_DC to output correctly. +// Modified LPM_FIFO to output 0s before first read, output correct +// values after aclr and sclr, and output LPM_NUMWORDS mod +// exp(2, LPM_WIDTHU) when FIFO is full. +// +//------------------------------------------------------------------------ +// Version 1.4.1 (lpm 220) Date 10/29/99 +// +// Default values for LPM_WIDTH* of LPM_ADD_SUB and LPM_MULT are changed +// from 1 to 2. +// +//------------------------------------------------------------------------ +// Version 1.4 (lpm 220) Date 10/18/99 +// +// Default values for each optional inputs for ALL modules are added. +// Some LPM_PVALUE implementations were missing, and now implemented. +// +//------------------------------------------------------------------------ +// Version 1.3 (lpm 220) Date 06/23/99 +// +// Corrected LPM_FIFO and LPM_FIFO_DC cout and empty/full flags. +// Implemented LPM_COUNTER cin/cout, and LPM_MODULUS is now working. +// +//------------------------------------------------------------------------ +// Version 1.2 (lpm 220) Date 06/16/99 +// +// Added LPM_RAM_DP, LPM_RAM_DQ, LPM_IO, LPM_ROM, LPM_FIFO, LPM_FIFO_DC. +// Parameters and ports are added/discarded according to the spec. +// +//------------------------------------------------------------------------ +// Version 1.1 (lpm 220) Date 02/05/99 +// +// Added LPM_DIVIDE module. +// +//------------------------------------------------------------------------ +// Version 1.0 Date 07/09/97 +// +//------------------------------------------------------------------------ +// Excluded Functions: +// +// LPM_FSM and LPM_TTABLE. +// +//------------------------------------------------------------------------ +// Assumptions: +// +// 1. LPM_SVALUE, LPM_AVALUE, LPM_MODULUS, and LPM_NUMWORDS, +// LPM_STRENGTH, LPM_DIRECTION, and LPM_PVALUE default value is +// string UNUSED. +// +//------------------------------------------------------------------------ +// Verilog Language Issues: +// +// Two dimensional ports are not supported. Modules with two dimensional +// ports are implemented as one dimensional signal of (LPM_SIZE * LPM_WIDTH) +// bits wide. +// +//------------------------------------------------------------------------ +// Synthesis Issues: +// +// 1. LPM_COUNTER +// +// Currently synthesis tools do not allow mixing of level and edge +// sensetive signals. To overcome that problem the "data" signal is +// removed from the clock always block of lpm_counter, however the +// synthesis result is accurate. For correct simulation add the "data" +// pin to the sensetivity list as follows: +// +// always @(posedge clock or posedge aclr or posedge aset or +// posedge aload or data) +//------------------------------------------------------------------------ + +module lpm_constant ( result ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_cvalue = 0; + parameter lpm_strength = "UNUSED"; + parameter lpm_type = "lpm_constant"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + output [lpm_width-1:0] result; + + assign result = lpm_cvalue; + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_constant") || (lpm_type !== "lpm_constant")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_constant + +//------------------------------------------------------------------------ + +module lpm_inv ( result, data ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_type = "lpm_inv"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_width-1:0] data; + output [lpm_width-1:0] result; + + reg [lpm_width-1:0] result; + + always @(data) + begin + result = ~data; + end + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_inv") || (lpm_type !== "lpm_inv")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_inv + +//------------------------------------------------------------------------ + +module lpm_and ( result, data ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_size = 1; + parameter lpm_type = "lpm_and"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [(lpm_size * lpm_width)-1:0] data; + output [lpm_width-1:0] result; + + reg [lpm_width-1:0] result; + integer i, j, k; + + always @(data) + begin + for (i=0; i 0)) // shift right + begin + tmp_buf = data >> dist; + if ((data != 0) && ((dist >= lpm_width) || (tmp_buf == 0))) + underflow = 1'b1; + end + else if (dist > 0) // shift left + begin + tmp_buf = data << dist; + if ((data != 0) && ((dist >= lpm_width) + || ((data >> (lpm_width-dist)) != 0))) + overflow = 1'b1; + end + LogicShift = {overflow,underflow,tmp_buf[lpm_width-1:0]}; + end + endfunction + +//---------------------------------------------------------------// + function [lpm_width+1:0] ArithShift; + input [lpm_width-1:0] data; + input [lpm_widthdist-1:0] dist; + input direction; + reg [lpm_width-1:0] tmp_buf; + reg overflow, underflow; + + begin + tmp_buf = data; + overflow = 1'b0; + underflow = 1'b0; + + if (direction && (dist > 0)) // shift right + begin + if (data[lpm_width-1] == 0) // positive number + begin + tmp_buf = data >> dist; + if ((data != 0) && ((dist >= lpm_width) || (tmp_buf == 0))) + underflow = 1'b1; + end + else // negative number + begin + tmp_buf = (data >> dist) | (ONES << (lpm_width - dist)); + if ((data != ONES) && ((dist >= lpm_width-1) || (tmp_buf == ONES))) + underflow = 1'b1; + end + end + else if (dist > 0) // shift left + begin + tmp_buf = data << dist; + if (data[lpm_width-1] == 0) // positive number + begin + if ((data != 0) && ((dist >= lpm_width-1) + || ((data >> (lpm_width-dist-1)) != 0))) + overflow = 1'b1; + end + else // negative number + begin + if ((data != ONES) && ((dist >= lpm_width) + || (((data >> (lpm_width-dist-1))|(ONES << (dist+1))) != ONES))) + overflow = 1'b1; + end + end + ArithShift = {overflow,underflow,tmp_buf[lpm_width-1:0]}; + end + endfunction + +//---------------------------------------------------------------// + function [lpm_width-1:0] RotateShift; + input [lpm_width-1:0] data; + input [lpm_widthdist-1:0] dist; + input direction; + reg [lpm_width-1:0] tmp_buf; + + begin + tmp_buf = data; + if ((direction) && (dist > 0)) // shift right + begin + tmp_buf = (data >> dist) | (data << (lpm_width - dist)); + end + else if (dist > 0) // shift left + begin + tmp_buf = (data << dist) | (data >> (lpm_width - dist)); + end + RotateShift = tmp_buf[lpm_width-1:0]; + end + endfunction +//---------------------------------------------------------------// + + initial + begin + for (i=0; i < lpm_width; i=i+1) + ONES[i] = 1'b1; + end + + always @(data or i_direction or distance) + begin + // lpm_shifttype is optional and default to LOGICAL + if ((lpm_shifttype == "LOGICAL")) + begin + {overflow,underflow,result} = LogicShift(data,distance,i_direction); + end + else if (lpm_shifttype == "ARITHMETIC") + begin + {overflow,underflow,result} = ArithShift(data,distance,i_direction); + end + else if (lpm_shifttype == "ROTATE") + begin + result = RotateShift(data, distance, i_direction); + overflow = 1'b0; + underflow = 1'b0; + end + else + begin + result = 'bx; + overflow = 1'b0; + underflow = 1'b0; + end + end + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_clshift") || (lpm_type !== "lpm_clshift")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_clshift Index: common/trunk/LPM_storage.v =================================================================== --- common/trunk/LPM_storage.v (nonexistent) +++ common/trunk/LPM_storage.v (revision 48) @@ -0,0 +1,1936 @@ +//------------------------------------------------------------------------ +// This Verilog file was developed by Altera Corporation. It may be +// freely copied and/or distributed at no cost. Any persons using this +// file for any purpose do so at their own risk, and are responsible for +// the results of such use. Altera Corporation does not guarantee that +// this file is complete, correct, or fit for any particular purpose. +// NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. This notice must +// accompany any copy of this file. +// +//------------------------------------------------------------------------ +// Imported to Opencores directory. Date Sept 10, 2001 +// Split related modules into separate files, as the manual splits them. +// Added example instantiations to the beginning of each file. +// +/* EXAMPLE INSTANTIATIONS: + +lpm_latch +#( 1, // lpm_width + "UNUSED", // lpm_avalue, aset value, optional, -1 if not set + "UNUSED" // lpm_pvalue, power-up value, optional + ) lpm_latch_example ( + .q (data_out[lpm_width-1:0]), + .data (data_in[lpm_width-1:0]), + .gate (pass_thru_when_HIGH), + .aset (set_to_aset_value_when_HIGH), // OPTIONAL + .aclr (set_to_zero_when_HIGH) // OPTIONAL +); + +lpm_ff +#( 1, // lpm_width + "UNUSED", // lpm_avalue, aset value, optional, -1 if not set + "UNUSED", // lpm_svalue, sset value, optional, -1 if not set + "UNUSED", // lpm_pvalue, power-up value, optional + "DFF" // lpm_fftype, optional, {DFF, TFF} + ) lpm_ff_example ( + .q (data_out[lpm_width-1:0]), + .data (data_in[lpm_width-1:0]), + .clock (rising_edge_flop_clock), + .enable (clock_enable_when_HIGH), // OPTIONAL + .sload (load_data_to_toggle_flops_if_TFF), // OPTIONAL + .sset (load_data_from_svalue_if_HIGH), // OPTIONAL + .sclr (set_value_to_0_if_HIGH), // OPTIONAL + .aload (load_data_to_toggle_flops_if_TFF), // OPTIONAL + .aset (load_data_from_svalue_if_HIGH), // OPTIONAL + .aclr (set_value_to_0_if_HIGH) // OPTIONAL +); + +lpm_shiftreg +#( 1, // lpm_width + "UNUSED", // lpm_avalue, aset value, optional, -1 if not set + "UNUSED", // lpm_svalue, sset value, optional, -1 if not set + "UNUSED", // lpm_pvalue, power-up value, optional + "LEFT" // lpm_direction, optional, {LEFT, RIGHT} + ) lpm_shiftreg_example ( + .q (data_out[lpm_width-1:0]), + .shiftout (shift_data_from_LSB_or_MSB), + .data (parallel_data_in[lpm_width-1:0]), // OPTIONAL + .shiftin (shift_data_to_LSB_or_MSB), + .clock (rising_edge_flop_clock), + .enable (clock_enable_when_HIGH), // OPTIONAL + .load (parallel_load_data_when_HIGH), // OPTIONAL + .sset (load_data_from_svalue_if_HIGH), // OPTIONAL + .sclr (set_value_to_0_if_HIGH), // OPTIONAL + .aset (load_data_from_svalue_if_HIGH), // OPTIONAL + .aclr (set_value_to_0_if_HIGH) // OPTIONAL +); + +lpm_ram_dq +#( 1, // lpm_width + parameter lpm_widthad = 1; + parameter lpm_numwords = 1 << lpm_widthad; + parameter lpm_indata = "REGISTERED"; + parameter lpm_address_control = "REGISTERED"; + parameter lpm_outdata = "REGISTERED"; + parameter lpm_file = "UNUSED"; + ) lpm_ram_dq_example ( + .q (data_out[lpm_width-1:0]), + .data (parallel_data_in[lpm_width-1:0]), +); +// NOTE: WORKING +( q, data, inclock, outclock, we, address ); + + input [lpm_width-1:0] data; + input [lpm_widthad-1:0] address; + input inclock, outclock, we; + output [lpm_width-1:0] q; + + +lpm_ram_dp +#( 1, // lpm_width + parameter lpm_widthad = 1; + parameter lpm_numwords = 1<< lpm_widthad; + parameter lpm_indata = "REGISTERED"; + parameter lpm_outdata = "REGISTERED"; + parameter lpm_rdaddress_control = "REGISTERED"; + parameter lpm_wraddress_control = "REGISTERED"; + parameter lpm_file = "UNUSED"; + ) lpm_ram_dp_example ( + .q (data_out[lpm_width-1:0]), + .data (parallel_data_in[lpm_width-1:0]), +); +( q, data, wraddress, rdaddress, rdclock, wrclock, rdclken, wrclken, rden, wren); + + input [lpm_width-1:0] data; + input [lpm_widthad-1:0] rdaddress, wraddress; + input rdclock, wrclock, rdclken, wrclken, rden, wren; + output [lpm_width-1:0] q; + + +lpm_ram_io +#( 1, // lpm_width + parameter lpm_widthad = 1; + parameter lpm_numwords = 1<< lpm_widthad; + parameter lpm_indata = "REGISTERED"; + parameter lpm_address_control = "REGISTERED"; + parameter lpm_outdata = "REGISTERED"; + parameter lpm_file = "UNUSED"; + ) lpm_ram_io_example ( + .q (data_out[lpm_width-1:0]), + .data (parallel_data_in[lpm_width-1:0]), +); +( dio, inclock, outclock, we, memenab, outenab, address ); + + input [lpm_widthad-1:0] address; + input inclock, outclock, we; + input memenab; + input outenab; + inout [lpm_width-1:0] dio; + +lpm_rom +#( 1, // lpm_width + parameter lpm_widthad = 1; + parameter lpm_numwords = 1<< lpm_widthad; + parameter lpm_address_control = "REGISTERED"; + parameter lpm_outdata = "REGISTERED"; + parameter lpm_file = "rom.hex"; + ) lpm_rom_example ( + .q (data_out[lpm_width-1:0]), + .data (parallel_data_in[lpm_width-1:0]), +); +( q, inclock, outclock, memenab, address ); + + input [lpm_widthad-1:0] address; + input inclock, outclock; + input memenab; + output [lpm_width-1:0] q; + +lpm_fifo +#( 1, // lpm_width + parameter lpm_widthu = 1; + parameter lpm_numwords = 2; + parameter lpm_showahead = "OFF"; + ) lpm_fifo_example ( + .q (data_out[lpm_width-1:0]), + .data (parallel_data_in[lpm_width-1:0]), +); +(data, clock, wrreq, rdreq, aclr, sclr, q, usedw, full, empty); + + input [lpm_width-1:0] data; + input clock; + input wrreq; + input rdreq; + input aclr; + input sclr; + output [lpm_width-1:0] q; + output [lpm_widthu-1:0] usedw; + output full; + output empty; + + +lpm_fifo_dc +#( 1, // lpm_width + parameter lpm_widthu = 1; + parameter lpm_numwords = 2; + parameter lpm_showahead = "OFF"; + ) lpm_fifo_dc_example ( + .q (data_out[lpm_width-1:0]), + .data (parallel_data_in[lpm_width-1:0]), +); +( data, rdclock, wrclock, aclr, rdreq, wrreq, rdfull, wrfull, rdempty, wrempty, rdusedw, wrusedw, q ); + + input [lpm_width-1:0] data; + input rdclock; + input wrclock; + input wrreq; + input rdreq; + input aclr; + output rdfull; + output wrfull; + output rdempty; + output wrempty; + output [lpm_width-1:0] q; + output [lpm_widthu-1:0] rdusedw; + output [lpm_widthu-1:0] wrusedw; + +*/ + +//------------------------------------------------------------------------ +// LPM Synthesizable Models +//------------------------------------------------------------------------ +// Version 1.5 (lpm 220) Date 12/17/99 +// +// Modified LPM_ADD_SUB and LPM_MULT to accomodate LPM_WIDTH = 1. +// Default values for LPM_WIDTH* are changed back to 1. +// Added LPM_HINT to LPM_DIVIDE. +// Rewritten LPM_FIFO_DC to output correctly. +// Modified LPM_FIFO to output 0s before first read, output correct +// values after aclr and sclr, and output LPM_NUMWORDS mod +// exp(2, LPM_WIDTHU) when FIFO is full. +// +//------------------------------------------------------------------------ +// Version 1.4.1 (lpm 220) Date 10/29/99 +// +// Default values for LPM_WIDTH* of LPM_ADD_SUB and LPM_MULT are changed +// from 1 to 2. +// +//------------------------------------------------------------------------ +// Version 1.4 (lpm 220) Date 10/18/99 +// +// Default values for each optional inputs for ALL modules are added. +// Some LPM_PVALUE implementations were missing, and now implemented. +// +//------------------------------------------------------------------------ +// Version 1.3 (lpm 220) Date 06/23/99 +// +// Corrected LPM_FIFO and LPM_FIFO_DC cout and empty/full flags. +// Implemented LPM_COUNTER cin/cout, and LPM_MODULUS is now working. +// +//------------------------------------------------------------------------ +// Version 1.2 (lpm 220) Date 06/16/99 +// +// Added LPM_RAM_DP, LPM_RAM_DQ, LPM_IO, LPM_ROM, LPM_FIFO, LPM_FIFO_DC. +// Parameters and ports are added/discarded according to the spec. +// +//------------------------------------------------------------------------ +// Version 1.1 (lpm 220) Date 02/05/99 +// +// Added LPM_DIVIDE module. +// +//------------------------------------------------------------------------ +// Version 1.0 Date 07/09/97 +// +//------------------------------------------------------------------------ +// Excluded Functions: +// +// LPM_FSM and LPM_TTABLE. +// +//------------------------------------------------------------------------ +// Assumptions: +// +// 1. LPM_SVALUE, LPM_AVALUE, LPM_MODULUS, and LPM_NUMWORDS, +// LPM_STRENGTH, LPM_DIRECTION, and LPM_PVALUE default value is +// string UNUSED. +// +//------------------------------------------------------------------------ +// Verilog Language Issues: +// +// Two dimensional ports are not supported. Modules with two dimensional +// ports are implemented as one dimensional signal of (LPM_SIZE * LPM_WIDTH) +// bits wide. +// +//------------------------------------------------------------------------ +// Synthesis Issues: +// +// 1. LPM_COUNTER +// +// Currently synthesis tools do not allow mixing of level and edge +// sensetive signals. To overcome that problem the "data" signal is +// removed from the clock always block of lpm_counter, however the +// synthesis result is accurate. For correct simulation add the "data" +// pin to the sensetivity list as follows: +// +// always @(posedge clock or posedge aclr or posedge aset or +// posedge aload or data) +//------------------------------------------------------------------------ + +module lpm_latch ( q, data, gate, aset, aclr ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_avalue = "UNUSED"; + parameter lpm_pvalue = "UNUSED"; + parameter lpm_type = "lpm_latch"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_width-1:0] data; + input gate, aset, aclr; + output [lpm_width-1:0] q; + + reg [lpm_width-1:0] q; + + tri0 aset; + tri0 aclr; + + buf (i_aset, aset); + buf (i_aclr, aclr); + +//---------------------------------------------------------------// +// function integer str_to_int; +//---------------------------------------------------------------// + function integer str_to_int; + input [8*16:1] s; + + reg [8*16:1] reg_s; + reg [8:1] digit; + reg [8:1] tmp; + integer m , ivalue; + + begin + ivalue = 0; + reg_s = s; + for (m=1; m<=16; m= m+1) + begin + tmp = reg_s[128:121]; + digit = tmp & 8'b00001111; + reg_s = reg_s << 8; + ivalue = ivalue * 10 + digit; + end + str_to_int = ivalue; + end + endfunction +//---------------------------------------------------------------// + + initial + begin + if (lpm_pvalue != "UNUSED") + q = str_to_int(lpm_pvalue); + end + + always @(data or gate or i_aclr or i_aset) + begin + if (i_aclr) + q = 'b0; + else if (i_aset) + begin + if (lpm_avalue == "UNUSED") + q = {lpm_width{1'b1}}; + else + q = str_to_int(lpm_avalue); + end + else if (gate) + q = data; + end + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_latch") || (lpm_type !== "lpm_latch")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_latch + +//------------------------------------------------------------------------ + +module lpm_ff ( q, data, clock, enable, aclr, aset, + sclr, sset, aload, sload ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_avalue = "UNUSED"; + parameter lpm_svalue = "UNUSED"; + parameter lpm_pvalue = "UNUSED"; + parameter lpm_fftype = "DFF"; + parameter lpm_type = "lpm_ff"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + + input [lpm_width-1:0] data; + input clock, enable; + input aclr, aset; + input sclr, sset; + input aload, sload ; + output [lpm_width-1:0] q; + + reg [lpm_width-1:0] tmp_q; + integer i; + + tri1 enable; + tri0 sload; + tri0 sclr; + tri0 sset; + tri0 aload; + tri0 aclr; + tri0 aset; + + buf (i_enable, enable); + buf (i_sload, sload); + buf (i_sclr, sclr); + buf (i_sset, sset); + buf (i_aload, aload); + buf (i_aclr, aclr); + buf (i_aset, aset); + +//---------------------------------------------------------------// +// function integer str_to_int; +//---------------------------------------------------------------// + function integer str_to_int; + input [8*16:1] s; + + reg [8*16:1] reg_s; + reg [8:1] digit; + reg [8:1] tmp; + integer m , ivalue; + + begin + ivalue = 0; + reg_s = s; + for (m=1; m<=16; m= m+1) + begin + tmp = reg_s[128:121]; + digit = tmp & 8'b00001111; + reg_s = reg_s << 8; + ivalue = ivalue * 10 + digit; + end + str_to_int = ivalue; + end + endfunction +//---------------------------------------------------------------// + + initial + begin + if (lpm_pvalue != "UNUSED") + tmp_q = str_to_int(lpm_pvalue); + end + + always @(posedge clock or posedge i_aclr or posedge i_aset or + posedge i_aload) + begin :asyn_block // Asynchronous process + if (i_aclr) + begin + tmp_q = 0; + end + else if (i_aset) + begin + if (lpm_avalue == "UNUSED") + tmp_q = {lpm_width{1'b1}}; + else + tmp_q = str_to_int(lpm_avalue); + end + else if (i_aload) + begin + tmp_q = data; + end + else + begin :syn_block // Synchronous process + if (i_enable) + begin + if (i_sclr) + begin + tmp_q = 0; + end + else if (i_sset) + begin + if (lpm_svalue == "UNUSED") + tmp_q = {lpm_width{1'b1}}; + else + tmp_q = str_to_int(lpm_svalue); + end + else if (i_sload) // Load data + begin + tmp_q = data; + end + else + begin + if (lpm_fftype == "TFF") // toggle + begin + for (i = 0; i < lpm_width; i=i+1) + begin + if (data[i] == 1'b1) + tmp_q[i] = ~tmp_q[i]; + end + end + else + if (lpm_fftype == "DFF") // load data + tmp_q = data; + end + end + end + end + + assign q = tmp_q; + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_ff") || (lpm_type !== "lpm_ff")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_ff + +//------------------------------------------------------------------------ + +module lpm_shiftreg ( q, shiftout, data, clock, enable, aclr, aset, + sclr, sset, shiftin, load ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_avalue = "UNUSED"; + parameter lpm_svalue = "UNUSED"; + parameter lpm_pvalue = "UNUSED"; + parameter lpm_direction = "LEFT"; + parameter lpm_type = "lpm_shiftreg"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_width-1:0] data; + input clock, enable; + input aclr, aset; + input sclr, sset; + input shiftin, load; + output [lpm_width-1:0] q; + output shiftout; + + reg [lpm_width-1:0] tmp_q; + reg abit; + integer i; + + wire tmp_shiftout; + + tri1 enable; + tri1 shiftin; + tri0 load; + tri0 sclr; + tri0 sset; + tri0 aclr; + tri0 aset; + + buf (i_enable, enable); + buf (i_shiftin, shiftin); + buf (i_load, load); + buf (i_sclr, sclr); + buf (i_sset, sset); + buf (i_aclr, aclr); + buf (i_aset, aset); + + +//---------------------------------------------------------------// +// function integer str_to_int; +//---------------------------------------------------------------// + function integer str_to_int; + input [8*16:1] s; + + reg [8*16:1] reg_s; + reg [8:1] digit; + reg [8:1] tmp; + integer m , ivalue; + + begin + ivalue = 0; + reg_s = s; + for (m=1; m<=16; m= m+1) + begin + tmp = reg_s[128:121]; + digit = tmp & 8'b00001111; + reg_s = reg_s << 8; + ivalue = ivalue * 10 + digit; + end + str_to_int = ivalue; + end + endfunction +//---------------------------------------------------------------// + + initial + begin + if (lpm_pvalue != "UNUSED") + tmp_q = str_to_int(lpm_pvalue); + end + + always @(posedge clock or posedge i_aclr or posedge i_aset) + begin :asyn_block // Asynchronous process + if (i_aclr) + begin + tmp_q = 0; + end + else if (i_aset) + begin + if (lpm_avalue === "UNUSED") + tmp_q = {lpm_width{1'b1}}; + else + tmp_q = str_to_int(lpm_avalue); + end + else + begin :syn_block // Synchronous process + if (i_enable) + begin + if (i_sclr) + begin + tmp_q = 0; + end + else if (i_sset) + begin + if (lpm_svalue === "UNUSED") + tmp_q = {lpm_width{1'b1}}; + else + tmp_q = str_to_int(lpm_svalue); + end + else if (i_load) + begin + tmp_q = data; + end + else if (!i_load) + begin + if (lpm_direction === "LEFT") + begin + {abit,tmp_q} = {tmp_q,i_shiftin}; + end + else if (lpm_direction === "RIGHT") + begin + {tmp_q,abit} = {i_shiftin,tmp_q}; + end + end + end + end + end + + + assign tmp_shiftout = (lpm_direction === "LEFT") ? tmp_q[lpm_width-1] + : tmp_q[0]; + assign q = tmp_q; + assign shiftout = tmp_shiftout; + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_shiftreg") || (lpm_type !== "lpm_shiftreg")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_shiftreg + +//------------------------------------------------------------------------ + +module lpm_ram_dq ( q, data, inclock, outclock, we, address ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_widthad = 1; + parameter lpm_numwords = 1 << lpm_widthad; + parameter lpm_indata = "REGISTERED"; + parameter lpm_address_control = "REGISTERED"; + parameter lpm_outdata = "REGISTERED"; + parameter lpm_file = "UNUSED"; + parameter lpm_type = "lpm_ram_dq"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_width-1:0] data; + input [lpm_widthad-1:0] address; + input inclock, outclock, we; + output [lpm_width-1:0] q; + + + // internal reg + reg [lpm_width-1:0] mem_data [lpm_numwords-1:0]; + reg [lpm_width-1:0] tmp_q; + reg [lpm_width-1:0] pdata; + reg [lpm_width-1:0] in_data; + reg [lpm_widthad-1:0] paddress; + reg pwe; + reg [lpm_width-1:0] ZEROS, UNKNOWN; + reg [8*256:1] ram_initf; + integer i; + + tri0 inclock; + tri0 outclock; + + buf (i_inclock, inclock); + buf (i_outclock, outclock); + +//---------------------------------------------------------------// + function ValidAddress; + input [lpm_widthad-1:0] paddress; + + begin + ValidAddress = 1'b0; + if (^paddress ==='bx) + $display("%d:Error! Invalid address.\n", $time); + else if (paddress >= lpm_numwords) + $display("%d:Error! Address out of bound on RAM.\n", $time); + else + ValidAddress = 1'b1; + end + endfunction +//---------------------------------------------------------------// + + initial + begin + + // Initialize the internal data register. + pdata = 0; + paddress = 0; + pwe = 0; + tmp_q = 0; + + if (lpm_width <= 0) + $display("Error! lpm_width parameter must be greater than 0."); + + if (lpm_widthad <= 0) + $display("Error! lpm_widthad parameter must be greater than 0."); + // check for number of words out of bound + if ((lpm_numwords > (1 << lpm_widthad)) + ||(lpm_numwords <= (1 << (lpm_widthad-1)))) + begin + $display("Error! lpm_numwords must equal to the ceiling of log2(lpm_widthad)."); + + end + + if ((lpm_indata !== "REGISTERED") && (lpm_indata !== "UNREGISTERED")) + begin + $display("Error! lpm_indata must be REGISTERED (the default) or UNREGISTERED."); + end + + if ((lpm_address_control !== "REGISTERED") && (lpm_address_control !== "UNREGISTERED")) + begin + $display("Error! lpm_address_control must be REGISTERED (the default) or UNREGISTERED."); + end + + if ((lpm_outdata !== "REGISTERED") && (lpm_outdata !== "UNREGISTERED")) + begin + $display("Error! lpm_outdata must be REGISTERED (the default) or UNREGISTERED."); + end + + // check if lpm_indata or lpm_address_control is set to registered + // inclock must be used. + if (((lpm_indata === "REGISTERED") || (lpm_address_control === "REGISTERED")) && (inclock === 1'bz)) + begin + $display("Error! inclock = 1'bz. Inclock pin must be used.\n"); + end + + // check if lpm_outdata, outclock must be used + if ((lpm_outdata === "REGISTERED") && (outclock === 1'bz)) + begin + $display("Error! lpm_outdata = REGISTERED, outclock = 1'bz . Outclock pin must be used.\n"); + end + + for (i=0; i < lpm_width; i=i+1) + begin + ZEROS[i] = 1'b0; + UNKNOWN[i] = 1'bX; + end + + for (i = 0; i < lpm_numwords; i=i+1) + mem_data[i] = ZEROS; + + // load data to the RAM + if (lpm_file != "UNUSED") + begin + $convert_hex2ver(lpm_file, lpm_width, ram_initf); + $readmemh(ram_initf, mem_data); + end + + end + + + always @(posedge i_inclock) + begin + if ((lpm_indata === "REGISTERED") && (lpm_address_control === "REGISTERED")) + begin + paddress <= address; + pdata <= data; + pwe <= we; + end + else + begin + if ((lpm_indata === "REGISTERED") && (lpm_address_control === "UNREGISTERED")) + pdata <= data; + + if ((lpm_indata === "UNREGISTERED") && (lpm_address_control === "REGISTERED")) + begin + paddress <= address; + pwe <= we; + end + end + end + + always @(data) + begin + if (lpm_indata === "UNREGISTERED") + pdata <= data; + end + + always @(address) + begin + if (lpm_address_control === "UNREGISTERED") + paddress <= address; + end + + always @(we) + begin + if (lpm_address_control === "UNREGISTERED") + pwe <= we; + end + + always @(pdata or paddress or pwe) + begin :unregistered_inclock + if (ValidAddress(paddress)) + begin + if ((lpm_indata === "UNREGISTERED" && lpm_address_control === "UNREGISTERED") || (lpm_address_control === "UNREGISTERED")) + begin + if (pwe) + mem_data[paddress] <= pdata; + end + + end + else + begin + if (lpm_outdata === "UNREGISTERED") + tmp_q <= UNKNOWN; + end + end + + always @(posedge i_outclock) + begin + if (lpm_outdata === "REGISTERED") + begin + if (ValidAddress(paddress)) + tmp_q <= mem_data[paddress]; + else + tmp_q <= UNKNOWN; + end + end + + always @(negedge i_inclock) + begin + if (lpm_address_control === "REGISTERED") + begin + if (pwe) + mem_data[paddress] <= pdata; + end + end + + assign q = ( lpm_outdata === "UNREGISTERED" ) ? mem_data[paddress] : tmp_q; + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_ram_dq") || (lpm_type !== "lpm_ram_dq")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_ram_dq + +//------------------------------------------------------------------------ + +module lpm_ram_dp ( q, data, wraddress, rdaddress, rdclock, wrclock, rdclken, wrclken, rden, wren); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_widthad = 1; + parameter lpm_numwords = 1<< lpm_widthad; + parameter lpm_indata = "REGISTERED"; + parameter lpm_outdata = "REGISTERED"; + parameter lpm_rdaddress_control = "REGISTERED"; + parameter lpm_wraddress_control = "REGISTERED"; + parameter lpm_file = "UNUSED"; + parameter lpm_type = "lpm_ram_dp"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_width-1:0] data; + input [lpm_widthad-1:0] rdaddress, wraddress; + input rdclock, wrclock, rdclken, wrclken, rden, wren; + output [lpm_width-1:0] q; + + + // internal reg + reg [lpm_width-1:0] mem_data [lpm_numwords-1:0]; + reg [lpm_width-1:0] tmp_q; + reg [lpm_width-1:0] prev_q; + reg [lpm_width-1:0] new_data; + reg [lpm_widthad-1:0] new_raddress; + reg [lpm_widthad-1:0] new_wraddress; + reg wren_event, rden_event; + reg [lpm_width-1:0] ZEROS, UNKNOWN; + reg [8*256:1] ram_initf; + integer i; + + tri0 rdclock; + tri1 rdclken; + tri1 rden; + tri0 wrclock; + tri1 wrclken; + + buf (i_rdclock, rdclock); + buf (i_rdclken, rdclken); + buf (i_rden, rden); + buf (i_wrclock, wrclock); + buf (i_wrclken, wrclken); + + +//---------------------------------------------------------------// + function ValidAddress; + input [lpm_widthad-1:0] paddress; + + begin + ValidAddress = 1'b0; + if (^paddress ==='bx) + $display("%d:Error! Invalid address.\n", $time); + else if (paddress >= lpm_numwords) + $display("%d:Error! Address out of bound on RAM.\n", $time); + else + ValidAddress = 1'b1; + end + endfunction +//---------------------------------------------------------------// + + initial + begin + + // Initialize the internal data register. + new_data = 0; + new_raddress = 0; + new_wraddress = 0; + wren_event = 0; + tmp_q = 0; + + if (lpm_width <= 0) + $display("Error! lpm_width parameter must be greater than 0."); + + if (lpm_widthad <= 0) + $display("Error! lpm_widthad parameter must be greater than 0."); + // check for number of words out of bound + if ((lpm_numwords > (1 << lpm_widthad)) + ||(lpm_numwords <= (1 << (lpm_widthad-1)))) + begin + $display("Error! lpm_numwords must equal to the ceiling of log2(lpm_widthad)."); + end + + if ((lpm_indata !== "REGISTERED") && (lpm_indata !== "UNREGISTERED")) + begin + $display("Error! lpm_indata must be REGISTERED (the default) or UNREGISTERED."); + end + + if ((lpm_rdaddress_control !== "REGISTERED") && (lpm_rdaddress_control !== "UNREGISTERED")) + begin + $display("Error! lpm_rdaddress_control must be REGISTERED (the default) or UNREGISTERED."); + end + + if ((lpm_wraddress_control !== "REGISTERED") && (lpm_wraddress_control !== "UNREGISTERED")) + begin + $display("Error! lpm_wraddress_control must be REGISTERED (the default) or UNREGISTERED."); + end + + if ((lpm_outdata !== "REGISTERED") && (lpm_outdata !== "UNREGISTERED")) + begin + $display("Error! lpm_outdata must be REGISTERED (the default) or UNREGISTERED."); + end + + // check if lpm_indata or lpm_wraddress_control is set to registered + // wrclock and wrclken must be used. + if (((lpm_indata === "REGISTERED") || (lpm_wraddress_control === "REGISTERED")) && ((wrclock === 1'bz) || (wrclken == 1'bz))) + begin + $display("Error! wrclock = 1'bz. wrclock and wrclken pins must be used.\n"); + end + + // check if lpm_rdaddress_control is set to registered + // rdclock and rdclken must be used. + if ((lpm_rdaddress_control === "REGISTERED") && ((rdclock === 1'bz) || (rdclken == 1'bz))) + begin + $display("Error! rdclock = 1'bz. rdclock and rdclken pins must be used.\n"); + end + + // check if lpm_outdata, rdclock must be used + if ((lpm_outdata === "REGISTERED") && (rdclock === 1'bz)) + begin + $display("Error! lpm_outdata = REGISTERED, rdclock = 1'bz . rdclock pnd rdclken pins must be used.\n"); + end + + for (i=0; i < lpm_width; i=i+1) + begin + ZEROS[i] = 1'b0; + UNKNOWN[i] = 1'bX; + end + + for (i = 0; i < lpm_numwords; i=i+1) + mem_data[i] = ZEROS; + + // load data to the RAM + if (lpm_file != "UNUSED") + begin + $convert_hex2ver(lpm_file, lpm_width, ram_initf); + $readmemh(ram_initf, mem_data); + end + end + + + always @(posedge i_wrclock) + begin + if (i_wrclken) + begin + if ((lpm_indata === "REGISTERED") && (lpm_wraddress_control === "REGISTERED")) + begin + new_wraddress <= wraddress; + new_data <= data; + wren_event <= wren; + end + else + begin + if ((lpm_indata === "REGISTERED") && (lpm_wraddress_control === "UNREGISTERED")) + new_data <= data; + + if ((lpm_indata === "UNREGISTERED") && (lpm_wraddress_control === "REGISTERED")) + begin + new_wraddress <= wraddress; + wren_event <= wren; + end + end + end + end + + + always @(data) + begin + if (lpm_indata === "UNREGISTERED") + new_data <= data; + end + + always @(wraddress) + begin + if (lpm_wraddress_control === "UNREGISTERED") + new_wraddress <= wraddress; + end + + always @(rdaddress) + begin + if (lpm_rdaddress_control === "UNREGISTERED") + new_raddress <= rdaddress; + end + + always @(wren) + begin + if (lpm_wraddress_control === "UNREGISTERED") + wren_event <= wren; + end + + always @(i_rden) + begin + if (lpm_rdaddress_control === "UNREGISTERED") + rden_event <= i_rden; + end + + always @(new_data or new_wraddress or wren_event) + begin + if (ValidAddress(new_wraddress)) + begin + if ((wren_event) && (i_wrclken)) + mem_data[new_wraddress] <= new_data; + end + else + begin + if (lpm_outdata === "UNREGISTERED") + tmp_q <= UNKNOWN; + end + end + + always @(posedge i_rdclock) + begin + if (lpm_rdaddress_control == "REGISTERED") + if (i_rdclken) + begin + new_raddress <= rdaddress; + rden_event <= i_rden; + end + if (lpm_outdata === "REGISTERED") + begin + if ((i_rdclken) && (rden_event)) + begin + if (ValidAddress(new_raddress)) + begin + tmp_q <= mem_data[new_raddress]; + end + else + tmp_q <= UNKNOWN; + end + end + end + + //assign q = ( lpm_outdata === "UNREGISTERED" ) ? mem_data[new_raddress] : tmp_q; + + always @(mem_data[new_raddress] or tmp_q or i_rden) + begin + if (i_rden || lpm_outdata === "REGISTERED") + prev_q <= ( lpm_outdata === "UNREGISTERED" ) ? mem_data[new_raddress] : tmp_q; + end + + assign q = prev_q; + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_ram_dp") || (lpm_type !== "lpm_ram_dp")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_ram_dp + +//------------------------------------------------------------------------ + +module lpm_ram_io ( dio, inclock, outclock, we, memenab, outenab, address ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_widthad = 1; + parameter lpm_numwords = 1<< lpm_widthad; + parameter lpm_indata = "REGISTERED"; + parameter lpm_address_control = "REGISTERED"; + parameter lpm_outdata = "REGISTERED"; + parameter lpm_file = "UNUSED"; + parameter lpm_type = "lpm_ram_io"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_widthad-1:0] address; + input inclock, outclock, we; + input memenab; + input outenab; + inout [lpm_width-1:0] dio; + + + // inernal reg + reg [lpm_width-1:0] mem_data [lpm_numwords-1:0]; + reg [lpm_width-1:0] tmp_io; + reg [lpm_width-1:0] tmp_q; + reg [lpm_width-1:0] pdio; + reg [lpm_widthad-1:0] paddress; + reg pwe; + reg [lpm_width-1:0] ZEROS, UNKNOWN, HiZ; + reg [8*256:1] ram_initf; + integer i; + + tri0 inclock; + tri0 outclock; + + buf (i_inclock, inclock); + buf (i_outclock, outclock); + + +//---------------------------------------------------------------// + function ValidAddress; + input [lpm_widthad-1:0] paddress; + + begin + ValidAddress = 1'b0; + if (^paddress ==='bx) + $display("%d:Error: Invalid address.", $time); + else if (paddress >= lpm_numwords) + $display("%d:Error: Address out of bound on RAM.", $time); + else + ValidAddress = 1'b1; + end + endfunction +//---------------------------------------------------------------// + + initial + begin + + if (lpm_width <= 0) + $display("Error! lpm_width parameter must be greater than 0."); + + if (lpm_widthad <= 0) + $display("Error! lpm_widthad parameter must be greater than 0."); + + // check for number of words out of bound + if ((lpm_numwords > (1 << lpm_widthad)) + ||(lpm_numwords <= (1 << (lpm_widthad-1)))) + begin + $display("Error! lpm_numwords must equal to the ceiling of log2(lpm_widthad)."); + end + + if ((lpm_indata !== "REGISTERED") && (lpm_indata !== "UNREGISTERED")) + begin + $display("Error! lpm_indata must be REGISTERED (the default) or UNREGISTERED."); + end + + if ((lpm_address_control !== "REGISTERED") && (lpm_address_control !== "UNREGISTERED")) + begin + $display("Error! lpm_address_control must be REGISTERED (the default) or UNREGISTERED."); + end + + if ((lpm_outdata !== "REGISTERED") && (lpm_outdata !== "UNREGISTERED")) + begin + $display("Error! lpm_outdata must be REGISTERED (the default) or UNREGISTERED."); + end + + + // check if lpm_indata or lpm_address_control is set to registered + // inclock must be used. + if (((lpm_indata === "REGISTERED") || (lpm_address_control === "REGISTERED")) && (inclock === 1'bz)) + begin + $display("Error! inclock = 1'bz. Inclock pin must be used.\n"); + end + + // check if lpm_outdata, outclock must be used + if ((lpm_outdata === "REGISTERED") && (outclock === 1'bz)) + begin + $display("Error! lpm_outdata is REGISTERED, outclock = 1'bz. Outclock pin must be used.\n"); + end + + for (i=0; i < lpm_width; i=i+1) + begin + ZEROS[i] = 1'b0; + UNKNOWN[i] = 1'bX; + HiZ[i] = 1'bZ; + end + + for (i = 0; i < lpm_numwords; i=i+1) + mem_data[i] = ZEROS; + + // Initialize input/output + pdio = 0; + paddress = 0; + tmp_io = 0; + tmp_q = 0; + + // load data to the RAM + if (lpm_file != "UNUSED") + begin + $convert_hex2ver(lpm_file, lpm_width, ram_initf); + $readmemh(ram_initf, mem_data); + end + end + + + always @(dio) + begin + if (lpm_indata === "UNREGISTERED") + pdio <= dio; + end + + always @(address) + begin + if (lpm_address_control === "UNREGISTERED") + paddress <= address; + end + + + always @(we) + begin + if (lpm_address_control === "UNREGISTERED") + pwe <= we; + end + + always @(posedge i_inclock) + begin + if (lpm_indata === "REGISTERED") + pdio <= dio; + + if (lpm_address_control === "REGISTERED") + begin + paddress <= address; + pwe <= we; + end + end + + always @(pdio or paddress or pwe or memenab) + begin :block_a + if (ValidAddress(paddress)) + begin + if ((lpm_indata === "UNREGISTERED" && lpm_address_control === "UNREGISTERED") || (lpm_address_control === "UNREGISTERED")) + begin + if (pwe && memenab) + mem_data[paddress] <= pdio; + end + + if (lpm_outdata === "UNREGISTERED") + begin + tmp_q <= mem_data[paddress]; + tmp_q <= mem_data[paddress]; + end + end + else + begin + if (lpm_outdata === "UNREGISTERED") + tmp_q <= UNKNOWN; + end + end + + always @(negedge i_inclock) + begin + if (lpm_address_control === "REGISTERED") + begin + if (pwe && memenab) + mem_data[paddress] <= pdio; + end + end + + always @(posedge i_outclock) + begin + if (lpm_outdata === "REGISTERED") + begin + tmp_q <= mem_data[paddress]; + end + end + + always @(memenab or outenab or tmp_q) + begin + if (memenab && outenab) + tmp_io <= tmp_q; + else if (!memenab || (memenab && !outenab)) + tmp_io <= HiZ; + end + + assign dio = tmp_io; + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_ram_io") || (lpm_type !== "lpm_ram_io")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_ram_io + +//------------------------------------------------------------------------ + +module lpm_rom ( q, inclock, outclock, memenab, address ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_widthad = 1; + parameter lpm_numwords = 1<< lpm_widthad; + parameter lpm_address_control = "REGISTERED"; + parameter lpm_outdata = "REGISTERED"; + parameter lpm_file = "rom.hex"; + parameter lpm_type = "lpm_rom"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_widthad-1:0] address; + input inclock, outclock; + input memenab; + output [lpm_width-1:0] q; + + // inernal reg + reg [lpm_width-1:0] mem_data [lpm_numwords-1:0]; + reg [lpm_widthad-1:0] paddress; + reg [lpm_width-1:0] tmp_q; + reg [lpm_width-1:0] tmp_q_reg; + reg [lpm_width-1:0] ZEROS, UNKNOWN, HiZ; + reg [8*256:1] rom_initf; + integer i; + + tri0 inclock; + tri0 outclock; + tri1 memenab; + + buf (i_inclock, inclock); + buf (i_outclock, outclock); + buf (i_memenab, memenab); + + +//---------------------------------------------------------------// + function ValidAddress; + input [lpm_widthad-1:0] address; + begin + ValidAddress = 1'b0; + if (^address =='bx) + $display("%d:Error: Invalid address.", $time); + else if (address >= lpm_numwords) + $display("%d:Error: Address out of bound on ROM.", $time); + else + ValidAddress = 1'b1; + end + endfunction +//---------------------------------------------------------------// + + initial + begin + // Initialize output + tmp_q = 0; + tmp_q_reg = 0; + paddress = 0; + + if (lpm_file === "") + $display("Error! rom module must have data file for initialization\n."); + + if (lpm_width <= 0) + $display("Error! lpm_width parameter must be greater than 0."); + + if (lpm_widthad <= 0) + $display("Error! lpm_widthad parameter must be greater than 0."); + + + // check for number of words out of bound + if ((lpm_numwords > (1 << lpm_widthad)) + ||(lpm_numwords <= (1 << (lpm_widthad-1)))) + begin + $display("Error! lpm_numwords must equal to the ceiling of log2(lpm_widthad)."); + end + + if ((lpm_address_control !== "REGISTERED") && (lpm_address_control !== "UNREGISTERED")) + begin + $display("Error! lpm_address_control must be REGISTERED (the default) or UNREGISTERED."); + end + + if ((lpm_outdata !== "REGISTERED") && (lpm_outdata !== "UNREGISTERED")) + begin + $display("Error! lpm_outdata must be REGISTERED (the default) or UNREGISTERED."); + end + + // check if lpm_address_control is set to registered + // inclock must be used. + if ((lpm_address_control === "REGISTERED") && (inclock === 1'bz)) + begin + $display("Error! inclock = 1'bz. Inclock pin must be used.\n"); + end + + // check if lpm_outdata, outclock must be used + if ((lpm_outdata === "REGISTERED") && (outclock === 1'bz)) + begin + $display("Error! lpm_outdata is REGISTERED, outclock = 1'bz. Outclock must be used.\n"); + end + + for (i=0; i < lpm_width; i=i+1) + begin + ZEROS[i] = 1'b0; + UNKNOWN[i] = 1'bX; + HiZ[i] = 1'bZ; + end + + for (i = 0; i < lpm_numwords; i=i+1) + mem_data[i] = ZEROS; + + // load data to the ROM + if (lpm_file != "") + begin + $convert_hex2ver(lpm_file, lpm_width, rom_initf); + $readmemh(rom_initf, mem_data); + end + end + + always @(posedge i_inclock) + begin + if (lpm_address_control === "REGISTERED") + paddress <= address; + end + + always @(address) + begin + if (lpm_address_control === "UNREGISTERED") + paddress <= address; + end + + + always @(paddress) + begin + if (ValidAddress(paddress)) + begin + if (lpm_outdata === "UNREGISTERED") + tmp_q_reg <= mem_data[paddress]; + end + else + begin + if (lpm_outdata === "UNREGISTERED") + tmp_q_reg <= UNKNOWN; + end + end + + always @(posedge i_outclock) + begin + if (lpm_outdata === "REGISTERED") + begin + if (ValidAddress(paddress)) + tmp_q_reg <= mem_data[paddress]; + else + tmp_q_reg <= UNKNOWN; + end + end + + + always @(i_memenab or tmp_q_reg) + begin + if (i_memenab) + tmp_q <= tmp_q_reg; + else if (!i_memenab) + tmp_q <= HiZ; + end + + assign q = tmp_q; + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_rom") || (lpm_type !== "lpm_rom")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_rom + +//------------------------------------------------------------------------ + +module lpm_fifo (data, clock, wrreq, rdreq, aclr, sclr, q, usedw, full, empty); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_widthu = 1; + parameter lpm_numwords = 2; + parameter lpm_showahead = "OFF"; + parameter lpm_type = "lpm_fifo"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_width-1:0] data; + input clock; + input wrreq; + input rdreq; + input aclr; + input sclr; + output [lpm_width-1:0] q; + output [lpm_widthu-1:0] usedw; + output full; + output empty; + + + // internal reg + reg [lpm_width-1:0] mem_data [lpm_numwords-1:0]; + reg [lpm_width-1:0] tmp_q; + reg [lpm_width-1:0] ZEROS; + reg [lpm_widthu+1:0] count_id; + reg [lpm_widthu-1:0] write_id; + reg [lpm_widthu-1:0] read_id; + reg empty_flag; + reg full_flag; + integer i; + + tri0 aclr; + tri0 sclr; + + buf (i_aclr, aclr); + buf (i_sclr, sclr); + + initial + begin + + if (lpm_width <= 0) + $display("Error! lpm_width must be greater than 0."); + + if (lpm_numwords <= 1) + $display("Error! lpm_numwords must be greater than or equal to 2."); + + // check for number of words out of bound + if ((lpm_widthu !=1) && (lpm_numwords > (1 << lpm_widthu))) + $display("Error! lpm_numwords MUST equal to the ceiling of log2(lpm_widthu)."); + + if (lpm_numwords <= (1 << (lpm_widthu-1))) + begin + $display("Error! lpm_widthu is too big for the specified lpm_numwords."); + end + + for (i=0; i < lpm_width; i=i+1) + ZEROS[i] = 1'b0; + + for (i = 0; i < lpm_numwords; i=i+1) + mem_data[i] = ZEROS; + + full_flag = 0; + empty_flag = 1; + read_id = 0; + write_id = 0; + count_id = 0; + tmp_q = ZEROS; + end + + always @(posedge clock or i_aclr) + begin + if (i_aclr) + begin + tmp_q = ZEROS; + full_flag = 0; + empty_flag = 1; + read_id = 0; + write_id = 0; + count_id = 0; + if (lpm_showahead == "ON") + tmp_q = mem_data[0]; + end + else if (clock) + begin + if (i_sclr) + begin + tmp_q = mem_data[read_id]; + full_flag = 0; + empty_flag = 1; + read_id = 0; + write_id = 0; + count_id = 0; + if (lpm_showahead == "ON") + tmp_q = mem_data[0]; + end + else + begin + // both WRITE and READ + if ((wrreq && !full_flag) && (rdreq && !empty_flag)) + begin + mem_data[write_id] = data; + if (write_id >= lpm_numwords-1) + write_id = 0; + else + write_id = write_id + 1; + + tmp_q = mem_data[read_id]; + if (read_id >= lpm_numwords-1) + read_id = 0; + else + read_id = read_id + 1; + if (lpm_showahead == "ON") + tmp_q = mem_data[read_id]; + end + + // WRITE + else if (wrreq && !full_flag) + begin + mem_data[write_id] = data; + if (lpm_showahead == "ON") + tmp_q = mem_data[read_id]; + count_id = count_id + 1; + empty_flag = 0; + if (count_id >= lpm_numwords) + begin + full_flag = 1; + count_id = lpm_numwords; + end + if (write_id >= lpm_numwords-1) + write_id = 0; + else + write_id = write_id + 1; + end + + // READ + else if (rdreq && !empty_flag) + begin + tmp_q = mem_data[read_id]; + count_id = count_id - 1; + full_flag = 0; + if (count_id <= 0) + begin + empty_flag = 1; + count_id = 0; + end + if (read_id >= lpm_numwords-1) + read_id = 0; + else + read_id = read_id + 1; + if (lpm_showahead == "ON") + tmp_q = mem_data[read_id]; + end + end + end + end + + assign q = tmp_q; + assign full = full_flag; + assign empty = empty_flag; + assign usedw = count_id; + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_fifo") || (lpm_type !== "lpm_fifo")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_fifo + +//------------------------------------------------------------------------ + +module lpm_fifo_dc ( data, rdclock, wrclock, aclr, rdreq, wrreq, rdfull, wrfull, rdempty, wrempty, rdusedw, wrusedw, q ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_widthu = 1; + parameter lpm_numwords = 2; + parameter lpm_showahead = "OFF"; + parameter lpm_type = "lpm_fifo_dc"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_width-1:0] data; + input rdclock; + input wrclock; + input wrreq; + input rdreq; + input aclr; + output rdfull; + output wrfull; + output rdempty; + output wrempty; + output [lpm_width-1:0] q; + output [lpm_widthu-1:0] rdusedw; + output [lpm_widthu-1:0] wrusedw; + + + // internal reg + reg [lpm_width-1:0] mem_data [lpm_numwords-1:0]; + integer pipe_wrptr [0:5]; // [0:RDPTR_DP]; + integer pipe_rdptr [0:5]; // [0:WRPTR_DP]; + integer pipe_rdusedw [0:1]; // [0:RDUSEDW_DP]; + integer pipe_wrusedw [0:1]; // [0:WRUSEDW_DP]; + + reg [lpm_width-1:0] i_q; + reg i_rdempty; + reg i_wrempty; + reg i_rdfull; + reg i_wrfull; + reg x_rdempty; + reg x_wrfull; + integer i_rdptr; + integer i_wrptr; + integer i_rdusedw; + integer i_wrusedw; + integer x_rdptr; + integer x_wrptr; + + reg [lpm_width-1:0] ZEROS; + integer RDPTR_DP; + integer WRPTR_DP; + integer RDUSEDW_DP; + integer WRUSEDW_DP; + integer FULL_RISEEARLY; + integer i; + + tri0 aclr; + buf (i_aclr, aclr); + + + initial + begin + + if (lpm_width <= 0) + $display("Error! lpm_width must be greater than 0."); + + if (lpm_numwords <= 1) + $display("Error! lpm_numwords must be greater than or equal to 2."); + + // check for number of words out of bound + if ((lpm_widthu !=1) && (lpm_numwords > (1 << lpm_widthu))) + $display("Error! lpm_numwords MUST equal to the ceiling of log2(lpm_widthu)."); + + if (lpm_numwords <= (1 << (lpm_widthu-1))) + $display("Error! lpm_widthu is too big for the specified lpm_numwords."); + + for (i=0; i= lpm_numwords-1-FULL_RISEEARLY) + i_wrfull = 1; + else + i_wrfull = 0; + + if ((i_wrusedw <= 0) && (i_rdptr == i_wrptr)) + i_wrempty = 1; + + x_wrptr = i_wrptr; + if (wrreq && !x_wrfull) // && ! wrreq'event + begin + // WRITE DATA + mem_data[i_wrptr] = data; + + // SET FLAGS + i_wrempty = 0; + + // INC WRPTR + if (i_wrptr >= lpm_numwords-1) + i_wrptr = 0; + else + i_wrptr = i_wrptr + 1; + end + + // DELAY RDPTR FOR WRUSEDW + pipe_rdptr[WRPTR_DP] = i_rdptr; + for (i=0; i= pipe_rdptr[0]) + pipe_wrusedw[WRUSEDW_DP] = x_wrptr - pipe_rdptr[0]; + else + pipe_wrusedw[WRUSEDW_DP] = lpm_numwords + x_wrptr - pipe_rdptr[0]; + + // DELAY WRUSEDW + for (i=0; i= lpm_numwords-1-FULL_RISEEARLY) + i_rdfull = 1; + else + i_rdfull = 0; + + if (i_rdptr == i_wrptr) + i_rdempty = 1; + else if (i_rdempty && (i_rdusedw > 0)) + i_rdempty = 0; + + // Q SHOWAHEAD + if (lpm_showahead == "ON" && i_rdptr != i_wrptr) + i_q = mem_data[i_rdptr]; + + x_rdptr = i_rdptr; + if (rdreq && !x_rdempty) // && ! rdreq'event + begin + // READ DATA + i_q = mem_data[i_rdptr]; + if (lpm_showahead == "ON") + begin + if (i_rdptr == i_wrptr) + i_q = ZEROS; + else + begin + if (i_rdptr >= lpm_numwords-1) + i_q = mem_data[0]; + else + i_q = mem_data[i_rdptr+1]; + end + end + + // SET FLAGS + if ((i_rdptr == lpm_numwords-1 && i_wrptr == 0) || + (i_rdptr+1 == i_wrptr)) + i_rdempty = 1; + + // INC RDPTR + if (i_rdptr >= lpm_numwords-1) + i_rdptr = 0; + else + i_rdptr = i_rdptr + 1; + + end + // DELAY WRPTR FOR RDUSEDW + pipe_wrptr[RDPTR_DP] = i_wrptr; + for (i=0; i= x_rdptr) + pipe_rdusedw[RDUSEDW_DP] = pipe_wrptr[0] - x_rdptr; + else + pipe_rdusedw[RDUSEDW_DP] = lpm_numwords + pipe_wrptr[0] - x_rdptr; + + // DELAY RDUSEDW + for (i=0; i
common/trunk/220_edif-1_usage.pdf Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: common/trunk/220_verilog_usage.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: common/trunk/220_verilog_usage.pdf =================================================================== --- common/trunk/220_verilog_usage.pdf (nonexistent) +++ common/trunk/220_verilog_usage.pdf (revision 48)
common/trunk/220_verilog_usage.pdf Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: common/trunk/220_count4_example.vhd =================================================================== --- common/trunk/220_count4_example.vhd (nonexistent) +++ common/trunk/220_count4_example.vhd (revision 48) @@ -0,0 +1,44 @@ +-------------------------------------------------------------------------- +-- Copyright (c) 1996 Altera Corporation, all right reserved +-- +-- This VHDL file may be copied and/or distributed at no cost as long as +-- this copyright notice is retained. +-- +------------------------------------------------------------------ +-- Four-bit Loadable Up-Down Counter with synchronous set, load and clear +------------------------------------------------------------------ +-- Version 1.0 Date 05/20/96 +------------------------------------------------------------------ +-- +library IEEE; +use IEEE.std_logic_1164.all; +use work.lpm_components.all; + +entity COUNT4 is + port (DATA : in std_logic_vector(3 downto 0); + CLOCK : in std_logic; + CLK_EN : in std_logic; + CNT_EN : in std_logic; + UPDOWN : in std_logic; + SLOAD : in std_logic; + SSET : in std_logic; + SCLR : in std_logic; + ALOAD : in std_logic; + ASET : in std_logic; + ACLR : in std_logic; + EQ : in std_logic; + Q : out std_logic_vector(3 downto 0)); +end COUNT4; + +architecture LPM of COUNT4 is + +begin + + U1: LPM_COUNTER + generic map (LPM_WIDTH => 4) + port map (DATA => DATA, CLOCK => CLOCK, CLK_EN => CLK_EN, + CNT_EN => CNT_EN, UPDOWN => UPDOWN, SLOAD => SLOAD, + SSET => SSET, SCLR => SCLR, ALOAD => ALOAD, ASET => ASET, + ACLR => ACLR, Q => Q); +end; + Index: common/trunk/220_convert_hex2ver_pli.c =================================================================== --- common/trunk/220_convert_hex2ver_pli.c (nonexistent) +++ common/trunk/220_convert_hex2ver_pli.c (revision 48) @@ -0,0 +1,319 @@ +#include +#include +#include +#include "veriuser.h" +#include "acc_user.h" + +#define TRUE 1 +#define FALSE 0 +#define MAX_BUFFER_SZ 2048 +#define MAX_NAME_SZ 128 +#define OUT_FILE_EXT ".ver" +#define COLON ':' +#define OFFSET 9 +#define H10 0x10L +#define AWORD 8 +#define WORDS_PER_LINE 8 +#define MASK15 0x000000FFL +#define EXT_STR ".ver" + +typedef enum { + OK = 0, + WARNING = 1, + ERROR = 2 +}STATUS; +static int line_no = 0; +/******************************************************************** + * char* trimAlteraExt(char* oldName, char* newName) + * oldName : original file name. + * newName : new file name which doesnt have file extension. + * + * This function trims the file extension + * Looks for first "." and trims the file name afterwords. +********************************************************************/ + +char* trimAlteraExt(oldName, newName) +char* oldName; +char* newName; +{ + char tempStr[MAX_BUFFER_SZ]; + char* tempPtr=NULL; + + newName[0]='\0'; + if(oldName[0]=='\0') + return NULL; + strcpy(tempStr, oldName); + if(tempPtr = strstr(tempStr, ".")) + { + *tempPtr = '\0'; + } + strcpy(newName, tempStr); + return newName; +} + +/****************************************************************/ +int display_msg(status, str, data_file) +STATUS status; +char *str; +char *data_file; +{ + switch(status) + { + case WARNING: + printf("WARNING: %s, %s\n\n", data_file, str); + break; + case ERROR: + printf("ERROR:%s, line %d, %s\n\n", data_file, line_no, str); + break; + default: + break; + } + return(TRUE); +} +/**************************************************************** + char *ltrim(str) + char *str; + Deletes leading blanks in string 'str' +****************************************************************/ +char *ltrim(str) +char *str; +{ + int i = 0,j = 0; + + /* Illeagal application. Returns NULL. */ + if (str == 0) return(0); + /* Deletes leading blanks */ + while (*(str + i) == ' ' || *(str + i) == '\n' || *(str + i) == '\t' || *(str + i) == '\b') i++; + for (; *(str + i) != '\0'; i++,j++) *(str + j) = *(str + i); + /* Appends a NULL character to the end of the string */ + *(str + j) = '\0'; + + return(str); +} + +/**************************************************************** + * Function: write_ver_data + * Description: This function ensures that each char (in hex) + * represents a nibble of the data. + * For example if (width<5) we need to output only 1 char hex. +****************************************************************/ +void write_ver_data(ofp, width, data) +FILE *ofp; +int width; +char *data; +{ + int num_nibbles; + int num_hex; + + num_nibbles = (width%4?(width/4 + 1):width/4); + num_hex = num_nibbles/2; + + while (num_hex--) + { + fprintf(ofp, "%c%c", data[0], data[1]); + data +=2; + } + /* NB: we skip the leading '0' in data[0]. */ + if (num_nibbles&1) fprintf(ofp, "%c", data[1]); +} + +/**************************************************************** +Function: write_data +Description: Write ROM data in the verilog format so that + it can be read using readmemh(infile, rom) +Format: example data format for the 8 bit data + @1 + 01 02 03 04 05 06 07 08 + @a + 0a 0b 0c +****************************************************************/ +int write_data(ofp, nn, aaaa, off_addr, dddd, width) +FILE *ofp; +long nn, aaaa, off_addr; +char *dddd; +int width; +{ + int count, i; + char data[MAX_BUFFER_SZ +1]; + int num_hexs, nibbles ; + + + if((width % AWORD) == 0) + { + num_hexs = width/AWORD; + } + else + { + num_hexs = (width/AWORD) + 1; + } + + fprintf(ofp, "@%x\n", aaaa + off_addr); + + nibbles = num_hexs*2; + count = 1; + while(nn > 0) + { + if(nn >= num_hexs) + { + strncpy(data, dddd, nibbles); + data[nibbles] = '\0'; + } + else + { + for(i = 0; i < (num_hexs - nn); i++) + { + sprintf(data + i*2, "%s", "00"); + } + strcat(data + (num_hexs - nn), dddd); + } + write_ver_data(ofp, width, data); + if(count < WORDS_PER_LINE) + { + count ++; + } + else + { + fprintf(ofp, "\n"); + count = 1; + } + dddd = dddd + nibbles; + nn -= num_hexs; + } + if(count > 1) + fprintf(ofp, "\n"); + + +} +/****************************************************************/ +/* Convert Intel-hex format data to verilog format data */ +/* Intel-hex format :nnaaaaattddddcc */ +/****************************************************************/ +convert_hex2ver() +{ + char buffer[MAX_BUFFER_SZ +1]; + char out_file[MAX_NAME_SZ +1]; + char init_filename[MAX_NAME_SZ +1]; + char dddd[MAX_BUFFER_SZ +1]; + char *in_file, *out_str; + + FILE *ifp, *ofp; + int i ; + int done = FALSE; + int first_rec = FALSE; + int last_rec = FALSE; + int width ; + long off_addr, nn, aaaa, tt, cc, aah, aal, dd, sum ; + handle wrk; + static s_setval_value user_s = {accStringVal}; + static s_setval_delay delay ; + + off_addr= nn= aaaa= tt= cc= aah= aal= dd= sum = 0; + + in_file = (char *)tf_getcstringp(1); + width = tf_getp(2); + trimAlteraExt(in_file, out_file); + strcat(out_file, OUT_FILE_EXT); + if ((ifp = fopen(in_file, "r")) == NULL) + { + printf("cannot read %s\n", in_file); + fclose(ifp); + return; + } + if ((ofp = fopen(out_file, "w")) == NULL) + { + printf("cannot write %s\n", out_file); + fclose(ofp); + return; + } + while(!done) + { + if(fgets(buffer, MAX_BUFFER_SZ, ifp) == NULL) + { + if(!first_rec) + done = display_msg(WARNING, "Intel-hex data file is empty.", in_file); + else if(!last_rec) + done = display_msg(ERROR, "Missing the last record.", in_file); + } + else if(strlen(ltrim(buffer)) == 0) + { + line_no++; + } + else if(buffer && (buffer[0] == COLON)) + { + line_no++; + first_rec = TRUE; + sscanf(buffer+1,"%02x%04x%02x", &nn, &aaaa, &tt); + if((tt == 2) && (nn != 2) ) + { + done = display_msg(ERROR, "Invalid data record.", in_file); + } + else + { + sscanf(buffer+3,"%02x%02x", &aah, &aal); + sum = nn + aah + aal + tt ; + for(i = 0; i < nn; i++) + { + sscanf(buffer+OFFSET+i*2, "%02x", &dd); + sprintf(dddd+i*2, "%02x", dd); + sum += dd; + } + sscanf(buffer+OFFSET+i*2, "%02x\n", &cc); + + switch(tt) { + case 0x00: /* normal_record */ + first_rec = TRUE; + if(((~sum + 1)& MASK15) == cc) + { + write_data(ofp, nn, aaaa, off_addr, dddd,width); + off_addr = 0; + } + else + { + done = display_msg(ERROR, "Invalid checksum.", in_file); + } + break; + case 0x01: /* last record */ + last_rec = TRUE; + if(((~sum+1)&MASK15) != cc) + { + display_msg(ERROR, "Invalid checksum.", in_file); + } + done = TRUE; + break; + case 0x02: /* address base record */ + sscanf(dddd,"%x\n", &off_addr); + if(((~sum +1)& MASK15) == cc) + { + off_addr *= H10; + } + else + { + done = display_msg(ERROR, "Invalid checksum.", in_file); + } + break; + default: + done = display_msg(ERROR, "Unknown record type.", in_file); + break; + } /* switch */ + } + } + else + { + line_no++; + display_msg(ERROR, "Invalid INTEL HEX record", in_file); + done = TRUE; + } + } + fclose(ifp); + fclose(ofp); + /* append EXT_STR to the input string and pass it back in arg 1 */ + delay.model = accNoDelay; + wrk = acc_handle_tfarg(3); + trimAlteraExt(in_file, init_filename); + strcat(init_filename, EXT_STR); + user_s.value.str = init_filename; + acc_set_value(wrk, &user_s, &delay); + + return(0); +} + Index: common/trunk/220_cells_specification.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: common/trunk/220_cells_specification.pdf =================================================================== --- common/trunk/220_cells_specification.pdf (nonexistent) +++ common/trunk/220_cells_specification.pdf (revision 48)
common/trunk/220_cells_specification.pdf Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: common/trunk/220_vhdl_declarations.htm =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: common/trunk/220_vhdl_declarations.htm =================================================================== --- common/trunk/220_vhdl_declarations.htm (nonexistent) +++ common/trunk/220_vhdl_declarations.htm (revision 48)
common/trunk/220_vhdl_declarations.htm Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: common/trunk/220_vhdl_models.vhd =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: common/trunk/220_vhdl_models.vhd =================================================================== --- common/trunk/220_vhdl_models.vhd (nonexistent) +++ common/trunk/220_vhdl_models.vhd (revision 48)
common/trunk/220_vhdl_models.vhd Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: common/trunk/LPM_pads.v =================================================================== --- common/trunk/LPM_pads.v (nonexistent) +++ common/trunk/LPM_pads.v (revision 48) @@ -0,0 +1,217 @@ +//------------------------------------------------------------------------ +// This Verilog file was developed by Altera Corporation. It may be +// freely copied and/or distributed at no cost. Any persons using this +// file for any purpose do so at their own risk, and are responsible for +// the results of such use. Altera Corporation does not guarantee that +// this file is complete, correct, or fit for any particular purpose. +// NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. This notice must +// accompany any copy of this file. +// +//------------------------------------------------------------------------ +// Imported to Opencores directory. Date Sept 10, 2001 +// Split related modules into separate files, as the manual splits them. +// Added example instantiations to the beginning of each file. +// +/* EXAMPLE INSTANTIATIONS: + +lpm_inpad +#( 1 // lpm_width (width of input) + ) lpm_inpad_example ( + .pad (data_in[lpm_width-1:0]), + .result (data_out[lpm_width-1:0]) +); + +lpm_outpad +#( 1 // lpm_width (width of input) + ) lpm_outpad_example ( + .pad (data_out[lpm_width-1:0]), + .data (data_in[lpm_width-1:0]) +); + +lpm_bipad +#( 1 // lpm_width (width of input) + ) lpm_bipad_example ( + .pad (data_bi[lpm_width-1:0]), + .result (data_out[lpm_width-1:0]), + .data (data_in[lpm_width-1:0]), + .enable (oe_data_to_pad) +); +*/ + +//------------------------------------------------------------------------ +// LPM Synthesizable Models +//------------------------------------------------------------------------ +// Version 1.5 (lpm 220) Date 12/17/99 +// +// Modified LPM_ADD_SUB and LPM_MULT to accomodate LPM_WIDTH = 1. +// Default values for LPM_WIDTH* are changed back to 1. +// Added LPM_HINT to LPM_DIVIDE. +// Rewritten LPM_FIFO_DC to output correctly. +// Modified LPM_FIFO to output 0s before first read, output correct +// values after aclr and sclr, and output LPM_NUMWORDS mod +// exp(2, LPM_WIDTHU) when FIFO is full. +// +//------------------------------------------------------------------------ +// Version 1.4.1 (lpm 220) Date 10/29/99 +// +// Default values for LPM_WIDTH* of LPM_ADD_SUB and LPM_MULT are changed +// from 1 to 2. +// +//------------------------------------------------------------------------ +// Version 1.4 (lpm 220) Date 10/18/99 +// +// Default values for each optional inputs for ALL modules are added. +// Some LPM_PVALUE implementations were missing, and now implemented. +// +//------------------------------------------------------------------------ +// Version 1.3 (lpm 220) Date 06/23/99 +// +// Corrected LPM_FIFO and LPM_FIFO_DC cout and empty/full flags. +// Implemented LPM_COUNTER cin/cout, and LPM_MODULUS is now working. +// +//------------------------------------------------------------------------ +// Version 1.2 (lpm 220) Date 06/16/99 +// +// Added LPM_RAM_DP, LPM_RAM_DQ, LPM_IO, LPM_ROM, LPM_FIFO, LPM_FIFO_DC. +// Parameters and ports are added/discarded according to the spec. +// +//------------------------------------------------------------------------ +// Version 1.1 (lpm 220) Date 02/05/99 +// +// Added LPM_DIVIDE module. +// +//------------------------------------------------------------------------ +// Version 1.0 Date 07/09/97 +// +//------------------------------------------------------------------------ +// Excluded Functions: +// +// LPM_FSM and LPM_TTABLE. +// +//------------------------------------------------------------------------ +// Assumptions: +// +// 1. LPM_SVALUE, LPM_AVALUE, LPM_MODULUS, and LPM_NUMWORDS, +// LPM_STRENGTH, LPM_DIRECTION, and LPM_PVALUE default value is +// string UNUSED. +// +//------------------------------------------------------------------------ +// Verilog Language Issues: +// +// Two dimensional ports are not supported. Modules with two dimensional +// ports are implemented as one dimensional signal of (LPM_SIZE * LPM_WIDTH) +// bits wide. +// +//------------------------------------------------------------------------ +// Synthesis Issues: +// +// 1. LPM_COUNTER +// +// Currently synthesis tools do not allow mixing of level and edge +// sensetive signals. To overcome that problem the "data" signal is +// removed from the clock always block of lpm_counter, however the +// synthesis result is accurate. For correct simulation add the "data" +// pin to the sensetivity list as follows: +// +// always @(posedge clock or posedge aclr or posedge aset or +// posedge aload or data) +//------------------------------------------------------------------------ + +module lpm_inpad ( result, pad ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_type = "lpm_inpad"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_width-1:0] pad; + output [lpm_width-1:0] result; + + reg [lpm_width-1:0] result; + + always @(pad) + begin + result = pad; + end + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_inpad") || (lpm_type !== "lpm_inpad")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_inpad + +//------------------------------------------------------------------------ + +module lpm_outpad ( data, pad ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_type = "lpm_outpad"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_width-1:0] data; + output [lpm_width-1:0] pad; + + reg [lpm_width-1:0] pad; + + always @(data) + begin + pad = data; + end + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_outpad") || (lpm_type !== "lpm_outpad")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_outpad + +//------------------------------------------------------------------------ + +module lpm_bipad ( result, pad, data, enable ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_type = "lpm_bipad"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_width-1:0] data; + input enable; + inout [lpm_width-1:0] pad; + output [lpm_width-1:0] result; + + reg [lpm_width-1:0] tmp_pad; + reg [lpm_width-1:0] result; + + always @(data or pad or enable) + begin + if (enable == 1) + begin + tmp_pad = data; + result = 'bz; + end + else if (enable == 0) + begin + result = pad; + tmp_pad = 'bz; + end + end + + assign pad = tmp_pad; + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_bipad") || (lpm_type !== "lpm_bipad")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_bipad Index: common/trunk/LPM_edif_usage_example.htm =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: common/trunk/LPM_edif_usage_example.htm =================================================================== --- common/trunk/LPM_edif_usage_example.htm (nonexistent) +++ common/trunk/LPM_edif_usage_example.htm (revision 48)
common/trunk/LPM_edif_usage_example.htm Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: common/trunk/LPM_arithmetic.v =================================================================== --- common/trunk/LPM_arithmetic.v (nonexistent) +++ common/trunk/LPM_arithmetic.v (revision 48) @@ -0,0 +1,989 @@ +//------------------------------------------------------------------------ +// This Verilog file was developed by Altera Corporation. It may be +// freely copied and/or distributed at no cost. Any persons using this +// file for any purpose do so at their own risk, and are responsible for +// the results of such use. Altera Corporation does not guarantee that +// this file is complete, correct, or fit for any particular purpose. +// NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. This notice must +// accompany any copy of this file. +// +//------------------------------------------------------------------------ +// Imported to Opencores directory. Date Sept 10, 2001 +// Split related modules into separate files, as the manual splits them. +// Added example instantiations to the beginning of each file. +// +/* EXAMPLE INSTANTIATIONS: + +lpm_add_sub +#( 1, // lpm_width (width of input vector) + "UNUSED", // lpm_direction, optional, {ADD, SUB} + "UNSIGNED", // lpm_representation, optional, {UNSIGNED, SIGNED} + 0 // lpm_pipeline, optional, {0, 1} + ) lpm_add_sub_example ( + .result (data_out[lpm_width-1:0]), + .cout (carry_out_indicates_unsigned_result_too_big), // OPTIONAL + .overflow (overflow_indicates_MSB_sign_bit_wrong), // OPTIONAL + .dataa (data_in[lpm_width-1:0]), + .datab (data_pl_mi_in[lpm_width-1:0]), + .cin (add_1_if_HIGH_sub_1_if_LOW), // OPTIONAL + .add_sub (add_if_HIGH_must_set_HIGH_if_using_lpm_direction), // OPTIONAL + .clock (clock_if_pipelined), // OPTIONAL + .clken (clock_enable_HIGH_if_pipelined), // OPTIONAL + .aclr (async_clear_if_pipelined) // OPTIONAL +); + +lpm_compare +#( 1, // lpm_width (width of input vector) + "UNSIGNED", // lpm_representation, optional, {UNSIGNED, SIGNED} + 0 // lpm_pipeline, optional, {0, 1} + ) lpm_compare_example ( + .agb (a_greater_than_b), + .ageb (a_greater_or_equil_to_b), + .aeb (a_equil_to_b), + .aleb (a_less_or_equil_to_b), + .alb (a_less_than_b), + .aneb (a_not_equil_b), + .dataa (data_in_a[lpm_width-1:0]), + .datab (data_in_a[lpm_width-1:0]), + .clock (clock_if_pipelined), // OPTIONAL + .clken (clock_enable_HIGH_if_pipelined), // OPTIONAL + .aclr (async_clear_if_pipelined) // OPTIONAL +); + +module lpm_mult ( +#( 1, // lpm_widtha (width of input vector) + 1, // lpm_widthb (width of input vector) + 1, // lpm_widths (width of partial sum vector) + 1, // lpm_widthp (width of product vector) + "UNSIGNED", // lpm_representation, optional, {UNSIGNED, SIGNED} + 0 // lpm_pipeline, optional, {0, 1} + ) lpm_mult_example ( + .result (data_out[lpm_widthp-1:0]), + .sum (partial_sum_in[lpm_widths-1:0]), // OPTIONAL + .dataa (multiplicand_a_in[lpm_widtha-1:0]), + .datab (multiplicand_b_in[lpm_widthb-1:0]), + .clock (clock_if_pipelined), // OPTIONAL + .clken (clock_enable_HIGH_if_pipelined), // OPTIONAL + .aclr (async_clear_if_pipelined) // OPTIONAL +); + +lpm_divide +#( 1, // lpm_widthn (width of numerator) + 1, // lpm_widthn (width of denominator) + "UNSIGNED", // lpm_nrepresentation, optional, {UNSIGNED, SIGNED} + "UNSIGNED", // lpm_drepresentation, optional, {UNSIGNED, SIGNED} + 0 // lpm_pipeline, optional, {0, 1} + ) lpm_divide_example ( + .quotient (data_out[lpm_widthn-1:0]), // CHOICE + .remain (data_out[lpm_widthd-1:0]), // CHOICE + .numer (data_out[lpm_widthn-1:0]), + .denom (data_out[lpm_widthd-1:0]), + .clock (clock_if_pipelined), // OPTIONAL + .clken (clock_enable_HIGH_if_pipelined), // OPTIONAL + .aclr (async_clear_if_pipelined) // OPTIONAL +); + +lpm_abs +#( 1 // lpm_width (width of input) + ) lpm_abs_example ( + .result (data_out[lpm_width-1:0]), + .overflow (overflow_because_negative_number_was_max), // OPTIONAL + .data (data_in[lpm_width-1:0]) +); + +module lpm_counter ( +#( 1, // lpm_width (width of input) + 0, // lpm_modulus (max count plus 1) + "UNUSED", // lpm_direction, optional, {UNUSED, UP, DOWN} + "UNUSED", // lpm_avalue, value to load if ASET active + "UNUSED", // lpm_svalue, value to load if SSET active + "UNUSED", // lpm_pvalue, value to load at powerup + "lpm_counter", // lpm_type, optional, must be "lpm_counter if lpm_hint used + "UNUSED" // lpm_hint, optional, {UNSIGNED, SIGNED, BCD, GRAY_CODE, JOHNSON, LFSR} + ) lpm_counter_example ( + .cout (max_value_reached), // CHOICE + .q (counter_out[lpm_width-1:0]), // CHOICE + .data (sync_data_in[lpm_width-1:0]), // OPTIONAL + .sload (load_counter_with_data_next_clock), // OPTIONAL + .sset (set_counter_to_max_or_lpm_svalue_next_clock), // OPTIONAL + .sclr (clear_counter_next_clock), // OPTIONAL + .cnt_en (enable_counting_when_HIGH), // OPTIONAL + .cin (carry_in_to_enable_counter), // OPTIONAL + .updown (inc_if_HIGH_must_set_LOW_if_using_lpm_direction), // OPTIONAL + .clock (clock_if_pipelined), + .clk_en (enable_all_sync_activity_when_HIGH), // OPTIONAL + .aload (async_load_counter_with_data), // OPTIONAL + .aset (async_set_counter_to_max_or_lpm_avalue), // OPTIONAL + .aclr (async_clear_if_pipelined) // OPTIONAL +); +*/ + +//------------------------------------------------------------------------ +// LPM Synthesizable Models +//------------------------------------------------------------------------ +// Version 1.5 (lpm 220) Date 12/17/99 +// +// Modified LPM_ADD_SUB and LPM_MULT to accomodate LPM_WIDTH = 1. +// Default values for LPM_WIDTH* are changed back to 1. +// Added LPM_HINT to LPM_DIVIDE. +// Rewritten LPM_FIFO_DC to output correctly. +// Modified LPM_FIFO to output 0s before first read, output correct +// values after aclr and sclr, and output LPM_NUMWORDS mod +// exp(2, LPM_WIDTHU) when FIFO is full. +// +//------------------------------------------------------------------------ +// Version 1.4.1 (lpm 220) Date 10/29/99 +// +// Default values for LPM_WIDTH* of LPM_ADD_SUB and LPM_MULT are changed +// from 1 to 2. +// +//------------------------------------------------------------------------ +// Version 1.4 (lpm 220) Date 10/18/99 +// +// Default values for each optional inputs for ALL modules are added. +// Some LPM_PVALUE implementations were missing, and now implemented. +// +//------------------------------------------------------------------------ +// Version 1.3 (lpm 220) Date 06/23/99 +// +// Corrected LPM_FIFO and LPM_FIFO_DC cout and empty/full flags. +// Implemented LPM_COUNTER cin/cout, and LPM_MODULUS is now working. +// +//------------------------------------------------------------------------ +// Version 1.2 (lpm 220) Date 06/16/99 +// +// Added LPM_RAM_DP, LPM_RAM_DQ, LPM_IO, LPM_ROM, LPM_FIFO, LPM_FIFO_DC. +// Parameters and ports are added/discarded according to the spec. +// +//------------------------------------------------------------------------ +// Version 1.1 (lpm 220) Date 02/05/99 +// +// Added LPM_DIVIDE module. +// +//------------------------------------------------------------------------ +// Version 1.0 Date 07/09/97 +// +//------------------------------------------------------------------------ +// Excluded Functions: +// +// LPM_FSM and LPM_TTABLE. +// +//------------------------------------------------------------------------ +// Assumptions: +// +// 1. LPM_SVALUE, LPM_AVALUE, LPM_MODULUS, and LPM_NUMWORDS, +// LPM_STRENGTH, LPM_DIRECTION, and LPM_PVALUE default value is +// string UNUSED. +// +//------------------------------------------------------------------------ +// Verilog Language Issues: +// +// Two dimensional ports are not supported. Modules with two dimensional +// ports are implemented as one dimensional signal of (LPM_SIZE * LPM_WIDTH) +// bits wide. +// +//------------------------------------------------------------------------ +// Synthesis Issues: +// +// 1. LPM_COUNTER +// +// Currently synthesis tools do not allow mixing of level and edge +// sensetive signals. To overcome that problem the "data" signal is +// removed from the clock always block of lpm_counter, however the +// synthesis result is accurate. For correct simulation add the "data" +// pin to the sensetivity list as follows: +// +// always @(posedge clock or posedge aclr or posedge aset or +// posedge aload or data) +//------------------------------------------------------------------------ + +module lpm_add_sub ( result, cout, overflow, + add_sub, cin, dataa, datab, clock, clken, aclr ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_direction = "UNUSED"; + parameter lpm_representation = "UNSIGNED"; + parameter lpm_pipeline = 0; + parameter lpm_type = "lpm_add_sub"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_width-1:0] dataa, datab; + input add_sub, cin; + input clock; + input clken; + input aclr; + output [lpm_width-1:0] result; + output cout, overflow; + + reg [lpm_width-1:0] tmp_result; + reg [lpm_width-1:0] tmp_result2 [lpm_pipeline:0]; + reg [lpm_pipeline:0] tmp_cout2; + reg [lpm_pipeline:0] tmp_overflow2; + reg tmp_cout; + reg tmp_overflow; + reg [lpm_width-1:0] tmp_a, tmp_b; + integer i, j, k, n; + integer dataa_int, datab_int, result_int, compare, borrow; + + tri0 aclr; + tri0 clock; + tri1 clken; + tri0 cin; + tri1 add_sub; + + buf (i_aclr, aclr); + buf (i_clock, clock); + buf (i_clken, clken); + buf (i_cin, cin); + buf (i_add_sub, add_sub); + + + always @(i_cin or dataa or datab or i_add_sub) + begin + borrow = i_cin ? 0 : 1; + // cout is the same for both signed and unsign representation. + if (lpm_direction == "ADD" || i_add_sub == 1) + begin + {tmp_cout,tmp_result} = dataa + datab + i_cin; + tmp_overflow = tmp_cout; + end + else if (lpm_direction == "SUB" || i_add_sub == 0) + begin + // subtraction + {tmp_overflow, tmp_result} = dataa - datab - borrow; + tmp_cout = (dataa >= (datab+borrow))?1:0; + end + + if (lpm_representation == "SIGNED") + begin + // convert to negative integer + if (dataa[lpm_width-1] == 1) + begin + for (j = 0; j < lpm_width; j = j + 1) + tmp_a[j] = dataa[j] ^ 1; + dataa_int = (tmp_a) * (-1) - 1; + end + else + dataa_int = dataa; + + // convert to negative integer + if (datab[lpm_width-1] == 1) + begin + for (k = 0; k < lpm_width; k = k + 1) + tmp_b[k] = datab[k] ^ 1; + datab_int = (tmp_b) * (-1) - 1; + end + else + datab_int = datab; + + // perform the addtion or subtraction operation + if (lpm_direction == "ADD" || i_add_sub == 1) + result_int = dataa_int + datab_int + i_cin; + else if (lpm_direction == "SUB" || i_add_sub == 0) + result_int = dataa_int - datab_int - borrow; + tmp_result = result_int; + + // set the overflow + compare = 1 << (lpm_width -1); + if ((result_int > (compare - 1)) || (result_int < (-1)*(compare))) + tmp_overflow = 1; + else + tmp_overflow = 0; + end + end + + + always @(posedge i_clock or posedge i_aclr) + begin + if (i_aclr) + begin + for (i = 0; i <= lpm_pipeline; i = i + 1) + begin + tmp_result2[i] = 'b0; + tmp_cout2[i] = 1'b0; + tmp_overflow2[i] = 1'b0; + end + end + else if (i_clken == 1) + begin + tmp_result2[lpm_pipeline] = tmp_result; + tmp_cout2[lpm_pipeline] = tmp_cout; + tmp_overflow2[lpm_pipeline] = tmp_overflow; + for (n = 0; n < lpm_pipeline; n = n + 1) + begin + tmp_result2[n] = tmp_result2[n+1]; + tmp_cout2[n] = tmp_cout2[n+1]; + tmp_overflow2[n] = tmp_overflow2[n+1]; + end + end + end + + + assign result = (lpm_pipeline >0) ? tmp_result2[0]:tmp_result; + assign cout = (lpm_pipeline >0) ? tmp_cout2[0] : tmp_cout; + assign overflow = (lpm_pipeline >0) ? tmp_overflow2[0] : tmp_overflow; + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_add_sub") || (lpm_type !== "lpm_add_sub")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_add_sub + +//------------------------------------------------------------------------ + +module lpm_compare ( alb, aeb, agb, aleb, aneb, ageb, dataa, datab, + clock, clken, aclr ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_representation = "UNSIGNED"; + parameter lpm_pipeline = 0; + parameter lpm_type = "lpm_compare"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_width-1:0] dataa, datab; + input clock; + input clken; + input aclr; + output alb, aeb, agb, aleb, aneb, ageb; + + reg tmp_alb, tmp_aeb, tmp_agb; + reg tmp_aleb, tmp_aneb, tmp_ageb; + reg [lpm_pipeline:0] tmp_alb2, tmp_aeb2, tmp_agb2; + reg [lpm_pipeline:0] tmp_aleb2, tmp_aneb2, tmp_ageb2; + reg [lpm_width-1:0] a_int; + integer i, j, k, l, m, n, o, p, u, dataa_int, datab_int; + + tri0 aclr; + tri0 clock; + tri1 clken; + + buf (i_aclr, aclr); + buf (i_clock, clock); + buf (i_clken, clken); + + + always @(dataa or datab) + begin + if (lpm_representation == "UNSIGNED") + begin + dataa_int = dataa[lpm_width-1:0]; + datab_int = datab[lpm_width-1:0]; + end + else if (lpm_representation == "SIGNED") + begin + // convert to negative integer + if (dataa[lpm_width-1] == 1) + begin + for (j = 0; j < lpm_width; j = j + 1) + a_int[j] = dataa[j] ^ 1; + dataa_int = (a_int) * (-1) - 1; + end + else + dataa_int = dataa; + + // convert to negative integer + if (datab[lpm_width-1] == 1) + begin + for (j = 0; j < lpm_width; j = j + 1) + a_int[j] = datab[j] ^ 1; + datab_int = (a_int) * (-1) - 1; + end + else + datab_int = datab; + end + + tmp_alb = (dataa_int < datab_int); + tmp_aeb = (dataa_int == datab_int); + tmp_agb = (dataa_int > datab_int); + tmp_aleb = (dataa_int <= datab_int); + tmp_aneb = (dataa_int != datab_int); + tmp_ageb = (dataa_int >= datab_int); + end + + always @(posedge i_clock or posedge i_aclr) + begin + if (i_aclr) + begin + for (u = 0; u <= lpm_pipeline; u = u +1) + begin + tmp_aeb2[u] = 'b0; + tmp_agb2[u] = 'b0; + tmp_alb2[u] = 'b0; + tmp_aleb2[u] = 'b0; + tmp_aneb2[u] = 'b0; + tmp_ageb2[u] = 'b0; + end + end + else if (i_clken == 1) + begin + // Assign results to registers + tmp_alb2[lpm_pipeline] = tmp_alb; + tmp_aeb2[lpm_pipeline] = tmp_aeb; + tmp_agb2[lpm_pipeline] = tmp_agb; + tmp_aleb2[lpm_pipeline] = tmp_aleb; + tmp_aneb2[lpm_pipeline] = tmp_aneb; + tmp_ageb2[lpm_pipeline] = tmp_ageb; + + for (k = 0; k < lpm_pipeline; k = k +1) + tmp_alb2[k] = tmp_alb2[k+1]; + for (l = 0; l < lpm_pipeline; l = l +1) + tmp_aeb2[l] = tmp_aeb2[l+1]; + for (m = 0; m < lpm_pipeline; m = m +1) + tmp_agb2[m] = tmp_agb2[m+1]; + for (n = 0; n < lpm_pipeline; n = n +1) + tmp_aleb2[n] = tmp_aleb2[n+1]; + for (o = 0; o < lpm_pipeline; o = o +1) + tmp_aneb2[o] = tmp_aneb2[o+1]; + for (p = 0; p < lpm_pipeline; p = p +1) + tmp_ageb2[p] = tmp_ageb2[p+1]; + end + end + + assign alb = (lpm_pipeline > 0) ? tmp_alb2[0] : tmp_alb; + assign aeb = (lpm_pipeline > 0) ? tmp_aeb2[0] : tmp_aeb; + assign agb = (lpm_pipeline > 0) ? tmp_agb2[0] : tmp_agb; + assign aleb = (lpm_pipeline > 0) ? tmp_aleb2[0] : tmp_aleb; + assign aneb = (lpm_pipeline > 0) ? tmp_aneb2[0] : tmp_aneb; + assign ageb = (lpm_pipeline > 0) ? tmp_ageb2[0] : tmp_ageb; + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_compare") || (lpm_type !== "lpm_compare")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_compare + +//------------------------------------------------------------------------ + +module lpm_mult ( result, dataa, datab, sum, clock, clken, aclr ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_widtha = 1; + parameter lpm_widthb = 1; + parameter lpm_widths = 1; + parameter lpm_widthp = 1; + parameter lpm_representation = "UNSIGNED"; + parameter lpm_pipeline = 0; + parameter lpm_type = "lpm_mult"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input clock; + input clken; + input aclr; + input [lpm_widtha-1:0] dataa; + input [lpm_widthb-1:0] datab; + input [lpm_widths-1:0] sum; + output [lpm_widthp-1:0] result; + + // inernal reg + reg [lpm_widthp-1:0] tmp_result; + reg [lpm_widthp-1:0] tmp_result2 [lpm_pipeline:0]; + reg [lpm_widtha-1:0] a_int; + reg [lpm_widthb-1:0] b_int; + reg [lpm_widths-1:0] s_int; + reg [lpm_widthp-1:0] p_reg; + integer p_int; + integer i, j, k, m, n, p, maxs_mn; + integer int_dataa, int_datab, int_sum, int_result; + + tri0 aclr; + tri0 clock; + tri1 clken; + + buf (i_aclr, aclr); + buf (i_clock, clock); + buf (i_clken, clken); + + + always @(dataa or datab or sum) + begin + if (lpm_representation == "UNSIGNED") + begin + int_dataa = dataa; + int_datab = datab; + int_sum = sum; + end + else if (lpm_representation == "SIGNED") + begin + // convert signed dataa + if (dataa[lpm_widtha-1] == 1) + begin + for (i = 0; i < lpm_widtha; i = i + 1) + a_int[i] = dataa[i] ^ 1; + int_dataa = (a_int) * (-1) - 1; + end + else + int_dataa = dataa; + + // convert signed datab + if (datab[lpm_widthb-1] == 1) + begin + for (j = 0; j < lpm_widthb; j = j + 1) + b_int[j] = datab[j] ^ 1; + int_datab = (b_int) * (-1) - 1; + end + else + int_datab = datab; + + // convert signed sum + if (sum[lpm_widths-1] == 1) + begin + for (k = 0; k < lpm_widths; k = k + 1) + s_int[k] = sum[k] ^ 1; + int_sum = (s_int) * (-1) - 1; + end + else + int_sum = sum; + end + else + begin + int_dataa = {lpm_widtha{1'bx}}; + int_datab = {lpm_widthb{1'bx}}; + int_sum = {lpm_widths{1'bx}}; + end + + p_int = int_dataa * int_datab + int_sum; + maxs_mn = ((lpm_widtha+lpm_widthb)>lpm_widths)?lpm_widtha+lpm_widthb:lpm_widths; + if (lpm_widthp >= maxs_mn) + tmp_result = p_int; + else + begin + p_reg = p_int; + for (m = 0; m < lpm_widthp; m = m + 1) + tmp_result[lpm_widthp-1-m] = p_reg[maxs_mn-1-m]; + end + end + + always @(posedge i_clock or posedge i_aclr) + begin + if (i_aclr) + begin + for (p = 0; p <= lpm_pipeline; p = p + 1) + tmp_result2[p] = 'b0; + end + else if (i_clken == 1) + begin :syn_block + tmp_result2[lpm_pipeline] = tmp_result; + for (n = 0; n < lpm_pipeline; n = n +1) + tmp_result2[n] = tmp_result2[n+1]; + end + end + + assign result = (lpm_pipeline > 0) ? tmp_result2[0] : tmp_result; + +// Check for previous Parameter declaration order +initial if ((lpm_widtha === "lpm_mult") || (lpm_type !== "lpm_mult")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_mult + +//------------------------------------------------------------------------ + +module lpm_divide ( quotient,remain, numer, denom, clock, clken, aclr ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_widthn = 1; + parameter lpm_widthd = 1; + //parameter lpm_widthq = 1; + //parameter lpm_widthr = 1; + parameter lpm_nrepresentation = "UNSIGNED"; + parameter lpm_drepresentation = "UNSIGNED"; + parameter lpm_pipeline = 0; + parameter lpm_type = "lpm_divide"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input clock; + input clken; + input aclr; + input [lpm_widthn-1:0] numer; + input [lpm_widthd-1:0] denom; + output [lpm_widthn-1:0] quotient; + output [lpm_widthd-1:0] remain; + + // inernal reg + reg [lpm_widthn-1:0] tmp_quotient [lpm_pipeline:0]; + reg [lpm_widthd-1:0] tmp_remain [lpm_pipeline:0]; + reg [lpm_widthn-1:0] ONES, ZEROS, UNKNOWN, HiZ; + reg [lpm_widthd-1:0] DZEROS, DUNKNOWN; + reg [lpm_widthn-1:0] NUNKNOWN; + reg [lpm_widthd-1:0] RZEROS ; + integer i; + integer int_numer, int_denom, int_quotient, int_remain; + + tri0 aclr; + tri0 clock; + tri1 clken; + + buf (i_aclr, aclr); + buf (i_clock, clock); + buf (i_clken, clken); + + + initial + begin + + // check if lpm_widthn > 0 + if (lpm_widthn <= 0) + $display("%t: Error! LPM_WIDTHN must be greater than 0.\n", $time); + // check if lpm_widthd > 0 + if (lpm_widthd <= 0) + $display("%t: Error! LPM_WIDTHD must be greater than 0.\n", $time); + // check if lpm_widthn > 0 + //if (lpm_widthq <= 0) + // $display("%t: Error! LPM_WIDTHQ must be greater than 0.\n", $time); + // check if lpm_widthR > 0 + //if (lpm_widthr <= 0) + // $display("%t: Error! LPM_WIDTHR must be greater than 0.\n", $time); + // check for valid lpm_nrep value + if ((lpm_nrepresentation !== "SIGNED") && (lpm_nrepresentation !== "UNSIGNED")) + $display("%t: Error! LPM_NREPRESENTATION value must be \"SIGNED\" or \"UNSIGNED\".", $time); + + // check for valid lpm_drep value + if ((lpm_drepresentation !== "SIGNED") && (lpm_drepresentation !== "UNSIGNED")) + $display("%t: Error! LPM_DREPRESENTATION value must be \"SIGNED\" or \"UNSIGNED\".", $time); + + // check if lpm_pipeline is > 1 and clock is not used + if ((lpm_pipeline >=1) && (clock === 1'bz)) + $display("%t: Error! The clock pin is requied if lpm_pipeline is used\n", $time); + else if ((lpm_pipeline == 0) && (clock !== 1'bz)) + $display("%t: Error! If the clock pin is used, lpm_pipeline must be greater than 0.\n", $time); + + for (i=0; i < lpm_widthn; i=i+1) + begin + ONES[i] = 1'b1; + ZEROS[i] = 1'b0; + UNKNOWN[i] = 1'bx; + HiZ[i] = 1'bz; + end + + for (i=0; i < lpm_widthd; i=i+1) + DUNKNOWN[i] = 1'bx; + + for (i=0; i < lpm_widthn; i=i+1) + NUNKNOWN[i] = 1'bx; + + for (i=0; i < lpm_widthd; i=i+1) + RZEROS[i] = 1'b0; + + end + + always @(numer or denom) + begin + if (lpm_nrepresentation == "UNSIGNED") + int_numer = numer; + else if (lpm_nrepresentation == "SIGNED") + begin + // convert signed numer + if (numer[lpm_widthn-1] == 1) + begin + int_numer = 0; + for (i = 0; i < lpm_widthn - 1; i = i + 1) + int_numer[i] = numer[i] ^ 1; + int_numer = -(int_numer + 1); + end + else + int_numer = numer; + end + else + int_numer = NUNKNOWN; + + if (lpm_drepresentation == "UNSIGNED") + int_denom = denom; + else if (lpm_drepresentation == "SIGNED") + begin + // convert signed denom + if (denom[lpm_widthd-1] == 1) + begin + int_denom = 0; + for (i = 0; i < lpm_widthd - 1; i = i + 1) + int_denom[i] = denom[i] ^ 1; + int_denom = -(int_denom + 1); + end + else + int_denom = denom; + end + else + int_denom = DUNKNOWN; + + int_quotient = int_numer / int_denom; + int_remain = int_numer % int_denom; + + tmp_quotient[lpm_pipeline] = int_quotient; + tmp_remain[lpm_pipeline] = int_remain; + end + + always @(posedge i_clock or i_aclr) + begin :syn_block + if (i_aclr) + begin + disable syn_block; + for (i = 0; i <= lpm_pipeline; i = i + 1) + tmp_quotient[i] = ZEROS; + tmp_remain[i] = RZEROS; + end + else if (i_clken) + for (i = 0; i < lpm_pipeline; i = i +1) + begin + tmp_quotient[i] = tmp_quotient[i+1]; + tmp_remain[i] = tmp_remain[i+1]; + end + end + + assign quotient = tmp_quotient[0]; + assign remain = tmp_remain[0]; + +// Check for previous Parameter declaration order +initial if ((lpm_widthn === "lpm_divide") || (lpm_type !== "lpm_divide")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_divide + +//------------------------------------------------------------------------ + +module lpm_abs ( result, overflow, data ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_type = "lpm_abs"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + input [lpm_width-1:0] data; + output [lpm_width-1:0] result; + output overflow; + + reg [lpm_width-1:0] a_int; + reg [lpm_width-1:0] result; + reg overflow; + integer i; + + always @(data) + begin + overflow = 0; + if (data[lpm_width-1] == 1) + begin + for (i = 0; i < lpm_width; i = i + 1) + a_int[i] = data[i] ^ 1; + result = (a_int + 1); + overflow = (result == ( 1<<(lpm_width -1))); + end + else + result = data; + end + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_abs") || (lpm_type !== "lpm_abs")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_abs + +//------------------------------------------------------------------------ + +module lpm_counter ( q, data, clock, cin, cout,clk_en, cnt_en, updown, + aset, aclr, aload, sset, sclr, sload ); + +// NOTE: Parameters must be declared in the same order as the Properties +// are specified in the Cell Specification document. + parameter lpm_width = 1; + parameter lpm_modulus = 0; + parameter lpm_direction = "UNUSED"; + parameter lpm_avalue = "UNUSED"; + parameter lpm_svalue = "UNUSED"; + parameter lpm_pvalue = "UNUSED"; + parameter lpm_type = "lpm_counter"; + parameter lpm_hint = "UNUSED"; + parameter lpm_source_version = "lpm 220 version 1.6"; + + output [lpm_width-1:0] q; + //output [lpm_modulus-1:0] eq; + output cout; + input cin; + input [lpm_width-1:0] data; + input clock, clk_en, cnt_en, updown; + input aset, aclr, aload; + input sset, sclr, sload; + + reg [lpm_width-1:0] tmp_count; + reg tmp_updown; + integer tmp_modulus; + + tri1 clk_en; + tri1 cnt_en; + tri1 updown; + tri0 sload; + tri0 sset; + tri0 sclr; + tri0 aload; + tri0 aset; + tri0 aclr; + tri0 cin; + + buf (i_clk_en, clk_en); + buf (i_cnt_en, cnt_en); + buf (i_updown, updown); + buf (i_sload, sload); + buf (i_sset, sset); + buf (i_sclr, sclr); + buf (i_aload, aload); + buf (i_aset, aset); + buf (i_aclr, aclr); + buf (i_cin, cin); + + +//---------------------------------------------------------------// + function [lpm_width-1:0] NextBin; + input [lpm_width-1:0] count; + + //reg [lpm_width-1:0] re_start; + //reg [lpm_width-1:0] tmp_nextbin; + //integer up_limit; + + begin + if (tmp_updown == 1) + begin + if (i_cin == 1 && count == tmp_modulus-2) + NextBin = 0; + else + NextBin = (count >= tmp_modulus-1) ? i_cin : count+1+i_cin; + end + else + begin + if (i_cin == 1 && count == 1) + NextBin = tmp_modulus - 1; + else + NextBin = (count <= 0) ? tmp_modulus-1-i_cin : count-1-i_cin; + end + end + endfunction + +//---------------------------------------------------------------// +// function [(1< 1< 1<= tmp_modulus-1-i_cin) && tmp_updown) + || ((tmp_count <= i_cin) && !tmp_updown)) ? 1 : 0; + +// Check for previous Parameter declaration order +initial if ((lpm_width === "lpm_counter") || (lpm_type !== "lpm_counter")) + begin + $display ("LPM 220 Version 1.6 Parameter Order changed; update instantiation"); + $finish; + end +endmodule // lpm_counter Index: common/trunk/220_vhdl_usage.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: common/trunk/220_vhdl_usage.pdf =================================================================== --- common/trunk/220_vhdl_usage.pdf (nonexistent) +++ common/trunk/220_vhdl_usage.pdf (revision 48)
common/trunk/220_vhdl_usage.pdf Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: common/trunk/220_count4_example.v =================================================================== --- common/trunk/220_count4_example.v (nonexistent) +++ common/trunk/220_count4_example.v (revision 48) @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------ +// Copyright (c) 1997 Altera Corporation, all right reserved +// +// This Verilog file may be copied and/or distributed at no cost as long as +// this copyright notice is retained. +// +//---------------------------------------------------------------- +// Four-bit Loadable Up-Down Counter with synchronous set, load and clear +//---------------------------------------------------------------- +// Version 1.0 Date 07/09/97 +//---------------------------------------------------------------- +// + +`include "210model.v" +module count4 (q, + data, clock, + clk_en, cnt_en, updown, + sset, sclr, sload) ; + + parameter lpm_width = 4 ; + + output [lpm_width-1:0] q ; + input [lpm_width-1:0] data ; + input clock, clk_en, cnt_en, updown ; + input sset, sclr, sload ; + + + lpm_counter U1 (.q(q), + .data(data), .clock(clock), + .clk_en(clk_en), .cnt_en(cnt_en), .updown(updown), + .sset(sset), .sclr(sclr), .sload(sload)) ; + + defparam U1.lpm_width=4; + +endmodule Index: common/trunk/crc32_lib.v =================================================================== --- common/trunk/crc32_lib.v (nonexistent) +++ common/trunk/crc32_lib.v (revision 48) @@ -0,0 +1,2324 @@ +////////////////////////////////////////////////////////////////////// +//// //// +//// crc_32_lib, consisting of: //// +//// crc_32_64_pipelined_2 //// +//// crc_32_32_pipelined_1 //// +//// crc_32_8_incremental_pipelined_1 //// +//// //// +//// This file is part of the general opencores effort. //// +//// //// +//// //// +//// Module Description: //// +//// Calculate CRC-32 checksums by applying 8, 16, 24, 32, or //// +//// 64 bits of new data per clock. //// +//// CRC-32 needs to start out with a value of all F's. //// +//// When CRC-32 is applied to a block which ends with the //// +//// CRC-32 of the previous data in the block, the resulting //// +//// CRC-32 checksum is always 32'hCBF43926. //// +//// //// +//// The verilog these routines is started from scratch. A new //// +//// user might want to look at a wonderful paper by Ross //// +//// Williams, which seems to be at //// +//// ftp.adelaide.edu.au:/pub/rocksoft/crc_v3.txt //// +//// Also see http://www.easics.be/webtools/crctool //// +//// //// +//// To Do: //// +//// None of the flop-to-flop routines have been checked! //// +//// Might make this handle different sizes. //// +//// Might put some real thought into minimizing things so that //// +//// a poor FPGA can reuse input terms to the max. //// +//// //// +//// Author(s): //// +//// - Anonymous //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2000 Anonymous and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source 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 Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from //// +//// //// +////////////////////////////////////////////////////////////////////// +// +// $Id: crc32_lib.v,v 1.2 2001-09-07 11:38:25 bbeaver Exp $ +// +// CVS Revision History +// +// $Log: not supported by cvs2svn $ +// Revision 1.1 2001/09/07 11:32:02 Blue Beaver +// no message +// +// Revision 1.24 2001/09/07 11:28:49 Blue Beaver +// no message +// +// + +//=========================================================================== +// NOTE: I am greatly confused about the order in which the CRC should be +// sent over the wire to a remote machine. Bit 0 first? Bit 31 first? +// True or compliment values? The user has got to figure this out in +// order to interoperate with existing machines. +// +// NOTE: Bit order matters in this code, of course. The existing code on +// the net assumes that when you present a multi-bit word to a parallel +// CRC generator, the MSB corresponds to the earliest data to arrive +// across a serial interface. +// +// NOTE: The code also assumes that the data shifts into bit 0 of the shift +// register, and shifts out of bit 31. +// +// NOTE: The math for the CRC-32 is beyond me. +// +// NOTE: But they are pretty easy to use. +// You initialize a CRC to a special value to keep from missing +// initial 0 bytes. That is 32'hFFFFFFFF for CRC-32. +// You update a CRC as data comes in. +// You append the calculated CRC to the end of your message. +// You have to agree on logic sense and bit order with the +// receiver, or everything you send will seem wrong. +// The receiver calculates a CRC the same way, but receives a +// message longer than the one you sent, due to the added CRC. +// After the CRC is processed by the receiver, you either compare +// the calculated CRC with the sent one, or look for a magic +// final value which indicates that the message had no errors. +// +// NOTE: Looking on the web, one finds a nice tutorial by Cypress entitled +// "Parallel Cyclic Redundancy Check (CRC) for HOTLink(TM)". +// This reminds me of how I learned to do this from a wonderful +// CRC tutorial on the web, done by Ross N. Williams. +// +// NOTE: The CRC-32 polynomial is: +// X**0 + X**1 + X**2 + X**4 + X**5 + X**7 + X**8 + X**10 +// + X**11 + X**12 + X**16 + X**22 + X**23 + X**26 + X**32 +// You initialize it to the value 32'hFFFFFFFF +// You append it to the end of the message. +// The receiver sees the value 32'hC704DD7B when the message is +// received no errors. +// +// That means that each clock a new bit comes in, you have to shift +// all the 32 running state bits 1 bit higher and drop the MSB. +// PLUS you have to XOR in (new bit ^ MSB) to locations +// 0, 1, 2, 4, 5, 7, 8, 10, 11, 12, 16, 22, 23, and 26. +// +// That is simple but slow. If you keep track of the bits, you can +// see that it might be possible to apply 1 bit, shift it, apply +// another bit, shift THAT, and end up with a new formula of how +// to update the shift register based on applyig 1 bits at once. +// +// That is the general plan. Figure out how to apply several bits +// at a time. Write out the big formula, then simplify it if possible. +// Apply the bits, shift several bit locations at once, run faster. +// +// But what are the formulas? Good question. Use a computer to figure +// this out for you. And Williams wrote a program! +// +// NOTE: The idea is simple, so I may include a program to print out +// formulas at the end of this code. The module SHOULD be improved +// to group the terms into an XOR tree, with parantheses. That can +// be left for a new person. +// +// NOTE: ALL input data is latched in flops immediately. +// All outputs are already latched. So everything is flop-to-flop. +// This lets the module be synthesized and layed out independently +// of all other modules when trying to meet timing. +// This also lets the modules which calculate with more than 32 +// input bits per clock have an internal pipeline stage where +// the Data component of the new CRC is calculate. But be +// careful! An extra layer of pipelining changes when data +// becomes available. +// Might also make versions which let a non-F CRC be loaded. This +// would be useful if a CRC needed to be calculated incrementally, +// which is the case when calculating AAL-5 checksums, for instance. +// +// This code was developed using VeriLogger Pro, by Synapticad. +// Their support is greatly appreciated. +// +//=========================================================================== + +`timescale 1ns/1ps + +// Look up the CRC-32 polynomial on the web. +// The LSB corresponds to bit 0, the new input bit. +`define CRC 32'b0000_0100_1100_0001_0001_1101_1011_0111 +`define CHECK_VALUE 32'b1100_1011_1111_0100_0011_1001_0010_0110 +`define NUMBER_OF_BITS_IN_CRC_32 32 + +// Given a 64-bit aligned data stream, calculate the CRC-32 8 bytes at a time. +// Input data and the use_F indication are latched on input at clock 0. +// The CRC result is available after clock 2 (!) after the last data item is consumed. +// The indication that the CRC is correct is available after clock 3 (!) clocks after +// the last data item is consumed. +// If the data stream is not an exact multiple of 8 bytes long, the checksum +// calculated here must be incrementally updated for each byte beyond the +// multiple of 8. Use another module to do that. + +module crc_32_64_pipelined_2 ( + use_F_for_CRC, + data_in_64, + running_crc_2, + crc_correct_3, + clk +); + parameter NUMBER_OF_BITS_APPLIED = 64; // do NOT override + input use_F_for_CRC; + input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_64; + output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] running_crc_2; + output crc_correct_3; + input clk; + +// A pipelined version of the CRC_32 working on 64-bit operands. +// Latch all operands at Clock 0. +// Calculate the Data Dependency during Clock 1. +// Update the CRC during Clock 2. +// The CRC Correct signal comes out after Clock 3. + +// Latch all operands at Clock 0. + reg use_F_for_CRC_latched_0; + reg [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_64_latched_0; + + always @(posedge clk) + begin + use_F_for_CRC_latched_0 <= use_F_for_CRC; + data_in_64_latched_0[NUMBER_OF_BITS_APPLIED - 1 : 0] <= + data_in_64[NUMBER_OF_BITS_APPLIED - 1 : 0]; + end + +// Instantiate the Data part of the dependency. + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_1_out_0; + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_2_out_0; + +crc_32_64_data_private crc_32_64_data_part ( + .data_in_64 (data_in_64_latched_0[NUMBER_OF_BITS_APPLIED - 1 : 0]), + .data_part_1_out (data_part_1_out_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), + .data_part_2_out (data_part_2_out_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) +); + +// Calculate the Data Dependency during Clock 1. + reg use_F_for_CRC_prev_1; + reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_1_latched_1; + reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_2_latched_1; + + always @(posedge clk) + begin + use_F_for_CRC_prev_1 <= use_F_for_CRC_latched_0; + data_part_1_latched_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] <= + data_part_1_out_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + data_part_2_latched_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] <= + data_part_2_out_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + end + +// Update the CRC during Clock 2. + reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_2; + + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] crc_part_1_out_1; + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] crc_part_2_out_1; + +crc_32_64_crc_private crc_32_64_crc_part ( + .use_F_for_CRC (use_F_for_CRC_prev_1), + .present_crc (present_crc_2[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), + .crc_part_1_out (crc_part_1_out_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), + .crc_part_2_out (crc_part_2_out_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) +); + + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_depend_part_1 = + data_part_1_latched_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] + ^ data_part_2_latched_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; // source depth 2 gates + + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] first_crc_part_1 = + data_depend_part_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] + ^ crc_part_1_out_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; // source depth 4 gates + + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_1 = + first_crc_part_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] + ^ crc_part_2_out_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; // source depth 5 gates + + always @(posedge clk) + begin + present_crc_2[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] <= + next_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + end + +// Assign separately so that flop outputs can be used in feedback. + assign running_crc_2[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + present_crc_2[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + +// Watch to detect blocks which end with the correct CRC appended. + reg crc_correct_3; + + always @(posedge clk) + begin + crc_correct_3 <= (present_crc_2[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] == 32'hCBF43926); + end + +// synopsys translate_off +// Check the user didn't override anything + initial + begin + if (NUMBER_OF_BITS_APPLIED != 64) + begin + $display ("*** Exiting because %m crc_32_64_pipelined_2 Number of bits %d != 64", + NUMBER_OF_BITS_APPLIED); + $finish; + end + end +// synopsys translate_on +endmodule + +// Given a 32-bit aligned data stream, calculate the CRC-32 4 bytes at a time. +// Inout data and the use_F indication are latched on input at clock 0. +// The CRC result is available after clock 1 (!) after the last data item is consumed. +// The indication that the CRC is correct is available after clock 2 (!) clocks after +// the last data item is consumed. +// If the data stream is not an exact multiple of 4 bytes long, the checksum +// calculated here must be incrementally updated for each byte beyond the +// multiple of 4. Use another module to do that. + +module crc_32_32_pipelined_1 ( + use_F_for_CRC, + data_in_32, + running_crc_1, + crc_correct_2, + clk +); + parameter NUMBER_OF_BITS_APPLIED = 32; // do NOT override + input use_F_for_CRC; + input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_32; + output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] running_crc_1; + output crc_correct_2; + input clk; + +// A pipelined version of the CRC_32 working on 32-bit operands. +// Latch all operands at Clock 0. +// Update the CRC during Clock 1. +// The CRC Correct signal comes out after Clock 2. + +// Latch all operands at Clock 0. + reg use_F_for_CRC_latched_0; + reg [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_32_latched_0; + + always @(posedge clk) + begin + use_F_for_CRC_latched_0 <= use_F_for_CRC; + data_in_32_latched_0[NUMBER_OF_BITS_APPLIED - 1 : 0] <= + data_in_32[NUMBER_OF_BITS_APPLIED - 1 : 0]; + end + +// Update the CRC during Clock 1. + reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_1; + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_0; + +crc_32_32_private crc_32_32_crc ( + .use_F_for_CRC (use_F_for_CRC_prev_1), + .present_crc (present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), + .data_in_32 (data_in_32_latched_0[NUMBER_OF_BITS_APPLIED - 1 : 0]), + .next_crc (next_crc_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) +); + + always @(posedge clk) + begin + present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] <= + next_crc_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + end + +// Assign separately so that flop outputs can be used in feedback. + assign running_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + +// Watch to detect blocks which end with the correct CRC appended. + reg crc_correct_2; + + always @(posedge clk) + begin + crc_correct_2 <= (present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] == 32'hCBF43926); + end + +// synopsys translate_off +// Check the user didn't override anything + initial + begin + if (NUMBER_OF_BITS_APPLIED != 32) + begin + $display ("*** Exiting because %m crc_32_32_pipelined_1 Number of bits %d != 32", + NUMBER_OF_BITS_APPLIED); + $finish; + end + end +// synopsys translate_on +endmodule + +// Given an 8-bit aligned data stream, calculate the CRC-32 1 byte at a time. +// Input data and the use_F indication are latched on input at clock 0. +// The CRC result is available after clock 1 (!) after the last data item is consumed. +// The indication that the CRC is correct is available after clock 2 (!) clocks after +// the last data item is consumed. +// This module can be given a starting CRC, and can incrementally calculate +// a new CRC-32 by applying 1 new data byte at a time. + +module crc_32_8_incremental_pipelined_1 ( + use_old_CRC, + old_crc, + use_F_for_CRC, + data_in_8, + running_crc_1, + crc_correct_2, + clk +); + parameter NUMBER_OF_BITS_APPLIED = 8; // do NOT override + input use_old_CRC; + input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] old_crc; + input use_F_for_CRC; + input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_8; + output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] running_crc_1; + output crc_correct_2; + input clk; + +// A pipelined version of the CRC_32 working on 32-bit operands. +// Latch all operands at Clock 0. +// Update the CRC during Clock 1. +// The CRC Correct signal comes out after Clock 2. + +// Latch all operands at Clock 0. + reg use_old_crc_latched_0; + reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] old_crc_latched_0; + reg use_F_for_CRC_latched_0; + reg [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_8_latched_0; + + always @(posedge clk) + begin + use_old_crc_latched_0 <= use_old_CRC; + old_crc_latched_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] <= + old_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + use_F_for_CRC_latched_0 <= use_F_for_CRC; + data_in_8_latched_0[NUMBER_OF_BITS_APPLIED - 1 : 0] <= + data_in_8[NUMBER_OF_BITS_APPLIED - 1 : 0]; + end + +// Update the CRC during Clock 1. + reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_1; + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_0 = use_old_crc_latched_0 + ? old_crc_latched_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] + : present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_0; + +crc_32_8_private crc_32_8_crc ( + .use_F_for_CRC (use_F_for_CRC_prev_1), + .present_crc (present_crc_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), + .data_in_8 (data_in_8_latched_0[NUMBER_OF_BITS_APPLIED - 1 : 0]), + .next_crc (next_crc_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) +); + + always @(posedge clk) + begin + present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] <= + next_crc_0[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + end + +// Assign separately so that flop outputs can be used in feedback. + assign running_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + +// Watch to detect blocks which end with the correct CRC appended. + reg crc_correct_2; + + always @(posedge clk) + begin + crc_correct_2 <= (present_crc_1[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] == 32'hCBF43926); + end + +// synopsys translate_off +// Check the user didn't override anything + initial + begin + if (NUMBER_OF_BITS_APPLIED != 8) + begin + $display ("*** Exiting because %m crc_32_8_pipelined_1 Number of bits %d != 8", + NUMBER_OF_BITS_APPLIED); + $finish; + end + end +// synopsys translate_on +endmodule + +// The private modules which have the real formulas in them: + +// Given a 32-bit CRC-32 running value, update it using 8 new bits of data. +// The way to make this fast is to find common sub-expressions. +// +// The user needs to supply external flops to make this work. + +module crc_32_8_private ( + use_F_for_CRC, + present_crc, + data_in_8, + next_crc +); + parameter NUMBER_OF_BITS_APPLIED = 8; + input use_F_for_CRC; + input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; + input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_8; + output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc; + + wire X7, X6, X5, X4, X3, X2, X1, X0; + assign {X7, X6, X5, X4, X3, X2, X1, X0} = data_in_8[NUMBER_OF_BITS_APPLIED - 1 : 0] + ^ ( present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : `NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED] + | {NUMBER_OF_BITS_APPLIED{use_F_for_CRC}}); + + wire C23, C22, C21, C20, C19, C18, C17, C16; + wire C15, C14, C13, C12, C11, C10, C9, C8, C7, C6, C5, C4, C3, C2, C1, C0; + assign {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, + C11, C10, C9, C8, C7, C6, C5, C4, C3, C2, C1, C0} = + present_crc[`NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED - 1 : 0] + | {(`NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED){use_F_for_CRC}}; + + assign next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + { C23 ^ X5 , + C22 ^ X4 ^ X7, + C21 ^ X3 ^ X6 ^ X7, + C20 ^ X2 ^ X5 ^ X6 , + C19 ^ X1 ^ X4 ^ X5 ^ X7, + C18 ^ X0 ^ X3 ^ X4 ^ X6 , + C17 ^ X2 ^ X3 , + C16 ^ X1 ^ X2 ^ X7, + C15 ^ X0 ^ X1 ^ X6 , + C14 ^ X0 , + C13 ^ X5 , + C12 ^ X4 , + C11 ^ X3 ^ X7, + C10 ^ X2 ^ X6 ^ X7, + C9 ^ X1 ^ X5 ^ X6 , + C8 ^ X0 ^ X4 ^ X5 , + C7 ^ X3 ^ X4 ^ X5 ^ X7, + C6 ^ X2 ^ X3 ^ X4 ^ X6 ^ X7, + C5 ^ X1 ^ X2 ^ X3 ^ X5 ^ X6 ^ X7, + C4 ^ X0 ^ X1 ^ X2 ^ X4 ^ X5 ^ X6 , + C3 ^ X0 ^ X1 ^ X3 ^ X4 , + C2 ^ X0 ^ X2 ^ X3 ^ X5 , + C1 ^ X1 ^ X2 ^ X4 ^ X5 , + C0 ^ X0 ^ X1 ^ X3 ^ X4 , + X0 ^ X2 ^ X3 ^ X5 ^ X7, + X1 ^ X2 ^ X4 ^ X5 ^ X6 ^ X7, + X0 ^ X1 ^ X3 ^ X4 ^ X5 ^ X6 ^ X7, + X0 ^ X2 ^ X3 ^ X4 ^ X6 , + X1 ^ X2 ^ X3 ^ X7, + X0 ^ X1 ^ X2 ^ X6 ^ X7, + X0 ^ X1 ^ X6 ^ X7, + X0 ^ X6 + }; +endmodule + +module crc_32_16_private ( + use_F_for_CRC, + present_crc, + data_in_16, + next_crc +); + parameter NUMBER_OF_BITS_APPLIED = 16; + input use_F_for_CRC; + input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; + input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_16; + output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc; + +/* State Variables depend on input bit number (bigger is earlier) : +{ +31 : C15 ^ X5 ^ X8 ^ X9 ^ X11 ^ X15, +30 : C14 ^ X4 ^ X7 ^ X8 ^ X10 ^ X14 , +29 : C13 ^ X3 ^ X6 ^ X7 ^ X9 ^ X13 , +28 : C12 ^ X2 ^ X5 ^ X6 ^ X8 ^ X12 , +27 : C11 ^ X1 ^ X4 ^ X5 ^ X7 ^ X11 , +26 : C10 ^ X0 ^ X3 ^ X4 ^ X6 ^ X10 , +25 : C9 ^ X2 ^ X3 ^ X8 ^ X11 ^ X15, +24 : C8 ^ X1 ^ X2 ^ X7 ^ X10 ^ X14 , +23 : C7 ^ X0 ^ X1 ^ X6 ^ X9 ^ X13 ^ X15, +22 : C6 ^ X0 ^ X12 ^ X9 ^ X14 ^ X11 , +21 : C5 ^ X5 ^ X9 ^ X13 ^ X10 , +20 : C4 ^ X4 ^ X8 ^ X12 ^ X9 , +19 : C3 ^ X3 ^ X7 ^ X8 ^ X11 ^ X15, +18 : C2 ^ X2 ^ X6 ^ X7 ^ X10 ^ X14 ^ X15, +17 : C1 ^ X1 ^ X5 ^ X6 ^ X9 ^ X13 ^ X14 , +16 : C0 ^ X0 ^ X4 ^ X5 ^ X8 ^ X12 ^ X13 , +15 : 0 ^ X3 ^ X4 ^ X5 ^ X7 ^ X8 ^ X12 ^ X9 ^ X15, +14 : 0 ^ X2 ^ X3 ^ X4 ^ X6 ^ X7 ^ X8 ^ X14 ^ X11 ^ X15, +13 : 0 ^ X1 ^ X2 ^ X3 ^ X5 ^ X6 ^ X7 ^ X13 ^ X10 ^ X14 , +12 : 0 ^ X0 ^ X1 ^ X2 ^ X4 ^ X5 ^ X6 ^ X12 ^ X9 ^ X13 ^ X15, +11 : 0 ^ X0 ^ X1 ^ X3 ^ X4 ^ X12 ^ X9 ^ X14 ^ X15, +10 : 0 ^ X0 ^ X2 ^ X3 ^ X5 ^ X9 ^ X13 ^ X14 , + 9 : 0 ^ X1 ^ X2 ^ X4 ^ X5 ^ X12 ^ X9 ^ X13 ^ X11 , + 8 : 0 ^ X0 ^ X1 ^ X3 ^ X4 ^ X8 ^ X12 ^ X10 ^ X11 , + 7 : 0 ^ X0 ^ X2 ^ X3 ^ X5 ^ X7 ^ X8 ^ X10 ^ X15, + 6 : 0 ^ X1 ^ X2 ^ X4 ^ X5 ^ X6 ^ X7 ^ X8 ^ X14 ^ X11 , + 5 : 0 ^ X0 ^ X1 ^ X3 ^ X4 ^ X5 ^ X6 ^ X7 ^ X13 ^ X10 , + 4 : 0 ^ X0 ^ X2 ^ X3 ^ X4 ^ X6 ^ X8 ^ X12 ^ X11 ^ X15, + 3 : 0 ^ X1 ^ X2 ^ X3 ^ X7 ^ X8 ^ X9 ^ X10 ^ X14 ^ X15, + 2 : 0 ^ X0 ^ X1 ^ X2 ^ X6 ^ X7 ^ X8 ^ X9 ^ X13 ^ X14 , + 1 : 0 ^ X0 ^ X1 ^ X6 ^ X7 ^ X12 ^ X9 ^ X13 ^ X11 , + 0 : 0 ^ X0 ^ X6 ^ X12 ^ X9 ^ X10 +} +*/ +// There are 2 obvious ways to implement these functions: +// 1) XOR the State bits with the Input bits, then calculate the XOR's +// 2) Independently calculate a result for Inputs and State variables, +// then XOR the results together. +// The second idea seems to take much more logic, but to have no benefit. + +// Single numbered terms are calculated in 1 XOR time. + wire X15, X14, X13, X12, X11, X10, X9, X8, X7, X6, X5, X4, X3, X2, X1, X0; + assign {X15, X14, X13, X12, X11, X10, X9, X8, X7, X6, X5, X4, X3, X2, X1, X0} = + data_in_16[NUMBER_OF_BITS_APPLIED - 1 : 0] + ^ ( present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : `NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED] + | {NUMBER_OF_BITS_APPLIED{use_F_for_CRC}}); + +// State Bits are shifted over by the width of the input, then XOR's into the X terms. + wire C15, C14, C13, C12, C11, C10, C9, C8, C7, C6, C5, C4, C3, C2, C1, C0; + assign {C15, C14, C13, C12, C11, C10, C9, C8, C7, C6, C5, C4, C3, C2, C1, C0} = + present_crc[`NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED - 1 : 0] + | {(`NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED){use_F_for_CRC}}; + +// Calculate higher_order terms, to make parity trees. +// 2_numbered terms are calculated in 1 XOR times. +// NOTE: In a Xilinx chip, it would be fine to constrain X0 and X0_1 to +// be calculated in the same CLB, and so on for all bits. + wire X0_1 = X0 ^ X1; wire X1_2 = X1 ^ X2; + wire X2_3 = X2 ^ X3; wire X3_4 = X3 ^ X4; + wire X4_5 = X4 ^ X5; wire X5_6 = X5 ^ X6; + wire X6_7 = X6 ^ X7; wire X7_8 = X7 ^ X8; +// Use odd-ordered XOR terms because it seems these might be useful + wire X8_12 = X8 ^ X12; wire X12_9 = X12 ^ X9; + wire X9_13 = X9 ^ X13; wire X13_10 = X13 ^ X10; + wire X10_14 = X10 ^ X14; wire X14_11 = X14 ^ X11; + wire X11_15 = X11 ^ X15; + +// Calculate terms which might have a single use. They are calculated here +// so that the parity trees can be balanced. + wire C15_5 = C15 ^ X5; wire C14_4 = C14 ^ X4; + wire C13_3 = C13 ^ X3; wire C12_2 = C12 ^ X2; + wire C11_1 = C11 ^ X1; wire C10_0 = C10 ^ X0; + wire C9_8 = C9 ^ X8; wire C8_7 = C8 ^ X7; + wire C7_6 = C7 ^ X6; wire C6_0 = C6 ^ X0; + wire C5_5 = C5 ^ X5; wire C4_4 = C4 ^ X4; + wire C3_3 = C3 ^ X3; wire C2_2 = C2 ^ X2; + wire C1_1 = C1 ^ X1; wire C0_0 = C0 ^ X0; +// Some of these could be matched with other terms to share 1 input in a CLB. + wire X0_5 = X0 ^ X5; wire X0_6 = X0 ^ X6; + wire X2_6 = X2 ^ X6; wire X2_8 = X2 ^ X8; + wire X3_7 = X3 ^ X7; wire X3_9 = X3 ^ X9; + wire X4_8 = X4 ^ X8; + wire X5_15 = X5 ^ X15; + wire X6_10 = X6 ^ X10; + wire X7_11 = X7 ^ X11; + wire X8_9 = X8 ^ X9; + wire X10_11 = X10 ^ X11; wire X10_15 = X10 ^ X15; + wire X13_11 = X13 ^ X11; wire X13_15 = X13 ^ X15; + wire X14_15 = X14 ^ X15; + +// NOTE: 5 terms can be implemented in a CLB, as long as the other Flop +// doesn't use logic. This would be perfect if the data_in_16 +// was registered as an input to the module in that CLB. + assign next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + { (C15_5 ^ X8_9) ^ X11_15, + (C14_4 ^ X7_8) ^ X10_14, + (C13_3 ^ X6_7) ^ X9_13, + (C12_2 ^ X5_6) ^ X8_12, + (C11_1 ^ X4_5) ^ X7_11, + (C10_0 ^ X3_4) ^ X6_10, + (C9_8 ^ X2_3) ^ X11_15, + (C8_7 ^ X1_2) ^ X10_14, + (C7_6 ^ X0_1) ^ (X9_13 ^ X15), + (C6_0 ^ X12_9) ^ X14_11, + (C5_5 ^ X9_13) ^ X10, + (C4_4 ^ X8_12) ^ X9, + (C3_3 ^ X7_8) ^ X11_15, + (C2_2 ^ X6_7) ^ (X14_15 ^ X10), + (C1_1 ^ X5_6) ^ (X9_13 ^ X14), + (C0_0 ^ X4_5) ^ (X8_12 ^ X13), + (X3_4 ^ X5_15) ^ (X7_8 ^ X12_9), + ((X2_3 ^ X4_8) ^ (X6_7 ^ X14_15)) ^ X11, + ((X1_2 ^ X3_7) ^ (X5_6 ^ X13_10)) ^ X14, + ((X0_1 ^ X2_6) ^ (X4_5 ^ X12_9)) ^ X13_15, + (X0_1 ^ X3_4) ^ (X12_9 ^ X14_15), + (X0_5 ^ X2_3) ^ (X9_13 ^ X14), + (X1_2 ^ X4_5) ^ (X12_9 ^ X13_11), + (X0_1 ^ X3_4) ^ (X8_12 ^ X10_11), + (X0_5 ^ X2_3) ^ (X7_8 ^ X10_15), + ((X1_2 ^ X4_5) ^ (X6_7 ^ X14_11)) ^ X8, + ((X0_1 ^ X3_4) ^ (X5_6 ^ X13_10)) ^ X7, + ((X0_6 ^ X2_3) ^ (X8_12 ^ X11_15)) ^ X4, + ((X1_2 ^ X3_9) ^ (X7_8 ^ X10_14)) ^ X15, + ((X0_1 ^ X2_8) ^ (X6_7 ^ X9_13)) ^ X14, + (X0_1 ^ X6_7) ^ (X12_9 ^ X13_11), + (X0_6 ^ X12_9) ^ X10 + }; +endmodule + +module crc_32_24_private ( + use_F_for_CRC, + present_crc, + data_in_24, + next_crc +); + parameter NUMBER_OF_BITS_APPLIED = 24; + input use_F_for_CRC; + input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; + input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_24; + output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc; + +/* State Variables depend on input bit number (bigger is earlier) : +{ +C7 ^ X5 ^ X8 ^ X9 ^ X11 ^ X15 ^ X23, +C6 ^ X4 ^ X7 ^ X8 ^ X10 ^ X14 ^ X22 ^ X23, +C5 ^ X3 ^ X6 ^ X7 ^ X9 ^ X13 ^ X21 ^ X22 ^ X23, +C4 ^ X2 ^ X5 ^ X6 ^ X8 ^ X12 ^ X20 ^ X21 ^ X22 , +C3 ^ X1 ^ X4 ^ X5 ^ X7 ^ X11 ^ X19 ^ X20 ^ X21 ^ X23, +C2 ^ X0 ^ X3 ^ X4 ^ X6 ^ X10 ^ X18 ^ X19 ^ X20 ^ X22 ^ X23, +C1 ^ X2 ^ X3 ^ X8 ^ X11 ^ X15 ^ X17 ^ X18 ^ X19 ^ X21 ^ X22 , +C0 ^ X1 ^ X2 ^ X7 ^ X10 ^ X14 ^ X16 ^ X17 ^ X18 ^ X20 ^ X21 , + 0 ^ X0 ^ X1 ^ X6 ^ X9 ^ X13 ^ X15 ^ X16 ^ X17 ^ X19 ^ X20 , + 0 ^ X0 ^ X12 ^ X9 ^ X14 ^ X11 ^ X16 ^ X18 ^ X19 ^ X23, + 0 ^ X5 ^ X9 ^ X13 ^ X10 ^ X17 ^ X18 ^ X22 , + 0 ^ X4 ^ X8 ^ X12 ^ X9 ^ X16 ^ X17 ^ X21 ^ X23, + 0 ^ X3 ^ X7 ^ X8 ^ X11 ^ X15 ^ X16 ^ X20 ^ X22 , + 0 ^ X2 ^ X6 ^ X7 ^ X10 ^ X14 ^ X15 ^ X19 ^ X21 ^ X23, + 0 ^ X1 ^ X5 ^ X6 ^ X9 ^ X13 ^ X14 ^ X18 ^ X20 ^ X22 ^ X23, + 0 ^ X0 ^ X4 ^ X5 ^ X8 ^ X12 ^ X13 ^ X17 ^ X19 ^ X21 ^ X22 , + 0 ^ X3 ^ X4 ^ X5 ^ X7 ^ X8 ^ X12 ^ X9 ^ X15 ^ X16 ^ X18 ^ X20 ^ X21 , + 0 ^ X2 ^ X3 ^ X4 ^ X6 ^ X7 ^ X8 ^ X14 ^ X11 ^ X15 ^ X17 ^ X19 ^ X20 ^ X23, + 0 ^ X1 ^ X2 ^ X3 ^ X5 ^ X6 ^ X7 ^ X13 ^ X10 ^ X14 ^ X16 ^ X18 ^ X19 ^ X22 , + 0 ^ X0 ^ X1 ^ X2 ^ X4 ^ X5 ^ X6 ^ X12 ^ X9 ^ X13 ^ X15 ^ X17 ^ X18 ^ X21 , + 0 ^ X0 ^ X1 ^ X3 ^ X4 ^ X12 ^ X9 ^ X14 ^ X15 ^ X16 ^ X17 ^ X20 , + 0 ^ X0 ^ X2 ^ X3 ^ X5 ^ X9 ^ X13 ^ X14 ^ X16 ^ X19 , + 0 ^ X1 ^ X2 ^ X4 ^ X5 ^ X12 ^ X9 ^ X13 ^ X11 ^ X18 ^ X23, + 0 ^ X0 ^ X1 ^ X3 ^ X4 ^ X8 ^ X12 ^ X10 ^ X11 ^ X17 ^ X22 ^ X23, + 0 ^ X0 ^ X2 ^ X3 ^ X5 ^ X7 ^ X8 ^ X10 ^ X15 ^ X16 ^ X21 ^ X22 ^ X23, + 0 ^ X1 ^ X2 ^ X4 ^ X5 ^ X6 ^ X7 ^ X8 ^ X14 ^ X11 ^ X20 ^ X21 ^ X22 , + 0 ^ X0 ^ X1 ^ X3 ^ X4 ^ X5 ^ X6 ^ X7 ^ X13 ^ X10 ^ X19 ^ X20 ^ X21 , + 0 ^ X0 ^ X2 ^ X3 ^ X4 ^ X6 ^ X8 ^ X12 ^ X11 ^ X15 ^ X18 ^ X19 ^ X20 , + 0 ^ X1 ^ X2 ^ X3 ^ X7 ^ X8 ^ X9 ^ X10 ^ X14 ^ X15 ^ X17 ^ X18 ^ X19 , + 0 ^ X0 ^ X1 ^ X2 ^ X6 ^ X7 ^ X8 ^ X9 ^ X13 ^ X14 ^ X16 ^ X17 ^ X18 , + 0 ^ X0 ^ X1 ^ X6 ^ X7 ^ X12 ^ X9 ^ X13 ^ X11 ^ X16 ^ X17 , + 0 ^ X0 ^ X6 ^ X12 ^ X9 ^ X10 ^ X16 +} +*/ +// There are 2 obvious ways to implement these functions: +// 1) XOR the State bits with the Input bits, then calculate the XOR's +// 2) Independently calculate a result for Inputs and State variables, +// then XOR the results together. +// The second idea seems to take much more logic, but to have no benefit. + +// Single numbered terms are calculated in 1 XOR time. + wire X23, X22, X21, X20, X19, X18, X17, X16; + wire X15, X14, X13, X12, X11, X10, X9, X8, X7, X6, X5, X4, X3, X2, X1, X0; + assign {X23, X22, X21, X20, X19, X18, X17, X16, X15, X14, X13, X12, + X11, X10, X9, X8, X7, X6, X5, X4, X3, X2, X1, X0} = + data_in_24[NUMBER_OF_BITS_APPLIED - 1 : 0] + ^ ( present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : `NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED] + | {NUMBER_OF_BITS_APPLIED{use_F_for_CRC}}); + +// State Bits are shifted over by the width of the input, then XOR's into the X terms. + wire C7, C6, C5, C4, C3, C2, C1, C0; + assign {C7, C6, C5, C4, C3, C2, C1, C0} = + present_crc[`NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED - 1 : 0] + | {(`NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED){use_F_for_CRC}}; + +// Calculate higher_order terms, to make parity trees. +// 2_numbered terms are calculated in 1 XOR times. +// NOTE: In a Xilinx chip, it would be fine to constrain X0 and X0_1 to +// be calculated in the same CLB, and so on for all bits. + wire X0_1 = X0 ^ X1; wire X1_2 = X1 ^ X2; + wire X2_3 = X2 ^ X3; wire X3_4 = X3 ^ X4; + wire X4_5 = X4 ^ X5; wire X5_6 = X5 ^ X6; + wire X6_7 = X6 ^ X7; wire X7_8 = X7 ^ X8; +// Use odd-ordered XOR terms because it seems these might be useful + wire X8_12 = X8 ^ X12; wire X12_9 = X12 ^ X9; + wire X9_13 = X9 ^ X13; wire X13_10 = X13 ^ X10; + wire X10_14 = X10 ^ X14; wire X14_11 = X14 ^ X11; + wire X11_15 = X11 ^ X15; +// back to simple ordering + wire X15_16 = X15 ^ X16; + wire X16_17 = X16 ^ X17; wire X17_18 = X17 ^ X18; + wire X18_19 = X18 ^ X19; wire X19_20 = X19 ^ X20; + wire X20_21 = X20 ^ X21; wire X21_22 = X21 ^ X22; + wire X22_23 = X22 ^ X23; + +// Calculate terms which might have a single use. They are calculated here +// so that the parity trees can be balanced. + wire C7_5 = C7 ^ X5; wire C6_4 = C6 ^ X4; + wire C5_3 = C5 ^ X3; wire C4_2 = C4 ^ X2; + wire C3_1 = C3 ^ X1; wire C2_0 = C2 ^ X0; + wire C1_8 = C1 ^ X8; wire C0_7 = C0 ^ X7; +// Some of these could be matched with other terms to share 1 input in a CLB. + wire X8_9 = X8 ^ X9; wire X7_11 = X7 ^ X11; + wire X6_10 = X6 ^ X10; wire X21_23 = X21 ^ X23; + wire X6_17 = X6 ^ X17; wire X0_16 = X0 ^ X16; + wire X5_10 = X5 ^ X10; wire X4_9 = X4 ^ X9; + wire X3_16 = X3 ^ X16; wire X20_22 = X20 ^ X22; + wire X15_19 = X15 ^ X19; wire X1_9 = X1 ^ X9; + wire X13_14 = X13 ^ X14; wire X18_20 = X18 ^ X20; + wire X0_8 = X0 ^ X8; wire X12_13 = X12 ^ X13; + wire X17_19 = X17 ^ X19; wire X5_18 = X5 ^ X18; + wire X4_8 = X4 ^ X8; wire X15_17 = X15 ^ X17; + wire X3_7 = X3 ^ X7; wire X2_6 = X2 ^ X6; + wire X14_17 = X14 ^ X17; wire X0_5 = X0 ^ X5; + wire X14_16 = X14 ^ X16; wire X13_15 = X13 ^ X15; + wire X0_4 = X0 ^ X4; wire X0_6 = X0 ^ X6; + wire X3_9 = X3 ^ X9; wire X2_8 = X2 ^ X8; + wire X13_11 = X13 ^ X11; wire X16_23 = X16 ^ X23; + wire X10_11 = X10 ^ X11; wire X10_15 = X10 ^ X15; + wire X8_22 = X8 ^ X22; wire X14_18 = X14 ^ X18; + wire X6_20 = X6 ^ X20; wire X7_21 = X7 ^ X21; + +// NOTE: 5 terms can be implemented in a CLB, as long as the other Flop +// doesn't use logic. This would be perfect if the data_in_24 +// was registered as an input to the module in that CLB. + assign next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + { (C7_5 ^ X8_9) ^ (X11_15 ^ X23), + (C6_4 ^ X7_8) ^ (X10_14 ^ X22_23), + ((C5_3 ^ X6_7) ^ (X9_13 ^ X21_22)) ^ X23, + ((C4_2 ^ X5_6) ^ (X8_12 ^ X20_21)) ^ X22, + ((C3_1 ^ X4_5) ^ (X7_11 ^ X19_20)) ^ X21_23, + ((C2_0 ^ X3_4) ^ (X6_10 ^ X18_19)) ^ (X20 ^ X22_23), + ((C1_8 ^ X2_3) ^ (X11_15 ^ X17_18)) ^ (X19 ^ X21_22), + ((C0_7 ^ X1_2) ^ (X10_14 ^ X16_17)) ^ (X18 ^ X20_21), + ((X0_1 ^ X6_17) ^ (X9_13 ^ X15_16)) ^ X19_20, + ((X0_16 ^ X12_9) ^ (X14_11 ^ X18_19)) ^ X23, + (X5_10 ^ X9_13) ^ (X17_18 ^ X22), + (X4_9 ^ X8_12) ^ (X16_17 ^ X21_23), + (X3_16 ^ X7_8) ^ (X11_15 ^ X20_22), + ((X2 ^ X6_7) ^ (X10_14 ^ X15_19)) ^ X21_23, + ((X1_9 ^ X5_6) ^ (X13_14 ^ X18_20)) ^ X22_23, + ((X0_8 ^ X4_5) ^ (X12_13 ^ X17_19)) ^ X21_22, + ((X3_4 ^ X5_18) ^ (X7_8 ^ X12_9)) ^ (X15_16 ^ X20_21), + ((X2_3 ^ X4_8) ^ (X6_7 ^ X14_11)) ^ ((X15_17 ^ X19_20) ^ X23), + ((X1_2 ^ X3_7) ^ (X5_6 ^ X13_10)) ^ ((X14_16 ^ X18_19) ^ X22), + ((X0_1 ^ X2_6) ^ (X4_5 ^ X12_9)) ^ ((X13_15 ^ X17_18) ^ X21), + ((X0_1 ^ X3_4) ^ (X12_9 ^ X14_17)) ^ (X15_16 ^ X20), + ((X0_5 ^ X2_3) ^ (X9_13 ^ X14)) ^ (X16 ^ X19), + ((X1_2 ^ X4_5) ^ (X12_9 ^ X13_11)) ^ (X18 ^ X23), + ((X0_1 ^ X3_4) ^ (X8_12 ^ X10_11)) ^ (X17 ^ X22_23), + ((X0_5 ^ X2_3) ^ (X7_8 ^ X10_15)) ^ (X16_23 ^ X21_22), + ((X1_2 ^ X4_5) ^ (X6_7 ^ X8_22)) ^ (X14_11 ^ X20_21), + ((X0_1 ^ X3_4) ^ (X5_6 ^ X7_21)) ^ (X13_10 ^ X19_20), + ((X0_4 ^ X2_3) ^ (X6_20 ^ X8_12)) ^ (X11_15 ^ X18_19), + ((X1_2 ^ X3_9) ^ (X7_8 ^ X10_14)) ^ (X15_19 ^ X17_18), + ((X0_1 ^ X2_8) ^ (X6_7 ^ X9_13)) ^ (X14_18 ^ X16_17), + ((X0_1 ^ X6_7) ^ (X12_9 ^ X13_11)) ^ X16_17, + (X0_6 ^ X12_9) ^ (X10 ^ X16) + }; +endmodule + +module crc_32_32_private ( + use_F_for_CRC, + present_crc, + data_in_32, + next_crc +); + parameter NUMBER_OF_BITS_APPLIED = 32; + input use_F_for_CRC; + input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; + input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_32; + output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc; + +/* State Variables depend on input bit number (bigger is earlier) : +{ + ^ 5 ^ 8 ^ 9 ^ 11 ^ 15 ^ 23 ^ 24 ^ 25 ^ 27 ^ 28 ^ 29 ^ 30 ^ 31, + ^ 4 ^ 7 ^ 8 ^ 10 ^ 14 ^ 22 ^ 23 ^ 24 ^ 26 ^ 27 ^ 28 ^ 29 ^ 30 , + ^ 3 ^ 6 ^ 7 ^ 9 ^ 13 ^ 21 ^ 22 ^ 23 ^ 25 ^ 26 ^ 27 ^ 28 ^ 29 ^ 31, + ^ 2 ^ 5 ^ 6 ^ 8 ^ 12 ^ 20 ^ 21 ^ 22 ^ 24 ^ 25 ^ 26 ^ 27 ^ 28 ^ 30 , + ^ 1 ^ 4 ^ 5 ^ 7 ^ 11 ^ 19 ^ 20 ^ 21 ^ 23 ^ 24 ^ 25 ^ 26 ^ 27 ^ 29 , +0 ^ 3 ^ 4 ^ 6 ^ 10 ^ 18 ^ 19 ^ 20 ^ 22 ^ 23 ^ 24 ^ 25 ^ 26 ^ 28 ^ 31, + ^ 2 ^ 3 ^ 8 ^ 11 ^ 15 ^ 17 ^ 18 ^ 19 ^ 21 ^ 22 ^ 28 ^ 29 ^ 31, + ^ 1 ^ 2 ^ 7 ^ 10 ^ 14 ^ 16 ^ 17 ^ 18 ^ 20 ^ 21 ^ 27 ^ 28 ^ 30 , +0 ^ 1 ^ 6 ^ 9 ^ 13 ^ 15 ^ 16 ^ 17 ^ 19 ^ 20 ^ 26 ^ 27 ^ 29 ^ 31, +0 ^ 9 ^ 11 ^ 12 ^ 14 ^ 16 ^ 18 ^ 19 ^ 23 ^ 24 ^ 26 ^ 27 ^ 29 ^ 31, + ^ 5 ^ 9 ^ 10 ^ 13 ^ 17 ^ 18 ^ 22 ^ 24 ^ 26 ^ 27 ^ 29 ^ 31, + ^ 4 ^ 8 ^ 9 ^ 12 ^ 16 ^ 17 ^ 21 ^ 23 ^ 25 ^ 26 ^ 28 ^ 30 , + ^ 3 ^ 7 ^ 8 ^ 11 ^ 15 ^ 16 ^ 20 ^ 22 ^ 24 ^ 25 ^ 27 ^ 29 , + ^ 2 ^ 6 ^ 7 ^ 10 ^ 14 ^ 15 ^ 19 ^ 21 ^ 23 ^ 24 ^ 26 ^ 28 ^ 31, + ^ 1 ^ 5 ^ 6 ^ 9 ^ 13 ^ 14 ^ 18 ^ 20 ^ 22 ^ 23 ^ 25 ^ 27 ^ 30 ^ 31, +0 ^ 4 ^ 5 ^ 8 ^ 12 ^ 13 ^ 17 ^ 19 ^ 21 ^ 22 ^ 24 ^ 26 ^ 29 ^ 30 , + ^ 3 ^ 4 ^ 5 ^ 7 ^ 8 ^ 9 ^ 12 ^ 15 ^ 16 ^ 18 ^ 20 ^ 21 ^ 24 ^ 27 ^ 30 , + ^ 2 ^ 3 ^ 4 ^ 6 ^ 7 ^ 8 ^ 11 ^ 14 ^ 15 ^ 17 ^ 19 ^ 20 ^ 23 ^ 26 ^ 29 , + ^ 1 ^ 2 ^ 3 ^ 5 ^ 6 ^ 7 ^ 10 ^ 13 ^ 14 ^ 16 ^ 18 ^ 19 ^ 22 ^ 25 ^ 28 ^ 31, +0 ^ 1 ^ 2 ^ 4 ^ 5 ^ 6 ^ 9 ^ 12 ^ 13 ^ 15 ^ 17 ^ 18 ^ 21 ^ 24 ^ 27 ^ 30 ^ 31, +0 ^ 1 ^ 3 ^ 4 ^ 9 ^ 12 ^ 14 ^ 15 ^ 16 ^ 17 ^ 20 ^ 24 ^ 25 ^ 26 ^ 27 ^ 28 ^ 31, +0 ^ 2 ^ 3 ^ 5 ^ 9 ^ 13 ^ 14 ^ 16 ^ 19 ^ 26 ^ 28 ^ 29 ^ 31, + ^ 1 ^ 2 ^ 4 ^ 5 ^ 9 ^ 11 ^ 12 ^ 13 ^ 18 ^ 23 ^ 24 ^ 29 , +0 ^ 1 ^ 3 ^ 4 ^ 8 ^ 10 ^ 11 ^ 12 ^ 17 ^ 22 ^ 23 ^ 28 ^ 31, +0 ^ 2 ^ 3 ^ 5 ^ 7 ^ 8 ^ 10 ^ 15 ^ 16 ^ 21 ^ 22 ^ 23 ^ 24 ^ 25 ^ 28 ^ 29 , + ^ 1 ^ 2 ^ 4 ^ 5 ^ 6 ^ 7 ^ 8 ^ 11 ^ 14 ^ 20 ^ 21 ^ 22 ^ 25 ^ 29 ^ 30 , +0 ^ 1 ^ 3 ^ 4 ^ 5 ^ 6 ^ 7 ^ 10 ^ 13 ^ 19 ^ 20 ^ 21 ^ 24 ^ 28 ^ 29 , +0 ^ 2 ^ 3 ^ 4 ^ 6 ^ 8 ^ 11 ^ 12 ^ 15 ^ 18 ^ 19 ^ 20 ^ 24 ^ 25 ^ 29 ^ 30 ^ 31, + ^ 1 ^ 2 ^ 3 ^ 7 ^ 8 ^ 9 ^ 10 ^ 14 ^ 15 ^ 17 ^ 18 ^ 19 ^ 25 ^ 27 ^ 31, +0 ^ 1 ^ 2 ^ 6 ^ 7 ^ 8 ^ 9 ^ 13 ^ 14 ^ 16 ^ 17 ^ 18 ^ 24 ^ 26 ^ 30 ^ 31, +0 ^ 1 ^ 6 ^ 7 ^ 9 ^ 11 ^ 12 ^ 13 ^ 16 ^ 17 ^ 24 ^ 27 ^ 28 , +0 ^ 6 ^ 9 ^ 10 ^ 12 ^ 16 ^ 24 ^ 25 ^ 26 ^ 28 ^ 29 ^ 30 ^ 31 +} +*/ +// There are 2 obvious ways to implement these functions: +// 1) XOR the State bits with the Input bits, then calculate the XOR's +// 2) Independently calculate a result for Inputs and State variables, +// then XOR the results together. +// The second idea seems to take much more logic, but to have no benefit. + + wire X31, X30, X29, X28, X27, X26, X25, X24, X23, X22, X21, X20; + wire X19, X18, X17, X16, X15, X14, X13, X12, X11, X10, X9, X8; + wire X7, X6, X5, X4, X3, X2, X1, X0; + assign {X31, X30, X29, X28, X27, X26, X25, X24, X23, X22, X21, X20, + X19, X18, X17, X16, X15, X14, X13, X12, X11, X10, X9, X8, + X7, X6, X5, X4, X3, X2, X1, X0} = + data_in_32[NUMBER_OF_BITS_APPLIED - 1 : 0] + ^ ( present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : `NUMBER_OF_BITS_IN_CRC_32 - NUMBER_OF_BITS_APPLIED] + | {NUMBER_OF_BITS_APPLIED{use_F_for_CRC}}); + +// Calculate higher_order terms, to make parity trees. +// NOTE: In a Xilinx chip, it would be fine to constrain X0 and X0_1 to +// be calculated in the same CLB, and so on for all bits. + wire X0_1 = X0 ^ X1; wire X1_2 = X1 ^ X2; + wire X2_3 = X2 ^ X3; wire X3_4 = X3 ^ X4; + wire X4_5 = X4 ^ X5; wire X5_6 = X5 ^ X6; + wire X6_7 = X6 ^ X7; wire X7_8 = X7 ^ X8; +// Use odd-ordered XOR terms because it seems these might be useful + wire X8_12 = X8 ^ X12; wire X12_9 = X12 ^ X9; + wire X9_13 = X9 ^ X13; wire X13_10 = X13 ^ X10; + wire X10_14 = X10 ^ X14; wire X14_11 = X14 ^ X11; + wire X11_15 = X11 ^ X15; +// back to simple ordering + wire X15_16 = X15 ^ X16; + wire X16_17 = X16 ^ X17; wire X17_18 = X17 ^ X18; + wire X18_19 = X18 ^ X19; wire X19_20 = X19 ^ X20; + wire X20_21 = X20 ^ X21; wire X21_22 = X21 ^ X22; + wire X22_23 = X22 ^ X23; wire X23_24 = X23 ^ X24; + wire X24_25 = X24 ^ X25; wire X25_26 = X25 ^ X26; + wire X26_27 = X26 ^ X27; wire X27_28 = X27 ^ X28; + wire X28_29 = X28 ^ X29; wire X29_30 = X29 ^ X30; + wire X30_31 = X30 ^ X31; + +// Calculate terms which might have a single use. They are calculated here +// so that the parity trees can be balanced. + wire X8_9 = X8 ^ X9; wire X29_31 = X29 ^ X31; + wire X28_30 = X28 ^ X30; wire X28_31 = X28 ^ X31; + wire X27_29 = X27 ^ X29; wire X4_6 = X4 ^ X6; + wire X7_11 = X7 ^ X11; wire X6_10 = X6 ^ X10; + wire X22_24 = X22 ^ X24; wire X21_23 = X21 ^ X23; + wire X20_22 = X20 ^ X22; wire X19_21 = X19 ^ X21; + wire X18_20 = X18 ^ X20; wire X17_19 = X17 ^ X19; + wire X24_27 = X24 ^ X27; wire X23_26 = X23 ^ X26; + wire X22_25 = X22 ^ X25; wire X21_24 = X21 ^ X24; + + wire X20_26 = X20 ^ X26; wire X25_27 = X25 ^ X27; + wire X24_26 = X24 ^ X26; wire X18_30 = X18 ^ X30; + wire X15_17 = X15 ^ X17; wire X14_16 = X14 ^ X16; + wire X13_15 = X13 ^ X15; wire X13_11 = X13 ^ X11; + wire X10_11 = X10 ^ X11; wire X10_15 = X10 ^ X15; + wire X3_5 = X3 ^ X5; wire X2_4 = X2 ^ X4; + wire X3_9 = X3 ^ X9; wire X0_5 = X0 ^ X5; + wire X17_20 = X17 ^ X20; wire X16_19 = X16 ^ X19; + wire X16_21 = X16 ^ X21; wire X15_19 = X15 ^ X19; + wire X27_31 = X27 ^ X31; wire X20_31 = X20 ^ X31; + wire X2_8 = X2 ^ X8; + wire X14_18 = X14 ^ X18; + wire X0_6 = X0 ^ X6; + wire X10_16 = X10 ^ X16; + + assign next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + {((X5 ^ X8_9) ^ (X11_15 ^ X23_24)) ^ ((X25 ^ X27_28) ^ (X29_30 ^ X31)), + ((X4 ^ X7_8) ^ (X10_14 ^ X22_23)) ^ ((X24 ^ X26_27) ^ (X28_29 ^ X30)), + ((X3 ^ X6_7) ^ (X9_13 ^ X21_22)) ^ ((X23 ^ X25_26) ^ (X27_28 ^ X29_31)), + ((X2 ^ X5_6) ^ (X8_12 ^ X20_21)) ^ ((X22 ^ X24_25) ^ (X26_27 ^ X28_30)), + ((X1 ^ X4_5) ^ (X7_11 ^ X19_20)) ^ ((X21 ^ X23_24) ^ (X25_26 ^ X27_29)), + ((X0 ^ X3_4) ^ (X6_10 ^ X18_19)) ^ ((X20_26 ^ X22_23) ^ (X24_25 ^ X28_31)), + ((X2_3 ^ X8) ^ (X11_15 ^ X17_18)) ^ ((X19 ^ X21_22) ^ (X28_29 ^ X31)), + ((X1_2 ^ X7) ^ (X10_14 ^ X16_17)) ^ ((X18 ^ X20_21) ^ (X27_28 ^ X30)), + ((X0_1 ^ X6) ^ (X9_13 ^ X15_16)) ^ ((X17 ^ X19_20) ^ (X26_27 ^ X29_31)), + ((X0 ^ X12_9) ^ (X14_11 ^ X16)) ^ ((X18_19 ^ X23_24) ^ (X26_27 ^ X29_31)), + ((X5 ^ X9_13) ^ (X10 ^ X17_18)) ^ ((X22_24 ^ X26_27) ^ (X29_31)), + ((X4 ^ X8_12) ^ (X9 ^ X16_17)) ^ ((X21_23 ^ X25_26) ^ (X28_30)), + ((X3 ^ X7_8) ^ (X11_15 ^ X16)) ^ ((X20_22 ^ X24_25) ^ (X27_29)), + ((X2 ^ X6_7) ^ (X10_14 ^ X15)) ^ ((X19_21 ^ X23_24) ^ (X26 ^ X28_31)), + ((X1 ^ X5_6) ^ (X9_13 ^ X14)) ^ ((X18_20 ^ X22_23) ^ (X25_27 ^ X30_31)), + ((X0 ^ X4_5) ^ (X8_12 ^ X13)) ^ ((X17_19 ^ X21_22) ^ (X24_26 ^ X29_30)), + ((X3_4 ^ X5) ^ (X7_8 ^ X12_9)) ^ ((X15_16 ^ X18_30) ^ (X20_21 ^ X24_27)), + ((X2_3 ^ X4_6) ^ (X7_8 ^ X14_11)) ^ ((X15_17 ^ X19_20) ^ (X23_26 ^ X29)), + ((X1_2 ^ X3_5) ^ (X6_7 ^ X13_10)) ^ ((X14_16 ^ X18_19) ^ (X22_25 ^ X28_31)), + ((X0_1 ^ X2_4) ^ (X5_6 ^ X12_9)) ^ ((X13_15 ^ X17_18) ^ (X21_24 ^ X27)) ^ X30_31, + ((X0_1 ^ X3_4) ^ (X12_9 ^ X14)) ^ ((X15_16 ^ X17_20) ^ (X24_25 ^ X26_27)) ^ X28_31, + ((X0_5 ^ X2_3) ^ (X9_13 ^ X14)) ^ ((X16_19 ^ X26) ^ (X28_29 ^ X31)), + ((X1_2 ^ X4_5) ^ (X12_9 ^ X13_11)) ^ ((X18 ^ X23_24) ^ (X29)), + ((X0_1 ^ X3_4) ^ (X8_12 ^ X10_11)) ^ ((X17 ^ X22_23) ^ (X28_31)), + ((X0_5 ^ X2_3) ^ (X7_8 ^ X10_15)) ^ ((X16_21 ^ X22_23) ^ (X24_25 ^ X28_29)), + ((X1_2 ^ X4_5) ^ (X6_7 ^ X8)) ^ ((X14_11 ^ X20_21) ^ (X22_25 ^ X29_30)), + ((X0_1 ^ X3_4) ^ (X5_6 ^ X7)) ^ ((X13_10 ^ X19_20) ^ (X21_24 ^ X28_29)), + ((X0 ^ X2_3) ^ (X4_6 ^ X8_12)) ^ ((X11_15 ^ X18_19) ^ (X20_31 ^ X24_25)) ^ X29_30, + ((X1_2 ^ X3_9) ^ (X7_8 ^ X10_14)) ^ ((X15_19 ^ X17_18) ^ (X25 ^ X27_31)), + ((X0_1 ^ X2_8) ^ (X6_7 ^ X9_13)) ^ ((X14_18 ^ X16_17) ^ (X24_26 ^ X30_31)), + ((X0_1 ^ X6_7) ^ (X12_9 ^ X13_11)) ^ ((X16_17 ^ X24) ^ (X27_28)), + ((X0_6 ^ X12_9) ^ (X10_16 ^ X24_25)) ^ ((X26 ^ X28_29) ^ (X30_31)) + }; +endmodule + +// Calculate the Data dependent part of the CRC-32 function with 64 inputs here in +// a separate module so that the user can pipeline this one clock earlier. This +// MIGHT mean that the whole thing can run faster. If not, use as a function! +module crc_32_64_data_private ( + data_in_64, + data_part_1_out, data_part_2_out +); + parameter NUMBER_OF_BITS_APPLIED = 64; + input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_64; + output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_1_out; + output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_2_out; + +/* +// After looking at this, I am getting the feeling that the layout of the circuit would +// be the best if more complicated terms were collected from adjacent simple terms. +// For instance, the first line might use a term X5^X8, then another X9^X11 +// +// Data Input dependencies +{ +X5 ^X8^X9 ^X11 ^X15 ^X23^X24^X25 ^X27^X28^X29^X30^X31 ^X33 ^X36 ^X43^X44 ^X46^X47 ^X49 ^X52^X53^X54 ^X57 ^X59^X60 ^X62, +X4 ^X7^X8 ^X10 ^X14 ^X22^X23^X24 ^X26^X27^X28^X29^X30 ^X32 ^X35 ^X42^X43 ^X45^X46 ^X48 ^X51^X52^X53 ^X56 ^X58^X59 ^X61 ^X63, +X3 ^X6^X7 ^X9 ^X13 ^X21^X22^X23 ^X25^X26^X27^X28^X29 ^X31 ^X34 ^X41^X42 ^X44^X45 ^X47 ^X50^X51^X52 ^X55 ^X57^X58 ^X60 ^X62^X63, +X2 ^X5^X6 ^X8 ^X12 ^X20^X21^X22 ^X24^X25^X26^X27^X28 ^X30 ^X33 ^X40^X41 ^X43^X44 ^X46 ^X49^X50^X51 ^X54 ^X56^X57 ^X59 ^X61^X62^X63, +X1 ^X4^X5 ^X7 ^X11 ^X19^X20^X21 ^X23^X24^X25^X26^X27 ^X29 ^X32 ^X39^X40 ^X42^X43 ^X45 ^X48^X49^X50 ^X53 ^X55^X56 ^X58 ^X60^X61^X62^X63, +X0 ^X3^X4 ^X6 ^X10 ^X18^X19^X20 ^X22^X23^X24^X25^X26 ^X28 ^X31 ^X38^X39 ^X41^X42 ^X44 ^X47^X48^X49 ^X52 ^X54^X55 ^X57 ^X59^X60^X61^X62, +X2^X3 ^X8 ^X11 ^X15 ^X17^X18^X19 ^X21^X22 ^X28^X29 ^X31 ^X33 ^X36^X37^X38 ^X40^X41 ^X44 ^X48^X49 ^X51^X52 ^X56^X57^X58 ^X61^X62, +X1^X2 ^X7 ^X10 ^X14 ^X16^X17^X18 ^X20^X21 ^X27^X28 ^X30 ^X32 ^X35^X36^X37 ^X39^X40 ^X43 ^X47^X48 ^X50^X51 ^X55^X56^X57 ^X60^X61 ^X63, +X0^X1 ^X6 ^X9 ^X13 ^X15^X16^X17 ^X19^X20 ^X26^X27 ^X29 ^X31 ^X34^X35^X36 ^X38^X39 ^X42 ^X46^X47 ^X49^X50 ^X54^X55^X56 ^X59^X60 ^X62, +X0 ^X9 ^X11^X12 ^X14 ^X16 ^X18^X19 ^X23^X24 ^X26^X27 ^X29 ^X31 ^X34^X35^X36^X37^X38 ^X41 ^X43^X44^X45 ^X47^X48 ^X52 ^X55 ^X57^X58 ^X60^X61^X62, +X5 ^X9^X10 ^X13 ^X17^X18 ^X22 ^X24 ^X26^X27 ^X29 ^X31 ^X34^X35 ^X37 ^X40 ^X42 ^X49 ^X51^X52^X53 ^X56 ^X61^X62, +X4 ^X8^X9 ^X12 ^X16^X17 ^X21 ^X23 ^X25^X26 ^X28 ^X30 ^X33^X34 ^X36 ^X39 ^X41 ^X48 ^X50^X51^X52 ^X55 ^X60^X61, +X3 ^X7^X8 ^X11 ^X15^X16 ^X20 ^X22 ^X24^X25 ^X27 ^X29 ^X32^X33 ^X35 ^X38 ^X40 ^X47 ^X49^X50^X51 ^X54 ^X59^X60, +X2 ^X6^X7 ^X10 ^X14^X15 ^X19 ^X21 ^X23^X24 ^X26 ^X28 ^X31^X32 ^X34 ^X37 ^X39 ^X46 ^X48^X49^X50 ^X53 ^X58^X59, +X1 ^X5^X6 ^X9 ^X13^X14 ^X18 ^X20 ^X22^X23 ^X25 ^X27 ^X30^X31 ^X33 ^X36 ^X38 ^X45 ^X47^X48^X49 ^X52 ^X57^X58, +X0 ^X4^X5 ^X8 ^X12^X13 ^X17 ^X19 ^X21^X22 ^X24 ^X26 ^X29^X30 ^X32 ^X35 ^X37 ^X44 ^X46^X47^X48 ^X51 ^X56^X57, +X3^X4^X5 ^X7^X8^X9 ^X12 ^X15^X16 ^X18 ^X20^X21 ^X24 ^X27 ^X30 ^X33^X34 ^X44^X45 ^X49^X50 ^X52^X53^X54^X55^X56^X57 ^X59^X60 ^X62, +X2^X3^X4 ^X6^X7^X8 ^X11 ^X14^X15 ^X17 ^X19^X20 ^X23 ^X26 ^X29 ^X32^X33 ^X43^X44 ^X48^X49 ^X51^X52^X53^X54^X55^X56 ^X58^X59 ^X61 ^X63, +X1^X2^X3 ^X5^X6^X7 ^X10 ^X13^X14 ^X16 ^X18^X19 ^X22 ^X25 ^X28 ^X31^X32 ^X42^X43 ^X47^X48 ^X50^X51^X52^X53^X54^X55 ^X57^X58 ^X60 ^X62, +X0^X1^X2 ^X4^X5^X6 ^X9 ^X12^X13 ^X15 ^X17^X18 ^X21 ^X24 ^X27 ^X30^X31 ^X41^X42 ^X46^X47 ^X49^X50^X51^X52^X53^X54 ^X56^X57 ^X59 ^X61 ^X63, +X0^X1 ^X3^X4 ^X9 ^X12 ^X14^X15^X16^X17 ^X20 ^X24^X25^X26^X27^X28 ^X31 ^X33 ^X36 ^X40^X41 ^X43^X44^X45 ^X47^X48 ^X50^X51 ^X54^X55^X56^X57^X58^X59, +X0 ^X2^X3 ^X5 ^X9 ^X13^X14 ^X16 ^X19 ^X26 ^X28^X29 ^X31^X32^X33 ^X35^X36 ^X39^X40 ^X42 ^X50 ^X52 ^X55^X56 ^X58^X59^X60 ^X62^X63, +X1^X2 ^X4^X5 ^X9 ^X11^X12^X13 ^X18 ^X23^X24 ^X29 ^X32^X33^X34^X35^X36 ^X38^X39 ^X41 ^X43^X44 ^X46^X47 ^X51^X52^X53 ^X55 ^X58 ^X60^X61, +X0^X1 ^X3^X4 ^X8 ^X10^X11^X12 ^X17 ^X22^X23 ^X28 ^X31^X32^X33^X34^X35 ^X37^X38 ^X40 ^X42^X43 ^X45^X46 ^X50^X51^X52 ^X54 ^X57 ^X59^X60 ^X63, +X0 ^X2^X3 ^X5 ^X7^X8 ^X10 ^X15^X16 ^X21^X22^X23^X24^X25 ^X28^X29 ^X32 ^X34 ^X37 ^X39 ^X41^X42^X43 ^X45^X46^X47 ^X50^X51^X52 ^X54 ^X56^X57^X58 ^X60, +X1^X2 ^X4^X5^X6^X7^X8 ^X11 ^X14 ^X20^X21^X22 ^X25 ^X29^X30 ^X38 ^X40^X41^X42^X43 ^X45 ^X47 ^X50^X51^X52 ^X54^X55^X56 ^X60 ^X62, +X0^X1 ^X3^X4^X5^X6^X7 ^X10 ^X13 ^X19^X20^X21 ^X24 ^X28^X29 ^X37 ^X39^X40^X41^X42 ^X44 ^X46 ^X49^X50^X51 ^X53^X54^X55 ^X59 ^X61 ^X63, +X0 ^X2^X3^X4 ^X6 ^X8 ^X11^X12 ^X15 ^X18^X19^X20 ^X24^X25 ^X29^X30^X31 ^X33 ^X38^X39^X40^X41 ^X44^X45^X46^X47^X48 ^X50 ^X57^X58^X59 ^X63, +X1^X2^X3 ^X7^X8^X9^X10 ^X14^X15 ^X17^X18^X19 ^X25 ^X27 ^X31^X32^X33 ^X36^X37^X38^X39^X40 ^X45 ^X52^X53^X54 ^X56 ^X58^X59^X60, +X0^X1^X2 ^X6^X7^X8^X9 ^X13^X14 ^X16^X17^X18 ^X24 ^X26 ^X30^X31^X32 ^X35^X36^X37^X38^X39 ^X44 ^X51^X52^X53 ^X55 ^X57^X58^X59, +X0^X1 ^X6^X7 ^X9 ^X11^X12^X13 ^X16^X17 ^X24 ^X27^X28 ^X33^X34^X35 ^X37^X38 ^X44 ^X46^X47 ^X49^X50^X51 ^X53 ^X56 ^X58^X59^X60 ^X62^X63, +X0 ^X6 ^X9^X10 ^X12 ^X16 ^X24^X25^X26 ^X28^X29^X30^X31^X32 ^X34 ^X37 ^X44^X45 ^X47^X48 ^X50 ^X53^X54^X55 ^X58 ^X60^X61 ^X63 +} +*/ +// Data terms depend ONLY on data in. + wire D63, D62, D61, D60, D59, D58, D57, D56, D55, D54, D53, D52; + wire D51, D50, D49, D48, D47, D46, D45, D44, D43, D42, D41, D40; + wire D39, D38, D37, D36, D35, D34, D33, D32; + wire D31, D30, D29, D28, D27, D26, D25, D24, D23, D22, D21, D20; + wire D19, D18, D17, D16, D15, D14, D13, D12, D11, D10, D9, D8; + wire D7, D6, D5, D4, D3, D2, D1, D0; + assign {D63, D62, D61, D60, D59, D58, D57, D56, D55, D54, D53, D52, + D51, D50, D49, D48, D47, D46, D45, D44, D43, D42, D41, D40, + D39, D38, D37, D36, D35, D34, D33, D32, + D31, D30, D29, D28, D27, D26, D25, D24, D23, D22, D21, D20, + D19, D18, D17, D16, D15, D14, D13, D12, D11, D10, D9, D8, + D7, D6, D5, D4, D3, D2, D1, D0} = + data_in_64[63 : 0]; + +// Calculate higher_order terms, to make parity trees. +// NOTE: In a Xilinx chip, it would be fine to constrain D0 and D0_1 to +// be calculated in the same CLB, and so on for all bits. + wire D0_1 = D0 ^ D1; wire D1_2 = D1 ^ D2; + wire D2_3 = D2 ^ D3; wire D3_4 = D3 ^ D4; + wire D4_5 = D4 ^ D5; wire D5_6 = D5 ^ D6; + wire D6_7 = D6 ^ D7; wire D7_8 = D7 ^ D8; + wire D8_9 = D8 ^ D9; wire D9_10 = D9 ^ D10; + wire D10_11 = D10 ^ D11; wire D11_12 = D11 ^ D12; + wire D12_13 = D12 ^ D13; wire D13_14 = D13 ^ D14; + wire D14_15 = D14 ^ D15; wire D15_16 = D15 ^ D16; + wire D16_17 = D16 ^ D17; wire D17_18 = D17 ^ D18; + wire D18_19 = D18 ^ D19; wire D19_20 = D19 ^ D20; + wire D20_21 = D20 ^ D21; wire D21_22 = D21 ^ D22; + wire D22_23 = D22 ^ D23; wire D23_24 = D23 ^ D24; + wire D24_25 = D24 ^ D25; wire D25_26 = D25 ^ D26; + wire D26_27 = D26 ^ D27; wire D27_28 = D27 ^ D28; + wire D28_29 = D28 ^ D29; wire D29_30 = D29 ^ D30; + wire D30_31 = D30 ^ D31; wire D31_32 = D31 ^ D32; + wire D32_33 = D32 ^ D33; wire D33_34 = D33 ^ D34; + wire D34_35 = D34 ^ D35; wire D35_36 = D35 ^ D36; + wire D36_37 = D36 ^ D37; wire D37_38 = D37 ^ D38; + wire D38_39 = D38 ^ D39; wire D39_40 = D39 ^ D40; + wire D40_41 = D40 ^ D41; wire D41_42 = D41 ^ D42; + wire D42_43 = D42 ^ D43; wire D43_44 = D43 ^ D44; + wire D44_45 = D44 ^ D45; wire D45_46 = D45 ^ D46; + wire D46_47 = D46 ^ D47; wire D47_48 = D47 ^ D48; + wire D48_49 = D48 ^ D49; wire D49_50 = D49 ^ D50; + wire D50_51 = D50 ^ D51; wire D51_52 = D51 ^ D52; + wire D52_53 = D52 ^ D53; wire D53_54 = D53 ^ D54; + wire D54_55 = D54 ^ D55; wire D55_56 = D55 ^ D56; + wire D56_57 = D56 ^ D57; wire D57_58 = D57 ^ D58; + wire D58_59 = D58 ^ D59; wire D59_60 = D59 ^ D60; + wire D60_61 = D60 ^ D61; wire D61_62 = D61 ^ D62; + wire D62_63 = D62 ^ D63; + +// Calculate terms which might have a single use. They are calculated here +// so that the parity trees can be balanced. + + wire D5_11 = D5 ^ D11; wire D15_23 = D15 ^ D23; + wire D4_10 = D4 ^ D10; wire D14_22 = D14 ^ D22; + wire D3_9 = D3 ^ D9; wire D13_21 = D13 ^ D21; + wire D2_8 = D2 ^ D8; wire D12_20 = D12 ^ D20; + wire D1_7 = D1 ^ D7; wire D11_19 = D11 ^ D19; + wire D0_6 = D0 ^ D6; wire D10_18 = D10 ^ D18; + wire D8_11 = D8 ^ D11; wire D15_17 = D15 ^ D17; + wire D7_10 = D7 ^ D10; wire D14_16 = D14 ^ D16; + wire D6_9 = D6 ^ D9; wire D13_15 = D13 ^ D15; + wire D0_9 = D0 ^ D9; + wire D5_13 = D5 ^ D13; wire D22_24 = D22 ^ D24; + wire D4_12 = D4 ^ D12; wire D21_23 = D21 ^ D23; + wire D3_11 = D3 ^ D11; wire D20_22 = D20 ^ D22; + wire D2_10 = D2 ^ D10; wire D19_21 = D19 ^ D21; + wire D1_9 = D1 ^ D9; wire D18_20 = D18 ^ D20; + wire D0_8 = D0 ^ D8; wire D17_19 = D17 ^ D19; + wire D5_7 = D5 ^ D7; wire D12_18 = D12 ^ D18; + wire D4_6 = D4 ^ D6; wire D11_17 = D11 ^ D17; + wire D3_5 = D3 ^ D5; wire D10_16 = D10 ^ D16; + wire D2_4 = D2 ^ D4; wire D9_15 = D9 ^ D15; + wire D29_31 = D29 ^ D31; wire D37_40 = D37 ^ D40; + wire D28_30 = D28 ^ D30; wire D36_39 = D36 ^ D39; + wire D27_29 = D27 ^ D29; wire D35_38 = D35 ^ D38; + wire D26_28 = D26 ^ D28; wire D34_37 = D34 ^ D37; + wire D25_27 = D25 ^ D27; wire D33_36 = D33 ^ D36; + wire D24_26 = D24 ^ D26; wire D32_35 = D32 ^ D35; + wire D31_33 = D31 ^ D33; wire D30_32 = D30 ^ D32; + wire D36_49 = D36 ^ D49; wire D54_57 = D54 ^ D57; + wire D35_48 = D35 ^ D48; wire D53_56 = D53 ^ D56; + wire D34_47 = D34 ^ D47; wire D52_55 = D52 ^ D55; + wire D33_46 = D33 ^ D46; wire D51_54 = D51 ^ D54; + wire D32_45 = D32 ^ D45; wire D50_53 = D50 ^ D53; + wire D31_44 = D31 ^ D44; wire D49_52 = D49 ^ D52; + wire D38_44 = D38 ^ D44; wire D37_43 = D37 ^ D43; + wire D36_42 = D36 ^ D42; wire D38_41 = D38 ^ D41; + wire D59_61 = D59 ^ D61; wire D61_63 = D61 ^ D63; + wire D58_60 = D58 ^ D60; wire D57_59 = D57 ^ D59; + wire D57_63 = D57 ^ D63; wire D56_62 = D56 ^ D62; + wire D45_52 = D45 ^ D52; wire D55_60 = D55 ^ D60; + wire D42_49 = D42 ^ D49; wire D41_48 = D41 ^ D48; + wire D40_47 = D40 ^ D47; wire D39_46 = D39 ^ D46; + wire D38_45 = D38 ^ D45; + wire D37_44 = D37 ^ D44; wire D48_51 = D48 ^ D51; + wire D24_27 = D24 ^ D27; wire D30_52 = D30 ^ D52; + wire D23_26 = D23 ^ D26; wire D29_51 = D29 ^ D51; + wire D22_25 = D22 ^ D25; wire D28_50 = D28 ^ D50; + wire D21_24 = D21 ^ D24; wire D27_49 = D27 ^ D49; + wire D57_62 = D57 ^ D62; wire D56_61 = D56 ^ D61; + wire D54_59 = D54 ^ D59; + wire D9_12 = D9 ^ D12; wire D20_24 = D20 ^ D24; + wire D36_43 = D36 ^ D43; + wire D0_5 = D0 ^ D5; wire D9_16 = D9 ^ D16; + wire D19_26 = D19 ^ D26; wire D33_42 = D33 ^ D42; + wire D50_52 = D50 ^ D52; + wire D9_11 = D9 ^ D11; wire D18_29 = D18 ^ D29; + wire D36_41 = D36 ^ D41; + wire D53_55 = D53 ^ D55; + wire D8_10 = D8 ^ D10; wire D17_28 = D17 ^ D28; + wire D35_40 = D35 ^ D40; wire D52_54 = D52 ^ D54; + wire D10_21 = D10 ^ D21; wire D32_34 = D32 ^ D34; + wire D37_39 = D37 ^ D39; wire D43_45 = D43 ^ D45; + wire D14_20 = D14 ^ D20; wire D25_38 = D25 ^ D38; + wire D45_47 = D45 ^ D47; wire D60_62 = D60 ^ D62; + wire D13_19 = D13 ^ D19; + wire D24_37 = D24 ^ D37; wire D44_46 = D44 ^ D46; + wire D51_53 = D51 ^ D53; + wire D0_2 = D0 ^ D2; wire D6_8 = D6 ^ D8; + wire D15_18 = D15 ^ D18; + wire D48_50 = D48 ^ D50; wire D59_63 = D59 ^ D63; + wire D3_17 = D3 ^ D17; wire D56_58 = D56 ^ D58; + wire D2_16 = D2 ^ D16; wire D44_51 = D44 ^ D51; + wire D55_57 = D55 ^ D57; + wire D24_33 = D24 ^ D33; wire D44_49 = D44 ^ D49; + wire D12_16 = D12 ^ D16; wire D58_63 = D58 ^ D63; + + +// Need to distribute this logic so that it can be fast. The user can +// use 1 or 2 outputs, just so long as their XOR is the final value. + + assign data_part_1_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = // first half of each formula + { (((D5_11 ^ D8_9) ^ (D15_23 ^D24_25)) ^ ((D27_28 ^D29_30) ^ (D31_33 ^D36_49))), + (((D4_10 ^ D7_8) ^ (D14_22 ^D23_24)) ^ ((D26_27 ^D28_29) ^ (D30_32 ^D35_48))), + (((D3_9 ^ D6_7) ^ (D13_21 ^D22_23)) ^ ((D25_26 ^D27_28) ^ (D29_31 ^D34_47))), + (((D2_8 ^ D5_6) ^ (D12_20 ^D21_22)) ^ ((D24_25 ^D26_27) ^ (D28_30 ^D33_46))), + (((D1_7 ^ D4_5) ^ (D11_19 ^D20_21)) ^ ((D23_24 ^D25_26) ^ (D27_29 ^D32_45))), + (((D0_6 ^ D3_4) ^ (D10_18 ^D19_20)) ^ ((D22_23 ^D24_25) ^ (D26_28 ^D31_44))), + (((D2_3 ^ D8_11) ^ (D15_17 ^D18_19)) ^ ((D21_22 ^D28_29) ^ (D31_33 ^D36_37))), + (((D1_2 ^ D7_10) ^ (D14_16 ^D17_18)) ^ ((D20_21 ^D27_28) ^ (D30_32 ^D35_36))), + (((D0_1 ^ D6_9) ^ (D13_15 ^D16_17)) ^ ((D19_20 ^D26_27) ^ (D29_31 ^D34_35))), + (((D0_9 ^ D11_12) ^ (D14_16 ^D18_19)) ^ ((D23_24 ^D26_27) ^ (D29_31 ^D34_35))), + (((D5_13 ^ D9_10) ^ (D17_18 ^D22_24)) ^ ((D26_27 ^D29_31) ^ (D34_35 ^D37_40))), + (((D4_12 ^ D8_9) ^ (D16_17 ^D21_23)) ^ ((D25_26 ^D28_30) ^ (D33_34 ^D36_39))), + (((D3_11 ^ D7_8) ^ (D15_16 ^D20_22)) ^ ((D24_25 ^D27_29) ^ (D32_33 ^D35_38))), + (((D2_10 ^ D6_7) ^ (D14_15 ^D19_21)) ^ ((D23_24 ^D26_28) ^ (D31_32 ^D34_37))), + (((D1_9 ^ D5_6) ^ (D13_14 ^D18_20)) ^ ((D22_23 ^D25_27) ^ (D30_31 ^D33_36))), + (((D0_8 ^ D4_5) ^ (D12_13 ^D17_19)) ^ ((D21_22 ^D24_26) ^ (D29_30 ^D32_35))), + (((D3_4 ^ D5_7) ^ (D8_9 ^D12_18)) ^ ((D15_16 ^D20_21) ^ (D24_27 ^D30_52))), + (((D2_3 ^ D4_6) ^ (D7_8 ^D11_17)) ^ ((D14_15 ^D19_20) ^ (D23_26 ^D29_51))), + (((D1_2 ^ D3_5) ^ (D6_7 ^D10_16)) ^ ((D13_14 ^D18_19) ^ (D22_25 ^D28_50))), + (((D0_1 ^ D2_4) ^ (D5_6 ^D9_15)) ^ ((D12_13 ^D17_18) ^ (D21_24 ^D27_49))), + (((D0_1 ^ D3_4) ^ (D9_12 ^D14_15)) ^ ((D16_17 ^D20_24) ^ (D25_26 ^D27_28))), + (((D0_5 ^ D2_3) ^ (D9_16 ^D13_14)) ^ ((D19_26 ^D28_29) ^ (D31_32 ^D33_42))), + (((D1_2 ^ D4_5) ^ (D9_11 ^D12_13)) ^ ((D18_29 ^D23_24) ^ (D32_33 ^D34_35))), + (((D0_1 ^ D3_4) ^ (D8_10 ^D11_12)) ^ ((D17_28 ^D22_23) ^ (D31_32 ^D33_34))), + (((D0_5 ^ D2_3) ^ (D7_8 ^D10_21)) ^ ((D15_16 ^D22_23) ^ (D24_25 ^D28_29))), + (((D1_2 ^ D4_5) ^ (D6_7 ^D8_11)) ^ ((D14_20 ^D21_22) ^ (D25_38 ^D29_30))), + (((D0_1 ^ D3_4) ^ (D5_6 ^D7_10)) ^ ((D13_19 ^D20_21) ^ (D24_37 ^D28_29))), + (((D0_2 ^ D3_4) ^ (D6_8 ^D11_12)) ^ ((D15_18 ^D19_20) ^ (D24_25 ^D29_30))), + (((D1_2 ^ D3_17) ^ (D7_8 ^D9_10)) ^ ((D14_15 ^D18_19) ^ (D25_27 ^D31_32))), + (((D0_1 ^ D2_16) ^ (D6_7 ^D8_9)) ^ ((D13_14 ^D17_18) ^ (D24_26 ^D30_31))), + (((D0_1 ^ D6_7) ^ (D9_11 ^D12_13)) ^ ((D16_17 ^D24_33) ^ (D27_28 ^D34_35))), + (((D0_6 ^ D9_10) ^ (D12_16 ^D24_25)) ^ ((D26_28 ^D29_30) ^ (D31_32 ^D34_37))) + }; + + assign data_part_2_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + { (((D43_44 ^ D46_47) ^ (D52_53 ^ D54_57)) ^ ((D59_60 ^ D62))), + (((D42_43 ^ D45_46) ^ (D51_52 ^ D53_56)) ^ ((D58_59 ^ D61_63))), + (((D41_42 ^ D44_45) ^ (D50_51 ^ D52_55)) ^ ((D57_58 ^ D60) ^ D62_63)), + (((D40_41 ^ D43_44) ^ (D49_50 ^ D51_54)) ^ ((D56_57 ^ D59_61) ^ D62_63)), + (((D39_40 ^ D42_43) ^ (D48_49 ^ D50_53)) ^ ((D55_56 ^ D58_60) ^ (D61_62 ^ D63))), + (((D38_39 ^ D41_42) ^ (D47_48 ^ D49_52)) ^ ((D54_55 ^ D57_59) ^ (D60_61 ^ D62))), + (((D38_44 ^ D40_41) ^ (D48_49 ^ D51_52)) ^ ((D56_57 ^ D58) ^ D61_62)), + (((D37_43 ^ D39_40) ^ (D47_48 ^ D50_51)) ^ ((D55_56 ^ D57_63) ^ D60_61)), + (((D36_42 ^ D38_39) ^ (D46_47 ^ D49_50)) ^ ((D54_55 ^ D56_62) ^ D59_60)), + (((D36_37 ^ D38_41) ^ (D43_44 ^ D45_52)) ^ ((D47_48 ^ D55_60) ^ (D57_58 ^ D61_62))), + (((D42_49 ^ D51_52) ^ (D53_56 ^ D61_62))), + (((D41_48 ^ D50_51) ^ (D52_55 ^ D60_61))), + (((D40_47 ^ D49_50) ^ (D51_54 ^ D59_60))), + (((D39_46 ^ D48_49) ^ (D50_53 ^ D58_59))), + (((D38_45 ^ D47_48) ^ (D49_52 ^ D57_58))), + (((D37_44 ^ D46_47) ^ (D48_51 ^ D56_57))), + (((D33_34 ^ D44_45) ^ (D49_50 ^ D53_54)) ^ ((D55_56 ^ D57_62) ^ D59_60)), + (((D32_33 ^ D43_44) ^ (D48_49 ^ D52_53)) ^ ((D54_55 ^ D56_61) ^ (D58_59 ^ D63))), + (((D31_32 ^ D42_43) ^ (D47_48 ^ D51_52)) ^ ((D53_54 ^ D55_60) ^ (D57_58 ^ D62))), + (((D30_31 ^ D41_42) ^ (D46_47 ^ D50_51)) ^ ((D52_53 ^ D54_59) ^ (D56_57 ^ D61_63))), + (((D31_33 ^ D36_43) ^ (D40_41 ^ D44_45)) ^ ((D47_48 ^ D50_51) ^ (D54_55 ^ D56_57))) ^ D58_59, + (((D35_36 ^ D39_40) ^ (D50_52 ^ D55_56)) ^ ((D58_59 ^ D60) ^ D62_63)), + (((D36_41 ^ D38_39) ^ (D43_44 ^ D46_47)) ^ ((D51_52 ^ D53_55) ^ (D58 ^ D60_61))), + (((D35_40 ^ D37_38) ^ (D42_43 ^ D45_46)) ^ ((D50_51 ^ D52_54) ^ (D57_63 ^ D59_60))), + (((D32_34 ^ D37_39) ^ (D41_42 ^ D43_45)) ^ ((D46_47 ^ D50_51) ^ (D52_54 ^ D56_57))) ^ D58_60, + (((D40_41 ^ D42_43) ^ (D45_47 ^ D50_51)) ^ ((D52_54 ^ D55_56) ^ D60_62)), + (((D39_40 ^ D41_42) ^ (D44_46 ^ D49_50)) ^ ((D51_53 ^ D54_55) ^ (D59 ^ D61_63))), + (((D31_33 ^ D38_39) ^ (D40_41 ^ D44_45)) ^ ((D46_47 ^ D48_50) ^ (D57_58 ^ D59_63))), + (((D33_36 ^ D37_38) ^ (D39_40 ^ D45_52)) ^ ((D53_54 ^ D56_58) ^ D59_60)), + (((D32_35 ^ D36_37) ^ (D38_39 ^ D44_51)) ^ ((D52_53 ^ D55_57) ^ D58_59)), + (((D37_38 ^ D44_49) ^ (D46_47 ^ D50_51)) ^ ((D53_56 ^ D58_59) ^ (D60 ^ D62_63))), + (((D44_45 ^ D47_48) ^ (D50_53 ^ D54_55)) ^ ((D58_63 ^ D60_61))) + }; +endmodule + +module crc_32_64_crc_private ( + use_F_for_CRC, + present_crc, + crc_part_1_out, crc_part_2_out +); + input use_F_for_CRC; + input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; + output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] crc_part_1_out; + output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] crc_part_2_out; + +/* +// CRC input dependencies +{ +C1 ^C4 ^C11^C12 ^C14^C15 ^C17 ^C20^C21^C22 ^C25 ^C27^C28 ^C30, +C0 ^C3 ^C10^C11 ^C13^C14 ^C16 ^C19^C20^C21 ^C24 ^C26^C27 ^C29 ^C31, +C2 ^C9^C10 ^C12^C13 ^C15 ^C18^C19^C20 ^C23 ^C25^C26 ^C28 ^C30^C31, +C1 ^C8^C9 ^C11^C12 ^C14 ^C17^C18^C19 ^C22 ^C24^C25 ^C27 ^C29^C30^C31, +C0 ^C7^C8 ^C10^C11 ^C13 ^C16^C17^C18 ^C21 ^C23^C24 ^C26 ^C28^C29^C30^C31, +C6^C7 ^C9^C10 ^C12 ^C15^C16^C17 ^C20 ^C22^C23 ^C25 ^C27^C28^C29^C30, +C1 ^C4^C5^C6 ^C8^C9 ^C12 ^C16^C17 ^C19^C20 ^C24^C25^C26 ^C29^C30, +C0 ^C3^C4^C5 ^C7^C8 ^C11 ^C15^C16 ^C18^C19 ^C23^C24^C25 ^C28^C29 ^C31, +C2^C3^C4 ^C6^C7 ^C10 ^C14^C15 ^C17^C18 ^C22^C23^C24 ^C27^C28 ^C30, +C2^C3^C4^C5^C6 ^C9 ^C11^C12^C13 ^C15^C16 ^C20 ^C23 ^C25^C26 ^C28^C29^C30, +C2^C3 ^C5 ^C8 ^C10 ^C17 ^C19^C20^C21 ^C24 ^C29^C30, +C1^C2 ^C4 ^C7 ^C9 ^C16 ^C18^C19^C20 ^C23 ^C28^C29, +C0^C1 ^C3 ^C6 ^C8 ^C15 ^C17^C18^C19 ^C22 ^C27^C28, +C0 ^C2 ^C5 ^C7 ^C14 ^C16^C17^C18 ^C21 ^C26^C27, +C1 ^C4 ^C6 ^C13 ^C15^C16^C17 ^C20 ^C25^C26, +C0 ^C3 ^C5 ^C12 ^C14^C15^C16 ^C19 ^C24^C25, +C1^C2 ^C12^C13 ^C17^C18 ^C20^C21^C22^C23^C24^C25 ^C27^C28 ^C30, +C0^C1 ^C11^C12 ^C16^C17 ^C19^C20^C21^C22^C23^C24 ^C26^C27 ^C29 ^C31, +C0 ^C10^C11 ^C15^C16 ^C18^C19^C20^C21^C22^C23 ^C25^C26 ^C28 ^C30, +C9^C10 ^C14^C15 ^C17^C18^C19^C20^C21^C22 ^C24^C25 ^C27 ^C29 ^C31, +C1 ^C4 ^C8^C9 ^C11^C12^C13 ^C15^C16 ^C18^C19 ^C22^C23^C24^C25^C26^C27, +C0^C1 ^C3^C4 ^C7^C8 ^C10 ^C18 ^C20 ^C23^C24 ^C26^C27^C28 ^C30^C31, +C0^C1^C2^C3^C4 ^C6^C7 ^C9 ^C11^C12 ^C14^C15 ^C19^C20^C21 ^C23 ^C26 ^C28^C29, +C0^C1^C2^C3 ^C5^C6 ^C8 ^C10^C11 ^C13^C14 ^C18^C19^C20 ^C22 ^C25 ^C27^C28 ^C31, +C0 ^C2 ^C5 ^C7 ^C9^C10^C11 ^C13^C14^C15 ^C18^C19^C20 ^C22 ^C24^C25^C26 ^C28, +C6 ^C8^C9^C10^C11 ^C13 ^C15 ^C18^C19^C20 ^C22^C23^C24 ^C28 ^C30, +C5 ^C7^C8^C9^C10 ^C12 ^C14 ^C17^C18^C19 ^C21^C22^C23 ^C27 ^C29 ^C31, +C1 ^C6^C7^C8^C9 ^C12^C13^C14^C15^C16 ^C18 ^C25^C26^C27 ^C31, +C0^C1 ^C4^C5^C6^C7^C8 ^C13 ^C20^C21^C22 ^C24 ^C26^C27^C28, +C0 ^C3^C4^C5^C6^C7 ^C12 ^C19^C20^C21 ^C23 ^C25^C26^C27, +C1^C2^C3 ^C5^C6 ^C12 ^C14^C15 ^C17^C18^C19 ^C21 ^C24 ^C26^C27^C28 ^C30^C31, +C0 ^C2 ^C5 ^C12^C13 ^C15^C16 ^C18 ^C21^C22^C23 ^C26 ^C28^C29 ^C31 +} + */ +// CRC terms depend ONLY on CRC data from the previous clock + wire C31, C30, C29, C28, C27, C26, C25, C24, C23, C22, C21, C20, C19, C18, C17; + wire C16, C15, C14, C13, C12, C11, C10, C9, C8, C7, C6, C5, C4, C3, C2, C1, C0; + assign {C31, C30, C29, C28, C27, C26, C25, C24, + C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, + C11, C10, C9, C8, C7, C6, C5, C4, C3, C2, C1, C0} = + present_crc[`NUMBER_OF_BITS_IN_CRC_32- 1 : 0] + | {`NUMBER_OF_BITS_IN_CRC_32{use_F_for_CRC}}; + + wire C0_1 = C0 ^ C1; wire C1_2 = C1 ^ C2; + wire C2_3 = C2 ^ C3; wire C3_4 = C3 ^ C4; + wire C4_5 = C4 ^ C5; wire C5_6 = C5 ^ C6; + wire C6_7 = C6 ^ C7; wire C7_8 = C7 ^ C8; + wire C8_9 = C8 ^ C9; wire C9_10 = C9 ^ C10; + wire C10_11 = C10 ^ C11; wire C11_12 = C11 ^ C12; + wire C12_13 = C12 ^ C13; wire C13_14 = C13 ^ C14; + wire C14_15 = C14 ^ C15; wire C15_16 = C15 ^ C16; + wire C16_17 = C16 ^ C17; wire C17_18 = C17 ^ C18; + wire C18_19 = C18 ^ C19; wire C19_20 = C19 ^ C20; + wire C20_21 = C20 ^ C21; wire C21_22 = C21 ^ C22; + wire C22_23 = C22 ^ C23; wire C23_24 = C23 ^ C24; + wire C24_25 = C24 ^ C25; wire C25_26 = C25 ^ C26; + wire C26_27 = C26 ^ C27; wire C27_28 = C27 ^ C28; + wire C28_29 = C28 ^ C29; wire C29_30 = C29 ^ C30; + wire C30_31 = C30 ^ C31; + +// Calculate terms which might have a single use. They are calculated here +// so that the parity trees can be balanced. + wire C1_4 = C1 ^ C4; wire C0_3 = C0 ^ C3; + wire C0_2 = C0 ^ C2; wire C5_7 = C5 ^ C7; + wire C17_20 = C17 ^ C20; wire C25_30 = C25 ^ C30; + wire C16_19 = C16 ^ C19; wire C24_31 = C24 ^ C31; + wire C2_15 = C2 ^ C15; wire C18_23 = C18 ^ C23; + wire C1_14 = C1 ^ C14; wire C17_22 = C17 ^ C22; + wire C0_13 = C0 ^ C13; wire C16_21 = C16 ^ C21; + wire C27_29 = C27 ^ C29; wire C12_15 = C12 ^ C15; + wire C20_25 = C20 ^ C25; wire C12_24 = C12 ^ C24; + wire C11_23 = C11 ^ C23; wire C4_10 = C4 ^ C10; + wire C24_30 = C24 ^ C30; wire C6_9 = C6 ^ C9; + wire C13_20 = C13 ^ C20; wire C23_28 = C23 ^ C28; + wire C5_8 = C5 ^ C8; wire C10_17 = C10 ^ C17; + wire C21_24 = C21 ^ C24; wire C4_7 = C4 ^ C7; + wire C9_16 = C9 ^ C16; wire C20_23 = C20 ^ C23; + wire C3_6 = C3 ^ C6; wire C8_15 = C8 ^ C15; + wire C19_22 = C19 ^ C22; wire C14_16 = C14 ^ C16; + wire C6_13 = C6 ^ C13; wire C15_20 = C15 ^ C20; + wire C5_12 = C5 ^ C12; wire C14_19 = C14 ^ C19; + wire C29_31 = C29 ^ C31; wire C28_30 = C28 ^ C30; + wire C10_18 = C10 ^ C18; wire C20_26 = C20 ^ C26; + wire C4_9 = C4 ^ C9; wire C21_23 = C21 ^ C23; + wire C8_18 = C8 ^ C18; wire C22_25 = C22 ^ C25; + wire C11_13 = C11 ^ C13; wire C20_22 = C20 ^ C22; + wire C26_28 = C26 ^ C28; wire C15_18 = C15 ^ C18; + wire C14_17 = C14 ^ C17; wire C23_27 = C23 ^ C27; + wire C1_12 = C1 ^ C12; wire C18_25 = C18 ^ C25; + wire C8_13 = C8 ^ C13; wire C22_24 = C22 ^ C24; + wire C12_19 = C12 ^ C19; wire C23_25 = C23 ^ C25; + wire C3_12 = C3 ^ C12; wire C19_21 = C19 ^ C21; + wire C24_26 = C24 ^ C26; wire C5_18 = C5 ^ C18; + wire C23_26 = C23 ^ C26; + + assign crc_part_1_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + { + (C1_4 ^ C11_12) ^ (C14_15 ^ C17_20), + (C0_3 ^ C10_11) ^ (C13_14 ^ C16_19), + (C2_15 ^ C9_10) ^ (C12_13 ^ C18_23), + (C1_14 ^ C8_9) ^ (C11_12 ^ C17_22), + (C0_13 ^ C7_8) ^ (C10_11 ^ C16_21), + (C6_7 ^ C9_10) ^ (C12_15 ^ C16_17), + (C1_4 ^ C5_6) ^ (C8_9 ^ C12_24), + (C0_3 ^ C4_5) ^ (C7_8 ^ C11_23), + (C2_3 ^ C4_10) ^ (C6_7 ^ C14_15), + (C2_3 ^ C4_5) ^ (C6_9 ^ C11_12), + (C2_3 ^ C5_8) ^ (C10_17 ^ C19_20), + (C1_2 ^ C4_7) ^ (C9_16 ^ C18_19), + (C0_1 ^ C3_6) ^ (C8_15 ^ C17_18), + (C0_2 ^ C5_7) ^ (C14_16 ^ C17_18), + (C1_4 ^ C6_13) ^ (C15_20 ^ C16_17), + (C0_3 ^ C5_12) ^ (C14_19 ^ C15_16), + (C1_2 ^ C12_13) ^ (C17_18 ^ C20_21), + (C0_1 ^ C11_12) ^ (C16_17 ^ C19_20), + (C0 ^ C10_11) ^ (C15_16 ^ C18_19), + (C9_10 ^ C14_15) ^ (C17_18 ^ C19_20), + (C1_4 ^ C8_9) ^ (C11_12 ^ C13), + (C0_1 ^ C3_4) ^ (C7_8 ^ C10_18), + (C0_1 ^ C2_3) ^ (C4_9 ^ C6_7), + (C0_1 ^ C2_3) ^ (C5_6 ^ C8_18), + (C0_2 ^ C5_7) ^ (C9_10 ^ C11_13), + (C6_13 ^ C8_9) ^ (C10_11 ^ C15_18), + (C5_12 ^ C7_8) ^ (C9_10 ^ C14_17), + (C1_12 ^ C6_7) ^ (C8_9 ^ C13_14), + (C0_1 ^ C4_5) ^ (C6_7 ^ C8_13), + (C0_3 ^ C4_5) ^ (C6_7 ^ C12_19), + (C1_2 ^ C3_12) ^ (C5_6 ^ C14_15), + (C0_2 ^ C5_18) ^ (C12_13 ^ C15_16) + }; + + assign crc_part_2_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + { + (C21_22 ^ C25_30) ^ (C27_28 ), + (C20_21 ^ C24_31) ^ (C26_27 ^ C29 ), + (C19_20 ^ C25_26) ^ (C28 ^ C30_31), + (C18_19 ^ C24_25) ^ (C27_29 ^ C30_31), + (C17_18 ^ C23_24) ^ (C26 ^ C28_29) ^ (C30_31), + (C20_25 ^ C22_23) ^ (C27_28 ^ C29_30), + (C16_17 ^ C19_20) ^ (C25_26 ^ C29_30), + (C15_16 ^ C18_19) ^ (C24_25 ^ C28_29) ^ (C31), + (C17_18 ^ C22_23) ^ (C24_30 ^ C27_28), + (C13_20 ^ C15_16) ^ (C23_28 ^ C25_26) ^ (C29_30), + (C21_24 ^ C29_30), + (C20_23 ^ C28_29), + (C19_22 ^ C27_28), + (C21 ^ C26_27), + (C25_26), + (C24_25), + (C22_23 ^ C24_25) ^ (C27_28 ^ C30), + (C21_22 ^ C23_24) ^ (C26_27 ^ C29_31), + (C20_21 ^ C22_23) ^ (C25_26 ^ C28_30), + (C21_22 ^ C24_25) ^ (C27 ^ C29_31), + (C15_16 ^ C18_19) ^ (C22_23 ^ C24_25) ^ (C26_27), + (C20_26 ^ C23_24) ^ (C27_28 ^ C30_31), + (C11_12 ^ C14_15) ^ (C19_20 ^ C21_23) ^ (C26 ^ C28_29), + (C10_11 ^ C13_14) ^ (C19_20 ^ C22_25) ^ (C27_28 ^ C31), + (C14_15 ^ C18_19) ^ (C20_22 ^ C24_25) ^ (C26_28), + (C19_20 ^ C22_23) ^ (C24 ^ C28_30), + (C18_19 ^ C21_22) ^ (C23_27 ^ C29_31), + (C15_16 ^ C18_25) ^ (C26_27 ^ C31), + (C20_21 ^ C22_24) ^ (C26_27 ^ C28), + (C20_21 ^ C23_25) ^ (C26_27), + (C17_18 ^ C19_21) ^ (C24_26 ^ C27_28) ^ (C30_31), + (C21_22 ^ C23_26) ^ (C28_29 ^ C31) + }; +endmodule + +module crc_32_64_private ( + use_F_for_CRC, + present_crc, + data_in_64, + next_crc +); + parameter NUMBER_OF_BITS_APPLIED = 64; + input use_F_for_CRC; + input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; + input [NUMBER_OF_BITS_APPLIED - 1 : 0] data_in_64; + output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc; + +// There are 2 obvious ways to implement these functions: +// 1) XOR the State bits with the Input bits, then calculate the XOR's +// 2) Independently calculate a result for Inputs and State variables, +// then XOR the results together. +// Once the applied data width > CRC size, it seems best to use the second technique. +// The formulas for each output term are seen to have a large number of +// terms depending on input data, and a smaller number of terms dependent +// on the initial value of the CRC. +// Calculate the Data component of the dependency. This can be done in +// a pipelined fashion, since it doesn't matter how long it takes. +// Calculate the CRC component of the dependency. Each clock this must +// be XOR'd with the correctly time-aligned Data component, and the +// results must be put back in the running CRC latches. +// It looks like 64 bits per clock may be FASTER than 32 bits per clock, +// because the Data dependency can be done in several clocks. + +// Instantiate the Data part of the dependency. + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_1_out; + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_part_2_out; + +crc_32_64_data_private crc_32_64_data_part ( + .data_in_64 (data_in_64[NUMBER_OF_BITS_APPLIED - 1 : 0]), + .data_part_1_out (data_part_1_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), + .data_part_2_out (data_part_2_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) +); + + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] data_depend_part = + data_part_1_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] + ^ data_part_2_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + +// Instantiate the CRC part of the dependency. + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] crc_part_1_out; + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] crc_part_2_out; + +crc_32_64_crc_private crc_32_64_crc_part ( + .use_F_for_CRC (use_F_for_CRC), + .present_crc (present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), + .crc_part_1_out (crc_part_1_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), + .crc_part_2_out (crc_part_2_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) +); + + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] first_part = + data_depend_part[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] + ^ crc_part_1_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; // source depth 4 gates + + assign next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + first_part[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] + ^ crc_part_2_out[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; // source depth 5 gates +endmodule + + `define COMPARE_PARALLEL_VERSIONS_AGAINST_SERIAL_VERSION_FOR_DEBUG +`ifdef COMPARE_PARALLEL_VERSIONS_AGAINST_SERIAL_VERSION_FOR_DEBUG +// a slow one to make sure I did things right. +module crc_32_1_bit_at_a_time ( + use_F_for_CRC, + present_crc, + data_in_1, + next_crc +); + input use_F_for_CRC; + input [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; + input data_in_1; + output [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc; + + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] resettable_crc; + assign resettable_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + {`NUMBER_OF_BITS_IN_CRC_32{use_F_for_CRC}} + | present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + + wire xor_value = data_in_1 ^ resettable_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1]; + + assign next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = xor_value + ? {resettable_crc[`NUMBER_OF_BITS_IN_CRC_32 - 2 : 0], 1'b0} ^ `CRC + : {resettable_crc[`NUMBER_OF_BITS_IN_CRC_32 - 2 : 0], 1'b0}; +endmodule + +module test_crc_1 (); + + integer i, j; + reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc; + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc; + reg use_F_for_CRC; + reg [7:0] data_in_8; + reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_8; + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_8; + reg [15:0] data_in_16; + reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_16; + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_16; + reg [23:0] data_in_24; + reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_24; + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_24; + reg [31:0] data_in_32; + reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_32; + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_32; + reg [63:0] data_in_64; + reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] present_crc_64; + wire [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] next_crc_64; + + +// Assign data_in_8 before invoking. This consumes data MSB first +task apply_1_8_to_crc; + integer j; + begin + #0 ; + present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + next_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + for (j = 0; j < 8; j = j + 1) // apply data bit at a time + begin + #0 ; + present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + data_in_8[7:0] = {data_in_8[6:0], 1'b0}; // Shift byte out MSB first + use_F_for_CRC = 1'b0; + end + end +endtask + +task apply_16_to_crc; + integer j; + begin + #0 ; + present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = // remember: apply 16 bits + next_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + use_F_for_CRC = 1'b0; + end +endtask + +task apply_24_to_crc; + integer j; + begin + #0 ; + present_crc_24[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = // remember: apply 24 bits + next_crc_24[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + use_F_for_CRC = 1'b0; + end +endtask + +task apply_32_to_crc; + integer j; + begin + #0 ; + present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = // remember: apply 32 bits + next_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + use_F_for_CRC = 1'b0; + end +endtask + +task apply_64_to_crc; + integer j; + begin + #0 ; + present_crc_64[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = // remember: apply 64 bits + next_crc_64[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + use_F_for_CRC = 1'b0; + end +endtask + + initial + begin + #10; + $display ("running serial version of code against parallel versions"); + use_F_for_CRC = 1'b1; + for (i = 0; i < 43; i = i + 1) + begin + data_in_8[7:0] = 8'h00; + apply_1_8_to_crc; + end + data_in_8[7:0] = 8'h28; + apply_1_8_to_crc; + if (~present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'h864D7F99) + $display ("*** 1-bit after 40 bytes of 1'b0, I want 32'h864D7F99, I get 32\`h%x", + ~present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + if (~present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'h864D7F99) + $display ("*** 8-bit after 40 bytes of 1'b0, I want 32'h864D7F99, I get 32\`h%x", + ~present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_8[7:0] = 8'h86; + apply_1_8_to_crc; + data_in_8[7:0] = 8'h4D; + apply_1_8_to_crc; + data_in_8[7:0] = 8'h7F; + apply_1_8_to_crc; + data_in_8[7:0] = 8'h99; + apply_1_8_to_crc; +// The receiver sees the value 32'hC704DD7B when the message is +// received no errors. Bit reversed, that is 32'hDEBB20E3. + if (present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 1-bit 0's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + if (present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 8-bit 0's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + + use_F_for_CRC = 1'b1; + data_in_16[15:0] = 16'h0000; + for (i = 0; i < 21; i = i + 1) + begin + apply_16_to_crc; + end + data_in_16[15:0] = 16'h0028; + apply_16_to_crc; + if (~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'h864D7F99) + $display ("*** 16-bit after 40 bytes of 1'b0, I want 32'h864D7F99, I get 32\`h%x", + ~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_16[15:0] = 16'h864D; + apply_16_to_crc; + data_in_16[15:0] = 16'h7F99; + apply_16_to_crc; + if (present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 16-bit 0's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + + use_F_for_CRC = 1'b1; + data_in_24[23:0] = 24'h000000; + for (i = 0; i < 14; i = i + 1) + begin + apply_24_to_crc; + end + present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + present_crc_24[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + data_in_16[15:0] = 16'h0028; + apply_16_to_crc; + if (~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'h864D7F99) + $display ("*** 24-bit after 40 bytes of 1'b0, I want 32'h864D7F99, I get 32\`h%x", + ~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_16[15:0] = 16'h864D; + apply_16_to_crc; + data_in_16[15:0] = 16'h7F99; + apply_16_to_crc; + if (present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 24-bit 0's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + + use_F_for_CRC = 1'b1; + data_in_32[31:0] = 32'h00000000; + for (i = 0; i < 10; i = i + 1) + begin + apply_32_to_crc; + end + data_in_32[31:0] = 32'h00000028; + apply_32_to_crc; + if (~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'h864D7F99) + $display ("*** 32-bit after 40 bytes of 1'b0, I want 32'h864D7F99, I get 32\`h%x", + ~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_32[31:0] = 32'h864D7F99; + apply_32_to_crc; + if (present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 32-bit 0's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + +// NOTE: WORKING: add 48 + + use_F_for_CRC = 1'b1; + data_in_64[63:0] = 64'h00000000_00000000; + for (i = 0; i < 5; i = i + 1) + begin + apply_64_to_crc; + end + present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + present_crc_64[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + data_in_32[31:0] = 32'h00000028; + apply_32_to_crc; + if (~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'h864D7F99) + $display ("*** 64-bit after 40 bytes of 1'b0, I want 32'h864D7F99, I get 32\`h%x", + ~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_32[31:0] = 32'h864D7F99; + apply_32_to_crc; + if (present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 64-bit 0's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + + + use_F_for_CRC = 1'b1; + for (i = 0; i < 40; i = i + 1) + begin + data_in_8[7:0] = 8'hFF; + apply_1_8_to_crc; + end + for (i = 0; i < 3; i = i + 1) + begin + data_in_8[7:0] = 8'h00; + apply_1_8_to_crc; + end + data_in_8[7:0] = 8'h28; + apply_1_8_to_crc; + if (~present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC55E457A) + $display ("*** 1-bit after 40 bytes of 1'b1, I want 32'hC55E457A, I get 32\`h%x", + ~present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + if (~present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC55E457A) + $display ("*** 8-bit after 40 bytes of 1'b1, I want 32'hC55E457A, I get 32\`h%x", + ~present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_8[7:0] = 8'hC5; + apply_1_8_to_crc; + data_in_8[7:0] = 8'h5E; + apply_1_8_to_crc; + data_in_8[7:0] = 8'h45; + apply_1_8_to_crc; + data_in_8[7:0] = 8'h7A; + apply_1_8_to_crc; + if (present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 1-bit 1's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + if (present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 8-bit 1's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + + use_F_for_CRC = 1'b1; + data_in_16[15:0] = 16'hFFFF; + for (i = 0; i < 20; i = i + 1) + begin + apply_16_to_crc; + end + data_in_16[15:0] = 16'h0000; + apply_16_to_crc; + data_in_16[15:0] = 16'h0028; + apply_16_to_crc; + if (~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC55E457A) + $display ("*** 16-bit after 40 bytes of 1'b1, I want 32'hC55E457A, I get 32\`h%x", + ~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_16[15:0] = 16'hC55E; + apply_16_to_crc; + data_in_16[15:0] = 16'h457A; + apply_16_to_crc; + if (present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 16-bit 1's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + + use_F_for_CRC = 1'b1; + data_in_24[23:0] = 24'hFFFFFF; + for (i = 0; i < 13; i = i + 1) + begin + apply_24_to_crc; + end + present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + present_crc_24[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + data_in_8[7:0] = 8'hFF; + apply_1_8_to_crc; + present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + data_in_16[15:0] = 16'h0000; + apply_16_to_crc; + data_in_16[15:0] = 16'h0028; + apply_16_to_crc; + if (~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC55E457A) + $display ("*** 24-bit after 40 bytes of 1'b1, I want 32'hC55E457A, I get 32\`h%x", + ~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_16[15:0] = 16'hC55E; + apply_16_to_crc; + data_in_16[15:0] = 16'h457A; + apply_16_to_crc; + if (present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 24-bit 1's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + + use_F_for_CRC = 1'b1; + data_in_32[31:0] = 32'hFFFFFFFF; + for (i = 0; i < 10; i = i + 1) + begin + apply_32_to_crc; + end + data_in_32[31:0] = 32'h00000028; + apply_32_to_crc; + if (~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC55E457A) + $display ("*** 32-bit after 40 bytes of 1'b1, I want 32'hC55E457A, I get 32\`h%x", + ~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_32[31:0] = 32'hC55E457A; + apply_32_to_crc; + if (present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 32-bit 1's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + +// NOTE: WORKING: add 48 + + use_F_for_CRC = 1'b1; + data_in_64[63:0] = 64'hFFFFFFFF_FFFFFFFF; + for (i = 0; i < 5; i = i + 1) + begin + apply_64_to_crc; + end + present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + present_crc_64[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + data_in_32[31:0] = 32'h00000028; + apply_32_to_crc; + if (~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC55E457A) + $display ("*** 64-bit after 40 bytes of 1'b1, I want 32'hC55E457A, I get 32\`h%x", + ~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_32[31:0] = 32'hC55E457A; + apply_32_to_crc; + if (present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 64-bit 1's after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + + + use_F_for_CRC = 1'b1; + for (i = 0; i < 40; i = i + 1) + begin + data_in_8[7:0] = i + 1; + apply_1_8_to_crc; + end + for (i = 0; i < 3; i = i + 1) + begin + data_in_8[7:0] = 8'h00; + apply_1_8_to_crc; + end + data_in_8[7:0] = 8'h28; + apply_1_8_to_crc; + if (~present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hBF671ED0) + $display ("*** 1-bit after 40 bytes of i+1, I want 32'hBF671ED0, I get 32\`h%x", + ~present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + if (~present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hBF671ED0) + $display ("*** 8-bit after 40 bytes of i+1, I want 32'hBF671ED0, I get 32\`h%x", + ~present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_8[7:0] = 8'hBF; + apply_1_8_to_crc; + data_in_8[7:0] = 8'h67; + apply_1_8_to_crc; + data_in_8[7:0] = 8'h1E; + apply_1_8_to_crc; + data_in_8[7:0] = 8'hD0; + apply_1_8_to_crc; + if (present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 1-bit i+1 after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + if (present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 8-bit i+1 after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + + use_F_for_CRC = 1'b1; + for (i = 0; i < 20; i = i + 1) + begin + data_in_16[15:0] = (((2 * i) + 1) << 8) | ((2 * i) + 2); + apply_16_to_crc; + end + data_in_16[15:0] = 16'h0000; + apply_16_to_crc; + data_in_16[15:0] = 16'h0028; + apply_16_to_crc; + if (~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hBF671ED0) + $display ("*** 16-bit after 40 bytes of i+1, I want 32'hBF671ED0, I get 32\`h%x", + ~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_16[15:0] = 16'hBF67; + apply_16_to_crc; + data_in_16[15:0] = 16'h1ED0; + apply_16_to_crc; + if (present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 16-bit i+1 after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + + use_F_for_CRC = 1'b1; + for (i = 0; i < 13; i = i + 1) + begin + data_in_24[23:0] = (((3 * i) + 1) << 16) | (((3 * i) + 2) << 8) | ((3 * i) + 3); + apply_24_to_crc; + end + present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + present_crc_24[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + data_in_8[7:0] = 8'h28; + apply_1_8_to_crc; + present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + data_in_16[15:0] = 16'h0000; + apply_16_to_crc; + data_in_16[15:0] = 16'h0028; + apply_16_to_crc; + if (~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hBF671ED0) + $display ("*** 24-bit after 40 bytes of i+1, I want 32'hBF671ED0, I get 32\`h%x", + ~present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_16[15:0] = 16'hBF67; + apply_16_to_crc; + data_in_16[15:0] = 16'h1ED0; + apply_16_to_crc; + if (present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 24-bit i+1 after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + + use_F_for_CRC = 1'b1; + for (i = 0; i < 10; i = i + 1) + begin + data_in_32[31:0] = (((4 * i) + 1) << 24) | (((4 * i) + 2) << 16) + | (((4 * i) + 3) << 8) | ((4 * i) + 4); + apply_32_to_crc; + end + data_in_32[31:0] = 32'h00000028; + apply_32_to_crc; + if (~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hBF671ED0) + $display ("*** 32-bit after 40 bytes of i+1, I want 32'hBF671ED0, I get 32\`h%x", + ~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_32[31:0] = 32'hBF671ED0; + apply_32_to_crc; + if (present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 32-bit i+1 after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + +// NOTE: WORKING: add 48 + + use_F_for_CRC = 1'b1; + for (i = 0; i < 5; i = i + 1) + begin + data_in_64[63:0] = (((8 * i) + 1) << 56) | (((8 * i) + 2) << 48) + | (((8 * i) + 3) << 40) | (((8 * i) + 4) << 32) + | (((8 * i) + 5) << 24) | (((8 * i) + 6) << 16) + | (((8 * i) + 7) << 8) | ((8 * i) + 8); + apply_64_to_crc; + end + present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = + present_crc_64[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]; + data_in_32[31:0] = 32'h00000028; + apply_32_to_crc; + if (~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hBF671ED0) + $display ("*** 64-bit after 40 bytes of i+1, I want 32'hBF671ED0, I get 32\`h%x", + ~present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + data_in_32[31:0] = 32'hBF671ED0; + apply_32_to_crc; + if (present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] !== 32'hC704DD7B) + $display ("*** 64-bit i+1 after running CRC through, I want 32'hC704DD7B, I get 32\`h%x", + present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); + + end + +crc_32_1_bit_at_a_time test_1_bit ( + .use_F_for_CRC (use_F_for_CRC), + .present_crc (present_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), + .data_in_1 (data_in_8[7]), + .next_crc (next_crc[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) +); + +crc_32_8_private test_8_bit ( + .use_F_for_CRC (use_F_for_CRC), + .present_crc (present_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), + .data_in_8 (data_in_8[7:0]), + .next_crc (next_crc_8[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) +); + +crc_32_16_private test_16_bit ( + .use_F_for_CRC (use_F_for_CRC), + .present_crc (present_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), + .data_in_16 (data_in_16[15:0]), + .next_crc (next_crc_16[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) +); + +crc_32_24_private test_24_bit ( + .use_F_for_CRC (use_F_for_CRC), + .present_crc (present_crc_24[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), + .data_in_24 (data_in_24[23:0]), + .next_crc (next_crc_24[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) +); + +crc_32_32_private test_32_bit ( + .use_F_for_CRC (use_F_for_CRC), + .present_crc (present_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), + .data_in_32 (data_in_32[31:0]), + .next_crc (next_crc_32[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) +); + +crc_32_64_private test_64_bit ( + .use_F_for_CRC (use_F_for_CRC), + .present_crc (present_crc_64[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]), + .data_in_64 (data_in_64[63:0]), + .next_crc (next_crc_64[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]) +); + +// Angie Tso's CRC-32 Test Cases +// tsoa@ttc.com +// Angie Tso +// Telecommunications Techniques Corp. E-mail: tsoa@ttc.com +// 20400 Observation Drive, Voice : 301-353-1550 ext.4061 +// Germantown, MD 20876-4023 Fax : 301-353-1536 Mail Stop O +// +// Angie posted the following on the cell-relay list Mon, 24 Oct 1994 18:33:11 GMT=20 +// -------------------------------------------------------------------------------- +// +// Here are the examples of valid AAL-5 CS-PDU in I.363: +// (There are three examples in I.363) +// +// 40 Octets filled with "0" +// CPCS-UU = 0, CPI = 0, Length = 40, CRC-32 = 864d7f99 +// char pkt_data[48]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +// 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +// 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +// 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +// 0x00,0x00,0x00,0x28,0x86,0x4d,0x7f,0x99}; +// +// 40 Octets filled with "1" +// CPCS-UU = 0, CPI = 0, Length = 40, CRC-32 = c55e457a +// char pkt_data[48]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +// 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +// 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +// 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +// 0x00,0x00,0x00,0x28,0xc5,0x5e,0x45,0x7a}; +// +// 40 Octets counting: 1 to 40 +// CPCS-UU = 0, CPI = 0, Length = 40, CRC-32 = bf671ed0 +// char pkt_data[48]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a, +// 0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14, +// 0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e, +// 0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, +// 0x00,0x00,0x00,0x28,0xbf,0x67,0x1e,0xd0}; +// +// Here is one out of my calculation for your reference: +// +// 40 Octets counting: 1 to 40 +// CPCS-UU = 11, CPI = 22, CRC-32 = acba602a +// char pkt_data[48]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a, +// 0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14, +// 0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e, +// 0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, +// 0x11,0x22,0x00,0x28,0xac,0xba,0x60,0x2a}; + +endmodule +`endif // COMPARE_PARALLEL_VERSIONS_AGAINST_SERIAL_VERSION_FOR_DEBUG + +// `define CALCULATE_FUNCTIONAL_DEPENDENCE_ON_INPUT_AND_STATE +`ifdef CALCULATE_FUNCTIONAL_DEPENDENCE_ON_INPUT_AND_STATE + +// Try to make a program which will generate formulas for how to do CRC-32 +// several bits at a time. +// The idea is to get a single-bit implementation which works. (!) +// Then apply an initial value for state and an input data stream. +// The initial value will have a single bit set, and the data stream +// will have a single 1-bit followed by 0 bits. +// Grind the state machine forward the desired number of bits N, and +// look at the stored state. Each place in the shift register where +// there is a 1'b1, that is a bit which is sensitive to the input +// or state bit in a parallel implementation N bits wide. + +module print_out_formulas (); + + parameter NUM_BITS_TO_DO_IN_PARALLEL = 8'h40; + + reg [`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] running_state; + reg [63:0] input_vector; + reg xor_value; + integer i, j, remaining_length; + + reg [2047:0] corner_turner; // 32 bits * 64 shifts + + initial + begin + $display ("Calculating functional dependence on input bits, for %d bits. Rightmost bit is State Bit 0.", + NUM_BITS_TO_DO_IN_PARALLEL); + for (i = 0; i < NUM_BITS_TO_DO_IN_PARALLEL; i = i + 1) + begin + running_state = {`NUMBER_OF_BITS_IN_CRC_32{1'b0}}; + input_vector = 64'h80000000_00000000; // MSB first for this program + for (j = 0; j < i + 1; j = j + 1) + begin + xor_value = input_vector[63] ^ running_state[`NUMBER_OF_BITS_IN_CRC_32 - 1]; + running_state[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0] = xor_value + ? {running_state[`NUMBER_OF_BITS_IN_CRC_32 - 2 : 0], 1'b0} ^ `CRC + : {running_state[`NUMBER_OF_BITS_IN_CRC_32 - 2 : 0], 1'b0}; + input_vector[63 : 0] = + {input_vector[62 : 0], 1'b0}; + end + $display ("input bit number (bigger is earlier) %d, dependence %b", + i, running_state[`NUMBER_OF_BITS_IN_CRC_32 - 1 : 0]); +// First entry, which gets shifted the most in corner_turner, is the last bit loaded + corner_turner[2047:0] = {corner_turner[2047 - `NUMBER_OF_BITS_IN_CRC_32 : 0], + running_state[`NUMBER_OF_BITS_IN_CRC_32 - 1:0]}; + end + +// Plan: reverse the order bits are reported in +// Add C23 terms to first 24 terms +// Insert ^ X + +// Count out formulas in the opposite order, write out valid formulas. + $display ("When the amount of data applied to the CRC is less than the length of the CRC itself,"); + $display (" the Most Significant CRC_LEN - CRC_WIDTH terms are of the form data_in[N] ^ State[N]."); + $display ("The next CRC_WIDTH terms are NOT dependent on the CRC values, except in so much as"); + $display (" they depend on CSR bits because of X = D ^ C terms."); + $display ("State Variables depend on input bit number (bigger is earlier) :"); +// try to read out formulas by sweeping a 1-bit through the corner_turner array. + $display ("{"); + for (i = `NUMBER_OF_BITS_IN_CRC_32 - 1; i >= NUM_BITS_TO_DO_IN_PARALLEL; i = i - 1) + begin // Bits which depend on shifted state bits directly + $write ("%d : C%0d ", i, i - NUM_BITS_TO_DO_IN_PARALLEL); + for (j = 0; j < NUM_BITS_TO_DO_IN_PARALLEL; j = j + 1) + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + $write (",\n"); + end + + if (NUM_BITS_TO_DO_IN_PARALLEL <= `NUMBER_OF_BITS_IN_CRC_32) + begin + remaining_length = NUM_BITS_TO_DO_IN_PARALLEL - 1; + end + else + begin + remaining_length = `NUMBER_OF_BITS_IN_CRC_32 - 1; + end + for (i = remaining_length; i >= 0; i = i - 1) + begin // bits which only depend on shifted XOR'd bits + $write ("%d : 0 ", i); + for (j = 0; j < NUM_BITS_TO_DO_IN_PARALLEL; j = j + 1) + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + if (i != 0) $write (",\n"); else $write ("\n"); + end + $display ("}"); + +// Write out bits in a different order, to make it easier to group terms. + if (NUM_BITS_TO_DO_IN_PARALLEL >= 16) + begin + $display ("{"); + for (i = `NUMBER_OF_BITS_IN_CRC_32 - 1; i >= NUM_BITS_TO_DO_IN_PARALLEL; i = i - 1) + begin // Bits which depend on shifted state bits directly + $write ("%d : C%0d ", i, i - NUM_BITS_TO_DO_IN_PARALLEL); + for (j = 0; j <= 8; j = j + 1) + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + j = 12; + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + j = 9; + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + j = 13; + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + j = 10; + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + j = 14; + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + j = 11; + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + j = 15; + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + for (j = 16; j < NUM_BITS_TO_DO_IN_PARALLEL; j = j + 1) + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + $write (",\n"); + end + + if (NUM_BITS_TO_DO_IN_PARALLEL <= `NUMBER_OF_BITS_IN_CRC_32) + begin + remaining_length = NUM_BITS_TO_DO_IN_PARALLEL - 1; + end + else + begin + remaining_length = `NUMBER_OF_BITS_IN_CRC_32 - 1; + end + for (i = remaining_length; i >= 0; i = i - 1) + begin // bits which only depend on shifted XOR'd bits + $write ("%d : 0 ", i); + for (j = 0; j <= 8; j = j + 1) + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + j = 12; + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + j = 9; + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + j = 13; + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + j = 10; + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + j = 14; + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + j = 11; + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + j = 15; + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + for (j = 16; j < NUM_BITS_TO_DO_IN_PARALLEL; j = j + 1) + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ X%0d", j[5:0]); + else if (j >= 10) $write (" "); else $write (" "); + end + if (i != 0) $write (",\n"); else $write ("\n"); + end + $display ("}"); + end // if width >= 16 + + if (NUM_BITS_TO_DO_IN_PARALLEL <= `NUMBER_OF_BITS_IN_CRC_32) + begin + $display ("Since the number of data bits applied is <= number of CRC bits, each"); + $display (" X term in these formulas corresponds to X = Data_In ^ State"); + end + else + begin + $display ("The number of bits being applied to the CRC is greater than the number of"); + $display (" bits in the CRC. Each X term in these formulas corersponds to a Data_In bit."); + $display ("If the shift distance was small, the original CRC bits would be XOR'd with"); + $display (" the new data. In this case, the shift distance per clock is large, so the"); + $display (" dependence on the original CRC bits has to be handled carefully."); + $display ("Here is the plan: Calculate the contribution due to the incoming data based"); + $display (" on the formulas produced for a particular shift distance."); + $display ("Separately, calculate the data dependence due to the present CRC."); + $display ("This is accomplished by using the HIGH numbered terms discovered when tracking"); + $display (" data dependencies. For instance, if the shift distance is"); + $display (" 64 and the CRC is 32 bits wide, the top 32 X terms of each of the formulas"); + $display (" is re-interpreted as C (state) terms."); + $display ("The terms depending on X63 : X32 are re-interpred to be terms depending on"); + $display (" CSR bits 31 : 0 correspondingly"); + $display ("{"); + for (i = `NUMBER_OF_BITS_IN_CRC_32 - 1; i >= 0; i = i - 1) + begin // Bits which depend on shifted state bits directly + $write ("%d : ", i); + for (j = `NUMBER_OF_BITS_IN_CRC_32; + j < NUM_BITS_TO_DO_IN_PARALLEL +`NUMBER_OF_BITS_IN_CRC_32; + j = j + 1) + begin + if (corner_turner[(NUM_BITS_TO_DO_IN_PARALLEL-j-1)*`NUMBER_OF_BITS_IN_CRC_32 + i] + != 1'b0) + $write (" ^ C%0d", j[5:0] - `NUMBER_OF_BITS_IN_CRC_32); + else if (j >= 10) $write (" "); else $write (" "); + end + if (i != 0) $write (",\n"); else $write ("\n"); + end + $display ("}"); + end + end +endmodule +`endif // CALCULATE_FUNCTIONAL_DEPENDENCE_ON_INPUT_AND_STATE + Index: common/trunk/plesiochronous_fifo.v =================================================================== --- common/trunk/plesiochronous_fifo.v (nonexistent) +++ common/trunk/plesiochronous_fifo.v (revision 48) @@ -0,0 +1,800 @@ +////////////////////////////////////////////////////////////////////// +//// //// +//// plesiochronous_fifo #(N, N, N, N, N) //// +//// //// +//// This file is part of the general opencores effort. //// +//// //// +//// //// +//// Module Description: //// +//// An example of a plesiochronous FIFO between 2 clock domains //// +//// //// +//// To Do: //// +//// nothing pending //// +//// //// +//// Author(s): //// +//// - Anonymous //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2001 Anonymous and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source 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 Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from //// +//// //// +////////////////////////////////////////////////////////////////////// +// +// $Id: plesiochronous_fifo.v,v 1.3 2001-09-03 13:26:38 bbeaver Exp $ +// +// CVS Revision History +// +// $Log: not supported by cvs2svn $ +// Revision 1.2 2001/09/03 13:31:00 Blue Beaver +// no message +// +// Revision 1.1 2001/09/03 12:51:43 Blue Beaver +// no message +// +// Revision 1.5 2001/09/03 12:50:38 Blue Beaver +// no message +// +// + +////////////////////////////////////////////////////////////////////// +// +// Web definition of Plesiochronous: +// "Signals which are arbitrarily close in frequency to some defined precision. +// They are not sourced from the same clock and so, over the long term, will +// be skewed from each other. Their relative closeness of frequency allows a +// switch to cross connect, switch, or in some way process them. That same +// inaccuracy of timing will force a switch, over time, to repeat or delete +// frames (called frame slips) in order to handle buffer underflow or overflow." +// +// Summary: Make a FIFO which is used to cross between 2 Pleasiochronous +// clock domains. +// This code assumes that latency does not matter. +// This code assumes that the FIFO is being used for packet IO. +// This code REQUIRES that the reader of the FIFO reads an entire +// packet in back-to-back clocks, with no dead cycles. +// This code REQUIRES that the writer of the FIFO leaves dead cycles +// between packets when writing the FIFO, so that it does not overflow. +// +// NOTE: This FIFO REQUIRES that the Sender ALWAYS sends a full packet into +// the FIFO on adjacent Sender-side clocks. NO WAIT STATES except at +// packet boundries. The Sender promises this to the Receiver. +// +// NOTE: This FIFO REQUIRES that the Receiver ALWAYS receives a full packet +// out of the FIFO as soon as it gets an indication that the FIFO +// is half full. NO WAIT STATES. The Receiver promises this to +// the Sender. +// +// NOTE: The Read side has to capture the Read Data IMMEDIATELY. It must +// wrap read_fifo_half_full back directly to read_consume, and must +// capture and use the data it captures the first clock read_consume +// is asserted. read_consume means data valid to the receiver logic. +// +// NOTE: A plesiochronous system is one in which the different clock domains +// are running at different frequencies, but the designer knows how +// far apart the system frequencies are worst case. The designer +// can use this knowledge to make the system seem fully synchronous. +// +// NOTE: The system does NOT need to have the same frequencies for both the +// reader and the writer, if the widths of the interfaces are different. +// For instance, assume that the sender runs at N MHz with an M bit +// interface. The receiver might run at N/2 MHz with a 2*M bit +// interface. +// As long as there are bounds on the variations of the sender's N MHz +// clock and the receiver's N/2 MHz clock, the system can be +// considered to be plesiochronous. +// +// NOTE: The idea: The Sender writes data into the FIFO. Every so often, +// BUT ONLY AT A PACKET BOUNDRY, the sender intentionally does not +// write to the FIFO for 1 clock. +// The Receiver watches the FIFO. The receiver does not START reading +// from the FIFO until the FIFO becomes half full. Once it starts +// reading, it removes an entire packet from the FIFO all at once. +// The Sender can be sure that it will not overrun the FIFO, because +// it knows that the Receiver is emptying it. Even if the Sender is +// filling faster than the Receiver is emptying, the bounded +// difference in frequencies lets the Sender know that it cannot +// fill up the FIFO before it skips a write. +// The skipped write cycle keeps the Sender from over-filling the +// FIFO in the long run. +// The Receiver knows that it can receive an entire packet from the +// FIFO without emptying it. Even if the Receiver is emptying the +// FIFO faster than the Sender is filling it, the bounded +// difference in frequencies lets the Receiver know that it cannot +// empty the FIFO before it finishes reading a full packet. +// As soon as the Receiver finishes reading a packet, it waits until +// the FIFO gets at least half full again. The wait may be for +// more than 1 clock. The waits until the FIFO is half full keeps +// the Receiver from emptying the FIFO inthe ling run. +// +// NOTE: You have to tell the FIFO the paramaters of the clocks and packets +// you are designing for. This lets the FIFO calculate whether it +// can safely meet the design goals. +// +// NOTE: In this case, the FIFO is ALWAYS 6 elements deep. There are 6 entries +// instead of 4 to handle cases I can't imagine involving clock jitter. +// +// NOTE: This module instantiates synchronizer_flop.v, available at +// www.opencores.com/ +// +// This code was developed using VeriLogger Pro, by Synapticad. +// Their support is greatly appreciated. +// +//=========================================================================== + +`timescale 1ns/1ps + +module plesiochronous_fifo ( + reset_flags_async, + write_clk, + write_submit, + write_data, + read_clk, read_sync_clk, + read_fifo_half_full, + read_consume, + read_data +); + +// These parameters MUST be set where the module is instantiated. + parameter TRANSMIT_CLOCK_UNCERTAINTY_PARTS_PER_MILLION = 0; // typically 100 + parameter RECEIVE_CLOCK_UNCERTAINTY_PARTS_PER_MILLION = 0; // typically 100 + parameter NUMBER_OF_TRANSMIT_CLOCKS_PER_PACKET = 0; // might be 256, for instance + parameter TRANSMIT_FIFO_WIDTH = 0; // MUST be the same as RECEIVE_FIFO_WIDTH now + parameter RECEIVE_FIFO_WIDTH = 0; + + input reset_flags_async; + input write_clk; + input write_submit; + input [TRANSMIT_FIFO_WIDTH - 1 : 0] write_data; + input read_clk, read_sync_clk; // The read_sync_clock is the SAME as the read_clk + output read_fifo_half_full; + input read_consume; + output [RECEIVE_FIFO_WIDTH - 1 : 0] read_data; + +// Calculate paramaters based on the main parameters set by the user. + parameter WORSE_CASE_CLOCK_UNCERTAINTY_PARTS_PER_MILLION = + RECEIVE_CLOCK_UNCERTAINTY_PARTS_PER_MILLION + + TRANSMIT_CLOCK_UNCERTAINTY_PARTS_PER_MILLION; + + parameter TRANSMIT_CLOCK_DIVIDED_BY_RECEIVE_CLOCK_RATIO = + TRANSMIT_FIFO_WIDTH/RECEIVE_FIFO_WIDTH; // must be 1 now + + parameter TRANSMIT_FIFO_CLOCK_SLIP_DEPTH = + 1000000/WORSE_CASE_CLOCK_UNCERTAINTY_PARTS_PER_MILLION; + +function [2:0] grey_code_counter_inc; + input [2:0] grey_code_counter_in; + begin + case (grey_code_counter_in[2:0]) + 3'b000: grey_code_counter_inc[2:0] = 3'b001; + 3'b001: grey_code_counter_inc[2:0] = 3'b011; + 3'b011: grey_code_counter_inc[2:0] = 3'b010; + 3'b010: grey_code_counter_inc[2:0] = 3'b110; + 3'b110: grey_code_counter_inc[2:0] = 3'b111; + 3'b111: grey_code_counter_inc[2:0] = 3'b101; + 3'b101: grey_code_counter_inc[2:0] = 3'b100; + 3'b100: grey_code_counter_inc[2:0] = 3'b000; + default: + begin + grey_code_counter_inc[2:0] = 3'b000; +// synopsys translate_off + if ($time > 0) + begin + $display ("*** %m grey code in to inc has invalid value %h, at %t", + grey_code_counter_in[2:0], $time); + end + else ; // be quiet linterizer +// synopsys translate_off + end + endcase + end +endfunction + +function [2:0] grey_to_binary_3; + input [2:0] grey_code_counter_in; + begin + case (grey_code_counter_in[2:0]) + 3'b000: grey_to_binary_3[2:0] = 3'b000; + 3'b001: grey_to_binary_3[2:0] = 3'b001; + 3'b011: grey_to_binary_3[2:0] = 3'b010; + 3'b010: grey_to_binary_3[2:0] = 3'b011; + 3'b110: grey_to_binary_3[2:0] = 3'b100; + 3'b111: grey_to_binary_3[2:0] = 3'b101; + 3'b101: grey_to_binary_3[2:0] = 3'b110; + 3'b100: grey_to_binary_3[2:0] = 3'b111; + default: + begin + grey_to_binary_3[2:0] = 3'b000; +// synopsys translate_off + if ($time > 0) + begin + $display ("*** %m grey code in to binary has invalid value %h, at %t", + grey_to_binary_3[2:0], $time); + end + else ; // be quiet linterizer +// synopsys translate_off + end + endcase + end +endfunction + +// Write-side FIFO counters + reg [2:0] write_pointer_grey_W; // counts 0, 1, 3, 2, 6, 7, 5, 4, 0, 1, ... + reg [2:0] write_pointer_physical; // counts 0, 1, 2, 3, 4, 0, 1, ... + + always @(posedge write_clk or posedge reset_flags_async) + begin + if (reset_flags_async == 1'b1) + begin + write_pointer_grey_W[2:0] <= 3'h0; + write_pointer_physical[2:0] <= 3'h0; + end + else + begin + if (write_submit == 1'b1) + begin + write_pointer_grey_W[2:0] <= grey_code_counter_inc (write_pointer_grey_W[2:0]); + write_pointer_physical[2:0] <= (write_pointer_physical[2:0] >= 3'h5) + ? 3'h0 + : write_pointer_physical[2:0] + 3'h1; + end + else + begin + write_pointer_grey_W[2:0] <= write_pointer_grey_W[2:0]; + write_pointer_physical[2:0] <= write_pointer_physical[2:0]; + end + end + end + +// Read-side FIFO counters + reg [2:0] read_pointer_grey; // counts 0, 1, 3, 2, 6, 7, 5, 4, 0, 1, ... + reg [2:0] read_pointer_physical; // counts 0, 1, 2, 3, 4, 0, 1, ... + + always @(posedge read_clk or posedge reset_flags_async) + begin + if (reset_flags_async == 1'b1) + begin + read_pointer_grey[2:0] <= 3'h0; + read_pointer_physical[2:0] <= 3'h0; + end + else + begin + if (read_consume == 1'b1) + begin + read_pointer_grey[2:0] <= grey_code_counter_inc (read_pointer_grey[2:0]); + read_pointer_physical[2:0] <= (read_pointer_physical[2:0] >= 3'h5) + ? 3'h0 + : read_pointer_physical[2:0] + 3'h1; + end + else + begin + read_pointer_grey[2:0] <= read_pointer_grey[2:0]; + read_pointer_physical[2:0] <= read_pointer_physical[2:0]; + end + end + end + +// NOTE: Very unusual FIFO. It needs to synchronize the Write Pointer into +// the Read clock domain, but does NOT need to synchronize the Read +// Pointer into the Write clock domain. The Writer KNOWS that it +// can always safely write. This is guaranteed by the Read side +// behavior. That Read side is GUARANTEED to always be reading. + + wire [2:0] write_pointer_grey_sync_R; + +synchronizer_flop sync_write_grey_0 ( + .data_in (write_pointer_grey_W[0]), + .clk_out (read_sync_clk), + .sync_data_out (write_pointer_grey_sync_R[0]), + .async_reset (reset_flags_async) +); + +synchronizer_flop sync_write_grey_1 ( + .data_in (write_pointer_grey_W[1]), + .clk_out (read_sync_clk), + .sync_data_out (write_pointer_grey_sync_R[1]), + .async_reset (reset_flags_async) +); + +synchronizer_flop sync_write_grey_2 ( + .data_in (write_pointer_grey_W[2]), + .clk_out (read_sync_clk), + .sync_data_out (write_pointer_grey_sync_R[2]), + .async_reset (reset_flags_async) +); + +// Calculate how much stuff is stored in the FIFO. This can be +// done by comparing the Read and Write Grey Code Counters. +// They start out the same. The Write side gets ahead of +// the read side, until the read side starts unloading. +// If the write side stops writing, they can get to be the +// same again. +// These counters wrap. In the case that the Write Counter is +// greater than than the Read Counter, the amount of stuff +// in the FIFO is write pointer - read pointer; +// In the case that the Write Counter is less than the Read +// Counter, the amount of stuff in the FIFO is 8 + difference. +// BUT only the bottom 3 bits matter! That seems to mean +// that you can simply subtract and look at the bottom 3 bits. + + wire [2:0] write_pointer_binary_R = + grey_to_binary_3 (write_pointer_grey_sync_R[2:0]); + + wire [2:0] read_pointer_binary = + grey_to_binary_3 (read_pointer_grey[2:0]); + + wire [2:0] number_of_elements_in_fifo = + write_pointer_binary_R[2:0] - read_pointer_binary[2:0]; + +// Tell the Receiver to go when there are 2 or more elements in this 5 element FIFO. + assign read_fifo_half_full = number_of_elements_in_fifo[2:0] >= 3'h3; + +// FIFO storage + reg [TRANSMIT_FIFO_WIDTH - 1 : 0] fifo_0; + reg [TRANSMIT_FIFO_WIDTH - 1 : 0] fifo_1; + reg [TRANSMIT_FIFO_WIDTH - 1 : 0] fifo_2; + reg [TRANSMIT_FIFO_WIDTH - 1 : 0] fifo_3; + reg [TRANSMIT_FIFO_WIDTH - 1 : 0] fifo_4; + reg [TRANSMIT_FIFO_WIDTH - 1 : 0] fifo_5; + + always @(posedge write_clk) + begin + fifo_0[TRANSMIT_FIFO_WIDTH - 1 : 0] = + (write_submit & (write_pointer_physical[2:0] == 3'h0)) + ? write_data[TRANSMIT_FIFO_WIDTH - 1 : 0] + : fifo_0[TRANSMIT_FIFO_WIDTH - 1 : 0]; + fifo_1[TRANSMIT_FIFO_WIDTH - 1 : 0] = + (write_submit & (write_pointer_physical[2:0] == 3'h1)) + ? write_data[TRANSMIT_FIFO_WIDTH - 1 : 0] + : fifo_1[TRANSMIT_FIFO_WIDTH - 1 : 0]; + fifo_2[TRANSMIT_FIFO_WIDTH - 1 : 0] = + (write_submit & (write_pointer_physical[2:0] == 3'h2)) + ? write_data[TRANSMIT_FIFO_WIDTH - 1 : 0] + : fifo_2[TRANSMIT_FIFO_WIDTH - 1 : 0]; + fifo_3[TRANSMIT_FIFO_WIDTH - 1 : 0] = + (write_submit & (write_pointer_physical[2:0] == 3'h3)) + ? write_data[TRANSMIT_FIFO_WIDTH - 1 : 0] + : fifo_3[TRANSMIT_FIFO_WIDTH - 1 : 0]; + fifo_4[TRANSMIT_FIFO_WIDTH - 1 : 0] = + (write_submit & (write_pointer_physical[2:0] == 3'h4)) + ? write_data[TRANSMIT_FIFO_WIDTH - 1 : 0] + : fifo_4[TRANSMIT_FIFO_WIDTH - 1 : 0]; + fifo_5[TRANSMIT_FIFO_WIDTH - 1 : 0] = + (write_submit & (write_pointer_physical[2:0] == 3'h5)) + ? write_data[TRANSMIT_FIFO_WIDTH - 1 : 0] + : fifo_5[TRANSMIT_FIFO_WIDTH - 1 : 0]; + end + +// Read port to FIFO + assign read_data = ({RECEIVE_FIFO_WIDTH{read_pointer_physical[2:0] == 3'h0}} + & fifo_0[TRANSMIT_FIFO_WIDTH - 1 : 0]) + | ({RECEIVE_FIFO_WIDTH{read_pointer_physical[2:0] == 3'h1}} + & fifo_1[TRANSMIT_FIFO_WIDTH - 1 : 0]) + | ({RECEIVE_FIFO_WIDTH{read_pointer_physical[2:0] == 3'h2}} + & fifo_2[TRANSMIT_FIFO_WIDTH - 1 : 0]) + | ({RECEIVE_FIFO_WIDTH{read_pointer_physical[2:0] == 3'h3}} + & fifo_3[TRANSMIT_FIFO_WIDTH - 1 : 0]) + | ({RECEIVE_FIFO_WIDTH{read_pointer_physical[2:0] == 3'h4}} + & fifo_4[TRANSMIT_FIFO_WIDTH - 1 : 0]) + | ({RECEIVE_FIFO_WIDTH{read_pointer_physical[2:0] == 3'h5}} + & fifo_5[TRANSMIT_FIFO_WIDTH - 1 : 0]); + +// synopsys translate_off +// ASSUMING that the clock period is 10 nSec, look to make sure data is valid long +// enough to get through the read MUX. At least 1 write clock period! + reg written_0, written_1, written_2, written_3, written_4, written_5; + reg valid_0, valid_1, valid_2, valid_3, valid_4, valid_5; + initial + begin + written_0 = 1'b0; + written_1 = 1'b0; + written_2 = 1'b0; + written_3 = 1'b0; + written_4 = 1'b0; + written_5 = 1'b0; + end + always @(posedge write_clk) + begin + written_0 <= (write_submit & (write_pointer_physical[2:0] == 3'h0)) ^ written_0; // only change when written + valid_0 <= written_0; + written_1 <= (write_submit & (write_pointer_physical[2:0] == 3'h1)) ^ written_1; + valid_1 <= written_1; + written_2 <= (write_submit & (write_pointer_physical[2:0] == 3'h2)) ^ written_2; + valid_2 <= written_2; + written_3 <= (write_submit & (write_pointer_physical[2:0] == 3'h3)) ^ written_3; + valid_3 <= written_3; + written_4 <= (write_submit & (write_pointer_physical[2:0] == 3'h4)) ^ written_4; + valid_4 <= written_4; + written_5 <= (write_submit & (write_pointer_physical[2:0] == 3'h5)) ^ written_5; + valid_5 <= written_5; + end + always @(posedge read_clk) + begin + if (read_consume & (read_pointer_physical[2:0] == 3'h0) & (written_0 ^ valid_0)) + $display ("*** read data 0 not valid for full read clock at %t", $time); + if (read_consume & (read_pointer_physical[2:0] == 3'h1) & (written_1 ^ valid_1)) + $display ("*** read data 1 not valid for full read clock at %t", $time); + if (read_consume & (read_pointer_physical[2:0] == 3'h2) & (written_2 ^ valid_2)) + $display ("*** read data 2 not valid for full read clock at %t", $time); + if (read_consume & (read_pointer_physical[2:0] == 3'h3) & (written_3 ^ valid_3)) + $display ("*** read data 3 not valid for full read clock at %t", $time); + if (read_consume & (read_pointer_physical[2:0] == 3'h4) & (written_4 ^ valid_4)) + $display ("*** read data 4 not valid for full read clock at %t", $time); + if (read_consume & (read_pointer_physical[2:0] == 3'h5) & (written_5 ^ valid_5)) + $display ("*** read data 5 not valid for full read clock at %t", $time); + end + +// Check that there is never more than 5 words in this FIFO. I know, that +// means there only needs to be 5 sets of flops! +// Remember that there MIGHT be more data in the FIFO than the receive side +// thinks, because the Write Pointer might not have been incremented. Also, +// due to jitter, the Write side might get 2 writes (!) in between any 2 +// adjacent Read side clocks. This MIGHT mean that the data can go from +// having 3 entry in it to having 5 entries. Then, as the write clock +// contiues to run fast, the FIFO might work up to having 6 full entries. +// The other excuse I can have to having the extra set of flops is that it +// makes it clear that hold times are met, even when a write happens at +// the exact same time as the read which frees up the 5th entry. +// I feel much more confident with a 6th available entry. + + always @(posedge read_clk) + begin + if (number_of_elements_in_fifo[2:0] >= 3'h6) + $display ("*** %m fatal plesiochronous FIFO got too much data in it at %t", $time); + end +// synopsys translate_on + +// synopsys translate_off + initial + begin + if (TRANSMIT_CLOCK_UNCERTAINTY_PARTS_PER_MILLION <= 0) + begin + $display ("*** Exiting because %m TRANSMIT_CLOCK_UNCERTAINTY_PARTS_PER_MILLION %d <= 0", + TRANSMIT_CLOCK_UNCERTAINTY_PARTS_PER_MILLION); + $finish; + end + if (RECEIVE_CLOCK_UNCERTAINTY_PARTS_PER_MILLION <= 0) + begin + $display ("*** Exiting because %m RECEIVE_CLOCK_UNCERTAINTY_PARTS_PER_MILLION %d <= 0", + RECEIVE_CLOCK_UNCERTAINTY_PARTS_PER_MILLION); + $finish; + end + if (NUMBER_OF_TRANSMIT_CLOCKS_PER_PACKET <= 0) + begin + $display ("*** Exiting because %m NUMBER_OF_TRANSMIT_CLOCKS_PER_PACKET %d <= 0", + NUMBER_OF_TRANSMIT_CLOCKS_PER_PACKET); + $finish; + end + if (TRANSMIT_FIFO_WIDTH <= 0) + begin + $display ("*** Exiting because %m TRANSMIT_FIFO_WIDTH %d <= 0", + TRANSMIT_FIFO_WIDTH); + $finish; + end + if (RECEIVE_FIFO_WIDTH <= 0) + begin + $display ("*** Exiting because %m RECEIVE_FIFO_WIDTH %d <= 0", + RECEIVE_FIFO_WIDTH); + $finish; + end +// NOTE: WORKING: Remove this restriction when this becomes able to write +// data with a different width than the read data port is. +// This will require the clocks to run at the ratio set by +// the rations of the FIFO port widths! + if (TRANSMIT_FIFO_WIDTH != RECEIVE_FIFO_WIDTH) + begin + $display ("*** Exiting because %m TRANSMIT_FIFO_WIDTH != RECEIVE_FIFO_WIDTH %d <= 0", + TRANSMIT_FIFO_WIDTH, RECEIVE_FIFO_WIDTH); + $finish; + end + +// The Sender needs to know that it will not overrun the FIFO even if it is running +// faster than the Receiver. It needs to make careful calculations to make sure +// this is true. +// It knows that the Receiver won't start unloading until it thinks the FIFO is +// at least 1/2 full. But when is the latest this can happen? +// The latest is when the Sender writes word 0, then word 1, BUT the indication +// that word 1 is available does not get latched by the receiver until the +// NEXT clock. At that time, the Sender writes entry 2. +// The Receiver unloads data from word 0 at the same time the sender writes word 3. +// So the FIFO has valid data in locations 1, 2, and 3. +// The FIFO has 3 valid words in it at the start. +// If the Sender writes faster than the Receiver reads, the FIFO can work up to +// having 4 words of valid data in it. +// +// The Receiver needs to know that it will not run out of data if it unloads +// faster than the Sender sends. How can it check this? +// The earliest the Receiver can know that data is available is if the Sender +// writes word 0, the word 1, and the Receiver hears about the data available +// instantly. Then, the Sender writes word 2 while the receiver unloads word 0. +// So the FIFO has valid data in locations 1 and 2. +// The FIFO has 2 words of data in it at the start. +// If the Receiver reads faster than the Sender writes, the FIFO can work down to +// having 1 word of valid data in it. +// +// Having 4 words max and 1 word min are fine constraints on the FIFO's behavior. +// To meet the constraints, the Sender and Receiver clocks must not vary too far +// from one-another. If they got too far apart, too much data would be either +// read or written throught the FIFO. + +// Calculate the maximum clock difference possible. +// NOTE: This calculation will have to take into account different port widths +// with corresponding different port clocks, if and when this is improved to +// allow port size changes across the FIFO. + + if (TRANSMIT_FIFO_CLOCK_SLIP_DEPTH < NUMBER_OF_TRANSMIT_CLOCKS_PER_PACKET) + begin + $display ("*** Exiting because %m TRANSMIT_FIFO_CLOCK_SLIP_DEPTH %d < NUMBER_OF_TRANSMIT_CLOCKS_PER_PACKET %d", + TRANSMIT_FIFO_CLOCK_SLIP_DEPTH, NUMBER_OF_TRANSMIT_CLOCKS_PER_PACKET); + $finish; + end + end +// synopsys translate_on +endmodule + +// `define TEST_PLESIOCHRONOUS_FIFO +`ifdef TEST_PLESIOCHRONOUS_FIFO +module test_plesiochronous_fifo; +// Plan: do a bunch of packets when the Write Clock is faster than the Read Clock +// Then do a bunch of packets when the Read Clock is faster than the Write Clock +// +// Experiment with small clock deltas to change event ordering. +// Print out at run time when the receiver is slipping clocks +// Check that data is strictly incrementing; no drops or repeats + real transmit_clock_period, receive_clock_period; + real transmit_clock_delta, receive_clock_delta; + integer packet_length; + integer packets_to_send; + integer i, j, k, l; + + reg reset_flags_async; + reg write_clk; + reg write_submit; + reg [31:0] write_data; + reg read_clk; + wire read_fifo_half_full; + reg read_consume; + reg [31:0] expected_read_data; + wire [31:0] read_data; + +task read_one_item; + begin + #0; + read_clk = 1'b1; + #receive_clock_period; + read_clk = 1'b0; + #receive_clock_period; + end +endtask + +task write_one_item; + begin + #0; + write_clk = 1'b1; + #transmit_clock_period; + write_clk = 1'b0; + #transmit_clock_period; + end +endtask + +task send_and_check; + begin + fork // Write Clock faster than Read Clock + begin // transmit activity + write_clk = 1'b0; + reset_flags_async = 1'b1; + # 10; + reset_flags_async = 1'b0; + # 10; + # transmit_clock_delta; + write_data[31:0] = 32'h00000000; + for (i = 0; i < packets_to_send; i = i + 1) + begin + write_submit = 1'b1; + for (j = 0; j < packet_length; j = j + 1) + begin + write_data[31:0] = write_data[31:0] + 32'h00000001; + write_one_item; // send 1 data item; + end + write_submit = 1'b0; + write_one_item; // skip a write; + end + end + + begin // receive activity + read_clk = 1'b0; + # 10; + # 10; + # receive_clock_delta; + expected_read_data[31:0] = 32'h00000001; + for (k = 0; k < packets_to_send; k = k + 1) + begin + read_consume = 1'b0; + if (k == 0) // wait for the first one + begin + while (read_fifo_half_full == 1'b0) + begin + read_one_item; // snooze + end + end + else // all subsequent ones should be back-to-back. + begin + if (read_fifo_half_full == 1'b1) + begin + $display ("Reading with 0 delay"); + end + else + begin + read_one_item; // snooze + if (read_fifo_half_full == 1'b1) + begin + $display ("Reading with 1 delay"); + end + else + begin + read_one_item; // snooze + if (read_fifo_half_full == 1'b1) + begin + $display ("Reading with 2 delay"); + end + else + begin + read_one_item; // snooze + if (read_fifo_half_full == 1'b1) + begin + $display ("Reading with 3 delay"); + end + else + begin + $display ("*** Data didn't become available!"); + end + end + end + end + end + read_consume = 1'b1; // this is a combinational copy of read_fifo_half_full! + for (l = 0; l < packet_length; l = l + 1) + begin + if (expected_read_data[31:0] !== read_data[31:0]) + begin + $display ("*** Data wasn't as expected! %h %h", + read_data[31:0], expected_read_data[31:0]); + end + read_one_item; + expected_read_data[31:0] = expected_read_data[31:0] + 32'h0000001; + end + end + end + join + end +endtask + + real normal_clk, fast_clk, slow_clk; + +initial + begin + packet_length = 20; // needed if each clock varies <= 25000 parts per million + packets_to_send = 200; + normal_clk = 5.0; + fast_clk = normal_clk * 0.976; // FAILS if 9.75, 1.025 !?! + slow_clk = normal_clk * 1.024; + + $display ("Same Frequency, no offset"); + transmit_clock_period = normal_clk; + receive_clock_period = normal_clk; + transmit_clock_delta = 0.000; + receive_clock_delta = 0.000; + + send_and_check; + + $display ("Same Frequency, Transmit late"); + transmit_clock_period = normal_clk; + receive_clock_period = normal_clk; + transmit_clock_delta = 0.001; + receive_clock_delta = 0.000; + + send_and_check; + + $display ("Same Frequency, Receive late"); + transmit_clock_period = normal_clk; + receive_clock_period = normal_clk; + transmit_clock_delta = 0.000; + receive_clock_delta = 0.001; + + send_and_check; + + + $display ("Transmit Fast, no offset"); + transmit_clock_period = fast_clk; + receive_clock_period = slow_clk; + transmit_clock_delta = 0.000; + receive_clock_delta = 0.000; + + send_and_check; + + $display ("Transmit Fast, Transmit late"); + transmit_clock_period = fast_clk; + receive_clock_period = slow_clk; + transmit_clock_delta = 0.001; + receive_clock_delta = 0.000; + + send_and_check; + + $display ("Transmit Fast, Receive late"); + transmit_clock_period = fast_clk; + receive_clock_period = slow_clk; + transmit_clock_delta = 0.000; + receive_clock_delta = 0.001; + + send_and_check; + + + $display ("Receive Fast, no offset"); + transmit_clock_period = slow_clk; + receive_clock_period = fast_clk; + transmit_clock_delta = 0.000; + receive_clock_delta = 0.000; + + send_and_check; + + $display ("Receive Fast, Transmit late"); + transmit_clock_period = slow_clk; + receive_clock_period = fast_clk; + transmit_clock_delta = 0.001; + receive_clock_delta = 0.000; + + send_and_check; + + $display ("Receive Fast, Receive late"); + transmit_clock_period = slow_clk; + receive_clock_period = fast_clk; + transmit_clock_delta = 0.000; + receive_clock_delta = 0.001; + + send_and_check; + + end + + +// Instantiation parameters are in order: +// TRANSMIT_CLOCK_UNCERTAINTY_PARTS_PER_MILLION +// RECEIVE_CLOCK_UNCERTAINTY_PARTS_PER_MILLION +// NUMBER_OF_TRANSMIT_CLOCKS_PER_PACKET +// TRANSMIT_FIFO_WIDTH +// RECEIVE_FIFO_WIDTH + +plesiochronous_fifo #(25000, 25000, 20, 32, 32) test_fifo ( + .reset_flags_async (reset_flags_async), + .write_clk (write_clk), + .write_submit (write_submit), + .write_data (write_data[31:0]), + .read_clk (read_clk), + .read_sync_clk (read_clk), + .read_fifo_half_full (read_fifo_half_full), + .read_consume (read_consume), + .read_data (read_data[31:0]) +); +`endif // TEST_PLESIOCHRONOUS_FIFO +endmodule + + Index: common/trunk/synchronizer_flop.v =================================================================== --- common/trunk/synchronizer_flop.v (nonexistent) +++ common/trunk/synchronizer_flop.v (revision 48) @@ -0,0 +1,104 @@ +//=========================================================================== +// $Id: synchronizer_flop.v,v 1.4 2001-09-03 13:18:30 bbeaver Exp $ +// +////////////////////////////////////////////////////////////////////// +//// //// +//// synchronizer_flop //// +//// //// +//// This file is part of the general opencores effort. //// +//// //// +//// //// +//// Module Description: //// +//// //// +//// Make a rising-edge triggered flop with async reset with a //// +//// distinguished name so that it can be replaced with a flop //// +//// which does not make X's during simulation. //// +//// //// +//// This flop should be used instead of a regular flop for ALL //// +//// cross-clock-domain flops. Manually instantiating this //// +//// flop for all signals which must NEVER go to 1'bX during //// +//// simulation will make it possible for the user to //// +//// substitute a simulation model which does NOT have setup //// +//// and hold checks. //// +//// //// +//// If a target device library has a component which is //// +//// especially well suited to perform this function, it should //// +//// be instantiated by name in this file. Otherwise, the //// +//// behaviorial version of this module will be used. //// +//// //// +//// To Do: //// +//// Nothing //// +//// //// +//// Author(s): //// +//// - anynomous //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2001 Authors and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source 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 Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from //// +//// //// +////////////////////////////////////////////////////////////////////// +// +// CVS Revision History +// +// $Log: not supported by cvs2svn $ +// Revision 1.1 2001/09/03 11:16:00 Blue Beaver +// no message +// +// Revision 1.1.1.1 2001/09/03 10:24:58 bbeaver +// no message +// +// Revision 1.1 2001/09/02 11:32:03 Blue Beaver +// no message +// +// + +`timescale 1ns/1ps + +// If the vendor has a flop which is particularly good at settling out of +// metastability, it should be used here. +module synchronizer_flop ( + data_in, clk_out, sync_data_out, async_reset +); + input data_in; + input clk_out; + output sync_data_out; + input async_reset; + + reg sync_data_out; + + always @(posedge clk_out or posedge async_reset) + begin + if (async_reset == 1'b1) + begin + sync_data_out <= 1'b0; + end + else + begin +// In gate-level simulation, must only go to 1'bX if the input is 1'bX or 1'bZ. +// This should NEVER go to 1'bX due to setup or hold violations. + sync_data_out <= data_in; + end + end +endmodule + Index: common/trunk/hamming_ecc_64.v =================================================================== --- common/trunk/hamming_ecc_64.v (nonexistent) +++ common/trunk/hamming_ecc_64.v (revision 48) @@ -0,0 +1,792 @@ +////////////////////////////////////////////////////////////////////// +//// //// +//// hamming_ecc_64 //// +//// //// +//// hamming_ecc_generate_word_with_check_bits_64 //// +//// hamming_ecc_check_and_correct_64 //// +//// //// +//// This file is part of the general opencores effort. //// +//// //// +//// //// +//// Module Description: //// +//// Using Hamming style functions, calculate 72 bits from 64 to //// +//// make a value which can be corrected back to the original //// +//// 64 bits of valid data if a single bit error is applied to //// +//// the 72 bits. //// +//// //// +//// To Do: //// +//// nothing pending //// +//// //// +//// Author(s): //// +//// - Anonymous //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2001 Anonymous and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source 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 Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from //// +//// //// +////////////////////////////////////////////////////////////////////// +// +// $Id: hamming_ecc_64.v,v 1.1 2001-09-03 13:18:30 bbeaver Exp $ +// +// CVS Revision History +// +// $Log: not supported by cvs2svn $ +// Revision 1.1 2001/09/03 13:22:46 Blue Beaver +// no message +// +// + +//=========================================================================== +// +// NOTE: The plan seems to be the following: +// Assign a binary Bit Address to each bit. +// Calculate ECC check bits by XOR'ing the bits together which +// correspond to 1's in each bit's Bit Address; +// (For instance, ECC Check Digit bit 0 XORs together Data_In[1], +// Data_In[3], and so on.) +// You need 7 bits to have enough addresses for all 64 single-bit +// errors, plus the value which covers the case of no errors. +// +// NOTE: But wait, there's more! What if a check bit fails? +// The trick is to have the failing check digit call ITSELF out. +// To achieve this, you have to distribute the check bits +// so that they have nice binary Bit Addresses. +// +// NOTE: There is even more. Every single bit error results in a word +// with wrong parity. But what if 2 bits flip? The parity goes +// back to the original. You can add a parity bit to everything, +// and if the check bits say there is an error but the parity is +// correct that means that 2 bits are wrong. +// The parity bit becomes the 8th bit of the ECC check bits. +// +// NOTE: The web pages discussing this seem to put the parity bit as bit 1 +// in the check bit calculation, the LSB check bit as bit 2, the +// next check bit as bit 4, and so on. +// +// NOTE: Since the parity bit is used to calculate the LSB of the +// check bits, and since it is the XOR of all bits, you have +// to calculate the XOR of the bits you least expect to calculate +// the low-order check bit. The ones with "0" as the LSB of their +// bit address, not "1". +// +// This code was developed using VeriLogger Pro, by Synapticad. +// Their support is greatly appreciated. +// +//=========================================================================== + +`timescale 1ns/1ps + +// Given 64 bits, calculate 7 bits of ECC check bits and 1 bit of parity. +// NOTE: Why a module and not a function? No idea. + +module hamming_ecc_calculate_check_bits_private ( + data_in, + check_bits_out, + par_if_inserting_check_bits_out +); + + parameter NUM_DATA_BITS = 64; // do not override in the instantiation. + parameter NUM_CHECK_BITS = 8; + + input [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] data_in; + output [NUM_CHECK_BITS - 1 : 0] check_bits_out; + output par_if_inserting_check_bits_out; + +// LSB of Check Bits depends on every other input bit. + wire parity_1_3_5_7 = data_in[1] ^ data_in[3] ^ data_in[5] ^ data_in[7]; + wire parity_9_11_13_15 = data_in[9] ^ data_in[11] ^ data_in[13] ^ data_in[15]; + wire parity_17_19_21_23 = data_in[17] ^ data_in[19] ^ data_in[21] ^ data_in[23]; + wire parity_25_27_29_31 = data_in[25] ^ data_in[27] ^ data_in[29] ^ data_in[31]; + wire parity_33_35_37_39 = data_in[33] ^ data_in[35] ^ data_in[37] ^ data_in[39]; + wire parity_41_43_45_47 = data_in[41] ^ data_in[43] ^ data_in[45] ^ data_in[47]; + wire parity_49_51_53_55 = data_in[49] ^ data_in[51] ^ data_in[53] ^ data_in[55]; + wire parity_57_59_61_63 = data_in[57] ^ data_in[59] ^ data_in[61] ^ data_in[63]; + wire parity_65_67_69_71 = data_in[65] ^ data_in[67] ^ data_in[69] ^ data_in[71]; + + wire parity_1_3_5_7_9_11_13_15_17_19_21_23 = + parity_1_3_5_7 ^ parity_9_11_13_15 ^ parity_17_19_21_23; + wire parity_25_27_29_31_33_35_37_39_41_43_45_47 = + parity_25_27_29_31 ^ parity_33_35_37_39 ^ parity_41_43_45_47; + wire parity_49_51_53_55_57_59_61_63_65_67_69_71 = + parity_49_51_53_55 ^ parity_57_59_61_63 ^ parity_65_67_69_71; + + assign check_bits_out[0] = parity_1_3_5_7_9_11_13_15_17_19_21_23 + ^ parity_25_27_29_31_33_35_37_39_41_43_45_47 + ^ parity_49_51_53_55_57_59_61_63_65_67_69_71; + +// second bit depends 2 out of 4 bits + wire parity_2_3_6_7 = data_in[2] ^ data_in[3] ^ data_in[6] ^ data_in[7]; + wire parity_10_11_14_15 = data_in[10] ^ data_in[11] ^ data_in[14] ^ data_in[15]; + wire parity_18_19_22_23 = data_in[18] ^ data_in[19] ^ data_in[22] ^ data_in[23]; + wire parity_26_27_30_31 = data_in[26] ^ data_in[27] ^ data_in[30] ^ data_in[31]; + wire parity_34_35_38_39 = data_in[34] ^ data_in[35] ^ data_in[38] ^ data_in[39]; + wire parity_42_43_46_47 = data_in[42] ^ data_in[43] ^ data_in[46] ^ data_in[47]; + wire parity_50_51_54_55 = data_in[50] ^ data_in[51] ^ data_in[54] ^ data_in[55]; + wire parity_58_59_62_63 = data_in[58] ^ data_in[59] ^ data_in[62] ^ data_in[63]; + wire parity_66_67_70_71 = data_in[66] ^ data_in[67] ^ data_in[70] ^ data_in[71]; + + wire parity_2_3_6_7_10_11_14_15_18_19_22_23 = + parity_2_3_6_7 ^ parity_10_11_14_15 ^ parity_18_19_22_23; + wire parity_26_27_30_31_34_35_38_39_42_43_46_47 = + parity_26_27_30_31 ^ parity_34_35_38_39 ^ parity_42_43_46_47; + wire parity_50_51_54_55_58_59_62_63_66_67_70_71 = + parity_50_51_54_55 ^ parity_58_59_62_63 ^ parity_66_67_70_71; + + assign check_bits_out[1] = parity_2_3_6_7_10_11_14_15_18_19_22_23 + ^ parity_26_27_30_31_34_35_38_39_42_43_46_47 + ^ parity_50_51_54_55_58_59_62_63_66_67_70_71; + +// Higher-numbered bits depend on groups of 4 adjacent input bits. + wire parity_0_3 = ^data_in[3:0]; // XOR reduction + wire parity_4_7 = ^data_in[7:4]; // XOR reduction + wire parity_8_11 = ^data_in[11:8]; // XOR reduction + wire parity_12_15 = ^data_in[15:12]; // XOR reduction + wire parity_16_19 = ^data_in[19:16]; // XOR reduction + wire parity_20_23 = ^data_in[23:20]; // XOR reduction + wire parity_24_27 = ^data_in[27:24]; // XOR reduction + wire parity_28_31 = ^data_in[31:28]; // XOR reduction + wire parity_32_35 = ^data_in[35:32]; // XOR reduction + wire parity_36_39 = ^data_in[39:36]; // XOR reduction + wire parity_40_43 = ^data_in[43:40]; // XOR reduction + wire parity_44_47 = ^data_in[47:44]; // XOR reduction + wire parity_48_51 = ^data_in[51:48]; // XOR reduction + wire parity_52_55 = ^data_in[55:52]; // XOR reduction + wire parity_56_59 = ^data_in[59:56]; // XOR reduction + wire parity_60_63 = ^data_in[63:60]; // XOR reduction + wire parity_64_67 = ^data_in[67:64]; // XOR reduction + wire parity_68_71 = ^data_in[71:68]; // XOR reduction + + wire parity_4_7_12_15_20_23 = parity_4_7 ^ parity_12_15 ^ parity_20_23; + wire parity_28_31_36_39_44_47 = parity_28_31 ^ parity_36_39 ^ parity_44_47; + wire parity_52_55_60_63_68_71 = parity_52_55 ^ parity_60_63 ^ parity_68_71; + + assign check_bits_out[2] = parity_4_7_12_15_20_23 + ^ parity_28_31_36_39_44_47 + ^ parity_52_55_60_63_68_71; + + wire parity_8_11_12_15_24_27 = parity_8_11 ^ parity_12_15 ^ parity_24_27; + wire parity_28_31_40_43_44_47 = parity_28_31 ^ parity_40_43 ^ parity_44_47; + wire parity_56_59_60_63 = parity_56_59 ^ parity_60_63; + + assign check_bits_out[3] = parity_8_11_12_15_24_27 + ^ parity_28_31_40_43_44_47 + ^ parity_56_59_60_63; + + wire parity_16_19_20_23_24_27 = parity_16_19 ^ parity_20_23 ^ parity_24_27; + wire parity_28_31_48_51_52_55 = parity_28_31 ^ parity_48_51 ^ parity_52_55; + + assign check_bits_out[4] = parity_16_19_20_23_24_27 + ^ parity_28_31_48_51_52_55 + ^ parity_56_59_60_63; + + wire parity_32_35_36_39_40_43 = parity_32_35 ^ parity_36_39 ^ parity_40_43; + wire parity_44_47_48_51_52_55 = parity_44_47 ^ parity_48_51 ^ parity_52_55; + + wire parity_second_quarter = parity_32_35_36_39_40_43 + ^ parity_44_47_48_51_52_55 + ^ parity_56_59_60_63; + + assign check_bits_out[5] = parity_second_quarter; + + wire parity_third_quarter = parity_64_67 ^ parity_68_71; + + assign check_bits_out[6] = parity_third_quarter; + +// NOTE: In the generate case, the Check Bit inputs to this function come in +// as all 0's. The generator wants to calculate parity across all bits, +// including Check Bits! +// The slow, inexpensive way to do this is to calculate the odd parity of +// the data including 0's for Check Bits, then XOR that with all of +// the check bits to get the actual word checksum. +// A faster way to do this is to calculate the final checksum directly. +// This starts out by XOR'ing all the Data Bits together. BUT notice +// that the ECC bits contain XOR's of bits in the data. If you +// XOR the Check Bits with the XOR of the Data Bits, some of the +// dependencies on certain data bits go away! +// This function therefore only bothers to calculate the XOR of the bits +// which are not rendered don't cares by the XORing of the check bits. + + wire parity_0_3_5_6 = data_in[0] ^ data_in[3] ^ data_in[5] ^ data_in[6]; + wire parity_9_10_12_15 = data_in[9] ^ data_in[10] ^ data_in[12] ^ data_in[15]; + wire parity_17_18_20_23 = data_in[17] ^ data_in[18] ^ data_in[20] ^ data_in[23]; + wire parity_24_27_29_30 = data_in[24] ^ data_in[27] ^ data_in[29] ^ data_in[30]; + wire parity_33_34_36_39 = data_in[33] ^ data_in[34] ^ data_in[36] ^ data_in[39]; + wire parity_40_43_45_46 = data_in[40] ^ data_in[43] ^ data_in[45] ^ data_in[46]; + wire parity_48_51_53_54 = data_in[48] ^ data_in[51] ^ data_in[53] ^ data_in[54]; + wire parity_57_58_60_63 = data_in[57] ^ data_in[58] ^ data_in[60] ^ data_in[63]; + wire parity_65_66_68_71 = data_in[65] ^ data_in[66] ^ data_in[68] ^ data_in[71]; + + wire parity_0_3_5_6_9_10_12_15_17_18_20_23 = + parity_0_3_5_6 ^ parity_9_10_12_15 ^ parity_17_18_20_23; + wire parity_24_27_29_30_33_34_36_39_40_43_45_46 = + parity_24_27_29_30 ^ parity_33_34_36_39 ^ parity_40_43_45_46; + wire parity_48_51_53_54_57_58_60_63 = + parity_48_51_53_54 ^ parity_57_58_60_63 ^ parity_65_66_68_71; + + assign par_if_inserting_check_bits_out = + parity_0_3_5_6_9_10_12_15_17_18_20_23 + ^ parity_24_27_29_30_33_34_36_39_40_43_45_46 + ^ parity_48_51_53_54_57_58_60_63; + +// The module which checks ECC values actually has to look at all the data. +// Reuse calculations which have already been done. + + wire parity_0_3_8_11_16_19 = parity_0_3 ^ parity_8_11 ^ parity_16_19; + wire parity_24_27_28_31 = parity_24_27 ^ parity_28_31; + + wire parity_first_quarter = parity_0_3_8_11_16_19 + ^ parity_4_7_12_15_20_23 + ^ parity_24_27_28_31; + + assign check_bits_out[7] = parity_first_quarter + ^ parity_second_quarter + ^ parity_third_quarter; +endmodule + +// Given a 64-bit word (with no errors), calculate the 72-bit word which +// will be stored to allow ECC to recover the original 64 bits in case of +// a single bit error. + +module hamming_ecc_generate_word_with_check_bits_64 ( + data_in, + data_plus_ecc_out, + clk +); + + parameter NUM_DATA_BITS = 64; // do not override in the instantiation. + parameter NUM_CHECK_BITS = 8; + + input [NUM_DATA_BITS - 1 : 0] data_in; + output [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] data_plus_ecc_out; + input clk; + + wire [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] input_vector = + {data_in[63:57], 1'b0, // check digit 6, bit 64 + data_in[56:26], 1'b0, // check digit 5, bit 32 + data_in[25:11], 1'b0, // check digit 4, bit 16 + data_in[10:4], 1'b0, // check digit 3, bit 8 + data_in[3:1], 1'b0, // check digit 2, bit 4 + data_in[0], 1'b0, // check digit 1, bit 2 + 1'b0, 1'b1}; // check digit 0, bit 0 == 1 says odd parity + + wire [NUM_CHECK_BITS - 1 : 0] check_bits_out; + wire par_if_inserting_check_bits_out; + +hamming_ecc_calculate_check_bits_private generate_ecc_bits ( + .data_in (input_vector[NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0]), + .check_bits_out (check_bits_out[NUM_CHECK_BITS - 1 : 0]), + .par_if_inserting_check_bits_out (par_if_inserting_check_bits_out) +); + +// Insert check bits into their nice power-of-2 locations, so they can call +// themselves out if they read in error. + wire [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] reordered_data_plus_ecc = + {data_in[63:57], check_bits_out[6], // check digit 6, bit 64 + data_in[56:26], check_bits_out[5], // check digit 5, bit 32 + data_in[25:11], check_bits_out[4], // check digit 4, bit 16 + data_in[10:4], check_bits_out[3], // check digit 3, bit 8 + data_in[3:1], check_bits_out[2], // check digit 2, bit 4 + data_in[0], check_bits_out[1], // check digit 1, bit 2 + check_bits_out[0], // check digit 0, bit 1 + par_if_inserting_check_bits_out}; // odd parity, bit 0 + + reg [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] data_plus_ecc_out; + + always @(posedge clk) + begin + data_plus_ecc_out[NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] <= + reordered_data_plus_ecc[NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0]; + end +endmodule + +// Given 64 bits, plus 7 bits of ECC check bits and 1 bit of parity, +// discover if the data is correct. +// If 1 bit is wrong, correct it and report the problem. +// If 2 bits are wrong, report the problem. +// If an unexpected bit error position comes out, report that as an error. +// If more than 2 bits are wrong, you are hosed. Most are not detected. +// +// The error_addressvalue is encoded. It means this: +// Error Value 0: no error +// Error Value 1: check bit 0 is wrong +// Error Value 2: check bit 1 is wrong +// Error Value 3: data bit 0 is wrong +// Error Value 4: check bit 2 is wrong +// Error Values 7:5: data bits 3:1 are wrong +// Error Value 8: check bit 3 is wrong +// Error Values 15:9: data bits 10:4 are wrong +// Error Value 16: check bit 4 is wrong +// Error Values 31:17: data bits 25:11 are wrong +// Error Value 32: check bit 5 is wrong +// Error Values 63:32: data bits 56:26 are wrong +// Error Value 64: check bit 6 is wrong +// Error Values 71:65: data bits 63:57 are wrong +// Error Value 72: check bit 7 is wrong + +module hamming_ecc_check_and_correct_64 ( + data_plus_ecc_in, + corrected_data_out, + corrected_check_bits_out, + single_bit_error_corrected, + double_bit_error_detected, + error_address, + clk +); + + parameter NUM_DATA_BITS = 64; // do not override in the instantiation. + parameter NUM_CHECK_BITS = 8; + + input [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] data_plus_ecc_in; + + output [NUM_DATA_BITS - 1 : 0] corrected_data_out; + output [NUM_CHECK_BITS - 1 : 0] corrected_check_bits_out; + + output single_bit_error_corrected; + output double_bit_error_detected; + + output [6:0] error_address; + + input clk; + +// If there is an error, the XOR of the calculated and stored Check Bits +// gives the address of the failing bit. +// The calculate_check_bits module, when applied to a word containing check bits, +// will do the XOR automatically. The output is the address of the failing bit. + wire [NUM_CHECK_BITS - 1 : 0] check_bits; + wire par_if_inserting_check_bits_out; // ignore + +hamming_ecc_calculate_check_bits_private check_ecc_bits ( + .data_in (data_plus_ecc_in[NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0]), + .check_bits_out (check_bits[NUM_CHECK_BITS - 1 : 0]), + .par_if_inserting_check_bits_out (par_if_inserting_check_bits_out) +); + + wire parity_error_detected = ~check_bits[7]; // If data was Odd Parity, return 1'b1; + + wire parity_bit_wrong = (check_bits[6:0] == 7'h00) & parity_error_detected; + + wire correction_needed = (check_bits[6:0] != 7'h00) // non-zero means correct! + | parity_bit_wrong; + + wire unexpected_error_address = (check_bits[6:0] >= 8'h48); // >= 72 + +// If there is an error, need to make a mask to XOR with the data in order to +// get the corrected data back. +// Verilogger seems to be in a core-dumping mood with a straight-forward shift. +// Doing things manually will result in better logic, anyway. + wire [1:0] mask_0 = check_bits[0] ? 2'b10 : 2'b01; + wire [3:0] mask_1 = check_bits[1] + ? {mask_0[1:0], 2'b00} + : {2'b00, mask_0[1:0]}; + wire [7:0] mask_2 = check_bits[2] + ? {mask_1[3:0], 4'h0} + : {4'h0, mask_1[3:0]}; + wire [15:0] mask_3 = check_bits[3] + ? {mask_2[7:0], 8'h00} + : {8'h00, mask_2[7:0]}; + wire [31:0] mask_4 = check_bits[4] + ? {mask_3[15:0], 16'h0000} + : {16'h0000, mask_3[15:0]}; + wire [63:0] mask_5 = check_bits[5] + ? {mask_4[31:0], 32'h00000000} + : {32'h00000000, mask_4[31:0]}; + wire [71:0] mask_6 = check_bits[6] + ? {mask_5[7:0], 64'h00000000_00000000} + : {8'h00, mask_5[63:0]}; + + wire [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] error_corrected_data = + data_plus_ecc_in[NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] + ^ {mask_6[71:1], parity_bit_wrong}; + + wire [NUM_DATA_BITS - 1 : 0] reordered_corrected_data = + {error_corrected_data[71:65], + error_corrected_data[63:33], + error_corrected_data[31:17], + error_corrected_data[15:9], + error_corrected_data[7:5], + error_corrected_data[3]}; + + wire [NUM_CHECK_BITS - 1 : 0] reordered_corrected_check_bits = + {error_corrected_data[0], + error_corrected_data[64], + error_corrected_data[32], + error_corrected_data[16], + error_corrected_data[8], + error_corrected_data[4], + error_corrected_data[2], + error_corrected_data[1]}; + + reg [NUM_DATA_BITS - 1 : 0] corrected_data_out; + reg [NUM_CHECK_BITS - 1 : 0] corrected_check_bits_out; + reg single_bit_error_corrected; + reg double_bit_error_detected; + reg [6:0] error_address; + + always @(posedge clk) + begin + corrected_data_out[NUM_DATA_BITS - 1 : 0] <= + reordered_corrected_data[NUM_DATA_BITS - 1 : 0]; + corrected_check_bits_out[NUM_CHECK_BITS - 1 : 0] <= + reordered_corrected_check_bits[NUM_CHECK_BITS - 1 : 0]; + single_bit_error_corrected <= correction_needed & parity_error_detected; + double_bit_error_detected <= (correction_needed & ~parity_error_detected) + | unexpected_error_address; + error_address[6:0] <= parity_bit_wrong + ? 8'h48 // 72 + : check_bits[6:0]; + end +endmodule + +// `define TEST_HAMMING_ECC_CODE +`ifdef TEST_HAMMING_ECC_CODE +module test_ecc (); + + parameter NUM_DATA_BITS = 64; // do not override in the instantiation. + parameter NUM_CHECK_BITS = 8; + + reg clk; + reg [NUM_DATA_BITS - 1 : 0] data_in; + wire [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] data_plus_ecc_out; + wire [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] data_plus_ecc_in; + reg [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] force_error; + wire [NUM_DATA_BITS - 1 : 0] corrected_data_out; + wire [NUM_CHECK_BITS - 1 : 0] corrected_check_bits_out; + wire single_bit_error_corrected; + wire double_bit_error_detected; + wire [6:0] error_address; + + reg [NUM_DATA_BITS - 1 : 0] data_pattern; + reg [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] error_mask_1; + reg [NUM_DATA_BITS + NUM_CHECK_BITS - 1 : 0] error_mask_2; + integer cnt; + +task make_clk; + begin + # 1; + clk = 1'b1; + # 2; + clk = 1'b0; + # 1; + end +endtask + + wire [NUM_CHECK_BITS - 1 : 0] original_check_bits = + {data_plus_ecc_out[0], + data_plus_ecc_out[64], + data_plus_ecc_out[32], + data_plus_ecc_out[16], + data_plus_ecc_out[8], + data_plus_ecc_out[4], + data_plus_ecc_out[2], + data_plus_ecc_out[1]}; + + initial + begin + clk = 1'b0; + + $display ("Walking a 1"); +// need to check that walking 1 bit goes through correctly. + for (data_pattern = 64'h00000000_00000001; + data_pattern != 64'h0; + data_pattern = data_pattern << 1) + begin + data_in = data_pattern; + force_error = 72'h00_00000000_00000000; + make_clk; + make_clk; + if (data_in !== corrected_data_out) + $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); + if (original_check_bits !== corrected_check_bits_out) + $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); + if (single_bit_error_corrected !== 1'b0) + $display ("*** Unexpected Single Bit Error Detected %x %x %x", + single_bit_error_corrected, data_pattern, data_plus_ecc_in); + if (double_bit_error_detected !== 1'b0) + $display ("*** Unexpected Double Bit Error Detected %x %x %x", + double_bit_error_detected, data_pattern, data_plus_ecc_in); + end + + $display ("Walking a 0"); +// need to check that walking 0 bit goes through correctly. + for (data_pattern = 64'h00000000_00000001; + data_pattern != 64'h0; + data_pattern = data_pattern << 1) + begin + data_in = ~data_pattern; + force_error = 72'h00_00000000_00000000; + make_clk; + make_clk; + if (corrected_data_out !== data_in) + $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); + if (original_check_bits !== corrected_check_bits_out) + $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); + if (single_bit_error_corrected !== 1'b0) + $display ("*** Unexpected Single Bit Error Detected %x %x %x", + single_bit_error_corrected, data_pattern, data_plus_ecc_in); + if (double_bit_error_detected !== 1'b0) + $display ("*** Unexpected Double Bit Error Detected %x %x %x", + double_bit_error_detected, data_pattern, data_plus_ecc_in); + end + + $display ("Sending Random Data"); +// need to check that walking 0 bit goes through correctly. + for (cnt = 0; cnt < 1000; cnt = cnt + 1) + begin + data_in = {$random, $random}; + force_error = 72'h00_00000000_00000000; + make_clk; + make_clk; + if (corrected_data_out !== data_in) + $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); + if (original_check_bits !== corrected_check_bits_out) + $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); + if (single_bit_error_corrected !== 1'b0) + $display ("*** Unexpected Single Bit Error Detected %x %x %x", + single_bit_error_corrected, data_pattern, data_plus_ecc_in); + if (double_bit_error_detected !== 1'b0) + $display ("*** Unexpected Double Bit Error Detected %x %x %x", + double_bit_error_detected, data_pattern, data_plus_ecc_in); + end + + $display ("Making 0 go to 1, even parity, error check"); +// need to check that 1 bit which should be 0 is detected correctly, even parity. + for (error_mask_1 = 72'h00_00000000_00000001; + error_mask_1 != 72'h0; + error_mask_1 = error_mask_1 << 1) + begin + data_in = 64'h00000000_00000000; + force_error = error_mask_1; + make_clk; + make_clk; + if (corrected_data_out !== data_in) + $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); + if (original_check_bits !== corrected_check_bits_out) + $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); + if (single_bit_error_corrected !== 1'b1) + $display ("*** Expected Single Bit Error Missed %x %x %x", + single_bit_error_corrected, error_mask_1, data_plus_ecc_in); + if (double_bit_error_detected !== 1'b0) + $display ("*** Unexpected Double Bit Error Detected %x %x %x", + double_bit_error_detected, error_mask_1, data_plus_ecc_in); + if ( (error_mask_1 == 72'h00_00000000_00000001) + & (error_address != 8'h48) ) + $display ("*** Parity Error calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + if ( (error_mask_1 == 72'h00_00000000_00000001) + & (error_address != 8'h48) ) + $display ("*** Bit 0 calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + if ( (error_mask_1 == 72'h80_00000000_00000000) + & (error_address != 8'h47) ) + $display ("*** Bit 71 calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + end + + $display ("Making 0 go to 1, odd parity, error check"); +// need to check that 1 bit which should be 0 is detected correctly, odd parity. + for (error_mask_1 = 72'h00_00000000_00000001; + error_mask_1 != 72'h0; + error_mask_1 = error_mask_1 << 1) + begin + data_in = 64'h10000000_00000000; + force_error = error_mask_1; + make_clk; + make_clk; + if (corrected_data_out !== data_in) + $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); + if (original_check_bits !== corrected_check_bits_out) + $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); + if (single_bit_error_corrected !== 1'b1) + $display ("*** Expected Single Bit Error Missed %x %x %x", + single_bit_error_corrected, error_mask_1, data_plus_ecc_in); + if (double_bit_error_detected !== 1'b0) + $display ("*** Unexpected Double Bit Error Detected %x %x %x", + double_bit_error_detected, error_mask_1, data_plus_ecc_in); + if ( (error_mask_1 == 72'h00_00000000_00000001) + & (error_address != 8'h48) ) + $display ("*** Parity Error calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + if ( (error_mask_1 == 72'h00_00000000_00000001) + & (error_address != 8'h48) ) + $display ("*** Bit 0 calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + if ( (error_mask_1 == 72'h80_00000000_00000000) + & (error_address != 8'h47) ) + $display ("*** Bit 71 calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + end + + $display ("Making 1 go to 0, even parity, error check"); +// need to check that 0 bit which should be 1 is detected correctly, even parity. + for (error_mask_1 = 72'h00_00000000_00000001; + error_mask_1 != 72'h0; + error_mask_1 = error_mask_1 << 1) + begin + data_in = 64'hFFFFFFFF_FFFFFFFF; + force_error = error_mask_1; + make_clk; + make_clk; + if (corrected_data_out !== data_in) + $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); + if (original_check_bits !== corrected_check_bits_out) + $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); + if (single_bit_error_corrected !== 1'b1) + $display ("*** Expected Single Bit Error Missed %x %x %x", + single_bit_error_corrected, error_mask_1, data_plus_ecc_in); + if (double_bit_error_detected !== 1'b0) + $display ("*** Unexpected Double Bit Error Detected %x %x %x", + double_bit_error_detected, error_mask_1, data_plus_ecc_in); + if ( (error_mask_1 == 72'h00_00000000_00000001) + & (error_address != 8'h48) ) + $display ("*** Parity Error calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + if ( (error_mask_1 == 72'h00_00000000_00000001) + & (error_address != 8'h48) ) + $display ("*** Bit 0 calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + if ( (error_mask_1 == 72'h80_00000000_00000000) + & (error_address != 8'h47) ) + $display ("*** Bit 71 calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + end + + $display ("Making 1 go to 0, odd parity, error check"); +// need to check that 0 bit which should be 1 is detected correctly, odd parity. + for (error_mask_1 = 72'h00_00000000_00000001; + error_mask_1 != 72'h0; + error_mask_1 = error_mask_1 << 1) + begin + data_in = 64'hFFFFFFFF_FFFFFFFE; + force_error = error_mask_1; + make_clk; + make_clk; + if (corrected_data_out !== data_in) + $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); + if (original_check_bits !== corrected_check_bits_out) + $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); + if (single_bit_error_corrected !== 1'b1) + $display ("*** Expected Single Bit Error Missed %x %x %x", + single_bit_error_corrected, error_mask_1, data_plus_ecc_in); + if (double_bit_error_detected !== 1'b0) + $display ("*** Unexpected Double Bit Error Detected %x %x %x", + double_bit_error_detected, error_mask_1, data_plus_ecc_in); + if ( (error_mask_1 == 72'h00_00000000_00000001) + & (error_address != 8'h48) ) + $display ("*** Parity Error calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + if ( (error_mask_1 == 72'h00_00000000_00000001) + & (error_address != 8'h48) ) + $display ("*** Bit 0 calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + if ( (error_mask_1 == 72'h80_00000000_00000000) + & (error_address != 8'h47) ) + $display ("*** Bit 71 calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + end + + $display ("Walking error, random data, error check"); +// need to check that 0 bit which should be 1 is detected correctly, odd parity. + for (error_mask_1 = 72'h00_00000000_00000001; + error_mask_1 != 72'h0; + error_mask_1 = error_mask_1 << 1) + begin + for (cnt = 0; cnt < 25; cnt = cnt + 1) + begin + data_in = {$random, $random}; + force_error = error_mask_1; + make_clk; + make_clk; + if (corrected_data_out !== data_in) + $display ("*** Data In != Data Out %x %x", data_in, corrected_data_out); + if (original_check_bits !== corrected_check_bits_out) + $display ("*** Check Bits In != Check Bits Out %x %x", original_check_bits, corrected_check_bits_out); + if (single_bit_error_corrected !== 1'b1) + $display ("*** Expected Single Bit Error Missed %x %x %x", + single_bit_error_corrected, error_mask_1, data_plus_ecc_in); + if (double_bit_error_detected !== 1'b0) + $display ("*** Unexpected Double Bit Error Detected %x %x %x", + double_bit_error_detected, error_mask_1, data_plus_ecc_in); + if ( (error_mask_1 == 72'h00_00000000_00000001) + & (error_address != 8'h48) ) + $display ("*** Parity Error calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + if ( (error_mask_1 == 72'h00_00000000_00000001) + & (error_address != 8'h48) ) + $display ("*** Bit 0 calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + if ( (error_mask_1 == 72'h80_00000000_00000000) + & (error_address != 8'h47) ) + $display ("*** Bit 71 calls out wrong bit offset %x %x", + error_address, data_plus_ecc_in); + end + end + + $display ("testing 2-bit errors, random data, error check"); +// need to check 2 bit errors detected. + for (error_mask_1 = 72'h00_00000000_00000001; + error_mask_1 != 72'h80_00000000_00000000; + error_mask_1 = error_mask_1 << 1) + begin + for (error_mask_2 = error_mask_1 << 1; + error_mask_2 != 72'h0; + error_mask_2 = error_mask_2 << 1) + begin + if (error_mask_1 != error_mask_2) + begin + data_in = {$random, $random}; + force_error = error_mask_1 | error_mask_2; + make_clk; + make_clk; + if (single_bit_error_corrected !== 1'b0) + $display ("*** Unexpected Single Bit Error Detected %x %x %x", + single_bit_error_corrected, error_mask_1, data_plus_ecc_in); + if (double_bit_error_detected !== 1'b1) + $display ("*** Expected Double Bit Error Missed %x %x %x", + double_bit_error_detected, error_mask_1, data_plus_ecc_in); + end + end + end + end + +hamming_ecc_generate_word_with_check_bits_64 generate ( + .data_in (data_in), + .data_plus_ecc_out (data_plus_ecc_out), + .clk (clk) +); + + assign data_plus_ecc_in[71:0] = data_plus_ecc_out ^ force_error; + +hamming_ecc_check_and_correct_64 check_and_correct ( + .data_plus_ecc_in (data_plus_ecc_in), + .corrected_data_out (corrected_data_out), + .corrected_check_bits_out (corrected_check_bits_out), + .single_bit_error_corrected (single_bit_error_corrected), + .double_bit_error_detected (double_bit_error_detected), + .error_address (error_address), + .clk (clk) +); + +endmodule +`endif // TEST_HAMMING_ECC_CODE + Index: common/trunk/Readme =================================================================== --- common/trunk/Readme (nonexistent) +++ common/trunk/Readme (revision 48) @@ -0,0 +1,49 @@ +// This directory contains files which are too small to be projects in themselves. +// +// Examples of such files might be: +// prototype copyright files +// parameterizable cell libraries +// files which implement some interesting low-level function +// files which are used as components in several projects +// +// Each file should be self-documenting so that a quick glance would serve +// to explain what it is and why it is here. +// +// As a courtesy, each file could also have a small entry here to make it +// easy to browse the directory looking for interesting stuff. +// +// "opencores_copyright.v" is an example of a copyright file one might +// include to control the use and abuse of a file stored in this web site. +// +// "synchronizer_flop.v" is a behaviorial description of a 1-bit flop. +// It should be manually instantiated in EACH AND EVERY MODULE which +// uses a flop to synchronize a signal from one clock domain to another. +// In real use, the user of this file will generate a simulation module +// which will behave like a normal flop when presented with 1, 0, X, or Z. +// This special-purpose module will NOT have setup and hold tests. It will +// NOT convert a valid value into an X due to setup timing being violated. +// This module makes it possible to simulate gate-level netlists with +// multiple clock domains without fear of making inappropriate X's. +// +// "grey_to_binary.v" is an example of code which takes a binary number +// and converts it to grey code, and vice versa. +// This module has a parameter which describes how wide the operands +// are. +// This module does not use for-loops to generate the functions. Instead, +// it manually does the translation for widths up to 16 bits. +// If the user wants fewer bits, the synthesis tool removes the extra. +// +// "plesiochronous_fifo.v" is an example of a FIFO which transfers packets +// between two clock domains. +// The clocks are REQUIRED to be close to one-another in frequency. +// The Writer is REQUIRED to skip writes every so often, to make sure that +// the FIFO doesn't overflow. +// This file instantiates the synchronizer_flop mentioned above. +// +// "hamming_ecc_64.v" is an example of how to use 8 bits of redundant data to +// correct single-bit errors and detect double-bit errors in 64 bits of data. +// There are probably better ways to reorder the terms to reduce loads, and +// to change the formulas to detect a larger percentage of likely errors. +// + + Index: common/trunk/opencores_copyright.v =================================================================== --- common/trunk/opencores_copyright.v (nonexistent) +++ common/trunk/opencores_copyright.v (revision 48) @@ -0,0 +1,50 @@ +////////////////////////////////////////////////////////////////////// +//// //// +//// YOUR MODULE OR FILE NAME HERE //// +//// //// +//// This file is part of the YOUR PROJECT NAME opencores effort. //// +//// //// +//// //// +//// Module Description: //// +//// YOUR MODULE DESCRIPTION //// +//// //// +//// To Do: //// +//// YOUR STATE HERE //// +//// //// +//// Author(s): //// +//// - YOUR NAME HERE //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2001 YOUR NAME HERE and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source 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 Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from //// +//// //// +////////////////////////////////////////////////////////////////////// +// +// \$Id\$ TAKE OUT THE \'s and this comment in order to get this to work +// +// CVS Revision History +// +// \$Log\$ TAKE OUT THE \'s and this comment in order to get this to work +// +

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.