USCAO section 1.3 Calf Flac

来源:互联网 发布:手机查看路由器mac地址 编辑:程序博客网 时间:2024/06/05 12:41
Calf Flac

It is said that if you give an infinite number of cows an infinite number of heavy-duty laptops (with very large keys), that they will ultimately produce all the world's great palindromes. Your job will be to detect these bovine beauties.

Ignore punctuation, whitespace, numbers, and case when testing for palindromes, but keep these extra characters around so that you can print them out as the answer; just consider the letters `A-Z' and `a-z'.

Find the largest palindrome in a string no more than 20,000 characters long. The largest palindrome is guaranteed to be at most 2,000 characters long before whitespace and punctuation are removed.

PROGRAM NAME: calfflac

INPUT FORMAT

A file with no more than 20,000 characters. The file has one or more lines which, when taken together, represent one long string. No line is longer than 80 characters (not counting the newline at the end).

SAMPLE INPUT (file calfflac.in)

Confucius say: Madam, I'm Adam.

OUTPUT FORMAT

The first line of the output should be the length of the longest palindrome found. The next line or lines should be the actual text of the palindrome (without any surrounding white space or punctuation but with all other characters) printed on a line (or more than one line if newlines are included in the palindromic text). If there are multiple palindromes of longest length, output the one that appears first.

SAMPLE OUTPUT (file calfflac.out)

11Madam, I'm Adam


 

题解:先将原文读入包括回车换行,然后暴搜,两种情况:1:回文长度为奇数个,2:回文长度为偶数个,

           左右同时找到下一个字母,判断回文,用length记录长度,l 记录左点 r 记录右点,a记录回文最左点与非回文做点第一个的距离

           b记录回文最右点与右非回文第一点的距离。start记录回文最左点,end记录回文最右点。

          EX:q23w123et345t4e4w44k3542 

                   l=0;   r=20  a=2  b=2

                   start=l+a+1=3

                    end=r-b-1=17

                    length=6

 

 

 

/*ID:nealgav1PROG:calfflacLANG:C++*/#include<cstdio>#include<cstring>#include<algorithm>#define N 21111using namespace std;int ex[N];char line[N];int ans;void cre(){  int j,i;  memset(ex,0,sizeof(ex));  for(i='A',j=1;i<='Z';i++,j++)  ex[i]=j;  for(i='a',j=1;i<='z';i++,j++)  ex[i]=j;}void hui(int len){  int start,end;  int length=0;  int l,r,j;  int a,b;  for(int i=0;i<len;i++)  {    if(ex[line[i]])    {  j=-1;      l=0;      r=0;      while(i-l>=0&&i+r<len&&ex[line[i-l]]==ex[line[i+r]])     {      j+=2;      a=b=1;      while(i-l-1>=0&&!ex[line[i-l-1]])      {        l++;a++;      }      while(i+r+1<len&&!ex[line[i+r+1]])      {        r++;b++;      }      l++;r++;     }    if(j>length)    {      length=j;      start=i-l+a;      end=i+r-b;    }    j=0;    l=0;    r=1;    while(i+r<len&&!ex[line[i+r]])    {      r++;    }      while(i-l>=0&&i+r<len&&ex[line[i-l]]==ex[line[i+r]])     {       a=b=1;       j+=2;      while(i-l-1>=0&&!ex[line[i-l-1]])      {        l++;a++;      }      while(i+r+1<len&&!ex[line[i+r+1]])      {        r++;b++;      }      l++;r++;     }       if(j>length)    {      length=j;      start=i-l+a;      end=i+r-b;    }   } }  printf("%d\n",length);  for(int k=start;k<=end;k++)  printf("%c",line[k]);  printf("\n");}int main(){  FILE *fin=fopen("calfflac.in","r");  freopen("calfflac.out","w",stdout);  char f[N];  int i=0;  int len;  while((line[i++]=fgetc(fin))!=EOF);  len=i;  cre();  hui(len);}


 

 

Calf Flac
Russ Cox

To make the programming easier, we keep two copies of the text: the original, and one with the punctuation stripped out. We find the biggest palindrome in the latter copy, and then figure out which part of the original it corresponds to.

To find the biggest palindrome in the alphabetic text, we look, for each letter in the text, at the biggest palindrome centered on that letter (in the case of an odd length palindrome) or just to the right of that letter (in the case of an even length palindrome).

