本文寫了一個字符串排序時使用的比較功能,可以用於數字、字母、特殊字符、漢字等任意組合的字符串進行了逐字比較
demo.c
/* ************************************************************************
* Filename: demo.c
* Description:
* Version: 1.0
* Created: 2019年02月23日 17時23分23秒
* Revision: none
* Compiler: gcc
* Author: YOUR NAME (),
* Company:
* ************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "demo.h"
char str1_array[][32] = {"123", "12345", "123你好", "#@123", "123@#", "#@%^&", "@你好", "啊", "你好", "啊你好哈哈", "abc", "abcde", "abc你好", "#@abc"};
char str2_array[][32] = {"123", "12345", "123你好", "#@123", "123@#", "#@%^&", "@你好", "啊", "你好", "啊你好哈哈", "abc", "abcde", "abc你好", "#@abc"};
int main(int argc, char *argv[])
{
int i = 0;
int j = 0;
int str1_count = sizeof(str1_array)/sizeof(str1_array[0]);
int str2_count = sizeof(str2_array)/sizeof(str2_array[0]);
pinyin_t* py = pinyin_init();
for(i=0; i<str1_count; i++){
for(j=0; j<str2_count; j++){
mystrcmp(str1_array[i], str2_array[j], py);
}
printf("**************************************\n");
}
return 0;
}
void mystrcmp(const char* str1, const char* str2, pinyin_t* py){
int ret = _strcmp(str1, str2, py);
printf("\t\t\t");
if(ret == 0){
printf("[%s] == [%s]\n", str1, str2);
}else if(ret > 0){
printf("[%s] > [%s]\n", str1, str2);
}else if(ret < 0){
printf("[%s] < [%s]\n", str1, str2);
}else{
printf("ERROR!\n");
}
}
int _strcmp(const char* s0, const char* s1, pinyin_t* py) {
while ( *s0 && *s1) {
int s0_type = is_char_type(*s0);
int s1_type = is_char_type(*s1);
int s0_step = (s0_type == 2) ? enc_get_utf8_size(*s0) : 1;
int s1_step = (s1_type == 2) ? enc_get_utf8_size(*s1) : 1;
if(s0_type > s1_type){
return 1;
}
if(s0_type < s1_type){
return -1;
}
if(s0_type == s1_type && s0_type < 2){
if(*s0 > *s1){
return 1;
}
if(*s0 < *s1){
return -1;
}
}
if(s0_type == s1_type && s0_type == 2){
unsigned short p0[128];
unsigned short p1[128];
const char* bs0 = s0;
const char* bs1 = s1;
char r0, r1;
utf8towstr((char *)bs0, strlen(s0), (wchar_t*)p0, sizeof(p0));
utf8towstr((char *)bs1, strlen(s1), (wchar_t*)p1, sizeof(p1));
p0[1] = 0x0000;
p1[1] = 0x0000;
//漢字判斷
r0 = toPinyin(py, p0[0]);
r1 = toPinyin(py, p1[0]);
if(r0 > r1){
return 1;
}
if(r0 < r1){
return -1;
}
}
s0 += s0_step;
s1 += s1_step;
//任意字符串結束時,比較剩餘的長度
if(strlen(s0) > 0 && strlen(s1) == 0){
return 1;
}
if(strlen(s0) == 0 && strlen(s1) > 0){
return -1;
}
}
return 0;
}
int is_char_type(unsigned char c) {
if((c >='0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >='A' && c <= 'Z')){
return 1; //數字和字母
}
if(!(c & 0x80)){
return 0; //特殊字符
}
return 2; //漢字
}
void utf8towstr(const char* sutf8, size_t nutf8, wchar_t* sunicode, size_t nunicode) {
size_t totalNum = 0;
const char *p;
const char *p_end;
uint32_t i;
char* tmp;
char t1 = 0;
char t2 = 0;
if(sunicode == NULL || sutf8 == NULL || nutf8<0){
return;
}
p = sutf8;
p_end = sutf8 + nutf8;
for(i=0;i<nutf8 && p<=p_end;i++) {
if (*p >= 0x00 && *p <= 0x7f) {
p++;
totalNum += 1;
} else if ((*p & (0xe0))== 0xc0) {
p++;
p++;
totalNum += 1;
} else if ((*p & (0xf0))== 0xe0) {
p++;
p++;
p++;
totalNum += 1;
}
}
if( nunicode < totalNum ) {
return;
}
p = sutf8;
p_end = sutf8 + nutf8;
tmp = (char *)sunicode;
while(*p && p<=p_end) {
if (*p >= 0x00 && *p <= 0x7f) {
*tmp = *p;
tmp++;
//*tmp = '/0';
tmp++;
} else if ((*p & 0xe0)== 0xc0){
t1 = *p & (0x1f);
p++;
t2 = *p & (0x3f);
*tmp = t2 | ((t1 & (0x03)) << 6);
tmp++;
*tmp = t1 >> 2;
tmp++;
} else if ((*p & (0xf0))== 0xe0) {
wchar_t t1 = 0;
wchar_t t2 = 0;
wchar_t t3 = 0;
t1 = *p & (0x1f);
p++;
t2 = *p & (0x3f);
p++;
t3 = *p & (0x3f);
*tmp = ((t2 & (0x03)) << 6) | t3;
tmp++;
*tmp = (t1 << 4) | (t2 >> 2);
tmp++;
}
p++;
}
return;
}
int enc_get_utf8_size(const unsigned char pInput){
unsigned char c = pInput;
// 0xxxxxxx 返回0
// 10xxxxxx 不存在
// 110xxxxx 返回2
// 1110xxxx 返回3
// 11110xxx 返回4
// 111110xx 返回5
// 1111110x 返回6
//if(c< 0x80) return 0;
//if(c>=0x80 && c<0xC0) return -1;
if(c>=0xC0 && c<0xE0) return 2;
if(c>=0xE0 && c<0xF0) return 3;
if(c>=0xF0 && c<0xF8) return 4;
if(c>=0xF8 && c<0xFC) return 5;
if(c>=0xFC) return 6;
return 1;
}
pinyin_t* pinyin_init(void) {
int fsize = 0;
pinyin_t* py = NULL;
unsigned char* data = NULL;
fsize = (ZH_UNICODE_END - ZH_UNICODE_BEGIN + 1);
data = (unsigned char*)malloc(fsize);
py = (pinyin_t*)malloc(sizeof(pinyin_t));
memset(py, 0, sizeof(pinyin_t));
py->data = PINYIN;
return py;
}
char toPinyin(pinyin_t* pyfl, const unsigned short unicode) {
char* data = PINYIN;
if( IS_ZH(unicode) ) {
return data[unicode-ZH_UNICODE_BEGIN];
} else {
return 0;
}
}
demo.h
#define ZH_UNICODE_BEGIN 0x4E00
#define ZH_UNICODE_END 0x9FA5
#define IS_ZH(w) ( (w) >= ZH_UNICODE_BEGIN && (w) <= ZH_UNICODE_END )
typedef unsigned int uint32_t;
typedef struct _pinyin_t{
unsigned char* data;
}pinyin_t;
pinyin_t* pinyin_init(void);
int is_char_type(unsigned char c);
void utf8towstr(const char* sutf8, size_t nutf8, wchar_t* sunicode, size_t nunicode);
char toPinyin(pinyin_t* pyfl, const unsigned short unicode);
int _strcmp(const char* s0, const char* s1, pinyin_t* py);
void mystrcmp(const char* str1, const char* str2, pinyin_t* py);
int enc_get_utf8_size(const unsigned char pInput);
#define PINYIN "YDKQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSGJGYZZJJFGCCLZZHWDWZJLJPFYYNWJJTMYHZWZHFLYPPQHGCCYYWMJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQLGGLLYJLMYZSSECYKYYHQWJSSGGYXYQYJPWKDJHYCHMYXJTLXJYQBYXDLDMRPJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXTHTRQGYBDLSCCSSYMMRFCYQZPWWJJFFCLWFDFZQPYDDWYXKYJAWJFFXJPDFTZYHHYCYSWCCYQSCLCXXWZZXNBGNNXBXLZSQCBSJPYSCZDGMDZBQBZCWDZZYYTZHBTSYDFZGNTNXQYWQSKBPHGLXEYBFMJEBJHHGQTJCYSXSTKZGLYCKGLYSMZXYALMELTCCXGZYRCXSDLTJZCQKCNNJWHJCZZCQLJDTSTBNXBTYXCEQXGKWJYFLZQLYHJQSPSFXLFPBYQXXXYDCCZYLLLSJXFHJXPJBCFFYABYXBHCZBJYCLWLCZGGBTSSMDTJCXPCHYQTGJJSCJFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBXHYZCYYJXZCFBZZMJYXXCDCZOTTBZLJWFCKSSSXFYRLNYGMBDTHJXSJJCCSBXRYTSYFBJDZTGBCNCLCYCZBSACYZQSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQCCWJBHCTDJJSFXJEJJTLBGXSXJMYJJQPFZASYJNCYDJXKJCDJSZCBARTCCLNJQMWNQNCLLLKBYBZZSYHQCLTWLCCRSHLLZNTYLNEWYZYXCZXXGDKDMTCEDEJTSYYSSDQDGHSDBJGHRWNQLYBGLXHLGTGXBQJDZPYJSJYJCJMDNYMGRCJCZGJMZMGXMMRYXHJNYMSGMZJYMKLFXMBDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPKXKTACJDHHZDDDRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJBLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQCCGJCLTFPCQCZGWBJCLSDJJBYJHSJDZWGFSJGDACCCTLLPSPKJGQJHZZLJPLGCGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMCLKMDXXKWYXWSLMLPSJQJJQXYQFJDJDXMXXLLCRQBSYJBGMYMBGGBCYXPJTGPEPFGDJGBHBNCFJYZJKJKHXQFGQCKFHYGKHDKLLSDJQXPOYKYBNGSXQNSCSWHBSXWHXWBZZXCMNCJBLBGBBZKLYLXGWXJJWAQZMYWSJQLCJXXJQKJEQXSCWETLZHLYYYSDZPAQYZCMTLSHTZCFYCYXYLJSDCJJAGYSLCQLYYYSGLRQQKLDXHSCCCCADYCJYSFSGBFRLSLQSBXJPSJWSDRCKGJLGDKZJZBDKTCSYQPYHCTCLDJDHMXMCGSYZHJDCTMHLTXZXYLAMOHYJCLTYFBQQGBFBDFEHTHSQHZYWWCNCXCDWHHWGYJLAGWDQCWGFJYCSNTFYDOLBYGWQWESJPMNMLRYDZSZCXYCPZGZWGHNGPYHSHMDQJGZTDPPBFYHZHHJYFDZWKGGZBLDNTSXHQEEGZDYLZMMZYJZGSZXGHKGTXAXXGYLYAPSTHXDWHZYDPXAGKEDXBHNHXKDPJNMYHYLPMGECSLNZHKXXLBZZLBMLSFBHHGSGYYGGBHSCYAJTDWLXTZQCWZEDQDQMMGTKLLSZHLSJZWBJHQSWSCELQAJYNYTLQXTHAZNKZZSDHLACQZWWCSGQQTDDWZBCCHYQZFLXPSLZQGPZSZNGLNDQCBDLXGTCTAJDKYWNSYZLJHHDZCWNYYZYOMHYCHHHXHJKZWSXHDYXLYSCJYDBCLYZWMYPPKBYGLKZHTYHSXQSYSGXASMCHKDSCRSGJPWQSGZJLWWSCHSJHSQNHCSEGNDAQTBAALSZMSSTDQJCDGTCCJAXPLGGXHHGOXZCXPDMMHLDGTYBYSJMXHMRCPLXJZCKZXSHFLQXCTDHXEZFCHCCCDYTCJYXQHLXDHYPJQXNLSYYDZAZJNYXQEZYSJYAYJKYPDGXDDXSPPYZNDLTHRHHYDPCJJHTCXMCTLHBYNYHMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZNXZLCCLYLNZSHZJYZLNNRLGHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLJYQGCWYJKPYYYTTTTLHYHLLTYTTSPLKJZWGYWGPYDQQZZDQXSKCQNMJJZZBXYQFJKTFFBTKHZKBJDJJKDJJTLBWFZPBTKQTZTGPDGNTPJYFALQMKGXBCCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYAXCQGABDJYJJDMLJCYJZLLBCHBSXGJYNDYBYQSPQWJLCKCDDTACCBKZDSZYPJZQSJNKKTKNJDJGYEBGTLFYJKASDNTCYHBLGDZHBBYDMJRAGKZYHEYYBJMCDTYFZJJHGCJPLJHLDWXXJKYTCYKSSSMDWCDTQZLPBSZDTWZXGZAGYKTYWXLHLCPBCLLOJMMTSSLCMBJCSDZKYDCZJGQJDSMCYTZQQLWZQZXSSBPKDFQMDDCDSDDTDWFHTDYZJAQJQKTPBDJYYBTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYPGCJFBZBSQLFCXXXNXKXWYMSDDYQOGGQMMYHCDZTTFGYYBGSTTTYBYKJDHKYJBELHDYPJQNFXFDYKZHQKCBYJTZBXHFDXBDASWHAWAJLDYJSFHBLDNNDNQJTJNCHXFJSRFWHZFMDRFJYJWZPDJHZYJYMFCJZNYNXFBYTFWFWYGDBNZZZDNYTXYEMMQBSQEHXFZMBMFLZZSRSYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGJKYMLPEYYCSYSGQZSWHWLYRJLPXSLCXMFSWWKCCTNXNYNBNJSZHDZEPTXMWYWAYYSYWLXJQSQXZDCLAEELMCPJPCLWBXSQHFWWTFFJTNQJHJJDXHGLBYZCFJLALHYYJLDXHHYCSTDYWNCJTXYWDRMDRQHWQCMFJDPZMHMAYXJWMYZQTXDLMRSPWWCHAJBXYGCYBXYSRRCLMPAMGKQJSZYJRMYJSNXTBLNBAPPYBKLXMYZKYNLDGYJZCCHNLMZHHANQMPGWJTZMXXMLLHGDZXYHXKRXYCJMFFJYHJFSBSSQLXXNDYCANNMTCJCYPRREYTYQNYYMBMSXNDLYLYSLJNLXYSHHMLLYCLZJJJKYMZCSFBZXXMSTBJGNXYZHLSNMCQSCYZNFZLXBRNNNYLMNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTSXGCJGXZZSHYXJPCRHMKKBSCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCJGQHWLSNZSWXKHLJHYYBQCBFCDSXDLDSPFZFSKJJZWZXSDDXJSEEEGJSCSSMGCLXXKYWYLLYMWWWGYDKZJGGGTGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPTFSXTLLXCLJXJJLJSXCTNSWXLEDHHYQRWHSYCSQYYBYAYWJEJQFWQCQQCJQGXALDBZZYJGKGXPLTJYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLEFXDLEEGQDYMSAWHZMLJDWYGXLYJZLJEEYXBQQFFNLYXRDSCTGJGXYWLKLLXQKCCTLHJLQMKKCGCYYGLLLJDZGYDHZWXPYSJBZJDZGYZZHYWYFQYTYZSZYEZKLYMHJJHTCMQMYZLJYYWZCSRKQYQLTDXWCDRJKLWSKZWBDCQYNCJSRSZJLKCDCDTLZZZACQQCZDDXYPLXCBQJYLZLLLQDDZJJYJYJZYXNYYYNXJXKGDAZWNRDLJYYYRJLGLLDYXJCYKYWNQCCLDDNYYYKYCHCZHJXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJFZBSBDSFNSFPZXHDWZNDMPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZJWDWCQQZGMDHZXMWWFYBPDGPHTMJTHZQMMBGZMBZJCFZHFCBBZMQCFMBCMCJXLAPNJBBXGMHYYJGBTZGZMQBQDCGYBJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBCASKYTSSQYYMSCXFJEHLSLLSZBQJJJAKLYLDLYCCTSXMCWFGKKBQXLLLLJYXTYLTPXYTDPJHNHGNKBYQNFJYYZBYYESSESSGDYHFHWDCJBSDZJTFDMXHCNJZYMJWSRXJDZJQPTQBBSTJGGFBKJBXTGJHMGWJJJGDLLTHZHHYYYYYYPXWTYYYCCBDBPYPZYCCBTJFZYWCBDLFWZCWJDXXHYHLHWCZXJTCZLCDPXUJCZCZLYXJJSJBHFXWPYWXZPCDZZBDCCYHJHMLXBJXPBYLRDDGJRRCTTTGQSCZWMXFYTMWZCWJWXJYWCSKSBZQCCTDQNHXNKXXHHKFHTSWOCCJYBCMPZZYJBNNZBBTGHCDLSCDDYDYFJPXYNGFXBYQXCBHXCBSXTYZDMKYSNXSXLHKMZXLTHDHKGHQJSSHQYHHCJYXGLHZXCSNHEKDTGQXQYPKDHEXTYKCNYMYYJPKQYSTJXZLTHHQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLXHHJDTTNWCHHXCXWHERZJYDJCCDBQCDGDNYXZDHCQRXCBHZSQCBXWGQWYYBXHMBYMYKDYECMKKYAQYNGWZSLFYKKQGYSSQYSHJGJCNXKZYCXSBKYXHYYLCTYCCQTHWSMGSCPMMGCCCCCMTZTASMGQZJHKLOSJYLSWTMQSYQKCZLJQQYPLCYCZTCQQPBBQJZCLPKHQCYYXXDTDDDSJCJFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWHDQQJCKXYAMYLSJHMLALYKXCYYDMAMDJMLMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJGGGGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHESTMHLFSBDJJYYSHFYSPCZQCPBDRFRZTZDKYKHSCCGKWDQZRKMSYNBCRCQBJYFAXPZKEDZCJYKBCJWGYJBQDZYWNYSZPTDKZFFPBAZTKLQYHBBZPNPPTTZZYBHNYDCPJMMCYCQMCJBZZDCMDLFPBPLNGQJTBTTAJZPZBBDNJKLJQYLNBZQHKSJZNGGQSCZKCXCHPYSNBCGZGDDZQANZGJKDNTLZLDWJLJZLYWTXNDJZJHXYASNCBGTZCSSKMNJBJYTSRWXCFJWJJTKCTZFLBGSNJZSYJBWBZYZLSSLSBJHDWWQPSLMMBBJDLAJYZCCJTBNNRZWQXCDSLQGDSDPDZHJTQQPSQLYYJZLGNHSDLCTCBJTKTYCZJTQKBPJLGMGZCMCSGPYNJKJJYYKNHRCWSZXMTNCSSZJXHBYHYZAJYWKCJDLLCKJJTJHGCXDXYJYCZBYWDLWQCGLZGJGQRQCCZSSBCNBCSEYDZNLJSQGXSSJMECNSTJTBBDLTHNWHQWQSZEXNQCZGWESKSSBYBRTSCSJCCGBFSDCSZLCCGLLLZGCZQTHCNMJGYZAZCMCKCMTCMMZCKBJYGQLJYJPPLDXRGZYXCCSNHSHGDZNLCHZJJCDDCBCJSLBFQBCZZTPQDNHXLJCTHJWJGYLNLSZZPCJDSCQJHJQKDXJBBAJYEMSMJTZDXLCJYRYYNHJBNGZJKMJXLTBSLLRTPYLCSCNXJHLLHYLLQQCQLJYMRCYCXNLMMCCLTZLDWDJJLLNZGGJXPPSKYGYGGBFZPDKMMGHCXMCGDXJMCJZDYCABXJDLNBCDDYGSKYDJTXDJJYXMSAQAZDZFSLQXYJSJZDLBLXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCYFQZQZZDZSXZZQLZCDZFCHYSPLMPQZMLPBLFFXJJNZZYLSJEYQZFPFZKSYMJJJHRDJZZXTXXGLGHTDXCSKYSWMMTCWYBAZBJKSHFHGCXMHFQHYXXYZFTSJYZBXYXPZLCHMZMBXHZZSSYFDMNCWDABAZLXKTCSHHXKKJJZJSTHYGXSXYYHHHJWXKZXCSBZZWHHHCWTZZZPJXSNXQQJGZYZAWLLCWXZFXGYXYHXMKYYDWSQMNJNAYCYSPMJKGWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHESCCSMZZTZCXHYQFPYYRPBFLFCUNTSZLLJMHWTCQQYZWCLLMLMPWMBZSSTZRBPDDDLGJJBXCCSRZQQWGWCSXFWZLXCCEBTDZMCYGGDTQSGTJSWLJMYMMSYHBBJDGYXCCBSHXNZCSBSJWJGJMBBWAFFYFNXHYDXZYLREMZGZCYZSSZDLLJCSQFNXXKPSXZGXJJGBMYYYSNBTDLBNLHBFZDCYFBMGQRRSSSZXYSGTZNNYDDZZDGBJAFJBDKNZBLCSSZBFGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLCGKBRXBRBZCYCXZJZEEYFGKLZLYYHGYSGZLFJHGTGGKRAAJTZKZQTSSHJJXDCMZUYJLZYRZDQQHGJZXSSCBTKJBBFRTJXLLFQWJGSLQTYMBLPZDJCZAGBDHZZRBGJHWNJTJXLKSCFSMWLQDQYSJTXKZSCFWJLBXFTZLLJZLLQBLCQMQJCGCDFPBBHZCZJLPYYGGDTGWDCFCZQYYYJYSRCLQZFKLSZZGFFCQNWGLHJYCJJCCLKZCYJBJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZHYSXYYCJCYHCWPBYGXRYLYBHKJKSFXTJJMMCHHLLTNYYMCXXYZPDJJYCDYCWMDJJKQYRHLLQXPSGTLWYCLJSCPXJYCFNMLRGJJTYZBSYZMSJYJHGFZQMSYXRSZCWTLRTQZSSTKXGQGGSPTGCDNJSGCQCLHMXGGZTQYDJKZDLBZSXGLHYQGGGQHQSCPCHJHHGNYGKGGCMJDZLLCCCXQSFTGZSLLLMLCSKCCBLJZZSZMMMYTPZSXQHJCJYQXYEXZQZCPSHKZZYSXCDFGMWQNLLQXRFJTLYSDCCMJCSJJDHJNXTNRZTCFQRHQGLLGCXSCSJDJLJCYDQJTLNYXHSZXCGJZYQPYLFHDJSBBCCZGJJJQSJQDYBSSLLCMYCTMQTBHJQMNYGJYNQYQMZGCJKPDCGMYZGQLLSLLCCMHOLZGDYLFZSLJCQZLYLZCJESGNYLLJXGJXLYJYYYXNBCLJSSWCQQCJYLLCLDJELLZLLBNYLGQCHXYYQOXCCQAYJKXHYKLKSXAQQCCQKKKKCSGYXXYQXYGWTJOHTHXPXXXSUHCYEYCHZZCBWQBBWJQZSCSZSSLZYLGDESJZMMYMCYTSDSXXSCJPQQSJYLYBZYCHDJDZYWCBTJSYDJKCYDDJLBDJJSODZYKYSKQXXDHHGQJYKHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQDUTPJDCBSSMSSSTHJTSLMMTRCPLZSZMLQDSDMJMQPNQDXCFRNBFSDQQYXHYAYKQYDDLQYYYSPCBYDSLNTFGDZQPZMCHDHCQCWFDXTMQQSPHQWWXSRGJCWTJTJZQMGWJJRJHTFJBBCMZFXJHNQFXXQYWYYHYSCDYDHHQMNMTMMCPBSZPPZZGLMZFOLLCFWHMMSJZDTDHLLCFFYTZZGZYSKJJXQDJZQBHBBZKLAGHGFMSHPCFZSNCLPBQSNJSZSLXJFPMTYJYGBXLLDLXBZJYPJYHHZCYWHCYLSJEXFSQZYWXKZJLUADTMLYMQJPWXXHXSKTQJEZRPXXZGHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZDXBDHHYPCLHLHLGFWLCFYYTLHJJCJMNCPXSTKPNHJXSNTYXXTESTJCTLSSLSTDLLLWWYHDHRJZSFGXSSYCZYKWHTDHWJSLHTZDJDJZXXQGGYLTZPHCCQFCLNJTCLZPFSTPDXNYLGMJLLYCQHYNSBCHYLHQYQTMZYBBYMRFQYKJSYSLZDQJMPXYYSSRHZJNYQTQDFZBWGDWWRXCWHGYHXMKMYYYHMSMZHNGCEPMLQQMTCWCTMHPXJPJJHFXYYZSJZHTYBHSTSYJDNJJQYTLHYNBYQHLCXCHZWSMYLKFJXLWGXYPJGTYSYLYMZCKTDWLGSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPCCPWCMGDHHQZDZXFJHGZTTSBJHGYGLZYNMYCLLLXBTYXHBBZJKSSDMALHHYCFYGMQYPJYCQXJLLLJGCLZGQLYCJCCTOTYXMTMSHLLWCGFXYMZMKLPSZZCXHHJYSLCTYJCYHXSGYXCKXLZWPJJPDHJWPJPWSQQXLXSDHMRSLZCYZWSTCXKYSTZSHBSCCSCPLWSSCJCHJLCGCHSSPHYLHFHHXJSXALLNYLMZDHDXYLSXLWZYHCLDYAHZCMDDYSPJTQJZLNGJFSJSHCTSDSZLBLMSSMNYYMJQBJHRCWTYYDCHQLJAPZWBGQYBKFCMJDLZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSDXHXZLLDFHLSLYMJLJYFLYJYCDRJLFSYJFSLLCQYQFGJYHYSZLYLMSTDJCYHBZLLNWLQXYGYYHBMGDHXXHHLZZJYXCZZZCYQZBNGWPYLCPKPYYFMCLQKDGXZGGWQBDXZZKZFBXXLCXJTPJFTTBYTQZZDWSLCHZHSLTJXHQLHYXXXYWZYSWDXZKHLXZXZPYHGCHKCFSYHUTJRLXFJCPTZTWHPLYXFCRHXSHHKJXXYHZJDCJWULHYHMJDBFLKHTXCWHCFAJCFPQRXQXCYYYJYGRPXWSCSUNGWCHKZDXHFLXXHJJBYZWTSXNNCYJJYMSWYJQRMHXZWFQSYLZJZGBHYNSLBGTTCSEBHXXWXYHHXYXNSQYXMLYWRGYQLXBBCAJSYLFCYTJZYHYZAWLHORJMKSCZJXXXYXCHCYQRYXQJDDSJFSLYLDSFFYXLMTYJMJUYYYXLLZCSXQZLHZXLWYXZHDNBRXHXJCDYHLBRLMBRLLAXHSLLLJLXXXLYCRYLCJCGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSEPCKZDQYQPBPCJPDCYZBDBBCYYDYCNNPJMTMLRMFMMGWYGBSJGCGSMDQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWLDTQJXLDLPPBXCWRCQPBFQJCZAGZGMYGFHYYFZYKNDKZMBPJCSPXTHLFPNYYGXJDBKXNHHJHZJXSSRSTLDXSKZYSYBMSJLXYSLBZYSLHXJPFXBQNBYLLJQKYGZMCYZZWMCCSLCLHZFWFWYXZMWCXTJNGJHBYYMCYSBMHYSMYDYSHQYZCGMJJMZCAAGCFJBBHPLXTXLSXSDJGJDHKXXTXXNBHNMLNGSLTXMRHNLXQJXMZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJMJWJMDPWHXQLDYAPDFXXBCGJSPCKRSSTJJMSLBZZJFLJJJLGXZGYXYXLSZQKXBEXYXHGCXBPLDYHWECDWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDBZCMYJCLMSWTCZBCHQEKCQBWLCGYDBLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZCLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTCCJZYABSCKZCJYCCQLJSQXALMZYHYWLWDXZXQDLLJSHGPJFJLJHJABCQZDJGTHHSSTCYJFBSWZLXJXRWGLDLZRLZQTGSLLLLZLYMXQGDZHGBDBHHPBRLWSHQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSGDFNDPDHDQZMBBJSLCMYFFGTJJQWBTMTPJWDNLBZCMMCTGBDZLQLFYFHSYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDPJDSSDYNNDBJLGGJZXSXNLYCYBJJQXCBYLZCFZPPGKCXZDZBZTJJFJSJXZBNZYJQCTYJWHSYCZHYMDJXTTMPXSPLZCDWSLSHXYBZGTFMLCJDACBBMGDKWYCYZCDSZCYHFLYCTYGWHKJYYLSJCXGYWJCBHLCSNCDBTZBSCLYZCZZSSQDLLMQYYHFLLQLLXFDYHABXGGNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQBZZMDBJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHBPHJPGPZJQCQZGJJZCUDDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXJPGALXCDAGLMDGXMMZQYTXDXXPFDMMSSHMPFMDMMKXKSYZASHDZKJSCSMMZZZMSYDNZZCZXBPLSTMDDNMSCKJMZTYYMZMZZMSSHHDCCJEMXXKLJSTGWLSQLYJZLLSJSSDPPMHNLGJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWJDCKSXHMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCJKYXTMLGJYAHZJGZQMCSCXYHMMPMLGJXMHLMLGMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZKGXFKDMSDJLFMEHKZQKJBEYPZYSZCDWYJFFMZJYKTTDZZEFMZLBNPPLPLPBPSZALLTYLKCKQZGGENQLGAGKXYDPXLHSXQQWQCKXKCLHYXXBLTCCWLYMQYSKGCHLCJNSZKPYDKCQCQLJBDMDJHLASQLBYDWQLWDGBQCRYDDZTJYBKBWSZDXDDNPJDTCTQDFXQQMGNSECLSTBGPKSLCTQQLPAYDZKLPYGZCQAPLLKCCYLPQMQCZQCLJSLQZDJXLDDHPSQDLJJXZQDJYZHKZLJCYQDYJPPYPEAKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXQQZBDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXSZYMSDBZZYJGTSMTFXQYXJSSDGSLNMDLRYTZLRYYLXQHTXSRTZCGYXBNQQZFHYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTSHGYZZJRDYZHNFXGLFXSLKGJTCTSSYLLGZRZBBJZZKLPKBCZYSLUYXBJFPNJZZXCDWXZYJXZZDJJGGGRSRJKMCMZJLSJYWQSKYHQJSXPJZTZLSNSHRNYPJTWCHKLBSRZLCXWJQXQKYSJYCZTLQZYBBYBWZJQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDJLXWKCCKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLLBJJZBSJHTSJDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXCBBJYDSSDDZNCGLQMBTSFCBFDZDLZNFGFJGFSMPSJQLMBLGQCYYXBQKDJJQSRFKZTJDHCZKLBSDZCFJTPLLJGJHTXZCSSZZXSTCYGKGCKGYOQXJPLZBBBGTGYJZGCZQSZLBJLSJFZGKQQJCGYCZBZQTLDXRJXBSXXPZXHSZYCLWDSJJHXMFCZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPCZPPDYMTZSGYHCKCPZJGSLCLNSCDSLDLXBMSDLDDFJMKDJDHSLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNCJYQTZZFSZQZTLLJTYYLLQLLQYZJLBDZLSLYYZYMDFSZSNHLXZNCZQZBBWSKRFBCYZMTHBLGJPMCNZCSTLXSHTZCYZLZBLFEQHLXFLCJLYLJQCBZLZJGHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJJGZJYJCZXYHYHWRWWQNZTNFJSCPZSHZJFYRDJSFSCJZBJFZQZCHZLXFXSBZQLZSGYFTZDCSZXZJBQMSZKJRHXJZCGBJKHCHGTJKJQGLXBXFGTRTYLXJXGDTSJXHJZJJCWZLCQSBTXHQGXTXXHXFTSDKFJHZYJFJXRZCDLLLCQSQQZQWQXSWQTWGWBZCGCLLQZBCLMQQTZGZXZXLJFRMYZFLXYSQXXJKXRMJDCDMMYXBSQBHGZMWFWXGMXLZBGYTGZWCCDXYZXSWGSYJYZNBGPZJCQSYXCXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJSSFLBYSMYQHXJSXRXSQZZZSSLJFLCZJRCRXHHZXQYDSHXSJJHQCXJBDYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYCXXZZLLDLLLSJYHZQGYJWKJRWYHCPSGNRZGFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTBXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFCGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLBFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGQZMLYZDXQYXRQQQHSXYYQQYGJTYXFSFSLLGNQCYHYCWFHCCCFXBYLYPLLZQXXXXXKQHHXSHJDCFDSCZJXCPZWHHHHHAPYLHALPQAFYHXDYLUKMZQGGGDDESRENDLTZGCHYBPCSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYWLLZNTEYTGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKNZDNQNTTLYNZSSYSSZZRYLJQKCGBHHCRXRZYDGRGCWCGZQFFBPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBQTBGTZFZNPZFPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDCJXXEAHPNZGZTZCMXCXMMJXNKSZQNMNLWBWWXJJYHCLSTMCSJTZCXXTPCNFDTNNPGLLLZCJLSPBLPGJCDTNJNLYYRSZFFJFQWDPGZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBQLWSTSZGYBLJPXGLBOCLGPCBJFTMXZLJYLZXCLTPNCLCKXTFZJSHCYXSFYSZDKNTLBYJCYJLLSTGQCBXEWZXBXKLYLHZLQZLNZCQWGCLGZJNCJGCMNZZGJDZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGHTCSXWZDCSYFPTFBCHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMNJHSKBMDDBCYSCCLDXYCDDQLYJJHMQLLCSGLJJSYFPYYCCYLDJANTJJPWYCMMGQYYQXDHQMZHSZXBFTWWZQSWQRFKGLXJQQYFBRXJHHFHJJZYQACMYFRHCQYBYQWLPEXCCZSDYRLTSDMQLYKMBBGMYYJPRKNNPBSXYXBHYZDJDNGHPMFSGBWFZMFQMMBCMZZCJJLCNUXYQGMLRYGQCCYHZLWJGCJCGGMCJJFYZZJHYCFRRCMTZQZXHFQGDJXCCJEAQCRJTHPLJLSZDJRBCQHJDYRHXLYQJSYMHZYDWLDFRYHBBYDSSSCCWBXGLPZMLZZTQSSCPJMMXJCSJYTYCGHYCJWSNSXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJCGLLJWJNKHPZGGFLCCSCZMCBLTBHBQJXQDJPDJQTGHGLFQAWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZTJTLBYMBPDYYYXSQKXWYYFLXXNCWCSYBMAELYKKJMZZZBRXYAQJFLJPFHHHYTZZXRGQQMHSPGDZQWBWPJHZJDYJCQWZKTHXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLHDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBYGBZGZTCPLUJLSLYLYMDTMTZPALCXPQJCJWTCYYZLBLXBZLQMYLJBGHDSLSSDMHMBDCZSXWHAMLCZCPJMCNHJYJNSYGCHSKQMZZQDLLKABLWJQSBMOCDXJRRLYQZHJMYBYQLRHETFJZFRFKSRYXFJDWDSXXSWSQJYSLYXWJHSNLXYYXHBHAWHHJCXWMYLJCSQLKYDTTXBZSXFDXGXSJHHSXXYBSSXDPWNCMRPTJZCZENYGCXQFJXKJBDMLJCMQQXUOXSLYXXLYLLJDZBTYMHBFSTTQQWLHOGYBLSZALZXQLHTWRRQHLSTMYPYXJJXMQSJFNBRYXYJLLYQYLTHYLQYFMLGLJDMLLHFZWKZHLJMLHLJKLJSTLQXYLMBHHLNLSXQCHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZSYHZHHMGSHCSYMXFEBCQWWRBPYYJQTYQCYJHQQZYHMWFFHGZFRJFCDBXNDQYZPCYKHJLFRZGPPXZDBBGZJSTLGDGYLCQMGCHHMFYWLZYXKJLYPJGSYWMQQGQZMLZJNSQXJQSYJTCBEHSXFSSFXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQSXLLDTTKHHYBFPWDYYSQQRNQWLGWDEBDWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSCTZZCFYKMLDHQDLWYQNLCRYJBLPSXCXYWLSBRRJWXHQYBHTYDNHHGMMYWYTZCSQMTSSCCDALWDTCPQPYCLLQZYJSWXMZZMMGLMXCLMXCZMXMZSQTZPPJQBLPGXJZHFLJJHYCJSNXWCXSCCDLXSYJDCQCXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPNGJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJXYHWDCWDZHQYPBGYBCYSCFGFCJNZDYZZJZXRZRQJJYMCANHRJTLDBPYZBSTJHXXZYPFDMFGZZRFYMTNGXZQBYXMBUFCCKRJQJBJEGRZGYCLKXZDSKKNSJKCLJSPGYYZLQQJYBZSSQLLLKJBCBKTYLCCCDBLCPPFYLGYDTZJYQGGKQTTFCXBDKDXXHYBBFYTYHBCLPDYTGDHRYRNJSBTCSNYJQHKLLLXSLYDXXWBCJQSBXBFJZJCJDZFBXXBRMLAZGCSNCLBJDSZBLFRZTSWSBXBCLLXXLZDJZSJPYLYXXYFQFFFBHJJJGBYGJPMMMPSSCZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSDGJGYGMSCLJJXDTYGJQJQJCJZCJGDZDSHQGSJGGCJHQXSNJLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYXJXNCYZXFXCSYSZXYYSCHSHXZZZGZZZGFJDLDYLNPZGYJYZTYQZPBXQBDZTZCZYXXYHHSCXSHCGGQHJHGXWSCTMZMLHYXGEBTYLZKKWYTJZRCLEKXSTDBCYKQQSAYXCJXWWGSBHJSZSDHCSJKQCXSWXFCTYNYDPZCCZJQTZWJQDZZZQZLJCXLSBHPYDXPSXSHHEZDXFPTJQYZZXHYAXNCFZYYHXGNXMYWXTZSJPKHHGYMXMXQCXTSBCQSJYXHTYYZYBCQLMMSZMJZJLLCOGXZAAJZYHJMCHHCXZSXZDZNLEYJJZJBHZWZZSQTZPSXZTDSXJJJZNYAZPHHYYSRNQDTHZHAYJYJHDZJZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSDCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHHXXHLHDLDJQCLDWBSXFZZYYSCHTYTYJBHECXHJKGJFXBHYZJFXHWHBDZFYZBCAPNPGNYDMSXHKHHMAMLNBYJTMPXYJMCTHJBZYFCGTYHWPHFTGZZEZSBZEGPBMDSKFTYCMHBLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJGXZBDSYUXLGZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNTXCHCZXTZZLJFZGQSQYXZJQCCCCDJCDXZJYQJQCGXZTDLGSCXZSYJJQTCCLQDQZTQCHQQJZTEZZZPBKKDJFCJFZTYBQYQTTYJLMBDKTJCPQZJDZFPJSBNJLGYJDXJDZQKZGQKXDLPZJTCJDQBXDJJJSTCJNXBXCMSLYJCQMTJJWWCJJNJNLLLHJCWJTBZQQCZCZPZZDZYDDCYZDZCCJGTJFZDPRNTCTJDCQTQNDTJNPLZBCLLCTDSXKJZQDPZLBZNBTJDCXFCZDBCCJJLTQJPLDCGZDBBZJCQDCJWYNLLZLZCCDWLLXWZLXRSNTQJCZXKJLSGDFQTDDGLRLAJJTKUYMKQLLDZYTDYYCYGJWYXDXFRSKSTCDENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKYQSPEGJJGLKQZZZSLYSYWYZWFQZNLZZLZHWCGKYPQGNPGBLPLRRJYXCCCGYHSFZFWBZYWTGZXYLJCZWHXZJZBLFFLGSKHYJZEYJHLPLLLLCGGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJWSPYXNLZLXGCCBZBLLCXBBBBUBBCBBCRNNZCCYRBFSRLDCGQYYQXYGMQZWTZYDYJHYFWDEHZZJYWLCCCTZYJJCDEDPZDZTSYKJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYZTGWSCSZQFLSHLGLBCZBHDLYZJYCKWTYDYLBNYDSDSYCCTYSZYYEBGEXHQDDWNYGYCLXTDCYSTQHYGZASCCSZZDDLCCLZRQXYYELJSBYMXSHZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZQLKGZSKYGHXZJHHXJXGNLJKZLYYCDXLFWFGHLJGJYBXJLYBXQPQGZTZPLNCYBXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYHYBMCFLYZHQYZMQXDBXBZWZMSLPDMYCKFMZKLZCYQYCCLHXFZLYDQZPZYGYJYZMDXDZFYFYTTQTCHGSPCZMLCCYTZXJCYTJMKSLPZHYSNWLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXCYLMMNXJSMYBCSYSSLCYLLJJGYLDZDPQBFZZBLFNDSQKCZFHHHGQMRDSXYCSTXNQQJPYJBFCXDYQFBNXEJDGYQBSRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMGKLBSGBPYSZBYDGZSSTJCSTXZBHBSCSBZCZPTQFZMQFLYPYBBJGSZMXXDJMTSYSKKBJTXHJCEGBSMHYJZCXTMLJYXRZZQSCXXQPTZHMKDXXXJCLJPRMYYGADYSKQLSNDHRSKQXNXZTCGHZTLMLWXYBWSYCTBHJHJFCWZSXHWTKZLXQSHLYCZJXEMPLPRCGLTBZZTLZJCWJGDTCLKLPLLQPJMZPAPXYZLAKTKDNCZZBNZCTDQQZJYJGMCTXLDGCSZLMLHBGLKFWNWZHDXUHLFMKYCLGXDTWWFRJEJCTZHYDXYKSHWFZCQSHKNMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMCDBXLSKLYYNWRTSQGSCBPDBSGZWYHTLKSSSWGZZLYYTNXJGMJSZSUFWNLSKZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZJCLXXKSBZQCLHJPHQPLSXSCKSLNHPSFQQYTXJJZLQLDXZJJZDYYDJNZPDUZDSKJFSLJHYLZCJZLBTHYDGDJFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDSCLBBLXKLELXJLBJYCXJXGCNLCQPLZLZNJTZLJGYZDZPLTQCSSFDMNYCXGBTJDCZNBGBQYQJWGKFHDNBYQZQGBKPBBYZMTJDYTBLSQMBSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPWLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBQDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLXJLPLDLPCQDHLHZLYCBLCXCCJADJLMCMMSSHMYBHBSKKBHRSXXJMXSDZNZPXLBBRHGGGFCHGMSKLLTSJYYCQLCSKYWYEHYWHBHQYWBAWYKQLDQPTNTKHQCGDQKTGPKXHCPDHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLDYYCXWHYECLQHKQHTTJKHFFLDXQWYTYYDASBPKYRZPJFYYZJCEQDZZDLATTBBFJLLCXDLMJSDXEGYGSJQXCWBXSSZPDYZCXDNYXPFZYDLYJCCPLTXLSXYDYRXCYYYDYLWWNDSAHJSYGYHGYWGAXTJZDAXYSRLTDPSSYXFNEJDXYZHLXLLLZHZSJNYQYQJXYJHHZGJCYJCHZLYCDSHHSGCZYJGCLLNXZJJYYXNFSMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMMMLLHAFDLLAFLBHHHBQQLTZJCQJLDJTFFKMMMBYMHYGDCQRDDWRQJXNBYSNMZDBYYTBJHPYBYGTJXAAHGQDQTMBSTQXKBTSBKJLXRBEQQHQMJJBDJOTGTBXPGBKTLGQXJJJCDHXQDWJLWRFMQGWQHCKRYSWGBTGYGBWSDWDWRFHWYTJJXXXJYZYSLPHYYPAYXHYDQKXSHXYXGSKQHYWBDDDPPLCJLHQEEWJKSYYKDYPLFJTHKJLTCYYHHJTTPLTZZCDLTHQKCJQYSTEEYWKYZYXXYYSDDJKLLPWMCYHQGXYHCRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTGYJKYPPTHYYKDYEZYENMDSHLCRPQFDGFXZBLBTLGXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXTRYYCYFFSYZYZBJTBCTSBSDHRTJHBYTCXYJEYLXCBNEBJDSYSYHGSJZBXBYDFZWGENYHHTHJHAXFWGCSTBGXKLSTYWMTMBYXJSKZSCDYJRCYTWXZFHMYMCXLZNSDJTXTXRYCFYJSBSDYERXHLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBBTHFJAAFXYXFPXMYFHDTTCXZZPXRSYWZDLYBBJTYQPQJPZYPZJZNJPZJLZTFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXALZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTGSQCZLPTXCDYYZSSQZSLXLZMACBCQBZYXHBSXLZDLTCDJTYLZJYYTPZYLLTXJSJXHLBMYDXCQRBLZSSFJZZTNJYDXMYJHLHPBLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYATJBBCTDKHQHKGTGPBKQYSLBXPBCKBMLLXDZSTBKLGGQKQLSBKKDFXRMDKBFTPZFRTBBMFEEQGXKJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNHXDHDDJCYYGYFQGZLGSYGMJQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJXEJSHTMJSBYPLWHLZFFNYPMHXQHPLTBQPFBCWJDBYGJNXTBFZJGSDCTJSHXEAWZZYLLTYYBWJKGXGHLFKXDJTMSZSQYNZGGSWQSBHCLSSKMCLZXYSZQQXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHXZLZJBBHQZWWYCRDHLYQQJBEYFSJXTHSRXWJHWPSLMSSGZTTYEYQQWRSLALHMJTQJSMXQBJJZJQLYZKXBYQXBJXSHZSSFGLXMXZXFGHKZSZGGMLCLSARJXHSLLLMZXELGLXYDJYTLFBGBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYFJLBXBMMYWXGSLZHGLSGNYFLJBYFDJFRGSFMBYCHQFBWJSYFAGGPHZBYYZFFWODGRLBFTMLBZGYCQXCDJAGZYYYYHYTYDWEGAZYHXJLZYYHLRMGRJXZCGHNELJJTHTBWJYBJJBXJJTJTEEKHWSCJPLPSFAZPQQBDLQJJTYYQLYZKDKSQJYYJZLDQCGJJYZJSUCMRAQTHTEJMFCTYHYPKMHYCWJDCFHYYXWSHCTXRLJGJSHCCYYYJLTKTSYTMXGTCJTZAXYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZSYLTXXYPCLXYJZYZYYPNHMYMDYYLBLHLSYYGGLLNJJYMSOYCBZGDLYXYLCQYXTSZEGXHZGLHWBLJGEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJBCPCJZJMMYLCJLNQLJJJLXXJMLSZLJQLYCMMHCFMMFPQQMFXLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYDYXYQMYQYLCDCYYYDAZDCWMDYDLXFFFMMYCQCWZZMABTBYCTDMNDZGGDFTYPCGCYTTSSFFWBDTZQSSYSTWJJHJYTSXXYLBYQHWWHXEZXWZNNQZJZJJQJCCCHYYXBZXZCYJTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWLPGLYLLGKDLDLGKGQBGYCHJXY"