There are 20,000 letters, and we are assured that no palindrome is more than 2,000 letters long, and we search for both even and odd palindromes, for a total of about 20,000*2,000*2 = 80,000,000 operations, which is perfectly reasonable within the time limit.

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>#include <ctype.h>char fulltext[21000];char text[21000];char *pal;int pallen;voidfindpal(void){    char *p, *fwd, *bkwd, *etext;    int len;    etext = text+strlen(text);    for(p=text; *p; p++) {/* try palindrome with *p as center character */for(fwd=bkwd=p; bkwd >= text && fwd < etext && *fwd == *bkwd;fwd++, bkwd--);bkwd++;len = fwd - bkwd;if(len > pallen) {    pal = bkwd;    pallen = len;}/* try palindrome with *p as left middle character */for(bkwd=p, fwd=p+1;          bkwd >= text && fwd < etext && *fwd == *bkwd; fwd++, bkwd--);bkwd++;len = fwd - bkwd;if(len > pallen) {    pal = bkwd;    pallen = len;}    }}voidmain(void){    FILE *fin, *fout;    char *p, *q;    int c, i, n;    fin = fopen("calfflac.in", "r");    fout = fopen("calfflac.out", "w");    assert(fin != NULL && fout != NULL);    /* fill fulltext with input, text with just the letters */    p=fulltext;    q=text;    while((c = getc(fin)) != EOF) {if(isalpha(c))    *q++ = tolower(c);*p++ = c;    }    *p = '\0';    *q = '\0';    findpal();    fprintf(fout, "%d\n", pallen);    /* find the string we found in the original text       by finding the nth character */n = pal - text;    for(i=0, p=fulltext; *p; p++)if(isalpha(*p))    if(i++ == n)break;    assert(*p != '\0');    /* print out the next pallen characters */    for(i=0; i<pallen && *p; p++) {fputc(*p, fout);if(isalpha(*p))    i++;    }    fprintf(fout, "\n");    exit(0);}

 

 

 

 

USER: Neal Gavin Gavin [nealgav1]TASK: calfflacLANG: C++Compiling...Compile: OKExecuting...   Test 1: TEST OK [0.000 secs, 3444 KB]   Test 2: TEST OK [0.000 secs, 3444 KB]   Test 3: TEST OK [0.000 secs, 3444 KB]   Test 4: TEST OK [0.000 secs, 3444 KB]   Test 5: TEST OK [0.000 secs, 3444 KB]   Test 6: TEST OK [0.000 secs, 3444 KB]   Test 7: TEST OK [0.000 secs, 3444 KB]   Test 8: TEST OK [0.097 secs, 3444 KB]All tests OK.

Your program ('calfflac') produced all correct answers! This is yoursubmission #3 for this problem. Congratulations!

Here are the test data inputs:

------- test 1 ----Confucius say: Madam, I'm Adam.------- test 2 ----LupgTU{YtMzkojlNfWiuRXReZYzcoOwuGuqo{WEzQZe[LqoHxgNsDdoixRIReZplGXKgcSJthF[gcWkCWinQvfIIgcikm[lk[kFB------- test 3 ----/*ID: jweisbl1LANG: JAVAPROG: calfflac*/import java.io.*;import java.util.*;public class calfflac{    private int money=0;    private String name="";    public static void main(String[] args) throws Exception    {        FileOutputStream out; // declare a file output object                     PrintStream p; // declare a print stream object                         out = new FileOutputStream("calfflac.out"); // Connect print stream to the output stream                        p = new PrintStream( out );        Scanner in=new Scanner(new BufferedReader(new FileReader("calfflac.in")));        StringBuffer str=new StringBuffer(in.nextLine());        while(in.hasNextLine())            str.append("\n"+in.nextLine());            String maxPal="";/////////////////////////////////////////////////////////////////////////////////////////////////////////////char[] letters=new char[str.length()];int size=0,indices[]=new int[str.length()];for(int i=0;i<str.length();i++){    if(Character.isLetter(str.charAt(i)))    {        indices[size]=i;        letters[size]=Character.toUpperCase(str.charAt(i));        size++;    }}int maxLength=0,maxCenter=0,maxAdd=0,maxDiff=0;for(int center=Math.min(size-1,1);center<size;center++){    for(int add=0;add<2;add++)    {                int diff=0;        while(center-diff>=0 && center+diff+add<size)        {            if(letters[center+diff+add]==letters[center-diff])            {                diff++;            }            else            {                break;            }                    }        diff--;        if(2*diff+add+1>maxLength)        {            maxLength=2*diff+add+1; maxCenter=center;maxDiff=diff;maxAdd=add;            if(indices[center+diff+add]==str.length()-1)  maxPal=str.substring(indices[center-diff]);            else maxPal=str.substring(indices[center-diff],indices[center+diff+add]+1);        }//if    }//even/odd} //center//for(int g=0;g<size;g++) System.out.print(g%10);//System.out.println();//for(int g=0;g<size;g++) System.out.print(letters[g]);//System.out.println();//System.out.println(maxPal+"\nlength="+maxLength+"\ncenter="+maxCenter+"\ndiff="+maxDiff+"\nadd="+maxAdd);p.println(maxLength+"\n"+maxPal);        p.close();}//method}//class/*private static int palLength(String s){char a[]=s.toCharArray();int sum=0;for(char c:a)if(Character.isLetter(c)) sum++;return sum;}//method}//class*/------- test 4 ----jsZNkDJikyZNuBn[M{iKrLJBYZuNPdxwUsiTnXVOvPycpnhUfbNKxVcKWM[FS[BxERSQfhTEOHcBCrTGLmwSLhorYPItqkWdMkpHZcXOqVsgVOFXfXhrRRlJhXpgR[KMcgMnpQI[[OYZMJUJCDLQtyCptQUem{gbwvtfpL[ScIvbXmikqjOtqSdiQzBRz{ojNlfCGlDNidKgvoPmOCznYNPRLFmcRpMGwSmybIKMSoBJFWxRjMncudIYecbwaoeuidhtnthdiueoaIxsWvuQuEnkKwTWcEIlvKMjiByfZTXEsWdCmLJDglPmqdtkoJmNVwRUc[vcpvlRJOKsXilihdskjNjQdmdQRl[o[GUyuvnToBHOOysTCJoxPkbQGeGKqgTYwplRCbCrFulDkghxjMxTCbJKlYfUJSDr{FEuRIMNtRlNkiSYbnzKCphJNXkRNgxWgdoUcclHkUmOIdXdgGQIiYvqiYtsEgtCmrISIiUhgUpZgUMWdyKZfUd{FHfnjIbrOOeqtGkFyiRM[TweYhEKGTVEiUfxZEzEyyhyWBnIpSIxDbhyPGcHtoLZXsEkoHoy{xgZkEhusH[bbHmrhlqKvupezBclIRveUmYIiTOcikDllejhVLOKtqZstPWh{mRkKDosonzSgoFiENMFrttkSSbiPHOXiLFPxZsvf{vlCCGhGhHfdSnEzVldwccoBrQK{nOcVgcRNYcvgIHotsStQRhP{hycmZbZMbJPsQmsQmYqXC[sPPlwiBOgPqfwTZWdIIuvOwofRPyWHikNCJywZnSokdNYtvrTcMelZPpYfHzLkTnSmOLswzJjYFUoudRuxsgrQNMlLfDHyCEreiSlNFTiegfdwS{zrmEPUqIoLRGsx[S{erjzZomRvL{BMuYlfkhowldDjxPFYDRYpHP{wSMWGDqvGIkRMTSLdMvizVRBmSoUg[flLveglrQx[wXmczvngkILquSFfeRCBYjZsXysjRCrXhkfjFogneKWhsipDrFxyfgPM------- test 5 ----/* Prob #3: The Errant Physicist *//*Wed Jan 19 13:17:15 EST 2000Wed Jan 19 13:42:20 EST 2000*/#include <stdio.h>#include <stdlib.h>#include <string.h>FILE *fout, *fin;typedef short term_set[100][3];int terms[201][201];term_set term1; /* coeff, xpow, ypow */term_set term2; /* coeff, xpow, ypow */char output[2][5000];int opos;int read_term(term_set *term) {  char str[100];  int state; /* 0 => coeff, 1 => xpow, 2 => ypow */  int sign, val;  int n, pos;  if (fscanf (fin, "%s", str) != 1)    return -1;  state = 0;  sign = 1;  val = 0;  n = 0;  pos = 0;  for (pos = 0; str[pos]; pos++)   {    switch (str[pos])     {    case 'x':      if (val == 0) val++;      (*term)[n][state] = val *sign;      state = 1;      sign = 1;      val = 0;      break;    case 'y':      if (val == 0) val++;      (*term)[n][state] = val*sign;      state = 2;      sign = 1;      val = 0;      break;    case '0':    case '1':    case '2':    case '3':    case '4':    case '5':    case '6':    case '7':    case '8':    case '9':      val = 10*val + str[pos] - '0';      break;    case '-':      if (val != 0 || state != 0)       {        if (val == 0) val++;        (*term)[n][state] = val*sign;       } else n--;      sign = -1;      val = 0;      state = 0;      n++;      break;    case '+':      if (val == 0) val++;      (*term)[n][state] = val*sign;      sign = 1;      val = 0;      state = 0;      n++;      break;     }   }  if (val == 0) val++;  (*term)[n][state] = val*sign;  n++;  return n; }void finish_strings(void) {  int lv;  for (lv = opos; output[0][lv-1] == ' ' && lv > 0; lv--);  output[0][lv] = '\0';  for (lv = opos; output[1][lv-1] == ' ' && lv > 0; lv--);  output[1][lv] = '\0'; }void add_int(int num, int str) {  int len;  sprintf (output[str]+opos, "%i", num);  len = strlen(output[str]+opos);  for (; len > 0; len--)    output[1-str][opos++] = ' '; }void add_char(char ch, int str) {  output[str][opos] = ch;  output[1-str][opos++] = ' '; }int main(int argc, char **argv) {  char string[100];  int nterm1, nterm2;  int state;  int lv, lv2;  if (argc == 1)    {    if ((fin = fopen("poly1.in", "r")) == NULL)     {      perror ("fopen fin");      exit(1);     }    if ((fout = fopen("poly1.out", "w")) == NULL)     {      perror ("fopen fout");      exit(1);     }   } else {    if ((fin = fopen(argv[1], "r")) == NULL)     {      perror ("fopen fin filename");      exit(1);     }    fout = stdout;   }  while (1)   {    nterm1 = read_term(&term1);    if (nterm1 < 0) break;    nterm2 = read_term(&term2);    memset(terms, 0, sizeof(terms));    for (lv = 0; lv < nterm1; lv++)      for (lv2 = 0; lv2 < nterm2; lv2++)       {        terms[term1[lv][1]+term2[lv2][1]][term1[lv][2]+term2[lv2][2]] +=   term1[lv][0] * (int)term2[lv2][0];       }    state = 0;    for (lv = 200; lv >= 0; lv--)     {      for (lv2 = 0; lv2 <= 200; lv2++)       {        if (terms[lv][lv2] != 0) {  if (state == 1)   {    add_char(' ', 0);    if (terms[lv][lv2] < 0)      add_char('-', 1);    else      add_char('+', 1);    add_char(' ', 0);   }  else   {    if (terms[lv][lv2] < 0)      add_char('-', 1);    state = 1;   }  if (abs(terms[lv][lv2]) != 1 || (lv == 0 && lv2 == 0))    add_int(abs(terms[lv][lv2]), 1);  if (lv != 0)   {    add_char('x', 1);    if (lv != 1)      add_int(lv, 0);   }  if (lv2 != 0)   {    add_char('y', 1);    if (lv2 != 1)      add_int(lv2, 0);   } }       }     }    finish_strings();    fprintf (fout, "%s\n", output[0]);    fprintf (fout, "%s\n", output[1]);    opos = 0;   } }------- test 6 ----HMOLntTeEvwoYrYqswpfGDtFFxkbJjPkzLLOMpWbUbhJTvpOKBOLFfsbboEWOeVqRyfegLnJNVTmHiHEpBjDNNZnscYpDevgiClFSWmcpnqQZC{coYhUUoXiSxw[fnILqTlvcJYKlxT[wb{YUmdiPchBRyTGjrRxfoPklPWjnvCtfTYgYjPOeRSlejfqlfyLDHNQxQfsgoctMugexzFzUPoGHdWtrRQffvRkIIEpHsmkXzuZGHNGOQbcVkEjsnlKFMGMflfNFgPkXsiysDBrpLNUTzooerIXXYNcquksNKZkeopkjJvvXmcIUOPWydtztWSYgvmwuyH{cROwXUJD[w[R[cikeEQyR[jnzUzSZduPNosodiPUcmwYv[NMGCLGdZHfEJtUHCHtNKKlcebqXEEdrDSlQBjmVSx[fjbSPpQktgWMgmkWoWpgHJUdcP[oCijZGLHXmlXTwWg{iTJNMJphKhFFFuKT{iDXsiLHfblJfBVFecGVdEqHxdmYNer[t[ZvWpJfdNseiLosLeMlXtULELH[vnuoWnRQvTfm[fjwomNlRrtVOCrBjXJVbCfXJdTpMzEsEdHhdwVdgEDFiqcwWqVKfFybmBvdInzNgxzymbjLfIqCCgVuVBXwBrydmcvZqwXLgllkDUBchofXQfJDBruXBwMN{tNziNTFDFwSRxlukPCxr{{d{YIRd{Vxg{YRGxUGgOtLqiepOqk[WTViDOYqJybW{{RxVBpRdMcnzXVNdDMgqwpVqQicMeQBdMDVYwCDWjvjiODqsUTNedyXzYp[SUcBKoitJrb[SsDDFqE[KQoCEcfEZdnW{y[sl[qUVYwWWvC{BfVjdDLmqeKgxOR[ls{kkVhZqJCFPwGYZUpCPSDTtRQrnKiiwffICppwi[IBenSsVWcscInXPSORdCWGpPfunXEUrpevH{ptisotM[KHFeZpUiTKiMnWUmPDncEREEYwq{M{rjeZRBQQPpiRTzLkJgcBeLsnvsnzYjVkJoTCqroofLmwhsweQpGFEDYbvuVquDhUxe{yEvQeGqndlVLoWK{zHEoGEVZvBcDThtKJkNTRmmhvWTlWOXgNRnrfOOxDEPhGzriUdHjVcSQPqJOrsRlypGqUjPgTiRqiOGhMHTsny{FyShWoLIVmkwqCkRT{dSthXVhSKRWoutSWxRRULFVhKfQlvvVGDIthquIOXxkwKqGwrceNudGsIPvv{ifOHgYDzswhXUFvzkGzmxW[EZ{C[nkjKLpCOjxez[gtxkNOKMjYlfoikKiviKWqxdP[gGmGUksFIunjmNkYrkRxfLMXEXbypLwpMpnMSolWBexmMlFUwtt{box[cYfLGyTC[XZDJl{dn[kIeByKxPCvhpPhstqRHpUBEngpntWcGPvoxE{hTJBmbODjJdDErQMvqDBdSYfDeqUf[cQqZVHBOTEg[NPEl{Cgi[ZmxfzIGSMIbxwddqbNGybdBzqJmtIkWKBuNkxSHKWnxpZOXRuccTyw{BxCRYnljgmitLkwLdi[UoJQ[tdXbnoUDfbJCbVBMFuKJGDtVQBqVLhKEIQTNTwVimkkRUgqSioFYQiLWywjdjHSWf{JGRjdxJJeuTlykoMGVfxHILGB[yEqyv{[xXmNSKmvEwotOUOiyeIDoXXKkGPimQVKCbeJpqWlEDoVmyjxVU{Ri{fkzbWlhMqzGkWuGhEtCPPEIJziBJrZwHWCSvOBosRQRmbEqwKjmHbUrbMxnKUkyvbjHmwwRtLEZLBBZGZnDMdLcwTKNiomDnFgXFXTTkObnoQOpU[[qvUkCWNQeBCMpKeKnfSSIJKuCgJTxLLTYDLIIMqEzubEPXJwMVuoTrFyEkEBDrnRmvnfImqPBxNYV{BgBQISqbNZNTUOewdqbq{YLWMLrxtYX[VCVF{kziZJvZPkrlzHenNoBVnpiVkIOlEgDMP[TpynrClZclBoIRXLLveOOUZXcgWeSZmEKfEHHpsGsVERUjzcjuXe[JELziEXncqSjlLjHcgerHjRHGWvjKUEkJruybDclgFKFHmYpluMgyERIuw{xzQeEKTPhgMXSFuOkYkFPlJGl[HPNmXvMGtjYoSwEyrjEitgv[vUbXBtNpCgQgrnwZUH{mxfVMPbfNRhlcxYnxosudvMJVxlglwzSrwMMyrGhzckWKcZEXypxQVnvFVEIixCX[He[QowofoZxEmsDcgmy{ETWzGfcVnWEzdoLMjfco[k{pqCIbKLCj[pqJVQvhpDiGSMMeIMWMlkGPYqUwlEchBGLMTBMsgOckRIVBgRzMyqbsoFObbWXsdsksoPpuLRLcBITYHWSxvtsmk[vHYRNMdJw[R{fKnjLcDZgjTDxEvVpnPIkibcrqCXVMeOlTWyjrMrclyBhiSbWCTwfMesiijYuz[NTnoNVH[d{mtxPWvkXyfCixFpkmkNeMSKsYRUHgPQv{kcUlJ{CWXrGOrsFQDBfIfoeYZdLyUNgmuFxmTHkwSmpeYhSnEkDCvrmmLHgi[IGelKijTgNIPXyZrQBfFzzOHWmQrVPm{BuLuLRKtqiERmRM{QssldbZQXUvxRfdOxTpREdKqqfurPLZKdJFiqKEFjdLMPQVJCoQpGfycsjZbRbqIZXqUJfhNL{QwQrEwUsefjTqNbJnv{hlgVNILbGJrFZDtFGcUiVyGjPdbEzSJQM{olxoHNOBxMlM{itpOpiMZko{oFPRSyfRmChhLRZicLeEzgOV[sJMorTZlLKjOmj{DpPfCPupWtmNPBfhSsWKSskqfKJQVWsgYRUrxwpLSkSzQmXQpogtNiYVnrDRkzTbVPtcvIcIGtoBKdokSjgQSTziZniImUnjBobGBMYDSICR{oMrnsIfVHjpZ[MnzyXwtwjjRWz[HXoekwPpdiMqgbwbZvHZYxlUwzRJ{ZKxXvPuNZCLseyDwsCOgCBGllVjfuZZYZfxUDtiMqNSmtHeieOwYChUbXJFZepKjJmec{PZEdjgeMRPIWBdfKwIdlRT{N{pyBk[ghR[zG[KDpxJnTMKBSGmBTqZYTrpl[zN{svJvvDbHVvbQCJotnJixMv{GzCG{gVqy{yJJtGfmMEfyKDfbGLSjWd[fccLQQTTYtnCVJzmsLTspbCCRieYhvohSzNuXJnxegoFJYeBXhOkUicjJMSQPWTOVyvTzUgGQlIHooyVX[ZFTX{MTXwwfqltDylxZCVOkomQsrqKcsIrJfGRbvmdQgDwVsck[nhvHU[WpUPwdnUPlZFyKeNz[ShzzNhLcierWwTILHl{rBmoWS{LbD{mJCyCmMPkvIJpYDBiiclUgTeEesdwYYnHpZMVWMRWZguCZpFFeTVGCPgmZGsJHbsFJkLuheURFKEmpvTbxf[tHskSflSrjmkdxNfcBmczeOfCqP[GYsXPOHewoCngQCmmyNxrB{DLfIQuIVbDJtpQHulZqgUluULTkZVpdlmbqgGKwuzzXILtdZMpHlLnyMsGiFIe{zDoJWt[noWtFvUYBfKMqlpzvFFtuWMhpPDPHBIwlSyYXfmUxXiSKKstgrUVIYLtZh[wrbKKeSqNlQcdxIiHhG[fR{hDXNB[xvkChhxJhuVFPQFowfjWownYNgnx{scGnDRlbQkHeCWTl{qlQymlN[nRShRjjPObMJFKtnpwwucokJb{gkCBcBQxYYsjOZ[bipDfcVBDiYnBYPZcZpFfYYRXByBNxVPbMOJwSftHvGBUStLUjN{XcZdOItkgBjshKsCzQXcpcrUOWFyoeqUilbNVw[jijrxnjgqLrmzRSKCdErxbgIUvcmnvsDvEZZXbgY[jZcXP[HxTErQD[Vs[yBXIGryyBCfmeCkmbBctwKtUUKZcczetXCBFEPuQDmvFqHNzSHvPyVlFKqD[wmfSJpicGYhESVMmBrhCFtSSRNRojDDdMJ{i[RuoyHRWDuNJPQ[TxQs[fCCvWkLFIorhPdbuJ{TPJWqTvflYIeCnsvgZHIWTFCJOZyplwrPQLsxwIQxGuvoplMvwyLxveUMvCOuzhfLgNdXng[GxjxMHfTKYOfXlzuElbpCeFWUlUSisnJBd[nLImfXMfgGSiiuK[vm[fcURRKtoCKFoppKYUqmkD[vWjqxslNwIJBdyE[KUzEMICQEmtIxbBzUCcOBkQZvGWJsTJdkvkyeMfNVNGJfqTpwmsPQPkuuUcvdTcXsdRfR{VFZmbhRYIQCIjZG[sNCrFFwoxCwrVEn{gulJhlPgbJQ{nKfdWshwnqEnC[UccgvRfxJYZxifeCddokrYJHnnsNSKvSNbdIlQBlBYgSbSmUEyf[MjM{QFHsydTHqClKRimpEwqsXVrlgBomDI[ppoxR{INWFHHxmx{PvSilTwLXoIwdIslwkXvyBsL[rsMTtbRIjrNrjYWsfYCK{XgRkSwkqyFxY[kuTBWmzClzSMlhcipwSeNsTfeFZsXSELbYbeSyoPFninceEwTWVhvxf{dmQPDwGLlsGsBjyoVlXCSFOWuFL{kqriCWSwugpgoIgJPwcrvbIvxjCUyoHTVBR{DyXMSFIjZjtbpjsRIfFYkQ[WudeZfYQRCdLDCkrzjxFfdFQQQxSUsvITUDkijFIPmyLxUmjrTc{oVgM[GBOtnJIZTCIbhFbqBWNWrWDYTnpEtOmyUbHHzwWVspUb[erxURTXYSlhTioyxyCYRvLzJBcVeHleeuV{FTLXImgej[n[EWLIpEsSyiiMvkoYDPOdxCHnViGtfIlKZbvPJFJumGWsBtf{BPdmTbHExKjs{wOHVKYIkRDJFrtXTxnuyDxlsXwUwNsgbpfuLxgPisqdV{yVilto{lSDLCgMuMqOQkClIHvyEfEJBN{OZyuceZREwEyWgokuYKzsUcnfohuKMEZDpnxQVbxpNvyfcefXsGOfnplTZEsFqUPnZvOugKlnQeycShLmmWH{wcLoEibPEXoYPZIhiJWTPBJhj[MxQWu{jugDlJSFtxCFPoBkwnOVtsTkbq[TuWuFHR------- test 7 ----JBDF Np s lqkJ WTlNcEhYvi ngvHPgcxwgJ I EbN[ITZIc e FScjt kIgmnNhcNt V s dJs LTO jfILNVK l[xD Z f eDKilfvllOPElrO NGgWg SPkYnObxd t WpBQoHYIVx z RDtEx l{vrU WKwB mRRHqMOmGMq{LFEEdRzRy p [FZx sI[rgHIC TY d UKdNB vdFFGKIyY Ef{ VNZw L s hL IHiGWIk KmbE QnzgM[ dTTG L iry ECDyveG H P JK BRQJXKnQU efWFZW bZ xLngrxufge EwMlTB xqCSXIrEy uyHQbmUjt deSnSOft{ moyqn dPO V TyNkjHKjEH l{RpwEY ypEhzRyrmvV[ZLEbobxhQEDrgv COBs L D JGBQSeq NprTS [vdk Q tY VnD G DNPtrsBY r fFhRw KVU[ f hDTodEpgpsWDzY OnLZfy XgCUxGgr fyzovlz m Bjn eyR lEW{ cMd grI kzt p sjDG n XzlSt Y if CdfYts SSTiml x c lWb oBweCEGg p{ E ZsNMR IiJ C FJ hF pXxsS StjNBdudKu wPcIYK dUP XZxwecVWDmNZMUE ETbuBhf QdTTbbu bJPrmtTLQFGDLbKgtzsx jCJJr KgzOB fzuCo RCNkgIUu rMoEzzUHWo ro Vv t pV m Rk L TxoTynStMPTJzSOk ZQcYu DUm[xyN I Sc EvOEMbMnP Hj Dn fTMiYiKxyGGzGyok DUM[Y JsBTJJ Bt nxbrg[y g hyD [ WpkeloRMK NS gwO zNnX LqinwOQy SFKIZfp MzmNUqMV IfI FsLtPjqtDQu FtB j ZfznIwB ie IJTGdQ{lOV ylq esjR lV OQJTYx D w YKmIgN WOP rsDlk[oS PwYjPMld V h JZEvUmjRsW [ SLXVFnDZo qqmbr wDV Bo QPK DRsRyd W{oeEo[thr vhRNjEPmX qTs FtRDsCYdTP Sq liUUBVTq RNRlZXPXm Zc[L{UMdqE I TBx r Q pgRptuhTVyBZ Ix FDUCo bl cccfR fwLPx yxM Er urCvtX Gz {n PyQerLpehBdRN[sNhyWF Rx PUIvhv k{EKpiunzs W SHr OKDmxRRuD k LueXvcOn [DidveQEmIMcxkypWnF P k t zOf {Yskor suF BDNwIhBcl{dTkXs{kd [XJ PoEBQ KZ [HzExrhchxzY tO{ nwtEMu{cIGk YWUcSP[xkIIrk v T BTl Sok Dlm R TT SW l VWkfhIY{nrw juNIy KKivMrlgM UypKgNZLhRvcIofYRqp bGDb J JVfeBCTTZ{EtFLWTsoii{Q{ vq[ YqeQH mbdWHKzsMhIG FR JclY yr DYcKkeOeeDi E rx S Id[TRbfIPpSZUbQdresOer Nw V O jibMFnNFHj mT O jtL i fDpUiJ oKchJ FpbwJnU JRhi CYHwFpUdXJMYk FsKqLeBipvXcYd [H DxQ g{ us jlCDWvvg iRs{Z UjcMimb X CR wT FtRw d EGUw os{ JXYDCWJjFXy oGz q HpKKTFjcmQvTi {muEPxGqxk lFPMkq bIRqRBoHqQ SlRcZH nJ {ZETITJPqYBHGzUfY oCBRp jrZ vi LJQ oDiFNnYb mtWUT{Mxl bfziY iv [XhjqjDMNMQ kI hGRhxHdLpM N sGCO n hQnWXZQ G x[b NytfNYCECCgYS[jif bKSG P hd[Vgk Enm NoiyyfVYqYbY fXGQEYf rpmqcxVbzsSmMfy qcouTyI xqpT f Siy TkkG nFhL tCEr{QtgrEEMV b nC H UES[kuu WHI LVr kS q ikwG jIuYvzdJD MrlyvBBNg{DvO Cbw dMeq pJFK SbeBsOoFDtYMKU BlZ SLSM Vovye{cTcNqN H Z FO N GYfZstv ZoPS JEQmh UYw OBC uNx mnx VwlUvR I kszeU jp VD DiX QMFj Z b kLBSwJ[ q rwZQ DWlWGgiY YkkgTPDqjhkcTLUp gSn kDQNyQcDyT wdMg v JR FCZcsEoO qMQjI{ TRiHjEuHplQ fSF peoyIsDf DjK Xgc s miy[Vpqdu wxJUJuFEW vxk{vbuj cybMywmtQ xc veXuu E r q U hHQCNg giMmRB pGmefYeNucDcV[N KH ur enir cSVtwRU fPbb VKudVSUf zy{U mlk[ KZCJV fHu M[ EBH vs th bFMOF pR gkwb JgQ Yb[gLvrSL TwspInYu cBcsBuMiT OTRNyTzRyHk[T{nCLbhoTRhs Z sylRyX EKhhiB meBKOlVQkdH X E q[Z SyQJc FjMJEhx Ithi[kvVTKLET jz QyyM hHBXYJlr iP Sn h uFyWm Mt Xj OpFtcXbKMlPykVoZTeTf[K DJ{yOiYGQ opXGQzftbmQjCnGDZWNeS p v UK PXPn xJkn qyCY tEG mjIix h no gbCb mFYBcXcb t m PO[ WDT JEjJo FQRPW[ hp BrvU Jqp d h DI iqwz UmRSUefk Z OScMxpcl H L qEQqfQ[ oPTU T i Zi[VwInmQsug{q Cw FnKzwqnBgPs G[ RNn YSRQww c dQjNCrHUjm O mBzp[LKqhKph { R XjQmUOxKL l nH{LwTP xPSs RYyEYptO cZB ToZtLWk mlwZtohQdQtC khsNVogrI GkUeZgQ nUsuJiP vQg Gt iSz Ll Ql SX HLRFIwWjnXbSogFRe NiueC zlKhnR f T fv{kErQ zz e i pOtLtJKJN pUdPn Hd OEe f NVdV{i JBkmQ IEvsPTPkQxZXHoZRdn yQ[ XkHol h DIirRnXqDGK{s i U {h BISiqn o sx knTm[ k[cHF jPoH[dq dzYZ iZhwcNPY EDgYy rdRh{d uHfb DjWH R zD{ yw{FOLnqynqdzuRgUhvEpg f nMZG WVExXZeQ W HJTIObyfnP qkdq[WI qFnNl cIFQKoF xNGK tng yMcFlIhJestQXTp[Hp ddC mtDlfP{d l EEYM{yOC wz DBG rz U{ydsth UzyCQ DOZwHjcwqJNed jxWJDbxRgu X ji QDTn { j cCf SwuG wyZ C J eJT qdgw opRS{ XyfLcD xmWILC[ledgPm[ pwk J XWtDpwYqY ycK [UdxJ[ vvlV[h EcB Qr mLlgRSZGk cEOiUz RWLu vJdq qbECXOrXSLogc wlZxfC{H r dGxlskx iGgkVpOfF LNyeKTzNIfjWR[niRi US kvF U tmugjIiTcHK vGpk WF U K S qthXw zxzz dEwQfwwo E Llk TE XNjHmrEtXkKvMh e{tNLjWd YFkqIvOGY OQ L h PzpENBcKmnRWwC{xq HTeyQOMYDz[vueNtMV HW OV buQK y InkPi itNfJlHbReg sRP exO Lh s LnsQQQ ybIjKtDBpFFXHbHf oxwnt cxnMGhgtK vxq Jiy XIfDGr ikZ FJYu tg[ c JIJsPGiGUVym Tq[gm Vmd { no IFbqrKTVxJlweQl XSrrdWJRzTUnbJXF OCv jJd m BWCgctwULlmd n mHqlK h PiwBbkDzIMo Y T SZs y lzHtv XBW r uUcC{k o iTVzhrl{zDhBKZTBwkKqykUT------- test 8 ----AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Keep up the good work!

 

原创粉丝点击