libtheora-1.2.0/0002755000175000017500000000000014771707125012150 5ustar pereperelibtheora-1.2.0/examples/0002755000175000017500000000000014771707125013766 5ustar pereperelibtheora-1.2.0/examples/tiff2theora.c0000644000175000017500000007042314771706724016357 0ustar perepere/******************************************************************** * * * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. * * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2011,2025 * * by the Xiph.Org Foundation and contributors * * https://www.xiph.org/ * * * ******************************************************************** function: example encoder application; makes an Ogg Theora file from a sequence of tiff images based on png2theora ********************************************************************/ #define _FILE_OFFSET_BITS 64 #include #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_CONFIG_H # include #endif #include #include #include "theora/theoraenc.h" #define PROGRAM_NAME "tiff2theora" #define PROGRAM_VERSION "1.1" static const char *option_output = NULL; static int video_fps_numerator = 24; static int video_fps_denominator = 1; static int video_aspect_numerator = 0; static int video_aspect_denominator = 0; static int video_rate = -1; static int video_quality = -1; ogg_uint32_t keyframe_frequency=0; int buf_delay=-1; int vp3_compatible=0; static int chroma_format = TH_PF_420; static FILE *twopass_file = NULL; static int twopass=0; static int passno; static FILE *ogg_fp = NULL; static ogg_stream_state ogg_os; static ogg_packet op; static ogg_page og; static th_enc_ctx *td = NULL; static th_info ti; static char *input_filter = NULL; const char *optstring = "o:hv:\4:\2:V:s:S:f:F:ck:d:\1\2\3\4\5\6"; struct option options [] = { {"output",required_argument,NULL,'o'}, {"help",no_argument,NULL,'h'}, {"chroma-444",no_argument,NULL,'\5'}, {"chroma-422",no_argument,NULL,'\6'}, {"video-rate-target",required_argument,NULL,'V'}, {"video-quality",required_argument,NULL,'v'}, {"aspect-numerator",required_argument,NULL,'s'}, {"aspect-denominator",required_argument,NULL,'S'}, {"framerate-numerator",required_argument,NULL,'f'}, {"framerate-denominator",required_argument,NULL,'F'}, {"vp3-compatible",no_argument,NULL,'c'}, {"soft-target",no_argument,NULL,'\1'}, {"keyframe-freq",required_argument,NULL,'k'}, {"buf-delay",required_argument,NULL,'d'}, {"two-pass",no_argument,NULL,'\2'}, {"first-pass",required_argument,NULL,'\3'}, {"second-pass",required_argument,NULL,'\4'}, {NULL,0,NULL,0} }; static void usage(void){ fprintf(stderr, "%s %s\n" "Usage: %s [options] \n\n" "The input argument uses C printf format to represent a list of files,\n" " i.e. file-%%06d.tiff to look for files file000001.tiff to file9999999.tiff \n\n" "Options: \n\n" " -o --output file name for encoded output (required);\n" " -v --video-quality Theora quality selector from 0 to 10\n" " (0 yields smallest files but lowest\n" " video quality. 10 yields highest\n" " fidelity but large files)\n\n" " -V --video-rate-target bitrate target for Theora video\n\n" " --soft-target Use a large reservoir and treat the rate\n" " as a soft target; rate control is less\n" " strict but resulting quality is usually\n" " higher/smoother overall. Soft target also\n" " allows an optional -v setting to specify\n" " a minimum allowed quality.\n\n" " --two-pass Compress input using two-pass rate control\n" " This option performs both passes automatically.\n\n" " --first-pass Perform first-pass of a two-pass rate\n" " controlled encoding, saving pass data to\n" " for a later second pass\n\n" " --second-pass Perform second-pass of a two-pass rate\n" " controlled encoding, reading first-pass\n" " data from . The first pass\n" " data must come from a first encoding pass\n" " using identical input video to work\n" " properly.\n\n" " -k --keyframe-freq Keyframe frequency\n" " -d --buf-delay Buffer delay (in frames). Longer delays\n" " allow smoother rate adaptation and provide\n" " better overall quality, but require more\n" " client side buffering and add latency. The\n" " default value is the keyframe interval for\n" " one-pass encoding (or somewhat larger if\n" " --soft-target is used) and infinite for\n" " two-pass encoding.\n" " --chroma-444 Use 4:4:4 chroma subsampling\n" " --chroma-422 Use 4:2:2 chroma subsampling\n" " (4:2:0 is default)\n\n" " -s --aspect-numerator Aspect ratio numerator, default is 0\n" " -S --aspect-denominator Aspect ratio denominator, default is 0\n" " -f --framerate-numerator Frame rate numerator\n" " -F --framerate-denominator Frame rate denominator\n" " The frame rate nominator divided by this\n" " determines the frame rate in units per tick\n" ,PROGRAM_NAME, PROGRAM_VERSION, PROGRAM_NAME ); exit(0); } #ifdef WIN32 int alphasort (const void *a, const void *b) { return strcoll ((*(const struct dirent **) a)->d_name, (*(const struct dirent **) b)->d_name); } int scandir (const char *dir, struct dirent ***namelist, int (*select)(const struct dirent *), int (*compar)(const void *, const void *)) { DIR *d; struct dirent *entry; register int i=0; size_t entrysize; if ((d=opendir(dir)) == NULL) return(-1); *namelist=NULL; while ((entry=readdir(d)) != NULL) { if (select == NULL || (select != NULL && (*select)(entry))) { *namelist=(struct dirent **)realloc((void *)(*namelist), (size_t)((i+1)*sizeof(struct dirent *))); if (*namelist == NULL) return(-1); entrysize=sizeof(struct dirent)-sizeof(entry->d_name)+strlen(entry->d_name)+1; (*namelist)[i]=(struct dirent *)malloc(entrysize); if ((*namelist)[i] == NULL) return(-1); memcpy((*namelist)[i], entry, entrysize); i++; } } if (closedir(d)) return(-1); if (i == 0) return(-1); if (compar != NULL) qsort((void *)(*namelist), (size_t)i, sizeof(struct dirent *), compar); return(i); } #endif static int theora_write_frame(th_ycbcr_buffer ycbcr, int last) { ogg_packet op; ogg_page og; /* Theora is a one-frame-in,one-frame-out system; submit a frame for compression and pull out the packet */ /* in two-pass mode's second pass, we need to submit first-pass data */ if(passno==2){ int ret; for(;;){ static unsigned char buffer[80]; static int buf_pos; int bytes; /*Ask the encoder how many bytes it would like.*/ bytes=th_encode_ctl(td,TH_ENCCTL_2PASS_IN,NULL,0); if(bytes<0){ fprintf(stderr,"Error submitting pass data in second pass.\n"); exit(1); } /*If it's got enough, stop.*/ if(bytes==0)break; /*Read in some more bytes, if necessary.*/ if(bytes>80-buf_pos)bytes=80-buf_pos; if(bytes>0&&fread(buffer+buf_pos,1,bytes,twopass_file)=bytes)buf_pos=0; /*Otherwise remember how much it used.*/ else buf_pos+=ret; } } if(th_encode_ycbcr_in(td, ycbcr)) { fprintf(stderr, "%s: error: could not encode frame\n", option_output); return 1; } /* in two-pass mode's first pass we need to extract and save the pass data */ if(passno==1){ unsigned char *buffer; int bytes = th_encode_ctl(td, TH_ENCCTL_2PASS_OUT, &buffer, sizeof(buffer)); if(bytes<0){ fprintf(stderr,"Could not read two-pass data from encoder.\n"); exit(1); } if(fwrite(buffer,1,bytes,twopass_file) 255) return 255; return d; } static void rgb_to_yuv(ogg_uint32_t *raster, th_ycbcr_buffer ycbcr, unsigned int w, unsigned int h) { unsigned int x; unsigned int y; unsigned int x1; unsigned int y1; unsigned long yuv_w; unsigned char *yuv_y; unsigned char *yuv_u; unsigned char *yuv_v; yuv_w = ycbcr[0].width; yuv_y = ycbcr[0].data; yuv_u = ycbcr[1].data; yuv_v = ycbcr[2].data; /*This ignores gamma and RGB primary/whitepoint differences. It also isn't terribly fast (though a decent compiler will strength-reduce the division to a multiplication).*/ /*TIFF is upside down relative to the libtheora api*/ if (chroma_format == TH_PF_420) { for(y = 0; y < h; y += 2) { y1=y+(y+1> 1) + (y >> 1) * ycbcr[1].stride] = clamp( ((-33488*r0-65744*g0+99232*b0+29032005)/4 + (-33488*r0-65744*g0+99232*b0+29032005)/4 + (-33488*r2-65744*g2+99232*b2+29032005)/4 + (-33488*r3-65744*g3+99232*b3+29032005)/4)/225930); yuv_v[(x >> 1) + (y >> 1) * ycbcr[2].stride] = clamp( ((157024*r0-131488*g0-25536*b0+45940035)/4 + (157024*r1-131488*g1-25536*b1+45940035)/4 + (157024*r2-131488*g2-25536*b2+45940035)/4 + (157024*r3-131488*g3-25536*b3+45940035)/4)/357510); } } } else if (chroma_format == TH_PF_444) { for(y = 0; y < h; y++) { for(x = 0; x < w; x++) { uint8_t r = TIFFGetR(raster[(h-y)*w + x]); uint8_t g = TIFFGetG(raster[(h-y)*w + x]); uint8_t b = TIFFGetB(raster[(h-y)*w + x]); yuv_y[x + y * yuv_w] = clamp((65481*r+128553*g+24966*b+4207500)/255000); yuv_u[x + y * yuv_w] = clamp((-33488*r-65744*g+99232*b+29032005)/225930); yuv_v[x + y * yuv_w] = clamp((157024*r-131488*g-25536*b+45940035)/357510); } } } else { /* TH_PF_422 */ for(y = 0; y < h; y += 1) { for(x = 0; x < w; x += 2) { x1=x+(x+1> 1) + y * ycbcr[1].stride] = clamp( ((-33488*r0-65744*g0+99232*b0+29032005)/2 + (-33488*r1-65744*g1+99232*b1+29032005)/2)/225930); yuv_v[(x >> 1) + y * ycbcr[2].stride] = clamp( ((157024*r0-131488*g0-25536*b0+45940035)/2 + (157024*r1-131488*g1-25536*b1+45940035)/2)/357510); } } } } static int tiff_read(const char *pathname, unsigned int *w, unsigned int *h, th_ycbcr_buffer ycbcr) { TIFF *tiff; ogg_uint32_t width; ogg_uint32_t height; size_t pixels; ogg_uint32_t *raster; unsigned long yuv_w; unsigned long yuv_h; tiff = TIFFOpen(pathname, "r"); if(!tiff) { fprintf(stderr, "%s: error: couldn't open as a tiff file.\n", pathname); return 1; } TIFFGetField(tiff, TIFFTAG_IMAGEWIDTH, &width); TIFFGetField(tiff, TIFFTAG_IMAGELENGTH, &height); pixels = width*height; raster = malloc(pixels*sizeof(ogg_uint32_t)); if(!raster) { fprintf(stderr, "%s: error: couldn't allocate storage for tiff raster.\n", pathname); TIFFClose(tiff); return 1; } if(!TIFFReadRGBAImage(tiff, width, height, raster, 1)) { fprintf(stderr, "%s: error: couldn't read tiff data.\n", pathname); free(raster); TIFFClose(tiff); return 1; } *w = width; *h = height; /* Must hold: yuv_w >= w */ yuv_w = (*w + 15) & ~15; /* Must hold: yuv_h >= h */ yuv_h = (*h + 15) & ~15; /* Do we need to allocate a buffer */ if (!ycbcr[0].data){ ycbcr[0].width = yuv_w; ycbcr[0].height = yuv_h; ycbcr[0].stride = yuv_w; ycbcr[1].width = (chroma_format == TH_PF_444) ? yuv_w : (yuv_w >> 1); ycbcr[1].stride = ycbcr[1].width; ycbcr[1].height = (chroma_format == TH_PF_420) ? (yuv_h >> 1) : yuv_h; ycbcr[2].width = ycbcr[1].width; ycbcr[2].stride = ycbcr[1].stride; ycbcr[2].height = ycbcr[1].height; ycbcr[0].data = malloc(ycbcr[0].stride * ycbcr[0].height); ycbcr[1].data = malloc(ycbcr[1].stride * ycbcr[1].height); ycbcr[2].data = malloc(ycbcr[2].stride * ycbcr[2].height); } else { if ((ycbcr[0].width != yuv_w) || (ycbcr[0].height != yuv_h)){ fprintf(stderr, "Input size %lux%lu does not match %dx%d\n", yuv_w,yuv_h,ycbcr[0].width,ycbcr[0].height); exit(1); } } rgb_to_yuv(raster, ycbcr, *w, *h); _TIFFfree(raster); TIFFClose(tiff); return 0; } static int include_files (const struct dirent *de) { char name[1024]; int number = -1; sscanf(de->d_name, input_filter, &number); sprintf(name, input_filter, number); return !strcmp(name, de->d_name); } static int ilog(unsigned _v){ int ret; for(ret=0;_v;ret++)_v>>=1; return ret; } int main(int argc, char *argv[]) { int c,long_option_index; int i, n; char *input_mask; char *input_directory; char *scratch; th_comment tc; struct dirent **files; int soft_target=0; int ret; while(1) { c=getopt_long(argc,argv,optstring,options,&long_option_index); if(c == EOF) break; switch(c) { case 'h': usage(); break; case 'o': option_output = optarg; break;; case 'v': video_quality=rint(atof(optarg)*6.3); if(video_quality<0 || video_quality>63){ fprintf(stderr,"Illegal video quality (choose 0 through 10)\n"); exit(1); } video_rate=0; break; case 'V': video_rate=rint(atof(optarg)*1000); if(video_rate<1){ fprintf(stderr,"Illegal video bitrate (choose > 0 please)\n"); exit(1); } video_quality=0; break; case '\1': soft_target=1; break; case 'c': vp3_compatible=1; break; case 'k': keyframe_frequency=rint(atof(optarg)); if(keyframe_frequency<1 || keyframe_frequency>2147483647){ fprintf(stderr,"Illegal keyframe frequency\n"); exit(1); } break; case 'd': buf_delay=atoi(optarg); if(buf_delay<=0){ fprintf(stderr,"Illegal buffer delay\n"); exit(1); } break; case 's': video_aspect_numerator=rint(atof(optarg)); break; case 'S': video_aspect_denominator=rint(atof(optarg)); break; case 'f': video_fps_numerator=rint(atof(optarg)); break; case 'F': video_fps_denominator=rint(atof(optarg)); break; case '\5': chroma_format=TH_PF_444; break; case '\6': chroma_format=TH_PF_422; break; case '\2': twopass=3; /* perform both passes */ twopass_file=tmpfile(); if(!twopass_file){ fprintf(stderr,"Unable to open temporary file for twopass data\n"); exit(1); } break; case '\3': twopass=1; /* perform first pass */ twopass_file=fopen(optarg,"wb"); if(!twopass_file){ fprintf(stderr,"Unable to open \'%s\' for twopass data\n",optarg); exit(1); } break; case '\4': twopass=2; /* perform second pass */ twopass_file=fopen(optarg,"rb"); if(!twopass_file){ fprintf(stderr,"Unable to open twopass data file \'%s\'",optarg); exit(1); } break; default: usage(); break; } } if(argc < 3) { usage(); } if(soft_target){ if(video_rate<=0){ fprintf(stderr,"Soft rate target (--soft-target) requested without a bitrate (-V).\n"); exit(1); } if(video_quality==-1) video_quality=0; }else{ if(video_rate>0) video_quality=0; if(video_quality==-1) video_quality=48; } if(keyframe_frequency<=0){ /*Use a default keyframe frequency of 64 for 1-pass (streaming) mode, and 256 for two-pass mode.*/ keyframe_frequency=twopass?256:64; } input_mask = argv[optind]; if (!input_mask) { fprintf(stderr, "no input files specified; run with -h for help.\n"); exit(1); } /* dirname and basename must operate on scratch strings */ scratch = strdup(input_mask); input_directory = strdup(dirname(scratch)); free(scratch); scratch = strdup(input_mask); input_filter = strdup(basename(scratch)); free(scratch); #ifdef DEBUG fprintf(stderr, "scanning %s with filter '%s'\n", input_directory, input_filter); #endif n = scandir (input_directory, &files, include_files, alphasort); if (!n) { fprintf(stderr, "no input files found; run with -h for help.\n"); exit(1); } ogg_fp = fopen(option_output, "wb"); if(!ogg_fp) { fprintf(stderr, "%s: error: %s\n", option_output, "couldn't open output file"); return 1; } srand(time(NULL)); if(ogg_stream_init(&ogg_os, rand())) { fprintf(stderr, "%s: error: %s\n", option_output, "couldn't create ogg stream state"); return 1; } for(passno=(twopass==3?1:twopass);passno<=(twopass==3?2:twopass);passno++){ unsigned int w; unsigned int h; char input_path[1024]; th_ycbcr_buffer ycbcr; ycbcr[0].data = 0; int last = 0; snprintf(input_path, 1023,"%s/%s", input_directory, files[0]->d_name); if(tiff_read(input_path, &w, &h, ycbcr)) { fprintf(stderr, "could not read %s\n", input_path); exit(1); } if (passno!=2) fprintf(stderr,"%d frames, %dx%d\n",n,w,h); /* setup complete. Raw processing loop */ switch(passno){ case 0: case 2: fprintf(stderr,"\rCompressing.... \n"); break; case 1: fprintf(stderr,"\rScanning first pass.... \n"); break; } fprintf(stderr, "%s\n", input_path); th_info_init(&ti); ti.frame_width = ((w + 15) >>4)<<4; ti.frame_height = ((h + 15)>>4)<<4; ti.pic_width = w; ti.pic_height = h; ti.pic_x = 0; ti.pic_y = 0; ti.fps_numerator = video_fps_numerator; ti.fps_denominator = video_fps_denominator; ti.aspect_numerator = video_aspect_numerator; ti.aspect_denominator = video_aspect_denominator; ti.colorspace = TH_CS_UNSPECIFIED; ti.pixel_fmt = chroma_format; ti.target_bitrate = video_rate; ti.quality = video_quality; ti.keyframe_granule_shift=ilog(keyframe_frequency-1); td=th_encode_alloc(&ti); th_info_clear(&ti); /* setting just the granule shift only allows power-of-two keyframe spacing. Set the actual requested spacing. */ ret=th_encode_ctl(td,TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE, &keyframe_frequency,sizeof(keyframe_frequency-1)); if(ret<0){ fprintf(stderr,"Could not set keyframe interval to %d.\n",(int)keyframe_frequency); } if(vp3_compatible){ ret=th_encode_ctl(td,TH_ENCCTL_SET_VP3_COMPATIBLE,&vp3_compatible, sizeof(vp3_compatible)); if(ret<0||!vp3_compatible){ fprintf(stderr,"Could not enable strict VP3 compatibility.\n"); if(ret>=0){ fprintf(stderr,"Ensure your source format is supported by VP3.\n"); fprintf(stderr, "(4:2:0 pixel format, width and height multiples of 16).\n"); } } } if(soft_target){ /* reverse the rate control flags to favor a 'long time' strategy */ int arg = TH_RATECTL_CAP_UNDERFLOW; ret=th_encode_ctl(td,TH_ENCCTL_SET_RATE_FLAGS,&arg,sizeof(arg)); if(ret<0) fprintf(stderr,"Could not set encoder flags for --soft-target\n"); /* Default buffer control is overridden on two-pass */ if(!twopass&&buf_delay<0){ if((keyframe_frequency*7>>1) > 5*video_fps_numerator/video_fps_denominator) arg=keyframe_frequency*7>>1; else arg=5*video_fps_numerator/video_fps_denominator; ret=th_encode_ctl(td,TH_ENCCTL_SET_RATE_BUFFER,&arg,sizeof(arg)); if(ret<0) fprintf(stderr,"Could not set rate control buffer for --soft-target\n"); } } /* set up two-pass if needed */ if(passno==1){ unsigned char *buffer; int bytes; bytes=th_encode_ctl(td,TH_ENCCTL_2PASS_OUT,&buffer,sizeof(buffer)); if(bytes<0){ fprintf(stderr,"Could not set up the first pass of two-pass mode.\n"); fprintf(stderr,"Did you remember to specify an estimated bitrate?\n"); exit(1); } /*Perform a seek test to ensure we can overwrite this placeholder data at the end; this is better than letting the user sit through a whole encode only to find out their pass 1 file is useless at the end.*/ if(fseek(twopass_file,0,SEEK_SET)<0){ fprintf(stderr,"Unable to seek in two-pass data file.\n"); exit(1); } if(fwrite(buffer,1,bytes,twopass_file)=0){ ret=th_encode_ctl(td,TH_ENCCTL_SET_RATE_BUFFER, &buf_delay,sizeof(buf_delay)); if(ret<0){ fprintf(stderr,"Warning: could not set desired buffer delay.\n"); } } /* write the bitstream header packets with proper page interleave */ th_comment_init(&tc); /* first packet will get its own page automatically */ if(th_encode_flushheader(td,&tc,&op)<=0){ fprintf(stderr,"Internal Theora library error.\n"); exit(1); } th_comment_clear(&tc); if(passno!=1){ ogg_stream_packetin(&ogg_os,&op); if(ogg_stream_pageout(&ogg_os,&og)!=1){ fprintf(stderr,"Internal Ogg library error.\n"); exit(1); } fwrite(og.header,1,og.header_len,ogg_fp); fwrite(og.body,1,og.body_len,ogg_fp); } /* create the remaining theora headers */ for(;;){ ret=th_encode_flushheader(td,&tc,&op); if(ret<0){ fprintf(stderr,"Internal Theora library error.\n"); exit(1); } else if(!ret)break; if(passno!=1)ogg_stream_packetin(&ogg_os,&op); } /* Flush the rest of our headers. This ensures the actual data in each stream will start on a new page, as per spec. */ if(passno!=1){ for(;;){ int result = ogg_stream_flush(&ogg_os,&og); if(result<0){ /* can't get here */ fprintf(stderr,"Internal Ogg library error.\n"); exit(1); } if(result==0)break; fwrite(og.header,1,og.header_len,ogg_fp); fwrite(og.body,1,og.body_len,ogg_fp); } } i=0; last=0; do { if(i >= n-1) last = 1; if(theora_write_frame(ycbcr, last)) { fprintf(stderr,"Encoding error.\n"); exit(1); } i++; if (!last) { snprintf(input_path, 1023,"%s/%s", input_directory, files[i]->d_name); if(tiff_read(input_path, &w, &h, ycbcr)) { fprintf(stderr, "could not read %s\n", input_path); exit(1); } fprintf(stderr, "%s\n", input_path); } } while (!last); if(passno==1){ /* need to read the final (summary) packet */ unsigned char *buffer; int bytes = th_encode_ctl(td, TH_ENCCTL_2PASS_OUT, &buffer, sizeof(buffer)); if(bytes<0){ fprintf(stderr,"Could not read two-pass summary data from encoder.\n"); exit(1); } if(fseek(twopass_file,0,SEEK_SET)<0){ fprintf(stderr,"Unable to seek in two-pass data file.\n"); exit(1); } if(fwrite(buffer,1,bytes,twopass_file) #include #include #include #include #include /*Yes, yes, we're going to hell.*/ #if defined(_WIN32) #include #endif #include #include #include #include #include "getopt.h" #include "theora/theoradec.h" /* Implementation of op_time_get() and op_time_diff_ms() lifted from opusfile to work on both Linux, Unix and Windows */ #ifdef OP_HAVE_CLOCK_GETTIME # include typedef struct timespec op_time; #else # include typedef struct timeb op_time; #endif #define OP_INT64_MAX (2*(((ogg_int64_t)1<<62)-1)|1) #define OP_INT64_MIN (-OP_INT64_MAX-1) #define OP_INT32_MAX (2*(((ogg_int32_t)1<<30)-1)|1) #define OP_INT32_MIN (-OP_INT32_MAX-1) static void op_time_get(op_time *now){ # ifdef OP_HAVE_CLOCK_GETTIME /*Prefer a monotonic clock that continues to increment during suspend.*/ # ifdef CLOCK_BOOTTIME if(clock_gettime(CLOCK_BOOTTIME,now)!=0) # endif # ifdef CLOCK_MONOTONIC if(clock_gettime(CLOCK_MONOTONIC,now)!=0) # endif clock_gettime(CLOCK_REALTIME,now); # else ftime(now); # endif } static ogg_int32_t op_time_diff_ms(const op_time *_end, const op_time *_start){ # ifdef OP_HAVE_CLOCK_GETTIME ogg_int64_t dtime; dtime=_end->tv_sec-(ogg_int64_t)_start->tv_sec; assert(_end->tv_nsec<1000000000); assert(_start->tv_nsec<1000000000); if (dtime>(OP_INT32_MAX-1000)/1000) return OP_INT32_MAX; if (dtime<(OP_INT32_MIN+1000)/1000) return OP_INT32_MIN; return (ogg_int32_t)dtime*1000+(_end->tv_nsec-_start->tv_nsec)/1000000; # else ogg_int64_t dtime; dtime=_end->time-(ogg_int64_t)_start->time; assert(_end->millitm<1000); assert(_start->millitm<1000); if (dtime>(OP_INT32_MAX-1000)/1000) return OP_INT32_MAX; if (dtime<(OP_INT32_MIN+1000)/1000) return OP_INT32_MIN; return (ogg_int32_t)dtime*1000+_end->millitm-_start->millitm; # endif } const char *optstring = "o:crf"; struct option options [] = { {"output",required_argument,NULL,'o'}, {"crop",no_argument,NULL,'c'}, /*Crop down to the picture size.*/ {"raw",no_argument, NULL,'r'}, /*Disable YUV4MPEG2 headers:*/ {"fps-only",no_argument, NULL, 'f'}, /* Only interested in fps of decode loop */ {NULL,0,NULL,0} }; /* Helper; just grab some more compressed bitstream and sync it for page extraction */ int buffer_data(FILE *in,ogg_sync_state *oy){ char *buffer=ogg_sync_buffer(oy,4096); int bytes=fread(buffer,1,4096,in); ogg_sync_wrote(oy,bytes); return(bytes); } /* never forget that globals are a one-way ticket to Hell */ /* Ogg and codec state for demux/decode */ ogg_sync_state oy; ogg_page og; ogg_stream_state vo; ogg_stream_state to; th_info ti; th_comment tc; th_setup_info *ts=NULL; th_dec_ctx *td=NULL; int theora_p=0; int theora_processing_headers; int stateflag=0; /* single frame video buffering */ int videobuf_ready=0; ogg_int64_t videobuf_granulepos=-1; double videobuf_time=0; int raw=0; int crop=0; FILE* outfile = NULL; int got_sigint=0; static void sigint_handler (int signal) { got_sigint = 1; } static th_ycbcr_buffer ycbcr; static void stripe_decoded(th_ycbcr_buffer _dst,th_ycbcr_buffer _src, int _fragy0,int _fragy_end){ int pli; for(pli=0;pli<3;pli++){ int yshift; int y_end; int y; yshift=pli!=0&&!(ti.pixel_fmt&2); y_end=_fragy_end<<3-yshift; /*An implementation intending to display this data would need to check the crop rectangle before proceeding.*/ for(y=_fragy0<<3-yshift;y>xshift)*(ti.frame_height>>yshift)* sizeof(*ycbcr[pli].data)); ycbcr[pli].stride=ti.frame_width>>xshift; ycbcr[pli].width=ti.frame_width>>xshift; ycbcr[pli].height=ti.frame_height>>yshift; } /*Similarly, since ycbcr is a global, there's no real reason to pass it as the context. In a more object-oriented decoder, we could pass the "this" pointer instead (though in C++, platform-dependent calling convention differences prevent us from using a real member function pointer).*/ cb.ctx=ycbcr; cb.stripe_decoded=(th_stripe_decoded_func)stripe_decoded; th_decode_ctl(td,TH_DECCTL_SET_STRIPE_CB,&cb,sizeof(cb)); } /*Write out the planar YUV frame, uncropped.*/ static void video_write(void){ int pli; int i; /*Uncomment the following to do normal, non-striped decoding. th_ycbcr_buffer ycbcr; th_decode_ycbcr_out(td,ycbcr);*/ if(outfile){ int x0; int y0; int xend; int yend; int hdec; int vdec; if(crop){ x0=ti.pic_x; y0=ti.pic_y; xend=x0+ti.pic_width; yend=y0+ti.pic_height; } else{ x0=y0=0; xend=ti.frame_width; yend=ti.frame_height; } hdec=vdec=0; if(!raw)fprintf(outfile, "FRAME\n"); for(pli=0;pli<3;pli++){ for(i=y0>>vdec;i<(yend+vdec>>vdec);i++){ fwrite(ycbcr[pli].data+ycbcr[pli].stride*i+(x0>>hdec), 1, (xend+hdec>>hdec)-(x0>>hdec), outfile); } hdec=!(ti.pixel_fmt&1); vdec=!(ti.pixel_fmt&2); } } } /* dump the theora comment header */ static int dump_comments(th_comment *_tc){ int i; int len; FILE *out; out=stderr; fprintf(out,"Encoded by %s\n",_tc->vendor); if(_tc->comments){ fprintf(out,"theora comment header:\n"); for(i=0;i<_tc->comments;i++){ if(_tc->user_comments[i]){ len=_tc->comment_lengths[i]comment_lengths[i]:INT_MAX; fprintf(out,"\t%.*s\n",len,_tc->user_comments[i]); } } } return 0; } /* helper: push a page into the appropriate steam */ /* this can be done blindly; a stream won't accept a page that doesn't belong to it */ static int queue_page(ogg_page *page){ if(theora_p)ogg_stream_pagein(&to,page); return 0; } static void usage(void){ fprintf(stderr, "Usage: dumpvid [options] [] [-o ]\n\n" "If no input file is given, stdin is used.\n" "Options:\n\n" " -o --output File name for decoded output. If\n" " this option is not given, the\n" " decompressed data is sent to stdout.\n" " -c --crop Crop the output to the picture region.\n" " By default, the entire encoded frame\n" " is output, including the padding\n" " require to make the image dimensions\n" " a multiple of 16.\n" " -r --raw Output raw YUV with no framing instead\n" " of YUV4MPEG2 (the default).\n" " -f --fps-only Only report the decoding frame rate.\n"); exit(1); } int main(int argc,char *argv[]){ ogg_packet op; int long_option_index; int c; op_time start; op_time after; op_time last; int fps_only=0; int frames = 0; FILE *infile = stdin; outfile = stdout; #ifdef _WIN32 /* We need to set stdin/stdout to binary mode on windows. */ /* Beware the evil ifdef. We avoid these where we can, but this one we cannot. Don't add any more, you'll probably go to hell if you do. */ _setmode( _fileno( stdin ), _O_BINARY ); _setmode( _fileno( stdout ), _O_BINARY ); #endif /* Process option arguments. */ while((c=getopt_long(argc,argv,optstring,options,&long_option_index))!=EOF){ switch(c){ case 'o': if(strcmp(optarg,"-")!=0){ outfile=fopen(optarg,"wb"); if(outfile==NULL){ fprintf(stderr,"Unable to open output file '%s'\n", optarg); exit(1); } }else{ outfile=stdout; } break; case 'c': crop=1; break; case 'r': raw=1; break; case 'f': fps_only = 1; outfile = NULL; break; default: usage(); } } if(optind0){ int got_packet; ogg_stream_state test; /* is this a mandated initial header? If not, stop parsing */ if(!ogg_page_bos(&og)){ /* don't leak the page; get it into the appropriate stream */ queue_page(&og); stateflag=1; break; } ogg_stream_init(&test,ogg_page_serialno(&og)); ogg_stream_pagein(&test,&og); got_packet = ogg_stream_packetpeek(&test,&op); /* identify the codec: try theora */ if((got_packet==1) && !theora_p && (theora_processing_headers= th_decode_headerin(&ti,&tc,&ts,&op))>=0){ /* it is theora -- save this stream state */ memcpy(&to,&test,sizeof(test)); theora_p=1; /*Advance past the successfully processed header.*/ if(theora_processing_headers)ogg_stream_packetout(&to,NULL); }else{ /* whatever it is, we don't care about it */ ogg_stream_clear(&test); } } /* fall through to non-bos page parsing */ } /* we're expecting more header packets. */ while(theora_p && theora_processing_headers){ int ret; /* look for further theora headers */ while(theora_processing_headers&&(ret=ogg_stream_packetpeek(&to,&op))){ if(ret<0)continue; theora_processing_headers=th_decode_headerin(&ti,&tc,&ts,&op); if(theora_processing_headers<0){ fprintf(stderr,"Error parsing Theora stream headers; " "corrupt stream?\n"); exit(1); } else if(theora_processing_headers>0){ /*Advance past the successfully processed header.*/ ogg_stream_packetout(&to,NULL); } theora_p++; } /*Stop now so we don't fail if there aren't enough pages in a short stream.*/ if(!(theora_p && theora_processing_headers))break; /* The header pages/packets will arrive before anything else we care about, or the stream is not obeying spec */ if(ogg_sync_pageout(&oy,&og)>0){ queue_page(&og); /* demux into the appropriate stream */ }else{ int ret=buffer_data(infile,&oy); /* someone needs more data */ if(ret==0){ fprintf(stderr,"End of file while searching for codec headers.\n"); exit(1); } } } /* and now we have it all. initialize decoders */ if(theora_p){ dump_comments(&tc); td=th_decode_alloc(&ti,ts); fprintf(stderr,"Ogg logical stream %lx is Theora %dx%d %.02f fps video\n" "Encoded frame content is %dx%d with %dx%d offset\n", to.serialno,ti.frame_width,ti.frame_height, (double)ti.fps_numerator/ti.fps_denominator, ti.pic_width,ti.pic_height,ti.pic_x,ti.pic_y); /*{ int arg = 0xffff; th_decode_ctl(td,TH_DECCTL_SET_TELEMETRY_MBMODE,&arg,sizeof(arg)); th_decode_ctl(td,TH_DECCTL_SET_TELEMETRY_MV,&arg,sizeof(arg)); th_decode_ctl(td,TH_DECCTL_SET_TELEMETRY_QI,&arg,sizeof(arg)); arg=10; th_decode_ctl(td,TH_DECCTL_SET_TELEMETRY_BITS,&arg,sizeof(arg)); }*/ }else{ /* tear down the partial theora setup */ th_info_clear(&ti); th_comment_clear(&tc); } /*Either way, we're done with the codec setup data.*/ th_setup_free(ts); /* open video */ if(theora_p)open_video(); if(!raw && outfile){ static const char *CHROMA_TYPES[4]={"420jpeg",NULL,"422jpeg","444"}; int width; int height; if(ti.pixel_fmt>=4||ti.pixel_fmt==TH_PF_RSVD){ fprintf(stderr,"Unknown pixel format: %i\n",ti.pixel_fmt); exit(1); } if(crop){ int hdec; int vdec; hdec=!(ti.pixel_fmt&1); vdec=!(ti.pixel_fmt&2); if((ti.pic_x&hdec)||(ti.pic_width&hdec) ||(ti.pic_y&vdec)||(ti.pic_height&vdec)){ fprintf(stderr, "Error: Cropped images with odd offsets/sizes and chroma subsampling\n" "cannot be output to YUV4MPEG2. Remove the --crop flag or add the\n" "--raw flag.\n"); exit(1); } width=ti.pic_width; height=ti.pic_height; } else{ width=ti.frame_width; height=ti.frame_height; } fprintf(outfile,"YUV4MPEG2 C%s W%d H%d F%d:%d I%c A%d:%d\n", CHROMA_TYPES[ti.pixel_fmt],width,height, ti.fps_numerator,ti.fps_denominator,'p', ti.aspect_numerator,ti.aspect_denominator); } /* install signal handler */ signal (SIGINT, sigint_handler); /*Finally the main decode loop. It's one Theora packet per frame, so this is pretty straightforward if we're not trying to maintain sync with other multiplexed streams. The videobuf_ready flag is used to maintain the input buffer in the libogg stream state. If there's no output frame available at the end of the decode step, we must need more input data. We could simplify this by just using the return code on ogg_page_packetout(), but the flag system extends easily to the case where you care about more than one multiplexed stream (like with audio playback). In that case, just maintain a flag for each decoder you care about, and pull data when any one of them stalls. videobuf_time holds the presentation time of the currently buffered video frame. We ignore this value.*/ stateflag=0; /* playback has not begun */ /* queue any remaining pages from data we buffered but that did not contain headers */ while(ogg_sync_pageout(&oy,&og)>0){ queue_page(&og); } if(fps_only){ op_time_get(&start); op_time_get(&last); } while(!got_sigint){ while(theora_p && !videobuf_ready){ /* theora is one in, one out... */ if(ogg_stream_packetout(&to,&op)>0){ if(th_decode_packetin(td,&op,&videobuf_granulepos)>=0){ videobuf_time=th_granule_time(td,videobuf_granulepos); videobuf_ready=1; frames++; if(fps_only) op_time_get(&after); } }else break; } if(fps_only && (videobuf_ready || fps_only==2)){ ogg_int32_t ms = op_time_diff_ms(&after, &last); if(ms>500 || fps_only==1 || (feof(infile) && !videobuf_ready)){ float file_fps = (float)ti.fps_numerator/ti.fps_denominator; fps_only=2; ms = op_time_diff_ms(&after, &start); fprintf(stderr,"\rframe:%d rate:%.2fx ", frames, frames*1000./(ms*file_fps)); memcpy(&last,&after,sizeof(last)); } } if(!videobuf_ready && feof(infile))break; if(!videobuf_ready){ /* no data yet for somebody. Grab another page */ buffer_data(infile,&oy); while(ogg_sync_pageout(&oy,&og)>0){ queue_page(&og); } } /* dumpvideo frame, and get new one */ else if(outfile)video_write(); videobuf_ready=0; } /* end of decoder loop -- close everything */ if(theora_p){ ogg_stream_clear(&to); th_decode_free(td); th_comment_clear(&tc); th_info_clear(&ti); } ogg_sync_clear(&oy); if(infile && infile!=stdin)fclose(infile); if(outfile && outfile!=stdout)fclose(outfile); fprintf(stderr, "\n\n%d frames\n", frames); fprintf(stderr, "\nDone.\n"); return(0); } libtheora-1.2.0/examples/encoder_example.c0000644000175000017500000017531614771706724017303 0ustar perepere/******************************************************************** * * * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. * * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009,2025 * * by the Xiph.Org Foundation and contributors * * https://www.xiph.org/ * * * ******************************************************************** function: example encoder application; makes an Ogg Theora/Vorbis file from YUV4MPEG2 and WAV input ********************************************************************/ #if !defined(_REENTRANT) #define _REENTRANT #endif #if !defined(_GNU_SOURCE) #define _GNU_SOURCE #endif #if !defined(_LARGEFILE_SOURCE) #define _LARGEFILE_SOURCE #endif #if !defined(_LARGEFILE64_SOURCE) #define _LARGEFILE64_SOURCE #endif #if !defined(_FILE_OFFSET_BITS) #define _FILE_OFFSET_BITS 64 #endif /*#define OC_COLLECT_METRICS*/ #include #if !defined(_WIN32) #include #include #else #include "getopt.h" #endif #include #include #include #include #include "theora/theoraenc.h" #include "vorbis/codec.h" #include "vorbis/vorbisenc.h" #ifdef _WIN32 /*supply missing headers and functions to Win32. going to hell, I know*/ #include #include static double rint(double x) { if (x < 0.0) return (double)(int)(x - 0.5); else return (double)(int)(x + 0.5); } #endif #if defined(OC_COLLECT_METRICS) # define TH_ENCCTL_SET_METRICS_FILE (0x8000) #endif const char *optstring = "b:e:o:a:A:v:V:s:S:f:F:qck:d:z:\1\2\3\4" #if defined(OC_COLLECT_METRICS) "m:" #endif ; struct option options [] = { {"begin-time",required_argument,NULL,'b'}, {"end-time",required_argument,NULL,'e'}, {"output",required_argument,NULL,'o'}, {"audio-rate-target",required_argument,NULL,'A'}, {"video-rate-target",required_argument,NULL,'V'}, {"audio-quality",required_argument,NULL,'a'}, {"video-quality",required_argument,NULL,'v'}, {"aspect-numerator",required_argument,NULL,'s'}, {"aspect-denominator",required_argument,NULL,'S'}, {"framerate-numerator",required_argument,NULL,'f'}, {"framerate-denominator",required_argument,NULL,'F'}, {"quiet",no_argument,NULL,'q'}, {"vp3-compatible",no_argument,NULL,'c'}, {"speed",required_argument,NULL,'z'}, {"soft-target",no_argument,NULL,'\1'}, {"keyframe-freq",required_argument,NULL,'k'}, {"buf-delay",required_argument,NULL,'d'}, {"two-pass",no_argument,NULL,'\2'}, {"first-pass",required_argument,NULL,'\3'}, {"second-pass",required_argument,NULL,'\4'}, #if defined(OC_COLLECT_METRICS) {"metrics-file",required_argument,NULL,'m'}, #endif {NULL,0,NULL,0} }; /* You'll go to Hell for using globals. */ FILE *audio=NULL; FILE *video=NULL; int audio_ch=0; int audio_hz=0; float audio_q=.1f; int audio_r=-1; int vp3_compatible=0; int quiet=0; int frame_w=0; int frame_h=0; int pic_w=0; int pic_h=0; int pic_x=0; int pic_y=0; int video_fps_n=-1; int video_fps_d=-1; int video_par_n=-1; int video_par_d=-1; char interlace; int src_c_dec_h=2; int src_c_dec_v=2; int dst_c_dec_h=2; int dst_c_dec_v=2; char chroma_type[16]; /*The size of each converted frame buffer.*/ size_t y4m_dst_buf_sz; /*The amount to read directly into the converted frame buffer.*/ size_t y4m_dst_buf_read_sz; /*The size of the auxiliary buffer.*/ size_t y4m_aux_buf_sz; /*The amount to read into the auxiliary buffer.*/ size_t y4m_aux_buf_read_sz; /*The function used to perform chroma conversion.*/ typedef void (*y4m_convert_func)(unsigned char *_dst,unsigned char *_aux); y4m_convert_func y4m_convert=NULL; int video_r=-1; int video_q=-1; ogg_uint32_t keyframe_frequency=0; int buf_delay=-1; long begin_sec=-1; long begin_usec=0; long end_sec=-1; long end_usec=0; static void usage(void){ fprintf(stderr, "Usage: encoder_example [options] [audio_file] video_file\n\n" "Options: \n\n" " -o --output file name for encoded output;\n" " If this option is not given, the\n" " compressed data is sent to stdout.\n\n" " -A --audio-rate-target bitrate target for Vorbis audio;\n" " use -a and not -A if at all possible,\n" " as -a gives higher quality for a given\n" " bitrate.\n\n" " -V --video-rate-target bitrate target for Theora video\n\n" " --soft-target Use a large reservoir and treat the rate\n" " as a soft target; rate control is less\n" " strict but resulting quality is usually\n" " higher/smoother overall. Soft target also\n" " allows an optional -v setting to specify\n" " a minimum allowed quality.\n\n" " --two-pass Compress input using two-pass rate control\n" " This option requires that the input to the\n" " encoder is seekable and performs both\n" " passes automatically.\n\n" " --first-pass Perform first-pass of a two-pass rate\n" " controlled encoding, saving pass data to\n" " for a later second pass\n\n" " --second-pass Perform second-pass of a two-pass rate\n" " controlled encoding, reading first-pass\n" " data from . The first pass\n" " data must come from a first encoding pass\n" " using identical input video to work\n" " properly.\n\n" " -a --audio-quality Vorbis quality selector from -1 to 10\n" " (-1 yields smallest files but lowest\n" " fidelity; 10 yields highest fidelity\n" " but large files. '2' is a reasonable\n" " default).\n\n" " -v --video-quality Theora quality selector from 0 to 10\n" " (0 yields smallest files but lowest\n" " video quality. 10 yields highest\n" " fidelity but large files).\n\n" " -s --aspect-numerator Aspect ratio numerator, default is 0\n" " or extracted from YUV input file\n" " -S --aspect-denominator Aspect ratio denominator, default is 0\n" " or extracted from YUV input file\n" " -f --framerate-numerator Frame rate numerator, can be extracted\n" " from YUV input file. ex: 30000000\n" " -F --framerate-denominator Frame rate denominator, can be extracted\n" " from YUV input file. ex: 1000000\n" " The frame rate nominator divided by this\n" " determinates the frame rate in units per tick\n" " -k --keyframe-freq Keyframe frequency\n" " -z --speed Sets the encoder speed level. Higher speed\n" " levels favor quicker encoding over better\n" " quality per bit. Depending on the encoding\n" " mode, and the internal algorithms used,\n" " quality may actually improve with higher\n" " speeds, but in this case bitrate will also\n" " likely increase. The maximum value, and the\n" " meaning of each value, are implementation-\n" " specific and may change depending on the\n" " current encoding mode (rate constrained,\n" " two-pass, etc.).\n" " -d --buf-delay Buffer delay (in frames). Longer delays\n" " allow smoother rate adaptation and provide\n" " better overall quality, but require more\n" " client side buffering and add latency. The\n" " default value is the keyframe interval for\n" " one-pass encoding (or somewhat larger if\n" " --soft-target is used) and infinite for\n" " two-pass encoding.\n" " -b --begin-time Begin encoding at offset into input\n" " -e --end-time End encoding at offset into input\n\n" " -q --quiet Don't print progress information.\n\n" #if defined(OC_COLLECT_METRICS) " -m --metrics-filename File in which to accumulate mode decision\n" " metrics. Statistics from the current\n" " encode will be merged with those already\n" " in the file if it exists.\n\n" #endif "encoder_example accepts only uncompressed RIFF WAV format audio and\n" "YUV4MPEG2 uncompressed video.\n\n"); exit(1); } static int y4m_parse_tags(char *_tags){ int got_w; int got_h; int got_fps; int got_interlace; int got_par; int got_chroma; int tmp_video_fps_n; int tmp_video_fps_d; int tmp_video_par_n; int tmp_video_par_d; char *p; char *q; got_w=got_h=got_fps=got_interlace=got_par=got_chroma=0; for(p=_tags;;p=q){ /*Skip any leading spaces.*/ while(*p==' ')p++; /*If that's all we have, stop.*/ if(p[0]=='\0')break; /*Find the end of this tag.*/ for(q=p+1;*q!='\0'&&*q!=' ';q++); /*Process the tag.*/ switch(p[0]){ case 'W':{ if(sscanf(p+1,"%d",&pic_w)!=1)return -1; got_w=1; }break; case 'H':{ if(sscanf(p+1,"%d",&pic_h)!=1)return -1; got_h=1; }break; case 'F':{ if(sscanf(p+1,"%d:%d",&tmp_video_fps_n,&tmp_video_fps_d)!=2)return -1; got_fps=1; }break; case 'I':{ interlace=p[1]; got_interlace=1; }break; case 'A':{ if(sscanf(p+1,"%d:%d",&tmp_video_par_n,&tmp_video_par_d)!=2)return -1; got_par=1; }break; case 'C':{ if(q-p>16)return -1; memcpy(chroma_type,p+1,q-p-1); chroma_type[q-p-1]='\0'; got_chroma=1; }break; /*Ignore unknown tags.*/ } } if(!got_w||!got_h||!got_fps||!got_interlace||!got_par)return -1; /*Chroma-type is not specified in older files, e.g., those generated by mplayer.*/ if(!got_chroma)strcpy(chroma_type,"420"); /*Update fps and aspect ratio globals if not specified in the command line.*/ if(video_fps_n==-1)video_fps_n=tmp_video_fps_n; if(video_fps_d==-1)video_fps_d=tmp_video_fps_d; if(video_par_n==-1)video_par_n=tmp_video_par_n; if(video_par_d==-1)video_par_d=tmp_video_par_d; return 0; } /*All anti-aliasing filters in the following conversion functions are based on one of two window functions: The 6-tap Lanczos window (for down-sampling and shifts): sinc(\pi*t)*sinc(\pi*t/3), |t|<3 (sinc(t)==sin(t)/t) 0, |t|>=3 The 4-tap Mitchell window (for up-sampling): 7|t|^3-12|t|^2+16/3, |t|<1 -(7/3)|x|^3+12|x|^2-20|x|+32/3, |t|<2 0, |t|>=2 The number of taps is intentionally kept small to reduce computational overhead and limit ringing. The taps from these filters are scaled so that their sum is 1, and the result is scaled by 128 and rounded to integers to create a filter whose intermediate values fit inside 16 bits. Coefficients are rounded in such a way as to ensure their sum is still 128, which is usually equivalent to normal rounding.*/ #define OC_MINI(_a,_b) ((_a)>(_b)?(_b):(_a)) #define OC_MAXI(_a,_b) ((_a)<(_b)?(_b):(_a)) #define OC_CLAMPI(_a,_b,_c) (OC_MAXI(_a,OC_MINI(_b,_c))) /*420jpeg chroma samples are sited like: Y-------Y-------Y-------Y------- | | | | | BR | | BR | | | | | Y-------Y-------Y-------Y------- | | | | | | | | | | | | Y-------Y-------Y-------Y------- | | | | | BR | | BR | | | | | Y-------Y-------Y-------Y------- | | | | | | | | | | | | 420mpeg2 chroma samples are sited like: Y-------Y-------Y-------Y------- | | | | BR | BR | | | | | Y-------Y-------Y-------Y------- | | | | | | | | | | | | Y-------Y-------Y-------Y------- | | | | BR | BR | | | | | Y-------Y-------Y-------Y------- | | | | | | | | | | | | We use a resampling filter to shift the site locations one quarter pixel (at the chroma plane's resolution) to the right. The 4:2:2 modes look exactly the same, except there are twice as many chroma lines, and they are vertically co-sited with the luma samples in both the mpeg2 and jpeg cases (thus requiring no vertical resampling).*/ static void y4m_convert_42xmpeg2_42xjpeg(unsigned char *_dst, unsigned char *_aux){ int c_w; int c_h; int pli; int y; int x; /*Skip past the luma data.*/ _dst+=pic_w*pic_h; /*Compute the size of each chroma plane.*/ c_w=(pic_w+dst_c_dec_h-1)/dst_c_dec_h; c_h=(pic_h+dst_c_dec_v-1)/dst_c_dec_v; for(pli=1;pli<3;pli++){ for(y=0;y>7,255); } for(;x>7,255); } for(;x>7,255); } _dst+=c_w; _aux+=c_w; } } } /*This format is only used for interlaced content, but is included for completeness. 420jpeg chroma samples are sited like: Y-------Y-------Y-------Y------- | | | | | BR | | BR | | | | | Y-------Y-------Y-------Y------- | | | | | | | | | | | | Y-------Y-------Y-------Y------- | | | | | BR | | BR | | | | | Y-------Y-------Y-------Y------- | | | | | | | | | | | | 420paldv chroma samples are sited like: YR------Y-------YR------Y------- | | | | | | | | | | | | YB------Y-------YB------Y------- | | | | | | | | | | | | YR------Y-------YR------Y------- | | | | | | | | | | | | YB------Y-------YB------Y------- | | | | | | | | | | | | We use a resampling filter to shift the site locations one quarter pixel (at the chroma plane's resolution) to the right. Then we use another filter to move the C_r location down one quarter pixel, and the C_b location up one quarter pixel.*/ static void y4m_convert_42xpaldv_42xjpeg(unsigned char *_dst, unsigned char *_aux){ unsigned char *tmp; int c_w; int c_h; int c_sz; int pli; int y; int x; /*Skip past the luma data.*/ _dst+=pic_w*pic_h; /*Compute the size of each chroma plane.*/ c_w=(pic_w+1)/2; c_h=(pic_h+dst_c_dec_h-1)/dst_c_dec_h; c_sz=c_w*c_h; /*First do the horizontal re-sampling. This is the same as the mpeg2 case, except that after the horizontal case, we need to apply a second vertical filter.*/ tmp=_aux+2*c_sz; for(pli=1;pli<3;pli++){ for(y=0;y>7,255); } for(;x>7,255); } for(;x>7,255); } tmp+=c_w; _aux+=c_w; } switch(pli){ case 1:{ tmp-=c_sz; /*Slide C_b up a quarter-pel. This is the same filter used above, but in the other order.*/ for(x=0;x>7,255); } for(;y>7,255); } for(;y>7,255); } _dst++; tmp++; } _dst+=c_sz-c_w; tmp-=c_w; }break; case 2:{ tmp-=c_sz; /*Slide C_r down a quarter-pel. This is the same as the horizontal filter.*/ for(x=0;x>7,255); } for(;y>7,255); } for(;y>7,255); } _dst++; tmp++; } }break; } /*For actual interlaced material, this would have to be done separately on each field, and the shift amounts would be different. C_r moves down 1/8, C_b up 3/8 in the top field, and C_r moves down 3/8, C_b up 1/8 in the bottom field. The corresponding filters would be: Down 1/8 (reverse order for up): [3 -11 125 15 -4 0]/128 Down 3/8 (reverse order for up): [4 -19 98 56 -13 2]/128*/ } } /*422jpeg chroma samples are sited like: Y---BR--Y-------Y---BR--Y------- | | | | | | | | | | | | Y---BR--Y-------Y---BR--Y------- | | | | | | | | | | | | Y---BR--Y-------Y---BR--Y------- | | | | | | | | | | | | Y---BR--Y-------Y---BR--Y------- | | | | | | | | | | | | 411 chroma samples are sited like: YBR-----Y-------Y-------Y------- | | | | | | | | | | | | YBR-----Y-------Y-------Y------- | | | | | | | | | | | | YBR-----Y-------Y-------Y------- | | | | | | | | | | | | YBR-----Y-------Y-------Y------- | | | | | | | | | | | | We use a filter to resample at site locations one eighth pixel (at the source chroma plane's horizontal resolution) and five eighths of a pixel to the right.*/ static void y4m_convert_411_422jpeg(unsigned char *_dst, unsigned char *_aux){ int c_w; int dst_c_w; int c_h; int pli; int y; int x; /*Skip past the luma data.*/ _dst+=pic_w*pic_h; /*Compute the size of each chroma plane.*/ c_w=(pic_w+src_c_dec_h-1)/src_c_dec_h; dst_c_w=(pic_w+dst_c_dec_h-1)/dst_c_dec_h; c_h=(pic_h+dst_c_dec_v-1)/dst_c_dec_v; for(pli=1;pli<3;pli++){ for(y=0;y>7,255); _dst[x<<1|1]=(unsigned char)OC_CLAMPI(0,47*_aux[0]+ 86*_aux[OC_MINI(1,c_w-1)]-5*_aux[OC_MINI(2,c_w-1)]+64>>7,255); } for(;x>7,255); _dst[x<<1|1]=(unsigned char)OC_CLAMPI(0,-3*_aux[x-1]+50*_aux[x]+ 86*_aux[x+1]-5*_aux[x+2]+64>>7,255); } for(;x>7,255); if((x<<1|1)>7,255); } } _dst+=dst_c_w; _aux+=c_w; } } } /*The image is padded with empty chroma components at 4:2:0. This costs about 17 bits a frame to code.*/ static void y4m_convert_mono_420jpeg(unsigned char *_dst, unsigned char *_aux){ int c_sz; _dst+=pic_w*pic_h; c_sz=((pic_w+dst_c_dec_h-1)/dst_c_dec_h)*((pic_h+dst_c_dec_v-1)/dst_c_dec_v); memset(_dst,128,c_sz*2); } #if 0 /*Right now just 444 to 420. Not too hard to generalize.*/ static void y4m_convert_4xxjpeg_42xjpeg(unsigned char *_dst, unsigned char *_aux){ unsigned char *tmp; int c_w; int c_h; int pic_sz; int tmp_sz; int c_sz; int pli; int y; int x; /*Compute the size of each chroma plane.*/ c_w=(pic_w+dst_c_dec_h-1)/dst_c_dec_h; c_h=(pic_h+dst_c_dec_v-1)/dst_c_dec_v; pic_sz=pic_w*pic_h; tmp_sz=c_w*pic_h; c_sz=c_w*c_h; _dst+=pic_sz; for(pli=1;pli<3;pli++){ tmp=_aux+pic_sz; /*In reality, the horizontal and vertical steps could be pipelined, for less memory consumption and better cache performance, but we do them separately for simplicity.*/ /*First do horizontal filtering (convert to 4:2:2)*/ /*Filter: [3 -17 78 78 -17 3]/128, derived from a 6-tap Lanczos window.*/ for(y=0;y>1]=OC_CLAMPI(0,64*_aux[0]+78*_aux[OC_MINI(1,pic_w-1)]- 17*_aux[OC_MINI(2,pic_w-1)]+3*_aux[OC_MINI(3,pic_w-1)]+64>>7,255); } for(;x>1]=OC_CLAMPI(0,3*(_aux[x-2]+_aux[x+3])-17*(_aux[x-1]+_aux[x+2])+ 78*(_aux[x]+_aux[x+1])+64>>7,255); } for(;x>1]=OC_CLAMPI(0,3*(_aux[x-2]+_aux[pic_w-1])- 17*(_aux[x-1]+_aux[OC_MINI(x+2,pic_w-1)])+ 78*(_aux[x]+_aux[OC_MINI(x+1,pic_w-1)])+64>>7,255); } tmp+=c_w; _aux+=pic_w; } _aux-=pic_sz; tmp-=tmp_sz; /*Now do the vertical filtering.*/ for(x=0;x>1)*c_w]=OC_CLAMPI(0,64*tmp[0]+78*tmp[OC_MINI(1,pic_h-1)*c_w]- 17*tmp[OC_MINI(2,pic_h-1)*c_w]+3*tmp[OC_MINI(3,pic_h-1)*c_w]+ 64>>7,255); } for(;y>1)*c_w]=OC_CLAMPI(0,3*(tmp[(y-2)*c_w]+tmp[(y+3)*c_w])- 17*(tmp[(y-1)*c_w]+tmp[(y+2)*c_w])+78*(tmp[y*c_w]+tmp[(y+1)*c_w])+ 64>>7,255); } for(;y>1)*c_w]=OC_CLAMPI(0,3*(tmp[(y-2)*c_w]+tmp[(pic_h-1)*c_w])- 17*(tmp[(y-1)*c_w]+tmp[OC_MINI(y+2,pic_h-1)*c_w])+ 78*(tmp[y*c_w]+tmp[OC_MINI(y+1,pic_h-1)*c_w])+64>>7,255); } tmp++; _dst++; } _dst-=c_w; } } #endif /*No conversion function needed.*/ static void y4m_convert_null(unsigned char *_dst, unsigned char *_aux){ } static void id_file(char *f){ FILE *test; unsigned char buffer[80]; int ret; /* open it, look for magic */ if(!strcmp(f,"-")){ /* stdin */ test=stdin; }else{ test=fopen(f,"rb"); if(!test){ fprintf(stderr,"Unable to open file %s.\n",f); exit(1); } } ret=fread(buffer,1,4,test); if(ret<4){ fprintf(stderr,"EOF determining file type of file %s.\n",f); exit(1); } if(!memcmp(buffer,"RIFF",4)){ /* possible WAV file */ if(audio){ /* umm, we already have one */ fprintf(stderr,"Multiple RIFF WAVE files specified on command line.\n"); exit(1); } /* Parse the rest of the header */ ret=fread(buffer,1,8,test); if(ret<8)goto riff_err; if(!memcmp(buffer+4,"WAVE",4)){ while(!feof(test)){ ret=fread(buffer,1,4,test); if(ret<4)goto riff_err; if(!memcmp("fmt",buffer,3)){ /* OK, this is our audio specs chunk. Slurp it up. */ ret=fread(buffer,1,20,test); if(ret<20)goto riff_err; if(memcmp(buffer+4,"\001\000",2)){ fprintf(stderr,"The WAV file %s is in a compressed format; " "can't read it.\n",f); exit(1); } audio=test; audio_ch=buffer[6]+(buffer[7]<<8); if (0 >= audio_ch) { fprintf(stderr,"Can only read WAV files with non-zero audio channels for now.\n"); exit(1); } audio_hz=buffer[8]+(buffer[9]<<8)+ (buffer[10]<<16)+(buffer[11]<<24); if(buffer[18]+(buffer[19]<<8)!=16){ fprintf(stderr,"Can only read 16 bit WAV files for now.\n"); exit(1); } /* Now, align things to the beginning of the data */ /* Look for 'dataxxxx' */ while(!feof(test)){ ret=fread(buffer,1,4,test); if(ret<4)goto riff_err; if(!memcmp("data",buffer,4)){ /* We're there. Ignore the declared size for now. */ ret=fread(buffer,1,4,test); if(ret<4)goto riff_err; if(!quiet){ fprintf(stderr,"File %s is 16 bit %d channel %d Hz RIFF WAV audio.\n", f,audio_ch,audio_hz); } return; } } } } } fprintf(stderr,"Couldn't find WAVE data in RIFF file %s.\n",f); exit(1); } if(!memcmp(buffer,"YUV4",4)){ /* possible YUV2MPEG2 format file */ /* read until newline, or 80 cols, whichever happens first */ int i; for(i=0;i<79;i++){ ret=fread(buffer+i,1,1,test); if(ret<1)goto yuv_err; if(buffer[i]=='\n')break; } if(i==79){ fprintf(stderr,"Error parsing %s header; not a YUV2MPEG2 file?\n",f); } buffer[i]='\0'; if(!memcmp(buffer,"MPEG",4)){ if(video){ /* umm, we already have one */ fprintf(stderr,"Multiple video files specified on command line.\n"); exit(1); } if(buffer[4]!='2'){ fprintf(stderr,"Incorrect YUV input file version; YUV4MPEG2 required.\n"); } ret=y4m_parse_tags((char *)buffer+5); if(ret<0){ fprintf(stderr,"Error parsing YUV4MPEG2 header in file %s.\n",f); exit(1); } if(interlace!='p'){ fprintf(stderr,"Input video is interlaced; Theora handles only progressive scan\n"); exit(1); } if(strcmp(chroma_type,"420")==0||strcmp(chroma_type,"420jpeg")==0){ src_c_dec_h=dst_c_dec_h=src_c_dec_v=dst_c_dec_v=2; y4m_dst_buf_read_sz=pic_w*pic_h+2*((pic_w+1)/2)*((pic_h+1)/2); /*Natively supported: no conversion required.*/ y4m_aux_buf_sz=y4m_aux_buf_read_sz=0; y4m_convert=y4m_convert_null; } else if(strcmp(chroma_type,"420mpeg2")==0){ src_c_dec_h=dst_c_dec_h=src_c_dec_v=dst_c_dec_v=2; y4m_dst_buf_read_sz=pic_w*pic_h; /*Chroma filter required: read into the aux buf first.*/ y4m_aux_buf_sz=y4m_aux_buf_read_sz=2*((pic_w+1)/2)*((pic_h+1)/2); y4m_convert=y4m_convert_42xmpeg2_42xjpeg; } else if(strcmp(chroma_type,"420paldv")==0){ src_c_dec_h=dst_c_dec_h=src_c_dec_v=dst_c_dec_v=2; y4m_dst_buf_read_sz=pic_w*pic_h; /*Chroma filter required: read into the aux buf first. We need to make two filter passes, so we need some extra space in the aux buffer.*/ y4m_aux_buf_sz=3*((pic_w+1)/2)*((pic_h+1)/2); y4m_aux_buf_read_sz=2*((pic_w+1)/2)*((pic_h+1)/2); y4m_convert=y4m_convert_42xpaldv_42xjpeg; } else if(strcmp(chroma_type,"422")==0){ src_c_dec_h=dst_c_dec_h=2; src_c_dec_v=dst_c_dec_v=1; y4m_dst_buf_read_sz=pic_w*pic_h; /*Chroma filter required: read into the aux buf first.*/ y4m_aux_buf_sz=y4m_aux_buf_read_sz=2*((pic_w+1)/2)*pic_h; y4m_convert=y4m_convert_42xmpeg2_42xjpeg; } else if(strcmp(chroma_type,"422jpeg")==0){ src_c_dec_h=dst_c_dec_h=2; src_c_dec_v=dst_c_dec_v=1; y4m_dst_buf_read_sz=pic_w*pic_h+2*((pic_w+1)/2)*pic_h; /*Natively supported: no conversion required.*/ y4m_aux_buf_sz=y4m_aux_buf_read_sz=0; y4m_convert=y4m_convert_null; } else if(strcmp(chroma_type,"411")==0){ src_c_dec_h=4; /*We don't want to introduce any additional sub-sampling, so we promote 4:1:1 material to 4:2:2, as the closest format Theora can handle.*/ dst_c_dec_h=2; src_c_dec_v=dst_c_dec_v=1; y4m_dst_buf_read_sz=pic_w*pic_h; /*Chroma filter required: read into the aux buf first.*/ y4m_aux_buf_sz=y4m_aux_buf_read_sz=2*((pic_w+3)/4)*pic_h; y4m_convert=y4m_convert_411_422jpeg; } else if(strcmp(chroma_type,"444")==0){ src_c_dec_h=dst_c_dec_h=src_c_dec_v=dst_c_dec_v=1; y4m_dst_buf_read_sz=pic_w*pic_h*3; y4m_aux_buf_sz=y4m_aux_buf_read_sz=0; y4m_convert=y4m_convert_null; } else if(strcmp(chroma_type,"444alpha")==0){ src_c_dec_h=dst_c_dec_h=src_c_dec_v=dst_c_dec_v=1; y4m_dst_buf_read_sz=pic_w*pic_h*3; /*Read the extra alpha plane into the aux buf. It will be discarded.*/ y4m_aux_buf_sz=y4m_aux_buf_read_sz=pic_w*pic_h; y4m_convert=y4m_convert_null; } else if(strcmp(chroma_type,"mono")==0){ src_c_dec_h=src_c_dec_v=0; dst_c_dec_h=dst_c_dec_v=2; y4m_dst_buf_read_sz=pic_w*pic_h; y4m_aux_buf_sz=y4m_aux_buf_read_sz=0; y4m_convert=y4m_convert_mono_420jpeg; } else{ fprintf(stderr,"Unknown chroma sampling type: %s\n",chroma_type); exit(1); } /*The size of the final frame buffers is always computed from the destination chroma decimation type.*/ y4m_dst_buf_sz=pic_w*pic_h+2*((pic_w+dst_c_dec_h-1)/dst_c_dec_h)* ((pic_h+dst_c_dec_v-1)/dst_c_dec_v); video=test; if(!quiet){ fprintf(stderr,"File %s is %dx%d %.02f fps %s video.\n", f,pic_w,pic_h,(double)video_fps_n/video_fps_d,chroma_type); } return; } } fprintf(stderr,"Input file %s is neither a WAV nor YUV4MPEG2 file.\n",f); exit(1); riff_err: fprintf(stderr,"EOF parsing RIFF file %s.\n",f); exit(1); yuv_err: fprintf(stderr,"EOF parsing YUV4MPEG2 file %s.\n",f); exit(1); } int spinner=0; char *spinascii="|/-\\"; void spinnit(void){ if(quiet){ return; } spinner++; if(spinner==4)spinner=0; fprintf(stderr,"\r%c",spinascii[spinner]); } int fetch_and_process_audio(FILE *audio,ogg_page *audiopage, ogg_stream_state *vo, vorbis_dsp_state *vd, vorbis_block *vb, int audioflag){ static ogg_int64_t samples_sofar=0; ogg_packet op; int i,j; ogg_int64_t beginsample = audio_hz*(begin_sec+begin_usec*.000001); ogg_int64_t endsample = audio_hz*(end_sec+end_usec*.000001); while(audio && !audioflag){ /* process any audio already buffered */ spinnit(); if(ogg_stream_pageout(vo,audiopage)>0) return 1; if(ogg_stream_eos(vo))return 0; { /* read and process more audio */ signed char readbuffer[4096]; signed char *readptr=readbuffer; int toread=4096/2/audio_ch; int bytesread=fread(readbuffer,1,toread*2*audio_ch,audio); int sampread=bytesread/2/audio_ch; float **vorbis_buffer; int count=0; if(bytesread<=0 || (samples_sofar>=endsample && endsample>0)){ /* end of file. this can be done implicitly, but it's easier to see here in non-clever fashion. Tell the library we're at end of stream so that it can handle the last frame and mark end of stream in the output properly */ vorbis_analysis_wrote(vd,0); }else{ if(samples_sofar < beginsample){ if(samples_sofar+sampread > beginsample){ readptr += (beginsample-samples_sofar)*2*audio_ch; sampread += samples_sofar-beginsample; samples_sofar = sampread+beginsample; }else{ samples_sofar += sampread; sampread = 0; } }else{ samples_sofar += sampread; } if(samples_sofar > endsample && endsample > 0) sampread-= (samples_sofar - endsample); if(sampread>0){ vorbis_buffer=vorbis_analysis_buffer(vd,sampread); /* uninterleave samples */ for(i=0;i=beginframe) frame_state++; } /* check to see if there are dupes to flush */ if(th_encode_packetout(td,frame_state<1,op)>0)return 1; if(frame_state<1){ /* can't get here unless YUV4MPEG stream has no video */ fprintf(stderr,"Video input contains no frames.\n"); exit(1); } /* Theora is a one-frame-in,one-frame-out system; submit a frame for compression and pull out the packet */ /* in two-pass mode's second pass, we need to submit first-pass data */ if(passno==2){ for(;;){ static unsigned char buffer[80]; static int buf_pos; int bytes; /*Ask the encoder how many bytes it would like.*/ bytes=th_encode_ctl(td,TH_ENCCTL_2PASS_IN,NULL,0); if(bytes<0){ fprintf(stderr,"Error submitting pass data in second pass.\n"); exit(1); } /*If it's got enough, stop.*/ if(bytes==0)break; /*Read in some more bytes, if necessary.*/ if(bytes>80-buf_pos)bytes=80-buf_pos; if(bytes>0&&fread(buffer+buf_pos,1,bytes,twopass_file)=bytes)buf_pos=0; /*Otherwise remember how much it used.*/ else buf_pos+=ret; } } /*We submit the buffer using the size of the picture region. libtheora will pad the picture region out to the full frame size for us, whether we pass in a full frame or not.*/ ycbcr[0].width=pic_w; ycbcr[0].height=pic_h; ycbcr[0].stride=pic_w; ycbcr[0].data=yuvframe[0]; ycbcr[1].width=c_w; ycbcr[1].height=c_h; ycbcr[1].stride=c_w; ycbcr[1].data=yuvframe[0]+pic_sz; ycbcr[2].width=c_w; ycbcr[2].height=c_h; ycbcr[2].stride=c_w; ycbcr[2].data=yuvframe[0]+pic_sz+c_sz; th_encode_ycbcr_in(td,ycbcr); { unsigned char *temp=yuvframe[0]; yuvframe[0]=yuvframe[1]; yuvframe[1]=temp; frame_state--; } /* in two-pass mode's first pass we need to extract and save the pass data */ if(passno==1){ unsigned char *buffer; int bytes = th_encode_ctl(td, TH_ENCCTL_2PASS_OUT, &buffer, sizeof(buffer)); if(bytes<0){ fprintf(stderr,"Could not read two-pass data from encoder.\n"); exit(1); } if(fwrite(buffer,1,bytes,twopass_file)0) return 1; if(ogg_stream_eos(to)) return 0; ret=fetch_and_process_video_packet(video,twopass_file,passno,td,&op); if(ret<=0)return 0; ogg_stream_packetin(to,&op); } return videoflag; } static int ilog(unsigned _v){ int ret; for(ret=0;_v;ret++)_v>>=1; return ret; } static int parse_time(long *_sec,long *_usec,const char *_optarg){ double secf; long secl; const char *pos; char *end; int err; err=0; secl=0; pos=strchr(_optarg,':'); if(pos!=NULL){ char *pos2; secl=strtol(_optarg,&end,10)*60; err|=pos!=end; pos2=strchr(++pos,':'); if(pos2!=NULL){ secl=(secl+strtol(pos,&end,10))*60; err|=pos2!=end; pos=pos2+1; } } else pos=_optarg; secf=strtod(pos,&end); if(err||*end!='\0')return -1; *_sec=secl+(long)floor(secf); *_usec=(long)((secf-floor(secf))*1E6+0.5); return 0; } int main(int argc,char *argv[]){ int c,long_option_index,ret; ogg_stream_state to; /* take physical pages, weld into a logical stream of packets */ ogg_stream_state vo; /* take physical pages, weld into a logical stream of packets */ ogg_page og; /* one Ogg bitstream page. Vorbis packets are inside */ ogg_packet op; /* one raw packet of data for decode */ th_enc_ctx *td; th_info ti; th_comment tc; vorbis_info vi; /* struct that stores all the static vorbis bitstream settings */ vorbis_comment vc; /* struct that stores all the user comments */ vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ vorbis_block vb; /* local working space for packet->PCM decode */ int speed=-1; int audioflag=0; int videoflag=0; int akbps=0; int vkbps=0; int soft_target=0; ogg_int64_t audio_bytesout=0; ogg_int64_t video_bytesout=0; double timebase; FILE *outfile = stdout; FILE *twopass_file = NULL; fpos_t video_rewind_pos; int twopass=0; int passno; clock_t clock_start=clock(); clock_t clock_end; double elapsed; #ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */ /* if we were reading/writing a file, it would also need to in binary mode, eg, fopen("file.wav","wb"); */ /* Beware the evil ifdef. We avoid these where we can, but this one we cannot. Don't add any more, you'll probably go to hell if you do. */ _setmode( _fileno( stdin ), _O_BINARY ); _setmode( _fileno( stdout ), _O_BINARY ); #endif while((c=getopt_long(argc,argv,optstring,options,&long_option_index))!=EOF){ switch(c){ case 'o': outfile=fopen(optarg,"wb"); if(outfile==NULL){ fprintf(stderr,"Unable to open output file '%s'\n", optarg); exit(1); } break;; case 'a': audio_q=(float)(atof(optarg)*.099); if(audio_q<-.1 || audio_q>1){ fprintf(stderr,"Illegal audio quality (choose -1 through 10)\n"); exit(1); } audio_r=-1; break; case 'v': video_q=(int)rint(6.3*atof(optarg)); if(video_q<0 || video_q>63){ fprintf(stderr,"Illegal video quality (choose 0 through 10)\n"); exit(1); } break; case 'A': audio_r=(int)(atof(optarg)*1000); if(audio_q<0){ fprintf(stderr,"Illegal audio quality (choose > 0 please)\n"); exit(1); } audio_q=-99; break; case 'V': video_r=(int)rint(atof(optarg)*1000); if(video_r<1){ fprintf(stderr,"Illegal video bitrate (choose > 0 please)\n"); exit(1); } break; case '\1': soft_target=1; break; case 's': video_par_n=(int)rint(atof(optarg)); break; case 'S': video_par_d=(int)rint(atof(optarg)); break; case 'f': video_fps_n=(int)rint(atof(optarg)); break; case 'F': video_fps_d=(int)rint(atof(optarg)); break; case 'q': quiet=1; break; case 'c': vp3_compatible=1; break; case 'k': keyframe_frequency=rint(atof(optarg)); if(keyframe_frequency<1 || keyframe_frequency>2147483647){ fprintf(stderr,"Illegal keyframe frequency\n"); exit(1); } break; case 'd': buf_delay=atoi(optarg); if(buf_delay<=0){ fprintf(stderr,"Illegal buffer delay\n"); exit(1); } break; case 'z': speed=atoi(optarg); if(speed<0){ fprintf(stderr,"Illegal speed level\n"); exit(1); } break; case 'b': { if(parse_time(&begin_sec,&begin_usec,optarg)<0){ fprintf(stderr,"Error parsing begin time '%s'.\n",optarg); exit(1); } } break; case 'e': { if(parse_time(&end_sec,&end_usec,optarg)<0){ fprintf(stderr,"Error parsing end time '%s'.\n",optarg); exit(1); } } break; case '\2': twopass=3; /* perform both passes */ twopass_file=tmpfile(); if(!twopass_file){ fprintf(stderr,"Unable to open temporary file for twopass data\n"); exit(1); } break; case '\3': twopass=1; /* perform first pass */ twopass_file=fopen(optarg,"wb"); if(!twopass_file){ fprintf(stderr,"Unable to open \'%s\' for twopass data\n",optarg); exit(1); } break; case '\4': twopass=2; /* perform second pass */ twopass_file=fopen(optarg,"rb"); if(!twopass_file){ fprintf(stderr,"Unable to open twopass data file \'%s\'",optarg); exit(1); } break; #if defined(OC_COLLECT_METRICS) case 'm': if(th_encode_ctl(NULL,TH_ENCCTL_SET_METRICS_FILE, optarg,strlen(optarg)+1)){ fprintf(stderr,"Unable to set metrics collection file name.\n"); fprintf(stderr,"libtheora not compiled with OC_COLLECT_METRICS?\n"); exit(1); } break; #endif default: usage(); } } if(soft_target){ if(video_r<=0){ fprintf(stderr,"Soft rate target (--soft-target) requested without a bitrate (-V).\n"); exit(1); } if(video_q==-1) video_q=0; }else{ if(video_q==-1){ if(video_r>0) video_q=0; else video_q=48; } } if(keyframe_frequency<=0){ /*Use a default keyframe frequency of 64 for 1-pass (streaming) mode, and 256 for two-pass mode.*/ keyframe_frequency=twopass?256:64; } while(optind-99) ret = vorbis_encode_init_vbr(&vi,audio_ch,audio_hz,audio_q); else ret = vorbis_encode_init(&vi,audio_ch,audio_hz,-1, (int)(64870*(ogg_int64_t)audio_r>>16),-1); if(ret){ fprintf(stderr,"The Vorbis encoder could not set up a mode according to\n" "the requested quality or bitrate.\n\n"); exit(1); } vorbis_comment_init(&vc); vorbis_analysis_init(&vd,&vi); vorbis_block_init(&vd,&vb); } for(passno=(twopass==3?1:twopass);passno<=(twopass==3?2:twopass);passno++){ /* Set up Theora encoder */ if(!video){ fprintf(stderr,"No video files submitted for compression?\n"); exit(1); } /* Theora has a divisible-by-sixteen restriction for the encoded frame size */ /* scale the picture size up to the nearest /16 and calculate offsets */ frame_w=pic_w+15&~0xF; frame_h=pic_h+15&~0xF; /*Force the offsets to be even so that chroma samples line up like we expect.*/ pic_x=frame_w-pic_w>>1&~1; pic_y=frame_h-pic_h>>1&~1; th_info_init(&ti); ti.frame_width=frame_w; ti.frame_height=frame_h; ti.pic_width=pic_w; ti.pic_height=pic_h; ti.pic_x=pic_x; ti.pic_y=pic_y; ti.fps_numerator=video_fps_n; ti.fps_denominator=video_fps_d; ti.aspect_numerator=video_par_n; ti.aspect_denominator=video_par_d; ti.colorspace=TH_CS_UNSPECIFIED; /*Account for the Ogg page overhead. This is 1 byte per 255 for lacing values, plus 26 bytes per 4096 bytes for the page header, plus approximately 1/2 byte per packet (not accounted for here).*/ ti.target_bitrate=(int)(64870*(ogg_int64_t)video_r>>16); ti.quality=video_q; ti.keyframe_granule_shift=ilog(keyframe_frequency-1); if(dst_c_dec_h==2){ if(dst_c_dec_v==2)ti.pixel_fmt=TH_PF_420; else ti.pixel_fmt=TH_PF_422; } else ti.pixel_fmt=TH_PF_444; td=th_encode_alloc(&ti); th_info_clear(&ti); if(td==NULL){ fprintf(stderr,"Error: Could not create an encoder instance.\n"); fprintf(stderr,"Check that video parameters are valid.\n"); exit(1); } /* setting just the granule shift only allows power-of-two keyframe spacing. Set the actual requested spacing. */ ret=th_encode_ctl(td,TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE, &keyframe_frequency,sizeof(keyframe_frequency-1)); if(ret<0){ fprintf(stderr,"Could not set keyframe interval to %d.\n",(int)keyframe_frequency); } if(vp3_compatible){ ret=th_encode_ctl(td,TH_ENCCTL_SET_VP3_COMPATIBLE,&vp3_compatible, sizeof(vp3_compatible)); if(ret<0||!vp3_compatible){ fprintf(stderr,"Could not enable strict VP3 compatibility.\n"); if(ret>=0){ fprintf(stderr,"Ensure your source format is supported by VP3.\n"); fprintf(stderr, "(4:2:0 pixel format, width and height multiples of 16).\n"); } } } if(soft_target){ /* reverse the rate control flags to favor a 'long time' strategy */ int arg = TH_RATECTL_CAP_UNDERFLOW; ret=th_encode_ctl(td,TH_ENCCTL_SET_RATE_FLAGS,&arg,sizeof(arg)); if(ret<0) fprintf(stderr,"Could not set encoder flags for --soft-target\n"); /* Default buffer control is overridden on two-pass */ if(!twopass&&buf_delay<0){ if((keyframe_frequency*7>>1) > 5*video_fps_n/video_fps_d) arg=keyframe_frequency*7>>1; else arg=5*video_fps_n/video_fps_d; ret=th_encode_ctl(td,TH_ENCCTL_SET_RATE_BUFFER,&arg,sizeof(arg)); if(ret<0) fprintf(stderr,"Could not set rate control buffer for --soft-target\n"); } } /* set up two-pass if needed */ if(passno==1){ unsigned char *buffer; int bytes; bytes=th_encode_ctl(td,TH_ENCCTL_2PASS_OUT,&buffer,sizeof(buffer)); if(bytes<0){ fprintf(stderr,"Could not set up the first pass of two-pass mode.\n"); fprintf(stderr,"Did you remember to specify an estimated bitrate?\n"); exit(1); } /*Perform a seek test to ensure we can overwrite this placeholder data at the end; this is better than letting the user sit through a whole encode only to find out their pass 1 file is useless at the end.*/ if(fseek(twopass_file,0,SEEK_SET)<0){ fprintf(stderr,"Unable to seek in two-pass data file.\n"); exit(1); } if(fwrite(buffer,1,bytes,twopass_file)=0){ ret=th_encode_ctl(td,TH_ENCCTL_SET_RATE_BUFFER, &buf_delay,sizeof(buf_delay)); if(ret<0){ fprintf(stderr,"Warning: could not set desired buffer delay.\n"); } } /*Speed should also be set after the current encoder mode is established, since the available speed levels may change depending.*/ if(speed>=0){ int speed_max; int ret; ret=th_encode_ctl(td,TH_ENCCTL_GET_SPLEVEL_MAX, &speed_max,sizeof(speed_max)); if(ret<0){ fprintf(stderr,"Warning: could not determine maximum speed level.\n"); speed_max=0; } ret=th_encode_ctl(td,TH_ENCCTL_SET_SPLEVEL,&speed,sizeof(speed)); if(ret<0){ fprintf(stderr,"Warning: could not set speed level to %i of %i\n", speed,speed_max); if(speed>speed_max){ fprintf(stderr,"Setting it to %i instead\n",speed_max); } ret=th_encode_ctl(td,TH_ENCCTL_SET_SPLEVEL, &speed_max,sizeof(speed_max)); if(ret<0){ fprintf(stderr,"Warning: could not set speed level to %i of %i\n", speed_max,speed_max); } } } /* write the bitstream header packets with proper page interleave */ th_comment_init(&tc); /* first packet will get its own page automatically */ if(th_encode_flushheader(td,&tc,&op)<=0){ fprintf(stderr,"Internal Theora library error.\n"); exit(1); } if(passno!=1){ ogg_stream_packetin(&to,&op); if(ogg_stream_pageout(&to,&og)!=1){ fprintf(stderr,"Internal Ogg library error.\n"); exit(1); } fwrite(og.header,1,og.header_len,outfile); fwrite(og.body,1,og.body_len,outfile); } /* create the remaining theora headers */ for(;;){ ret=th_encode_flushheader(td,&tc,&op); if(ret<0){ fprintf(stderr,"Internal Theora library error.\n"); exit(1); } else if(!ret)break; if(passno!=1)ogg_stream_packetin(&to,&op); } if(audio && passno!=1){ /* vorbis streams start with three standard header packets. */ ogg_packet id; ogg_packet comment; ogg_packet code; if(vorbis_analysis_headerout(&vd,&vc,&id,&comment,&code)<0){ fprintf(stderr,"Internal Vorbis library error.\n"); exit(1); } /* id header is automatically placed in its own page */ ogg_stream_packetin(&vo,&id); if(ogg_stream_pageout(&vo,&og)!=1){ fprintf(stderr,"Internal Ogg library error.\n"); exit(1); } fwrite(og.header,1,og.header_len,outfile); fwrite(og.body,1,og.body_len,outfile); /* append remaining vorbis header packets */ ogg_stream_packetin(&vo,&comment); ogg_stream_packetin(&vo,&code); } /* Flush the rest of our headers. This ensures the actual data in each stream will start on a new page, as per spec. */ if(passno!=1){ for(;;){ int result = ogg_stream_flush(&to,&og); if(result<0){ /* can't get here */ fprintf(stderr,"Internal Ogg library error.\n"); exit(1); } if(result==0)break; fwrite(og.header,1,og.header_len,outfile); fwrite(og.body,1,og.body_len,outfile); } } if(audio && passno!=1){ for(;;){ int result=ogg_stream_flush(&vo,&og); if(result<0){ /* can't get here */ fprintf(stderr,"Internal Ogg library error.\n"); exit(1); } if(result==0)break; fwrite(og.header,1,og.header_len,outfile); fwrite(og.body,1,og.body_len,outfile); } } /* setup complete. Raw processing loop */ if(!quiet){ switch(passno){ case 0: case 2: fprintf(stderr,"\rCompressing.... \n"); break; case 1: fprintf(stderr,"\rScanning first pass.... \n"); break; } } for(;;){ int audio_or_video=-1; if(passno==1){ ogg_packet op; int ret=fetch_and_process_video_packet(video,twopass_file,passno,td,&op); if(ret<0)break; if(op.e_o_s)break; /* end of stream */ timebase=th_granule_time(td,op.granulepos); audio_or_video=1; }else{ double audiotime; double videotime; ogg_page audiopage; ogg_page videopage; /* is there an audio page flushed? If not, fetch one if possible */ audioflag=fetch_and_process_audio(audio,&audiopage,&vo,&vd,&vb,audioflag); /* is there a video page flushed? If not, fetch one if possible */ videoflag=fetch_and_process_video(video,&videopage,&to,td,twopass_file,passno,videoflag); /* no pages of either? Must be end of stream. */ if(!audioflag && !videoflag)break; /* which is earlier; the end of the audio page or the end of the video page? Flush the earlier to stream */ audiotime= audioflag?vorbis_granule_time(&vd,ogg_page_granulepos(&audiopage)):-1; videotime= videoflag?th_granule_time(td,ogg_page_granulepos(&videopage)):-1; if(!audioflag){ audio_or_video=1; } else if(!videoflag) { audio_or_video=0; } else { if(audiotime0){ int hundredths=(int)(timebase*100-(long)timebase*100); int seconds=(long)timebase%60; int minutes=((long)timebase/60)%60; int hours=(long)timebase/3600; if(audio_or_video)vkbps=(int)rint(video_bytesout*8./timebase*.001); else akbps=(int)rint(audio_bytesout*8./timebase*.001); fprintf(stderr, "\r %d:%02d:%02d.%02d audio: %dkbps video: %dkbps ", hours,minutes,seconds,hundredths,akbps,vkbps); } } if(video)th_encode_free(td); } /* clear out state */ if(audio && twopass!=1){ ogg_stream_clear(&vo); vorbis_block_clear(&vb); vorbis_dsp_clear(&vd); vorbis_comment_clear(&vc); vorbis_info_clear(&vi); if(audio!=stdin)fclose(audio); } if(video){ ogg_stream_clear(&to); th_comment_clear(&tc); if(video!=stdin)fclose(video); } if(outfile && outfile!=stdout)fclose(outfile); if(twopass_file)fclose(twopass_file); clock_end=clock(); elapsed=(clock_end-clock_start)/(double)CLOCKS_PER_SEC; if(!quiet){ fprintf(stderr,"\r \n"); fprintf(stderr," %lld frames in %.3lf seconds: %.3lf Mpixel/s", (long long)frames,elapsed, (double)1e-6*frames*frame_w*frame_h/elapsed); fprintf(stderr," %.2lfx", (double)frames*video_fps_d/(elapsed*video_fps_n)); fprintf(stderr,"\ndone.\n\n"); } return(0); } libtheora-1.2.0/examples/Makefile.in0000644000175000017500000011476314771707054016046 0ustar perepere# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = dump_video$(EXEEXT) dump_psnr$(EXEEXT) \ libtheora_info$(EXEEXT) $(BUILDABLE_EXAMPLES) EXTRA_PROGRAMS = player_example$(EXEEXT) encoder_example$(EXEEXT) \ png2theora$(EXEEXT) tiff2theora$(EXEEXT) subdir = examples ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ $(top_srcdir)/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/ogg.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/vorbis.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_dump_psnr_OBJECTS = dump_psnr.$(OBJEXT) dump_psnr_OBJECTS = $(am_dump_psnr_OBJECTS) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = ../lib/libtheoradec.la $(am__DEPENDENCIES_1) dump_psnr_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am_dump_video_OBJECTS = dump_video.$(OBJEXT) dump_video_OBJECTS = $(am_dump_video_OBJECTS) dump_video_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) am_encoder_example_OBJECTS = \ encoder_example-encoder_example.$(OBJEXT) encoder_example_OBJECTS = $(am_encoder_example_OBJECTS) am__DEPENDENCIES_3 = ../lib/libtheoraenc.la ../lib/libtheoradec.la \ $(am__DEPENDENCIES_1) encoder_example_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) encoder_example_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(encoder_example_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ am_libtheora_info_OBJECTS = libtheora_info.$(OBJEXT) libtheora_info_OBJECTS = $(am_libtheora_info_OBJECTS) libtheora_info_DEPENDENCIES = $(am__DEPENDENCIES_3) am_player_example_OBJECTS = player_example-player_example.$(OBJEXT) player_example_OBJECTS = $(am_player_example_OBJECTS) player_example_DEPENDENCIES = $(am__DEPENDENCIES_2) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) player_example_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(player_example_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ am_png2theora_OBJECTS = png2theora-png2theora.$(OBJEXT) png2theora_OBJECTS = $(am_png2theora_OBJECTS) png2theora_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_3) \ $(am__DEPENDENCIES_1) png2theora_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(png2theora_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am_tiff2theora_OBJECTS = tiff2theora-tiff2theora.$(OBJEXT) tiff2theora_OBJECTS = $(am_tiff2theora_OBJECTS) tiff2theora_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_3) \ $(am__DEPENDENCIES_1) tiff2theora_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(tiff2theora_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/dump_psnr.Po \ ./$(DEPDIR)/dump_video.Po \ ./$(DEPDIR)/encoder_example-encoder_example.Po \ ./$(DEPDIR)/encoder_example-getopt.Po \ ./$(DEPDIR)/encoder_example-getopt1.Po ./$(DEPDIR)/getopt.Po \ ./$(DEPDIR)/getopt1.Po ./$(DEPDIR)/libtheora_info.Po \ ./$(DEPDIR)/player_example-player_example.Po \ ./$(DEPDIR)/png2theora-png2theora.Po \ ./$(DEPDIR)/tiff2theora-tiff2theora.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(dump_psnr_SOURCES) $(EXTRA_dump_psnr_SOURCES) \ $(dump_video_SOURCES) $(EXTRA_dump_video_SOURCES) \ $(encoder_example_SOURCES) $(EXTRA_encoder_example_SOURCES) \ $(libtheora_info_SOURCES) $(player_example_SOURCES) \ $(png2theora_SOURCES) $(tiff2theora_SOURCES) DIST_SOURCES = $(dump_psnr_SOURCES) $(EXTRA_dump_psnr_SOURCES) \ $(dump_video_SOURCES) $(EXTRA_dump_video_SOURCES) \ $(encoder_example_SOURCES) $(EXTRA_encoder_example_SOURCES) \ $(libtheora_info_SOURCES) $(player_example_SOURCES) \ $(png2theora_SOURCES) $(tiff2theora_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINDIR = @BINDIR@ BUILDABLE_EXAMPLES = @BUILDABLE_EXAMPLES@ CAIRO_CFLAGS = @CAIRO_CFLAGS@ CAIRO_LIBS = @CAIRO_LIBS@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG = @DEBUG@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOCDIR = @DOCDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GETOPT_OBJS = @GETOPT_OBJS@ GREP = @GREP@ HAVE_ARM_ASM_EDSP = @HAVE_ARM_ASM_EDSP@ HAVE_ARM_ASM_MEDIA = @HAVE_ARM_ASM_MEDIA@ HAVE_ARM_ASM_NEON = @HAVE_ARM_ASM_NEON@ HAVE_BIBTEX = @HAVE_BIBTEX@ HAVE_DOXYGEN = @HAVE_DOXYGEN@ HAVE_PDFLATEX = @HAVE_PDFLATEX@ HAVE_PERL = @HAVE_PERL@ HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@ HAVE_TIFF = @HAVE_TIFF@ HAVE_TRANSFIG = @HAVE_TRANSFIG@ INCLUDEDIR = @INCLUDEDIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBDIR = @LIBDIR@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OGG_CFLAGS = @OGG_CFLAGS@ OGG_LIBS = @OGG_LIBS@ OSS_LIBS = @OSS_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_LIBS = @PNG_LIBS@ PROFILE = @PROFILE@ RANLIB = @RANLIB@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEST_ENV = @TEST_ENV@ THDEC_LIB_AGE = @THDEC_LIB_AGE@ THDEC_LIB_CURRENT = @THDEC_LIB_CURRENT@ THDEC_LIB_REVISION = @THDEC_LIB_REVISION@ THENC_LIB_AGE = @THENC_LIB_AGE@ THENC_LIB_CURRENT = @THENC_LIB_CURRENT@ THENC_LIB_REVISION = @THENC_LIB_REVISION@ THEORADEC_LDFLAGS = @THEORADEC_LDFLAGS@ THEORAENC_LDFLAGS = @THEORAENC_LDFLAGS@ THEORA_LDFLAGS = @THEORA_LDFLAGS@ THEORA_LIBOGG_REQ_VERSION = @THEORA_LIBOGG_REQ_VERSION@ TH_LIB_AGE = @TH_LIB_AGE@ TH_LIB_CURRENT = @TH_LIB_CURRENT@ TH_LIB_REVISION = @TH_LIB_REVISION@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_LIBS = @TIFF_LIBS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ VORBISENC_LIBS = @VORBISENC_LIBS@ VORBISFILE_LIBS = @VORBISFILE_LIBS@ VORBIS_CFLAGS = @VORBIS_CFLAGS@ VORBIS_LIBS = @VORBIS_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = encoder_example_ffmpeg AM_CPPFLAGS = -I$(top_srcdir)/include AM_CFLAGS = $(OGG_CFLAGS) LDADD = ../lib/libtheora.la $(OGG_LIBS) LDADDDEC = ../lib/libtheoradec.la $(OGG_LIBS) LDADDENC = ../lib/libtheoraenc.la ../lib/libtheoradec.la $(OGG_LIBS) dump_video_SOURCES = dump_video.c EXTRA_dump_video_SOURCES = getopt.c getopt1.c getopt.h dump_video_LDADD = $(GETOPT_OBJS) $(LDADDDEC) $(COMPAT_LIBS) dump_psnr_SOURCES = dump_psnr.c EXTRA_dump_psnr_SOURCES = getopt.c getopt1.c getopt.h dump_psnr_LDADD = $(GETOPT_OBJS) $(LDADDDEC) -lm libtheora_info_SOURCES = libtheora_info.c libtheora_info_LDADD = $(LDADDENC) player_example_SOURCES = player_example.c player_example_CFLAGS = $(SDL_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) player_example_LDADD = $(LDADDDEC) $(SDL_LIBS) $(VORBIS_LIBS) $(OSS_LIBS) -lm encoder_example_SOURCES = encoder_example.c EXTRA_encoder_example_SOURCES = getopt.c getopt1.c getopt.h encoder_example_CFLAGS = $(OGG_CFLAGS) $(VORBIS_CFLAGS) encoder_example_LDADD = $(GETOPT_OBJS) $(LDADDENC) $(VORBIS_LIBS) $(VORBISENC_LIBS) -lm png2theora_SOURCES = png2theora.c png2theora_CFLAGS = $(OGG_CFLAGS) $(PNG_CFLAGS) png2theora_LDADD = $(GETOPT_OBJS) $(LDADDENC) $(PNG_LIBS) -lm tiff2theora_SOURCES = tiff2theora.c tiff2theora_CFLAGS = $(OGG_CFLAGS) $(TIFF_CFLAGS) tiff2theora_LDADD = $(GETOPT_OBJS) $(LDADDENC) $(TIFF_LIBS) -lm all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu examples/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list dump_psnr$(EXEEXT): $(dump_psnr_OBJECTS) $(dump_psnr_DEPENDENCIES) $(EXTRA_dump_psnr_DEPENDENCIES) @rm -f dump_psnr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dump_psnr_OBJECTS) $(dump_psnr_LDADD) $(LIBS) dump_video$(EXEEXT): $(dump_video_OBJECTS) $(dump_video_DEPENDENCIES) $(EXTRA_dump_video_DEPENDENCIES) @rm -f dump_video$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dump_video_OBJECTS) $(dump_video_LDADD) $(LIBS) encoder_example$(EXEEXT): $(encoder_example_OBJECTS) $(encoder_example_DEPENDENCIES) $(EXTRA_encoder_example_DEPENDENCIES) @rm -f encoder_example$(EXEEXT) $(AM_V_CCLD)$(encoder_example_LINK) $(encoder_example_OBJECTS) $(encoder_example_LDADD) $(LIBS) libtheora_info$(EXEEXT): $(libtheora_info_OBJECTS) $(libtheora_info_DEPENDENCIES) $(EXTRA_libtheora_info_DEPENDENCIES) @rm -f libtheora_info$(EXEEXT) $(AM_V_CCLD)$(LINK) $(libtheora_info_OBJECTS) $(libtheora_info_LDADD) $(LIBS) player_example$(EXEEXT): $(player_example_OBJECTS) $(player_example_DEPENDENCIES) $(EXTRA_player_example_DEPENDENCIES) @rm -f player_example$(EXEEXT) $(AM_V_CCLD)$(player_example_LINK) $(player_example_OBJECTS) $(player_example_LDADD) $(LIBS) png2theora$(EXEEXT): $(png2theora_OBJECTS) $(png2theora_DEPENDENCIES) $(EXTRA_png2theora_DEPENDENCIES) @rm -f png2theora$(EXEEXT) $(AM_V_CCLD)$(png2theora_LINK) $(png2theora_OBJECTS) $(png2theora_LDADD) $(LIBS) tiff2theora$(EXEEXT): $(tiff2theora_OBJECTS) $(tiff2theora_DEPENDENCIES) $(EXTRA_tiff2theora_DEPENDENCIES) @rm -f tiff2theora$(EXEEXT) $(AM_V_CCLD)$(tiff2theora_LINK) $(tiff2theora_OBJECTS) $(tiff2theora_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump_psnr.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump_video.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encoder_example-encoder_example.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encoder_example-getopt.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encoder_example-getopt1.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtheora_info.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/player_example-player_example.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/png2theora-png2theora.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tiff2theora-tiff2theora.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< encoder_example-encoder_example.o: encoder_example.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(encoder_example_CFLAGS) $(CFLAGS) -MT encoder_example-encoder_example.o -MD -MP -MF $(DEPDIR)/encoder_example-encoder_example.Tpo -c -o encoder_example-encoder_example.o `test -f 'encoder_example.c' || echo '$(srcdir)/'`encoder_example.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/encoder_example-encoder_example.Tpo $(DEPDIR)/encoder_example-encoder_example.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='encoder_example.c' object='encoder_example-encoder_example.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(encoder_example_CFLAGS) $(CFLAGS) -c -o encoder_example-encoder_example.o `test -f 'encoder_example.c' || echo '$(srcdir)/'`encoder_example.c encoder_example-encoder_example.obj: encoder_example.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(encoder_example_CFLAGS) $(CFLAGS) -MT encoder_example-encoder_example.obj -MD -MP -MF $(DEPDIR)/encoder_example-encoder_example.Tpo -c -o encoder_example-encoder_example.obj `if test -f 'encoder_example.c'; then $(CYGPATH_W) 'encoder_example.c'; else $(CYGPATH_W) '$(srcdir)/encoder_example.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/encoder_example-encoder_example.Tpo $(DEPDIR)/encoder_example-encoder_example.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='encoder_example.c' object='encoder_example-encoder_example.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(encoder_example_CFLAGS) $(CFLAGS) -c -o encoder_example-encoder_example.obj `if test -f 'encoder_example.c'; then $(CYGPATH_W) 'encoder_example.c'; else $(CYGPATH_W) '$(srcdir)/encoder_example.c'; fi` encoder_example-getopt.o: getopt.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(encoder_example_CFLAGS) $(CFLAGS) -MT encoder_example-getopt.o -MD -MP -MF $(DEPDIR)/encoder_example-getopt.Tpo -c -o encoder_example-getopt.o `test -f 'getopt.c' || echo '$(srcdir)/'`getopt.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/encoder_example-getopt.Tpo $(DEPDIR)/encoder_example-getopt.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getopt.c' object='encoder_example-getopt.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(encoder_example_CFLAGS) $(CFLAGS) -c -o encoder_example-getopt.o `test -f 'getopt.c' || echo '$(srcdir)/'`getopt.c encoder_example-getopt.obj: getopt.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(encoder_example_CFLAGS) $(CFLAGS) -MT encoder_example-getopt.obj -MD -MP -MF $(DEPDIR)/encoder_example-getopt.Tpo -c -o encoder_example-getopt.obj `if test -f 'getopt.c'; then $(CYGPATH_W) 'getopt.c'; else $(CYGPATH_W) '$(srcdir)/getopt.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/encoder_example-getopt.Tpo $(DEPDIR)/encoder_example-getopt.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getopt.c' object='encoder_example-getopt.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(encoder_example_CFLAGS) $(CFLAGS) -c -o encoder_example-getopt.obj `if test -f 'getopt.c'; then $(CYGPATH_W) 'getopt.c'; else $(CYGPATH_W) '$(srcdir)/getopt.c'; fi` encoder_example-getopt1.o: getopt1.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(encoder_example_CFLAGS) $(CFLAGS) -MT encoder_example-getopt1.o -MD -MP -MF $(DEPDIR)/encoder_example-getopt1.Tpo -c -o encoder_example-getopt1.o `test -f 'getopt1.c' || echo '$(srcdir)/'`getopt1.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/encoder_example-getopt1.Tpo $(DEPDIR)/encoder_example-getopt1.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getopt1.c' object='encoder_example-getopt1.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(encoder_example_CFLAGS) $(CFLAGS) -c -o encoder_example-getopt1.o `test -f 'getopt1.c' || echo '$(srcdir)/'`getopt1.c encoder_example-getopt1.obj: getopt1.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(encoder_example_CFLAGS) $(CFLAGS) -MT encoder_example-getopt1.obj -MD -MP -MF $(DEPDIR)/encoder_example-getopt1.Tpo -c -o encoder_example-getopt1.obj `if test -f 'getopt1.c'; then $(CYGPATH_W) 'getopt1.c'; else $(CYGPATH_W) '$(srcdir)/getopt1.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/encoder_example-getopt1.Tpo $(DEPDIR)/encoder_example-getopt1.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getopt1.c' object='encoder_example-getopt1.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(encoder_example_CFLAGS) $(CFLAGS) -c -o encoder_example-getopt1.obj `if test -f 'getopt1.c'; then $(CYGPATH_W) 'getopt1.c'; else $(CYGPATH_W) '$(srcdir)/getopt1.c'; fi` player_example-player_example.o: player_example.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(player_example_CFLAGS) $(CFLAGS) -MT player_example-player_example.o -MD -MP -MF $(DEPDIR)/player_example-player_example.Tpo -c -o player_example-player_example.o `test -f 'player_example.c' || echo '$(srcdir)/'`player_example.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/player_example-player_example.Tpo $(DEPDIR)/player_example-player_example.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='player_example.c' object='player_example-player_example.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(player_example_CFLAGS) $(CFLAGS) -c -o player_example-player_example.o `test -f 'player_example.c' || echo '$(srcdir)/'`player_example.c player_example-player_example.obj: player_example.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(player_example_CFLAGS) $(CFLAGS) -MT player_example-player_example.obj -MD -MP -MF $(DEPDIR)/player_example-player_example.Tpo -c -o player_example-player_example.obj `if test -f 'player_example.c'; then $(CYGPATH_W) 'player_example.c'; else $(CYGPATH_W) '$(srcdir)/player_example.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/player_example-player_example.Tpo $(DEPDIR)/player_example-player_example.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='player_example.c' object='player_example-player_example.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(player_example_CFLAGS) $(CFLAGS) -c -o player_example-player_example.obj `if test -f 'player_example.c'; then $(CYGPATH_W) 'player_example.c'; else $(CYGPATH_W) '$(srcdir)/player_example.c'; fi` png2theora-png2theora.o: png2theora.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(png2theora_CFLAGS) $(CFLAGS) -MT png2theora-png2theora.o -MD -MP -MF $(DEPDIR)/png2theora-png2theora.Tpo -c -o png2theora-png2theora.o `test -f 'png2theora.c' || echo '$(srcdir)/'`png2theora.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/png2theora-png2theora.Tpo $(DEPDIR)/png2theora-png2theora.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='png2theora.c' object='png2theora-png2theora.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(png2theora_CFLAGS) $(CFLAGS) -c -o png2theora-png2theora.o `test -f 'png2theora.c' || echo '$(srcdir)/'`png2theora.c png2theora-png2theora.obj: png2theora.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(png2theora_CFLAGS) $(CFLAGS) -MT png2theora-png2theora.obj -MD -MP -MF $(DEPDIR)/png2theora-png2theora.Tpo -c -o png2theora-png2theora.obj `if test -f 'png2theora.c'; then $(CYGPATH_W) 'png2theora.c'; else $(CYGPATH_W) '$(srcdir)/png2theora.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/png2theora-png2theora.Tpo $(DEPDIR)/png2theora-png2theora.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='png2theora.c' object='png2theora-png2theora.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(png2theora_CFLAGS) $(CFLAGS) -c -o png2theora-png2theora.obj `if test -f 'png2theora.c'; then $(CYGPATH_W) 'png2theora.c'; else $(CYGPATH_W) '$(srcdir)/png2theora.c'; fi` tiff2theora-tiff2theora.o: tiff2theora.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tiff2theora_CFLAGS) $(CFLAGS) -MT tiff2theora-tiff2theora.o -MD -MP -MF $(DEPDIR)/tiff2theora-tiff2theora.Tpo -c -o tiff2theora-tiff2theora.o `test -f 'tiff2theora.c' || echo '$(srcdir)/'`tiff2theora.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tiff2theora-tiff2theora.Tpo $(DEPDIR)/tiff2theora-tiff2theora.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tiff2theora.c' object='tiff2theora-tiff2theora.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tiff2theora_CFLAGS) $(CFLAGS) -c -o tiff2theora-tiff2theora.o `test -f 'tiff2theora.c' || echo '$(srcdir)/'`tiff2theora.c tiff2theora-tiff2theora.obj: tiff2theora.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tiff2theora_CFLAGS) $(CFLAGS) -MT tiff2theora-tiff2theora.obj -MD -MP -MF $(DEPDIR)/tiff2theora-tiff2theora.Tpo -c -o tiff2theora-tiff2theora.obj `if test -f 'tiff2theora.c'; then $(CYGPATH_W) 'tiff2theora.c'; else $(CYGPATH_W) '$(srcdir)/tiff2theora.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tiff2theora-tiff2theora.Tpo $(DEPDIR)/tiff2theora-tiff2theora.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tiff2theora.c' object='tiff2theora-tiff2theora.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tiff2theora_CFLAGS) $(CFLAGS) -c -o tiff2theora-tiff2theora.obj `if test -f 'tiff2theora.c'; then $(CYGPATH_W) 'tiff2theora.c'; else $(CYGPATH_W) '$(srcdir)/tiff2theora.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/dump_psnr.Po -rm -f ./$(DEPDIR)/dump_video.Po -rm -f ./$(DEPDIR)/encoder_example-encoder_example.Po -rm -f ./$(DEPDIR)/encoder_example-getopt.Po -rm -f ./$(DEPDIR)/encoder_example-getopt1.Po -rm -f ./$(DEPDIR)/getopt.Po -rm -f ./$(DEPDIR)/getopt1.Po -rm -f ./$(DEPDIR)/libtheora_info.Po -rm -f ./$(DEPDIR)/player_example-player_example.Po -rm -f ./$(DEPDIR)/png2theora-png2theora.Po -rm -f ./$(DEPDIR)/tiff2theora-tiff2theora.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/dump_psnr.Po -rm -f ./$(DEPDIR)/dump_video.Po -rm -f ./$(DEPDIR)/encoder_example-encoder_example.Po -rm -f ./$(DEPDIR)/encoder_example-getopt.Po -rm -f ./$(DEPDIR)/encoder_example-getopt1.Po -rm -f ./$(DEPDIR)/getopt.Po -rm -f ./$(DEPDIR)/getopt1.Po -rm -f ./$(DEPDIR)/libtheora_info.Po -rm -f ./$(DEPDIR)/player_example-player_example.Po -rm -f ./$(DEPDIR)/png2theora-png2theora.Po -rm -f ./$(DEPDIR)/tiff2theora-tiff2theora.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile debug: $(MAKE) all CFLAGS="@DEBUG@" profile: $(MAKE) all CFLAGS="@PROFILE@" # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libtheora-1.2.0/examples/getopt.h0000644000175000017500000001445714771706724015456 0ustar perepere/* Declarations for getopt. Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _GETOPT_H #ifndef __need_getopt # define _GETOPT_H 1 #endif /* If __GNU_LIBRARY__ is not already defined, either we are being used standalone, or this is the first header included in the source file. If we are being used with glibc, we need to include , but that does not exist if we are standalone. So: if __GNU_LIBRARY__ is not defined, include , which will pull in for us if it's from glibc. (Why ctype.h? It's guaranteed to exist and it doesn't flood the namespace with stuff the way some other headers do.) */ #if !defined __GNU_LIBRARY__ # include #endif #ifdef __cplusplus extern "C" { #endif /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ extern char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ extern int optind; /* Callers store zero here to inhibit the error message `getopt' prints for unrecognized options. */ extern int opterr; /* Set to an option character which was unrecognized. */ extern int optopt; #ifndef __need_getopt /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of `struct option' terminated by an element containing a name which is zero. The field `has_arg' is: no_argument (or 0) if the option does not take an argument, required_argument (or 1) if the option requires an argument, optional_argument (or 2) if the option takes an optional argument. If the field `flag' is not NULL, it points to a variable that is set to the value given in the field `val' when the option is found, but left unchanged if the option is not found. To have a long-named option do something other than set an `int' to a compiled-in constant, such as set a value from `optarg', set the option's `flag' field to zero and its `val' field to a nonzero value (the equivalent single-letter option character, if there is one). For long options that have a zero `flag' field, `getopt' returns the contents of the `val' field. */ struct option { # if (defined __STDC__ && __STDC__) || defined __cplusplus const char *name; # else char *name; # endif /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; int *flag; int val; }; /* Names for the values of the `has_arg' field of `struct option'. */ # define no_argument 0 # define required_argument 1 # define optional_argument 2 #endif /* need getopt */ /* Get definitions and prototypes for functions to process the arguments in ARGV (ARGC of them, minus the program name) for options given in OPTS. Return the option character from OPTS just read. Return -1 when there are no more options. For unrecognized options, or options missing arguments, `optopt' is set to the option letter, and '?' is returned. The OPTS string is a list of characters which are recognized option letters, optionally followed by colons, specifying that that letter takes an argument, to be placed in `optarg'. If a letter in OPTS is followed by two colons, its argument is optional. This behavior is specific to the GNU `getopt'. The argument `--' causes premature termination of argument scanning, explicitly telling `getopt' that there are no more options. If OPTS begins with `--', then non-option arguments are treated as arguments to the option '\0'. This behavior is specific to the GNU `getopt'. */ #if (defined __STDC__ && __STDC__) || defined __cplusplus # ifdef __GNU_LIBRARY__ /* Many other libraries have conflicting prototypes for getopt, with differences in the consts, in stdlib.h. To avoid compilation errors, only prototype getopt for the GNU C library. */ extern int getopt (int __argc, char *const *__argv, const char *__shortopts); # else /* not __GNU_LIBRARY__ */ extern int getopt (); # endif /* __GNU_LIBRARY__ */ # ifndef __need_getopt extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts, const struct option *__longopts, int *__longind); extern int getopt_long_only (int __argc, char *const *__argv, const char *__shortopts, const struct option *__longopts, int *__longind); /* Internal only. Users should not call this directly. */ extern int _getopt_internal (int __argc, char *const *__argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only); # endif #else /* not __STDC__ */ extern int getopt (); # ifndef __need_getopt extern int getopt_long (); extern int getopt_long_only (); extern int _getopt_internal (); # endif #endif /* __STDC__ */ #ifdef __cplusplus } #endif /* Make sure we later can get all the definitions and declarations. */ #undef __need_getopt #endif /* getopt.h */ libtheora-1.2.0/examples/png2theora.c0000644000175000017500000007333314771706724016216 0ustar perepere/******************************************************************** * * * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. * * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009,2009 * * by the Xiph.Org Foundation and contributors * * https://www.xiph.org/ * * * ******************************************************************** function: example encoder application; makes an Ogg Theora file from a sequence of png images based on code from Vegard Nossum ********************************************************************/ #define _FILE_OFFSET_BITS 64 #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_CONFIG_H # include #endif #include #include #include "theora/theoraenc.h" #define PROGRAM_NAME "png2theora" #define PROGRAM_VERSION "1.1" static const char *option_output = NULL; static int video_fps_numerator = 24; static int video_fps_denominator = 1; static int video_aspect_numerator = 0; static int video_aspect_denominator = 0; static int video_rate = -1; static int video_quality = -1; ogg_uint32_t keyframe_frequency=0; int buf_delay=-1; int vp3_compatible=0; static int chroma_format = TH_PF_420; static FILE *twopass_file = NULL; static int twopass=0; static int passno; static FILE *ogg_fp = NULL; static ogg_stream_state ogg_os; static ogg_packet op; static ogg_page og; static th_enc_ctx *td = NULL; static th_info ti; static char *input_filter = NULL; const char *optstring = "o:hv:\4:\2:V:s:S:f:F:ck:d:\1\2\3\4\5\6"; struct option options [] = { {"output",required_argument,NULL,'o'}, {"help",no_argument,NULL,'h'}, {"chroma-444",no_argument,NULL,'\5'}, {"chroma-422",no_argument,NULL,'\6'}, {"video-rate-target",required_argument,NULL,'V'}, {"video-quality",required_argument,NULL,'v'}, {"aspect-numerator",required_argument,NULL,'s'}, {"aspect-denominator",required_argument,NULL,'S'}, {"framerate-numerator",required_argument,NULL,'f'}, {"framerate-denominator",required_argument,NULL,'F'}, {"vp3-compatible",no_argument,NULL,'c'}, {"soft-target",no_argument,NULL,'\1'}, {"keyframe-freq",required_argument,NULL,'k'}, {"buf-delay",required_argument,NULL,'d'}, {"two-pass",no_argument,NULL,'\2'}, {"first-pass",required_argument,NULL,'\3'}, {"second-pass",required_argument,NULL,'\4'}, {NULL,0,NULL,0} }; static void usage(void){ fprintf(stderr, "%s %s\n" "Usage: %s [options] \n\n" "The input argument uses C printf format to represent a list of files,\n" " i.e. file-%%06d.png to look for files file000001.png to file9999999.png \n\n" "Options: \n\n" " -o --output file name for encoded output (required);\n" " -v --video-quality Theora quality selector from 0 to 10\n" " (0 yields smallest files but lowest\n" " video quality. 10 yields highest\n" " fidelity but large files)\n\n" " -V --video-rate-target bitrate target for Theora video\n\n" " --soft-target Use a large reservoir and treat the rate\n" " as a soft target; rate control is less\n" " strict but resulting quality is usually\n" " higher/smoother overall. Soft target also\n" " allows an optional -v setting to specify\n" " a minimum allowed quality.\n\n" " --two-pass Compress input using two-pass rate control\n" " This option performs both passes automatically.\n\n" " --first-pass Perform first-pass of a two-pass rate\n" " controlled encoding, saving pass data to\n" " for a later second pass\n\n" " --second-pass Perform second-pass of a two-pass rate\n" " controlled encoding, reading first-pass\n" " data from . The first pass\n" " data must come from a first encoding pass\n" " using identical input video to work\n" " properly.\n\n" " -k --keyframe-freq Keyframe frequency\n" " -d --buf-delay Buffer delay (in frames). Longer delays\n" " allow smoother rate adaptation and provide\n" " better overall quality, but require more\n" " client side buffering and add latency. The\n" " default value is the keyframe interval for\n" " one-pass encoding (or somewhat larger if\n" " --soft-target is used) and infinite for\n" " two-pass encoding.\n" " --chroma-444 Use 4:4:4 chroma subsampling\n" " --chroma-422 Use 4:2:2 chroma subsampling\n" " (4:2:0 is default)\n\n" " -s --aspect-numerator Aspect ratio numerator, default is 0\n" " -S --aspect-denominator Aspect ratio denominator, default is 0\n" " -f --framerate-numerator Frame rate numerator\n" " -F --framerate-denominator Frame rate denominator\n" " The frame rate nominator divided by this\n" " determines the frame rate in units per tick\n" ,PROGRAM_NAME, PROGRAM_VERSION, PROGRAM_NAME ); exit(0); } #ifdef WIN32 int alphasort (const void *a, const void *b) { return strcoll ((*(const struct dirent **) a)->d_name, (*(const struct dirent **) b)->d_name); } int scandir (const char *dir, struct dirent ***namelist, int (*select)(const struct dirent *), int (*compar)(const void *, const void *)) { DIR *d; struct dirent *entry; register int i=0; size_t entrysize; if ((d=opendir(dir)) == NULL) return(-1); *namelist=NULL; while ((entry=readdir(d)) != NULL) { if (select == NULL || (select != NULL && (*select)(entry))) { *namelist=(struct dirent **)realloc((void *)(*namelist), (size_t)((i+1)*sizeof(struct dirent *))); if (*namelist == NULL) return(-1); entrysize=sizeof(struct dirent)-sizeof(entry->d_name)+strlen(entry->d_name)+1; (*namelist)[i]=(struct dirent *)malloc(entrysize); if ((*namelist)[i] == NULL) return(-1); memcpy((*namelist)[i], entry, entrysize); i++; } } if (closedir(d)) return(-1); if (i == 0) return(-1); if (compar != NULL) qsort((void *)(*namelist), (size_t)i, sizeof(struct dirent *), compar); return(i); } #endif static int theora_write_frame(th_ycbcr_buffer ycbcr, int last) { ogg_packet op; ogg_page og; /* Theora is a one-frame-in,one-frame-out system; submit a frame for compression and pull out the packet */ /* in two-pass mode's second pass, we need to submit first-pass data */ if(passno==2){ int ret; for(;;){ static unsigned char buffer[80]; static int buf_pos; int bytes; /*Ask the encoder how many bytes it would like.*/ bytes=th_encode_ctl(td,TH_ENCCTL_2PASS_IN,NULL,0); if(bytes<0){ fprintf(stderr,"Error submitting pass data in second pass.\n"); exit(1); } /*If it's got enough, stop.*/ if(bytes==0)break; /*Read in some more bytes, if necessary.*/ if(bytes>80-buf_pos)bytes=80-buf_pos; if(bytes>0&&fread(buffer+buf_pos,1,bytes,twopass_file)=bytes)buf_pos=0; /*Otherwise remember how much it used.*/ else buf_pos+=ret; } } if(th_encode_ycbcr_in(td, ycbcr)) { fprintf(stderr, "%s: error: could not encode frame\n", option_output); return 1; } /* in two-pass mode's first pass we need to extract and save the pass data */ if(passno==1){ unsigned char *buffer; int bytes = th_encode_ctl(td, TH_ENCCTL_2PASS_OUT, &buffer, sizeof(buffer)); if(bytes<0){ fprintf(stderr,"Could not read two-pass data from encoder.\n"); exit(1); } if(fwrite(buffer,1,bytes,twopass_file) 255) return 255; return d; } static void rgb_to_yuv(png_bytep *png, th_ycbcr_buffer ycbcr, unsigned int w, unsigned int h) { unsigned int x; unsigned int y; unsigned int x1; unsigned int y1; unsigned long yuv_w; unsigned char *yuv_y; unsigned char *yuv_u; unsigned char *yuv_v; yuv_w = ycbcr[0].width; yuv_y = ycbcr[0].data; yuv_u = ycbcr[1].data; yuv_v = ycbcr[2].data; /*This ignores gamma and RGB primary/whitepoint differences. It also isn't terribly fast (though a decent compiler will strength-reduce the division to a multiplication).*/ if (chroma_format == TH_PF_420) { for(y = 0; y < h; y += 2) { y1=y+(y+1> 1) + (y >> 1) * ycbcr[1].stride] = clamp( ((-33488*r0-65744*g0+99232*b0+29032005)/4 + (-33488*r1-65744*g1+99232*b1+29032005)/4 + (-33488*r2-65744*g2+99232*b2+29032005)/4 + (-33488*r3-65744*g3+99232*b3+29032005)/4)/225930); yuv_v[(x >> 1) + (y >> 1) * ycbcr[2].stride] = clamp( ((157024*r0-131488*g0-25536*b0+45940035)/4 + (157024*r1-131488*g1-25536*b1+45940035)/4 + (157024*r2-131488*g2-25536*b2+45940035)/4 + (157024*r3-131488*g3-25536*b3+45940035)/4)/357510); } } } else if (chroma_format == TH_PF_444) { for(y = 0; y < h; y++) { for(x = 0; x < w; x++) { png_byte r = png[y][3 * x + 0]; png_byte g = png[y][3 * x + 1]; png_byte b = png[y][3 * x + 2]; yuv_y[x + y * yuv_w] = clamp((65481*r+128553*g+24966*b+4207500)/255000); yuv_u[x + y * yuv_w] = clamp((-33488*r-65744*g+99232*b+29032005)/225930); yuv_v[x + y * yuv_w] = clamp((157024*r-131488*g-25536*b+45940035)/357510); } } } else { /* TH_PF_422 */ for(y = 0; y < h; y += 1) { for(x = 0; x < w; x += 2) { x1=x+(x+1> 1) + y * ycbcr[1].stride] = clamp( ((-33488*r0-65744*g0+99232*b0+29032005)/2 + (-33488*r1-65744*g1+99232*b1+29032005)/2)/225930); yuv_v[(x >> 1) + y * ycbcr[2].stride] = clamp( ((157024*r0-131488*g0-25536*b0+45940035)/2 + (157024*r1-131488*g1-25536*b1+45940035)/2)/357510); } } } } static int png_read(const char *pathname, unsigned int *w, unsigned int *h, th_ycbcr_buffer ycbcr) { FILE *fp; unsigned char header[8]; png_structp png_ptr; png_infop info_ptr; png_infop end_ptr; png_bytep row_data; png_bytep *row_pointers; png_color_16p bkgd; png_uint_32 width; png_uint_32 height; unsigned long yuv_w; unsigned long yuv_h; int bit_depth; int color_type; int interlace_type; int compression_type; int filter_method; png_uint_32 y; fp = fopen(pathname, "rb"); if(!fp) { fprintf(stderr, "%s: error: %s\n", pathname, strerror(errno)); return 1; } fread(header, 1, 8, fp); if(png_sig_cmp(header, 0, 8)) { fprintf(stderr, "%s: error: %s\n", pathname, "not a PNG"); fclose(fp); return 1; } png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if(!png_ptr) { fprintf(stderr, "%s: error: %s\n", pathname, "couldn't create png read structure"); fclose(fp); return 1; } info_ptr = png_create_info_struct(png_ptr); if(!info_ptr) { fprintf(stderr, "%s: error: %s\n", pathname, "couldn't create png info structure"); png_destroy_read_struct(&png_ptr, NULL, NULL); fclose(fp); return 1; } end_ptr = png_create_info_struct(png_ptr); if(!end_ptr) { fprintf(stderr, "%s: error: %s\n", pathname, "couldn't create png info structure"); png_destroy_read_struct(&png_ptr, &info_ptr, NULL); fclose(fp); return 1; } png_init_io(png_ptr, fp); png_set_sig_bytes(png_ptr, 8); png_read_info(png_ptr, info_ptr); png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, &compression_type, &filter_method); png_set_expand(png_ptr); if(bit_depth<8)png_set_packing(png_ptr); if(bit_depth==16)png_set_strip_16(png_ptr); if(!(color_type&PNG_COLOR_MASK_COLOR))png_set_gray_to_rgb(png_ptr); if(png_get_bKGD(png_ptr, info_ptr, &bkgd)){ png_set_background(png_ptr, bkgd, PNG_BACKGROUND_GAMMA_FILE, 1, 1.0); } /*Note that color_type 2 and 3 can also have alpha, despite not setting the PNG_COLOR_MASK_ALPHA bit. We always strip it to prevent libpng from overrunning our buffer.*/ png_set_strip_alpha(png_ptr); row_data = (png_bytep)png_malloc(png_ptr, 3*height*width*sizeof(*row_data)); row_pointers = (png_bytep *)png_malloc(png_ptr, height*sizeof(*row_pointers)); for(y = 0; y < height; y++) { row_pointers[y] = row_data + y*(3*width); } png_read_image(png_ptr, row_pointers); png_read_end(png_ptr, end_ptr); *w = width; *h = height; /* Must hold: yuv_w >= w */ yuv_w = (*w + 15) & ~15; /* Must hold: yuv_h >= h */ yuv_h = (*h + 15) & ~15; /* Do we need to allocate a buffer */ if (!ycbcr[0].data){ ycbcr[0].width = yuv_w; ycbcr[0].height = yuv_h; ycbcr[0].stride = yuv_w; ycbcr[1].width = (chroma_format == TH_PF_444) ? yuv_w : (yuv_w >> 1); ycbcr[1].stride = ycbcr[1].width; ycbcr[1].height = (chroma_format == TH_PF_420) ? (yuv_h >> 1) : yuv_h; ycbcr[2].width = ycbcr[1].width; ycbcr[2].stride = ycbcr[1].stride; ycbcr[2].height = ycbcr[1].height; ycbcr[0].data = malloc(ycbcr[0].stride * ycbcr[0].height); ycbcr[1].data = malloc(ycbcr[1].stride * ycbcr[1].height); ycbcr[2].data = malloc(ycbcr[2].stride * ycbcr[2].height); } else { if ((ycbcr[0].width != yuv_w) || (ycbcr[0].height != yuv_h)){ fprintf(stderr, "Input size %lux%lu does not match %dx%d\n", yuv_w,yuv_h,ycbcr[0].width,ycbcr[0].height); exit(1); } } rgb_to_yuv(row_pointers, ycbcr, *w, *h); png_free(png_ptr, row_pointers); png_free(png_ptr, row_data); png_destroy_read_struct(&png_ptr, &info_ptr, &end_ptr); fclose(fp); return 0; } static int include_files (const struct dirent *de) { char name[1024]; int number = -1; sscanf(de->d_name, input_filter, &number); sprintf(name, input_filter, number); return !strcmp(name, de->d_name); } static int ilog(unsigned _v){ int ret; for(ret=0;_v;ret++)_v>>=1; return ret; } int main(int argc, char *argv[]) { int c,long_option_index; int i, n; char *input_mask; char *input_directory; char *scratch; th_comment tc; struct dirent **png_files; int soft_target=0; int ret; while(1) { c=getopt_long(argc,argv,optstring,options,&long_option_index); if(c == EOF) break; switch(c) { case 'h': usage(); break; case 'o': option_output = optarg; break;; case 'v': video_quality=rint(atof(optarg)*6.3); if(video_quality<0 || video_quality>63){ fprintf(stderr,"Illegal video quality (choose 0 through 10)\n"); exit(1); } video_rate=0; break; case 'V': video_rate=rint(atof(optarg)*1000); if(video_rate<1){ fprintf(stderr,"Illegal video bitrate (choose > 0 please)\n"); exit(1); } video_quality=0; break; case '\1': soft_target=1; break; case 'c': vp3_compatible=1; break; case 'k': keyframe_frequency=rint(atof(optarg)); if(keyframe_frequency<1 || keyframe_frequency>2147483647){ fprintf(stderr,"Illegal keyframe frequency\n"); exit(1); } break; case 'd': buf_delay=atoi(optarg); if(buf_delay<=0){ fprintf(stderr,"Illegal buffer delay\n"); exit(1); } break; case 's': video_aspect_numerator=rint(atof(optarg)); break; case 'S': video_aspect_denominator=rint(atof(optarg)); break; case 'f': video_fps_numerator=rint(atof(optarg)); break; case 'F': video_fps_denominator=rint(atof(optarg)); break; case '\5': chroma_format=TH_PF_444; break; case '\6': chroma_format=TH_PF_422; break; case '\2': twopass=3; /* perform both passes */ twopass_file=tmpfile(); if(!twopass_file){ fprintf(stderr,"Unable to open temporary file for twopass data\n"); exit(1); } break; case '\3': twopass=1; /* perform first pass */ twopass_file=fopen(optarg,"wb"); if(!twopass_file){ fprintf(stderr,"Unable to open \'%s\' for twopass data\n",optarg); exit(1); } break; case '\4': twopass=2; /* perform second pass */ twopass_file=fopen(optarg,"rb"); if(!twopass_file){ fprintf(stderr,"Unable to open twopass data file \'%s\'",optarg); exit(1); } break; default: usage(); break; } } if(argc < 3) { usage(); } if(soft_target){ if(video_rate<=0){ fprintf(stderr,"Soft rate target (--soft-target) requested without a bitrate (-V).\n"); exit(1); } if(video_quality==-1) video_quality=0; }else{ if(video_rate>0) video_quality=0; if(video_quality==-1) video_quality=48; } if(keyframe_frequency<=0){ /*Use a default keyframe frequency of 64 for 1-pass (streaming) mode, and 256 for two-pass mode.*/ keyframe_frequency=twopass?256:64; } input_mask = argv[optind]; if (!input_mask) { fprintf(stderr, "no input files specified; run with -h for help.\n"); exit(1); } /* dirname and basename must operate on scratch strings */ scratch = strdup(input_mask); input_directory = strdup(dirname(scratch)); free(scratch); scratch = strdup(input_mask); input_filter = strdup(basename(scratch)); free(scratch); #ifdef DEBUG fprintf(stderr, "scanning %s with filter '%s'\n", input_directory, input_filter); #endif n = scandir (input_directory, &png_files, include_files, alphasort); if (!n) { fprintf(stderr, "no input files found; run with -h for help.\n"); exit(1); } ogg_fp = fopen(option_output, "wb"); if(!ogg_fp) { fprintf(stderr, "%s: error: %s\n", option_output, "couldn't open output file"); return 1; } srand(time(NULL)); if(ogg_stream_init(&ogg_os, rand())) { fprintf(stderr, "%s: error: %s\n", option_output, "couldn't create ogg stream state"); return 1; } for(passno=(twopass==3?1:twopass);passno<=(twopass==3?2:twopass);passno++){ unsigned int w; unsigned int h; char input_png[1024]; th_ycbcr_buffer ycbcr; ycbcr[0].data = 0; int last = 0; snprintf(input_png, 1023,"%s/%s", input_directory, png_files[0]->d_name); if(png_read(input_png, &w, &h, ycbcr)) { fprintf(stderr, "could not read %s\n", input_png); exit(1); } if (passno!=2) fprintf(stderr,"%d frames, %dx%d\n",n,w,h); /* setup complete. Raw processing loop */ switch(passno){ case 0: case 2: fprintf(stderr,"\rCompressing.... \n"); break; case 1: fprintf(stderr,"\rScanning first pass.... \n"); break; } fprintf(stderr, "%s\n", input_png); th_info_init(&ti); ti.frame_width = ((w + 15) >>4)<<4; ti.frame_height = ((h + 15)>>4)<<4; ti.pic_width = w; ti.pic_height = h; ti.pic_x = 0; ti.pic_y = 0; ti.fps_numerator = video_fps_numerator; ti.fps_denominator = video_fps_denominator; ti.aspect_numerator = video_aspect_numerator; ti.aspect_denominator = video_aspect_denominator; ti.colorspace = TH_CS_UNSPECIFIED; ti.pixel_fmt = chroma_format; ti.target_bitrate = video_rate; ti.quality = video_quality; ti.keyframe_granule_shift=ilog(keyframe_frequency-1); td=th_encode_alloc(&ti); th_info_clear(&ti); /* setting just the granule shift only allows power-of-two keyframe spacing. Set the actual requested spacing. */ ret=th_encode_ctl(td,TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE, &keyframe_frequency,sizeof(keyframe_frequency-1)); if(ret<0){ fprintf(stderr,"Could not set keyframe interval to %d.\n",(int)keyframe_frequency); } if(vp3_compatible){ ret=th_encode_ctl(td,TH_ENCCTL_SET_VP3_COMPATIBLE,&vp3_compatible, sizeof(vp3_compatible)); if(ret<0||!vp3_compatible){ fprintf(stderr,"Could not enable strict VP3 compatibility.\n"); if(ret>=0){ fprintf(stderr,"Ensure your source format is supported by VP3.\n"); fprintf(stderr, "(4:2:0 pixel format, width and height multiples of 16).\n"); } } } if(soft_target){ /* reverse the rate control flags to favor a 'long time' strategy */ int arg = TH_RATECTL_CAP_UNDERFLOW; ret=th_encode_ctl(td,TH_ENCCTL_SET_RATE_FLAGS,&arg,sizeof(arg)); if(ret<0) fprintf(stderr,"Could not set encoder flags for --soft-target\n"); /* Default buffer control is overridden on two-pass */ if(!twopass&&buf_delay<0){ if((keyframe_frequency*7>>1) > 5*video_fps_numerator/video_fps_denominator) arg=keyframe_frequency*7>>1; else arg=5*video_fps_numerator/video_fps_denominator; ret=th_encode_ctl(td,TH_ENCCTL_SET_RATE_BUFFER,&arg,sizeof(arg)); if(ret<0) fprintf(stderr,"Could not set rate control buffer for --soft-target\n"); } } /* set up two-pass if needed */ if(passno==1){ unsigned char *buffer; int bytes; bytes=th_encode_ctl(td,TH_ENCCTL_2PASS_OUT,&buffer,sizeof(buffer)); if(bytes<0){ fprintf(stderr,"Could not set up the first pass of two-pass mode.\n"); fprintf(stderr,"Did you remember to specify an estimated bitrate?\n"); exit(1); } /*Perform a seek test to ensure we can overwrite this placeholder data at the end; this is better than letting the user sit through a whole encode only to find out their pass 1 file is useless at the end.*/ if(fseek(twopass_file,0,SEEK_SET)<0){ fprintf(stderr,"Unable to seek in two-pass data file.\n"); exit(1); } if(fwrite(buffer,1,bytes,twopass_file)=0){ ret=th_encode_ctl(td,TH_ENCCTL_SET_RATE_BUFFER, &buf_delay,sizeof(buf_delay)); if(ret<0){ fprintf(stderr,"Warning: could not set desired buffer delay.\n"); } } /* write the bitstream header packets with proper page interleave */ th_comment_init(&tc); /* first packet will get its own page automatically */ if(th_encode_flushheader(td,&tc,&op)<=0){ fprintf(stderr,"Internal Theora library error.\n"); exit(1); } th_comment_clear(&tc); if(passno!=1){ ogg_stream_packetin(&ogg_os,&op); if(ogg_stream_pageout(&ogg_os,&og)!=1){ fprintf(stderr,"Internal Ogg library error.\n"); exit(1); } fwrite(og.header,1,og.header_len,ogg_fp); fwrite(og.body,1,og.body_len,ogg_fp); } /* create the remaining theora headers */ for(;;){ ret=th_encode_flushheader(td,&tc,&op); if(ret<0){ fprintf(stderr,"Internal Theora library error.\n"); exit(1); } else if(!ret)break; if(passno!=1)ogg_stream_packetin(&ogg_os,&op); } /* Flush the rest of our headers. This ensures the actual data in each stream will start on a new page, as per spec. */ if(passno!=1){ for(;;){ int result = ogg_stream_flush(&ogg_os,&og); if(result<0){ /* can't get here */ fprintf(stderr,"Internal Ogg library error.\n"); exit(1); } if(result==0)break; fwrite(og.header,1,og.header_len,ogg_fp); fwrite(og.body,1,og.body_len,ogg_fp); } } i=0; last=0; do { if(i >= n-1) last = 1; if(theora_write_frame(ycbcr, last)) { fprintf(stderr,"Encoding error.\n"); exit(1); } i++; if (!last) { snprintf(input_png, 1023,"%s/%s", input_directory, png_files[i]->d_name); if(png_read(input_png, &w, &h, ycbcr)) { fprintf(stderr, "could not read %s\n", input_png); exit(1); } fprintf(stderr, "%s\n", input_png); } } while (!last); if(passno==1){ /* need to read the final (summary) packet */ unsigned char *buffer; int bytes = th_encode_ctl(td, TH_ENCCTL_2PASS_OUT, &buffer, sizeof(buffer)); if(bytes<0){ fprintf(stderr,"Could not read two-pass summary data from encoder.\n"); exit(1); } if(fseek(twopass_file,0,SEEK_SET)<0){ fprintf(stderr,"Unable to seek in two-pass data file.\n"); exit(1); } if(fwrite(buffer,1,bytes,twopass_file) #endif #include "getopt.h" #if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ #ifndef const #define const #endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 #if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 #include #if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION #define ELIDE_CODE #endif #endif #ifndef ELIDE_CODE /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ #include #endif #ifndef NULL #define NULL 0 #endif int getopt_long (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 0); } /* Like getopt_long, but '-' as well as '--' can indicate a long option. If an option that starts with '-' (not '--') doesn't match a long option, but does match a short option, it is parsed as a short option instead. */ int getopt_long_only (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 1); } #endif /* Not ELIDE_CODE. */ #ifdef TEST #include int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; int option_index = 0; static struct option long_options[] = { {"add", 1, 0, 0}, {"append", 0, 0, 0}, {"delete", 1, 0, 0}, {"verbose", 0, 0, 0}, {"create", 0, 0, 0}, {"file", 1, 0, 0}, {0, 0, 0, 0} }; c = getopt_long (argc, argv, "abc:d:0123456789", long_options, &option_index); if (c == -1) break; switch (c) { case 0: printf ("option %s", long_options[option_index].name); if (optarg) printf (" with arg %s", optarg); printf ("\n"); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case 'd': printf ("option d with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ libtheora-1.2.0/examples/getopt.c0000644000175000017500000007270314771706724015447 0ustar perepere/* Getopt for GNU. NOTE: getopt is now part of the C library, so if you don't know what "Keep this file name-space clean" means, talk to drepper@gnu.org before changing it! Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* This tells Alpha OSF/1 not to define a getopt prototype in . Ditto for AIX 3.2 and . */ #ifndef _NO_PROTO # define _NO_PROTO #endif #ifdef HAVE_CONFIG_H # include #endif #if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ # ifndef const # define const # endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 #if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 # include # if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION # define ELIDE_CODE # endif #endif #ifndef ELIDE_CODE /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ /* Don't include stdlib.h for non-GNU C libraries because some of them contain conflicting prototypes for getopt. */ # include # include #endif /* GNU C library. */ #ifdef VMS # include # if HAVE_STRING_H - 0 # include # endif #endif #ifndef _ /* This is for other GNU distributions with internationalized messages. */ # if defined HAVE_LIBINTL_H || defined _LIBC # include # ifndef _ # define _(msgid) gettext (msgid) # endif # else # define _(msgid) (msgid) # endif #endif /* This version of `getopt' appears to the caller like standard Unix `getopt' but it behaves differently for the user, since it allows the user to intersperse the options with the other arguments. As `getopt' works, it permutes the elements of ARGV so that, when it is done, all the options precede everything else. Thus all application programs are extended to handle flexible argument order. Setting the environment variable POSIXLY_CORRECT disables permutation. Then the behavior is completely standard. GNU application programs can use a third alternative mode in which they can distinguish the relative order of options and other arguments. */ #include "getopt.h" /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ /* 1003.2 says this must be 1 before any call. */ int optind = 1; /* Formerly, initialization of getopt depended on optind==0, which causes problems with re-calling getopt as programs generally don't know that. */ int __getopt_initialized; /* The next char to be scanned in the option-element in which the last option character we returned was found. This allows us to pick up the scan where we left off. If this is zero, or a null string, it means resume the scan by advancing to the next ARGV-element. */ static char *nextchar; /* Callers store zero here to inhibit the error message for unrecognized options. */ int opterr = 1; /* Set to an option character which was unrecognized. This must be initialized on some systems to avoid linking in the system's own getopt implementation. */ int optopt = '?'; /* Describe how to deal with options that follow non-option ARGV-elements. If the caller did not specify anything, the default is REQUIRE_ORDER if the environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what Unix does. This mode of operation is selected by either setting the environment variable POSIXLY_CORRECT, or using `+' as the first character of the list of option characters. PERMUTE is the default. We permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other ARGV-elements in any order and that care about the ordering of the two. We describe each non-option ARGV-element as if it were the argument of an option with character code 1. Using `-' as the first character of the list of option characters selects this mode of operation. The special argument `--' forces an end of option-scanning regardless of the value of `ordering'. In the case of RETURN_IN_ORDER, only `--' can cause `getopt' to return -1 with `optind' != ARGC. */ static enum { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER } ordering; /* Value of POSIXLY_CORRECT environment variable. */ static char *posixly_correct; #ifdef __GNU_LIBRARY__ /* We want to avoid inclusion of string.h with non-GNU libraries because there are many ways it can cause trouble. On some systems, it contains special magic macros that don't work in GCC. */ # include # define my_index strchr #else # if HAVE_STRING_H # include # else # include # endif /* Avoid depending on library functions or files whose names are inconsistent. */ #ifndef getenv extern char *getenv (); #endif static char * my_index (str, chr) const char *str; int chr; { while (*str) { if (*str == chr) return (char *) str; str++; } return 0; } /* If using GCC, we can safely declare strlen this way. If not using GCC, it is ok not to declare it. */ #ifdef __GNUC__ /* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. That was relevant to code that was here before. */ # if (!defined __STDC__ || !__STDC__) && !defined strlen /* gcc with -traditional declares the built-in strlen to return int, and has done so at least since version 2.4.5. -- rms. */ extern int strlen (const char *); # endif /* not __STDC__ */ #endif /* __GNUC__ */ #endif /* not __GNU_LIBRARY__ */ /* Handle permutation of arguments. */ /* Describe the part of ARGV that contains non-options that have been skipped. `first_nonopt' is the index in ARGV of the first of them; `last_nonopt' is the index after the last of them. */ static int first_nonopt; static int last_nonopt; #ifdef _LIBC /* Stored original parameters. XXX This is no good solution. We should rather copy the args so that we can compare them later. But we must not use malloc(3). */ extern int __libc_argc; extern char **__libc_argv; /* Bash 2.0 gives us an environment variable containing flags indicating ARGV elements that should not be considered arguments. */ # ifdef USE_NONOPTION_FLAGS /* Defined in getopt_init.c */ extern char *__getopt_nonoption_flags; static int nonoption_flags_max_len; static int nonoption_flags_len; # endif # ifdef USE_NONOPTION_FLAGS # define SWAP_FLAGS(ch1, ch2) \ if (nonoption_flags_len > 0) \ { \ char __tmp = __getopt_nonoption_flags[ch1]; \ __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ __getopt_nonoption_flags[ch2] = __tmp; \ } # else # define SWAP_FLAGS(ch1, ch2) # endif #else /* !_LIBC */ # define SWAP_FLAGS(ch1, ch2) #endif /* _LIBC */ /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) which contains all the non-options that have been skipped so far. The other is elements [last_nonopt,optind), which contains all the options processed since those non-options were skipped. `first_nonopt' and `last_nonopt' are relocated so that they describe the new indices of the non-options in ARGV after they are moved. */ #if defined __STDC__ && __STDC__ static void exchange (char **); #endif static void exchange (argv) char **argv; { int bottom = first_nonopt; int middle = last_nonopt; int top = optind; char *tem; /* Exchange the shorter segment with the far end of the longer segment. That puts the shorter segment into the right place. It leaves the longer segment in the right place overall, but it consists of two parts that need to be swapped next. */ #if defined _LIBC && defined USE_NONOPTION_FLAGS /* First make sure the handling of the `__getopt_nonoption_flags' string can work normally. Our top argument must be in the range of the string. */ if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) { /* We must extend the array. The user plays games with us and presents new arguments. */ char *new_str = malloc (top + 1); if (new_str == NULL) nonoption_flags_len = nonoption_flags_max_len = 0; else { memset (__mempcpy (new_str, __getopt_nonoption_flags, nonoption_flags_max_len), '\0', top + 1 - nonoption_flags_max_len); nonoption_flags_max_len = top + 1; __getopt_nonoption_flags = new_str; } } #endif while (top > middle && middle > bottom) { if (top - middle > middle - bottom) { /* Bottom segment is the short one. */ int len = middle - bottom; register int i; /* Swap it with the top part of the top segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[top - (middle - bottom) + i]; argv[top - (middle - bottom) + i] = tem; SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); } /* Exclude the moved bottom segment from further swapping. */ top -= len; } else { /* Top segment is the short one. */ int len = top - middle; register int i; /* Swap it with the bottom part of the bottom segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[middle + i]; argv[middle + i] = tem; SWAP_FLAGS (bottom + i, middle + i); } /* Exclude the moved top segment from further swapping. */ bottom += len; } } /* Update records for the slots the non-options now occupy. */ first_nonopt += (optind - last_nonopt); last_nonopt = optind; } /* Initialize the internal data when the first call is made. */ #if defined __STDC__ && __STDC__ static const char *_getopt_initialize (int, char *const *, const char *); #endif static const char * _getopt_initialize (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { /* Start processing options with ARGV-element 1 (since ARGV-element 0 is the program name); the sequence of previously skipped non-option ARGV-elements is empty. */ first_nonopt = last_nonopt = optind; nextchar = NULL; posixly_correct = getenv ("POSIXLY_CORRECT"); /* Determine how to handle the ordering of options and nonoptions. */ if (optstring[0] == '-') { ordering = RETURN_IN_ORDER; ++optstring; } else if (optstring[0] == '+') { ordering = REQUIRE_ORDER; ++optstring; } else if (posixly_correct != NULL) ordering = REQUIRE_ORDER; else ordering = PERMUTE; #if defined _LIBC && defined USE_NONOPTION_FLAGS if (posixly_correct == NULL && argc == __libc_argc && argv == __libc_argv) { if (nonoption_flags_max_len == 0) { if (__getopt_nonoption_flags == NULL || __getopt_nonoption_flags[0] == '\0') nonoption_flags_max_len = -1; else { const char *orig_str = __getopt_nonoption_flags; int len = nonoption_flags_max_len = strlen (orig_str); if (nonoption_flags_max_len < argc) nonoption_flags_max_len = argc; __getopt_nonoption_flags = (char *) malloc (nonoption_flags_max_len); if (__getopt_nonoption_flags == NULL) nonoption_flags_max_len = -1; else memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), '\0', nonoption_flags_max_len - len); } } nonoption_flags_len = nonoption_flags_max_len; } else nonoption_flags_len = 0; #endif return optstring; } /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. If an element of ARGV starts with '-', and is not exactly "-" or "--", then it is an option element. The characters of this element (aside from the initial '-') are option characters. If `getopt' is called repeatedly, it returns successively each of the option characters from each of the option elements. If `getopt' finds another option character, it returns that character, updating `optind' and `nextchar' so that the next call to `getopt' can resume the scan with the following option character or ARGV-element. If there are no more option characters, `getopt' returns -1. Then `optind' is the index in ARGV of the first ARGV-element that is not an option. (The ARGV-elements have been permuted so that those that are not options now come last.) OPTSTRING is a string containing the legitimate option characters. If an option character is seen that is not listed in OPTSTRING, return '?' after printing an error message. If you set `opterr' to zero, the error message is suppressed but we still return '?'. If a char in OPTSTRING is followed by a colon, that means it wants an arg, so the following text in the same ARGV-element, or the text of the following ARGV-element, is returned in `optarg'. Two colons mean an option that wants an optional arg; if there is text in the current ARGV-element, it is returned in `optarg', otherwise `optarg' is set to zero. If OPTSTRING starts with `-' or `+', it requests different methods of handling the non-option ARGV-elements. See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. Long-named options begin with `--' instead of `-'. Their names may be abbreviated as long as the abbreviation is unique or is an exact match for some defined option. If they have an argument, it follows the option name in the same ARGV-element, separated from the option name by a `=', or else the in next ARGV-element. When `getopt' finds a long-named option, it returns 0 if that option's `flag' field is nonzero, the value of the option's `val' field if the `flag' field is zero. The elements of ARGV aren't really const, because we permute them. But we pretend they're const in the prototype to be compatible with other systems. LONGOPTS is a vector of `struct option' terminated by an element containing a name which is zero. LONGIND returns the index in LONGOPT of the long-named option found. It is only valid when a long-named option has been found by the most recent call. If LONG_ONLY is nonzero, '-' as well as '--' can introduce long-named options. */ int _getopt_internal (argc, argv, optstring, longopts, longind, long_only) int argc; char *const *argv; const char *optstring; const struct option *longopts; int *longind; int long_only; { int print_errors = opterr; if (optstring[0] == ':') print_errors = 0; if (argc < 1) return -1; optarg = NULL; if (optind == 0 || !__getopt_initialized) { if (optind == 0) optind = 1; /* Don't scan ARGV[0], the program name. */ optstring = _getopt_initialize (argc, argv, optstring); __getopt_initialized = 1; } /* Test whether ARGV[optind] points to a non-option argument. Either it does not have option syntax, or there is an environment flag from the shell indicating it is not an option. The later information is only used when the used in the GNU libc. */ #if defined _LIBC && defined USE_NONOPTION_FLAGS # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ || (optind < nonoption_flags_len \ && __getopt_nonoption_flags[optind] == '1')) #else # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') #endif if (nextchar == NULL || *nextchar == '\0') { /* Advance to the next ARGV-element. */ /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been moved back by the user (who may also have changed the arguments). */ if (last_nonopt > optind) last_nonopt = optind; if (first_nonopt > optind) first_nonopt = optind; if (ordering == PERMUTE) { /* If we have just processed some options following some non-options, exchange them so that the options come first. */ if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (last_nonopt != optind) first_nonopt = optind; /* Skip any additional non-options and extend the range of non-options previously skipped. */ while (optind < argc && NONOPTION_P) optind++; last_nonopt = optind; } /* The special ARGV-element `--' means premature end of options. Skip it like a null option, then exchange with previous non-options as if it were an option, then skip everything else like a non-option. */ if (optind != argc && !strcmp (argv[optind], "--")) { optind++; if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (first_nonopt == last_nonopt) first_nonopt = optind; last_nonopt = argc; optind = argc; } /* If we have done all the ARGV-elements, stop the scan and back over any non-options that we skipped and permuted. */ if (optind == argc) { /* Set the next-arg-index to point at the non-options that we previously skipped, so the caller will digest them. */ if (first_nonopt != last_nonopt) optind = first_nonopt; return -1; } /* If we have come to a non-option and did not permute it, either stop the scan or describe it to the caller and pass it by. */ if (NONOPTION_P) { if (ordering == REQUIRE_ORDER) return -1; optarg = argv[optind++]; return 1; } /* We have found another option-ARGV-element. Skip the initial punctuation. */ nextchar = (argv[optind] + 1 + (longopts != NULL && argv[optind][1] == '-')); } /* Decode the current option-ARGV-element. */ /* Check whether the ARGV-element is a long option. If long_only and the ARGV-element has the form "-f", where f is a valid short option, don't consider it an abbreviated form of a long option that starts with f. Otherwise there would be no way to give the -f short option. On the other hand, if there's a long option "fubar" and the ARGV-element is "-fu", do consider that an abbreviation of the long option, just like "--fu", and not "-f" with arg "u". This distinction seems to be the most useful approach. */ if (longopts != NULL && (argv[optind][1] == '-' || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = -1; int option_index; for (nameend = nextchar; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if ((unsigned int) (nameend - nextchar) == (unsigned int) strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else if (long_only || pfound->has_arg != p->has_arg || pfound->flag != p->flag || pfound->val != p->val) /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (print_errors) fprintf (stderr, _("%s: option `%s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; optopt = 0; return '?'; } if (pfound != NULL) { option_index = indfound; optind++; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (print_errors) { if (argv[optind - 1][1] == '-') /* --option */ fprintf (stderr, _("%s: option `--%s' doesn't allow an argument\n"), argv[0], pfound->name); else /* +option or -option */ fprintf (stderr, _("%s: option `%c%s' doesn't allow an argument\n"), argv[0], argv[optind - 1][0], pfound->name); } nextchar += strlen (nextchar); optopt = pfound->val; return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (print_errors) fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); nextchar += strlen (nextchar); optopt = pfound->val; return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } /* Can't find it as a long option. If this is not getopt_long_only, or the option starts with '--' or is not a valid short option, then it's an error. Otherwise interpret it as a short option. */ if (!long_only || argv[optind][1] == '-' || my_index (optstring, *nextchar) == NULL) { if (print_errors) { if (argv[optind][1] == '-') /* --option */ fprintf (stderr, _("%s: unrecognized option `--%s'\n"), argv[0], nextchar); else /* +option or -option */ fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), argv[0], argv[optind][0], nextchar); } nextchar = (char *) ""; optind++; optopt = 0; return '?'; } } /* Look at and handle the next short option-character. */ { char c = *nextchar++; char *temp = my_index (optstring, c); /* Increment `optind' when we start to process its last character. */ if (*nextchar == '\0') ++optind; if (temp == NULL || c == ':') { if (print_errors) { if (posixly_correct) /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c); else fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c); } optopt = c; return '?'; } /* Convenience. Treat POSIX -W foo same as long option --foo */ if (temp[0] == 'W' && temp[1] == ';') { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = 0; int option_index; /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (print_errors) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; return c; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; /* optarg is now the argument, see if it's in the table of longopts. */ for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if ((unsigned int) (nameend - nextchar) == strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (print_errors) fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; return '?'; } if (pfound != NULL) { option_index = indfound; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (print_errors) fprintf (stderr, _("\ %s: option `-W %s' doesn't allow an argument\n"), argv[0], pfound->name); nextchar += strlen (nextchar); return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (print_errors) fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); nextchar += strlen (nextchar); return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } nextchar = NULL; return 'W'; /* Let the application handle it. */ } if (temp[1] == ':') { if (temp[2] == ':') { /* This is an option that accepts an argument optionally. */ if (*nextchar != '\0') { optarg = nextchar; optind++; } else optarg = NULL; nextchar = NULL; } else { /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (print_errors) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; nextchar = NULL; } } return c; } } int getopt (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { return _getopt_internal (argc, argv, optstring, (const struct option *) 0, (int *) 0, 0); } #endif /* Not ELIDE_CODE. */ #ifdef TEST /* Compile with -DTEST to make an executable for use in testing the above definition of `getopt'. */ int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; c = getopt (argc, argv, "abc:d:0123456789"); if (c == -1) break; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ libtheora-1.2.0/examples/dump_psnr.c0000644000175000017500000011644114771706724016152 0ustar perepere/******************************************************************** * * * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. * * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009 * * by the Xiph.Org Foundation and contributors * * https://www.xiph.org/ * * * ******************************************************************** function: example dumpvid application; dumps Theora streams ********************************************************************/ #if !defined(_GNU_SOURCE) #define _GNU_SOURCE #endif #if !defined(_LARGEFILE_SOURCE) #define _LARGEFILE_SOURCE #endif #if !defined(_LARGEFILE64_SOURCE) #define _LARGEFILE64_SOURCE #endif #if !defined(_FILE_OFFSET_BITS) #define _FILE_OFFSET_BITS 64 #endif #include #if !defined(_WIN32) #include #include #else #include "getopt.h" #endif #include #include #include #include #include /*Yes, yes, we're going to hell.*/ #if defined(_WIN32) #include #endif #include #include #include #include "theora/theoradec.h" const char *optstring = "fsy"; struct option options [] = { {"frame-type",no_argument,NULL,'f'}, {"summary",no_argument,NULL,'s'}, {"luma-only",no_argument,NULL,'y'}, {NULL,0,NULL,0} }; static int show_frame_type; static int summary_only; static int luma_only; typedef struct y4m_input y4m_input; /*The function used to perform chroma conversion.*/ typedef void (*y4m_convert_func)(y4m_input *_y4m, unsigned char *_dst,unsigned char *_aux); struct y4m_input{ int frame_w; int frame_h; int pic_w; int pic_h; int pic_x; int pic_y; int fps_n; int fps_d; int par_n; int par_d; char interlace; int src_c_dec_h; int src_c_dec_v; int dst_c_dec_h; int dst_c_dec_v; char chroma_type[16]; /*The size of each converted frame buffer.*/ size_t dst_buf_sz; /*The amount to read directly into the converted frame buffer.*/ size_t dst_buf_read_sz; /*The size of the auxiliary buffer.*/ size_t aux_buf_sz; /*The amount to read into the auxiliary buffer.*/ size_t aux_buf_read_sz; y4m_convert_func convert; unsigned char *dst_buf; unsigned char *aux_buf; }; static int y4m_parse_tags(y4m_input *_y4m,char *_tags){ int got_w; int got_h; int got_fps; int got_interlace; int got_par; int got_chroma; char *p; char *q; got_w=got_h=got_fps=got_interlace=got_par=got_chroma=0; for(p=_tags;;p=q){ /*Skip any leading spaces.*/ while(*p==' ')p++; /*If that's all we have, stop.*/ if(p[0]=='\0')break; /*Find the end of this tag.*/ for(q=p+1;*q!='\0'&&*q!=' ';q++); /*Process the tag.*/ switch(p[0]){ case 'W':{ if(sscanf(p+1,"%d",&_y4m->pic_w)!=1)return -1; got_w=1; }break; case 'H':{ if(sscanf(p+1,"%d",&_y4m->pic_h)!=1)return -1; got_h=1; }break; case 'F':{ if(sscanf(p+1,"%d:%d",&_y4m->fps_n,&_y4m->fps_d)!=2){ return -1; } got_fps=1; }break; case 'I':{ _y4m->interlace=p[1]; got_interlace=1; }break; case 'A':{ if(sscanf(p+1,"%d:%d",&_y4m->par_n,&_y4m->par_d)!=2){ return -1; } got_par=1; }break; case 'C':{ if(q-p>16)return -1; memcpy(_y4m->chroma_type,p+1,q-p-1); _y4m->chroma_type[q-p-1]='\0'; got_chroma=1; }break; /*Ignore unknown tags.*/ } } if(!got_w||!got_h||!got_fps||!got_interlace||!got_par)return -1; /*Chroma-type is not specified in older files, e.g., those generated by mplayer.*/ if(!got_chroma)strcpy(_y4m->chroma_type,"420"); return 0; } /*All anti-aliasing filters in the following conversion functions are based on one of two window functions: The 6-tap Lanczos window (for down-sampling and shifts): sinc(\pi*t)*sinc(\pi*t/3), |t|<3 (sinc(t)==sin(t)/t) 0, |t|>=3 The 4-tap Mitchell window (for up-sampling): 7|t|^3-12|t|^2+16/3, |t|<1 -(7/3)|x|^3+12|x|^2-20|x|+32/3, |t|<2 0, |t|>=2 The number of taps is intentionally kept small to reduce computational overhead and limit ringing. The taps from these filters are scaled so that their sum is 1, and the result is scaled by 128 and rounded to integers to create a filter whose intermediate values fit inside 16 bits. Coefficients are rounded in such a way as to ensure their sum is still 128, which is usually equivalent to normal rounding.*/ #define OC_MINI(_a,_b) ((_a)>(_b)?(_b):(_a)) #define OC_MAXI(_a,_b) ((_a)<(_b)?(_b):(_a)) #define OC_CLAMPI(_a,_b,_c) (OC_MAXI(_a,OC_MINI(_b,_c))) /*420jpeg chroma samples are sited like: Y-------Y-------Y-------Y------- | | | | | BR | | BR | | | | | Y-------Y-------Y-------Y------- | | | | | | | | | | | | Y-------Y-------Y-------Y------- | | | | | BR | | BR | | | | | Y-------Y-------Y-------Y------- | | | | | | | | | | | | 420mpeg2 chroma samples are sited like: Y-------Y-------Y-------Y------- | | | | BR | BR | | | | | Y-------Y-------Y-------Y------- | | | | | | | | | | | | Y-------Y-------Y-------Y------- | | | | BR | BR | | | | | Y-------Y-------Y-------Y------- | | | | | | | | | | | | We use a resampling filter to shift the site locations one quarter pixel (at the chroma plane's resolution) to the right. The 4:2:2 modes look exactly the same, except there are twice as many chroma lines, and they are vertically co-sited with the luma samples in both the mpeg2 and jpeg cases (thus requiring no vertical resampling).*/ static void y4m_convert_42xmpeg2_42xjpeg(y4m_input *_y4m,unsigned char *_dst, unsigned char *_aux){ int c_w; int c_h; int pli; int y; int x; /*Skip past the luma data.*/ _dst+=_y4m->pic_w*_y4m->pic_h; /*Compute the size of each chroma plane.*/ c_w=(_y4m->pic_w+_y4m->dst_c_dec_h-1)/_y4m->dst_c_dec_h; c_h=(_y4m->pic_h+_y4m->dst_c_dec_v-1)/_y4m->dst_c_dec_v; for(pli=1;pli<3;pli++){ for(y=0;y>7,255); } for(;x>7,255); } for(;x>7,255); } _dst+=c_w; _aux+=c_w; } } } /*This format is only used for interlaced content, but is included for completeness. 420jpeg chroma samples are sited like: Y-------Y-------Y-------Y------- | | | | | BR | | BR | | | | | Y-------Y-------Y-------Y------- | | | | | | | | | | | | Y-------Y-------Y-------Y------- | | | | | BR | | BR | | | | | Y-------Y-------Y-------Y------- | | | | | | | | | | | | 420paldv chroma samples are sited like: YR------Y-------YR------Y------- | | | | | | | | | | | | YB------Y-------YB------Y------- | | | | | | | | | | | | YR------Y-------YR------Y------- | | | | | | | | | | | | YB------Y-------YB------Y------- | | | | | | | | | | | | We use a resampling filter to shift the site locations one quarter pixel (at the chroma plane's resolution) to the right. Then we use another filter to move the C_r location down one quarter pixel, and the C_b location up one quarter pixel.*/ static void y4m_convert_42xpaldv_42xjpeg(y4m_input *_y4m,unsigned char *_dst, unsigned char *_aux){ unsigned char *tmp; int c_w; int c_h; int c_sz; int pli; int y; int x; /*Skip past the luma data.*/ _dst+=_y4m->pic_w*_y4m->pic_h; /*Compute the size of each chroma plane.*/ c_w=(_y4m->pic_w+1)/2; c_h=(_y4m->pic_h+_y4m->dst_c_dec_h-1)/_y4m->dst_c_dec_h; c_sz=c_w*c_h; /*First do the horizontal re-sampling. This is the same as the mpeg2 case, except that after the horizontal case, we need to apply a second vertical filter.*/ tmp=_aux+2*c_sz; for(pli=1;pli<3;pli++){ for(y=0;y>7,255); } for(;x>7,255); } for(;x>7,255); } tmp+=c_w; _aux+=c_w; } switch(pli){ case 1:{ tmp-=c_sz; /*Slide C_b up a quarter-pel. This is the same filter used above, but in the other order.*/ for(x=0;x>7,255); } for(;y>7,255); } for(;y>7,255); } _dst++; tmp++; } _dst+=c_sz-c_w; tmp-=c_w; }break; case 2:{ tmp-=c_sz; /*Slide C_r down a quarter-pel. This is the same as the horizontal filter.*/ for(x=0;x>7,255); } for(;y>7,255); } for(;y>7,255); } _dst++; tmp++; } }break; } /*For actual interlaced material, this would have to be done separately on each field, and the shift amounts would be different. C_r moves down 1/8, C_b up 3/8 in the top field, and C_r moves down 3/8, C_b up 1/8 in the bottom field. The corresponding filters would be: Down 1/8 (reverse order for up): [3 -11 125 15 -4 0]/128 Down 3/8 (reverse order for up): [4 -19 98 56 -13 2]/128*/ } } /*422jpeg chroma samples are sited like: Y---BR--Y-------Y---BR--Y------- | | | | | | | | | | | | Y---BR--Y-------Y---BR--Y------- | | | | | | | | | | | | Y---BR--Y-------Y---BR--Y------- | | | | | | | | | | | | Y---BR--Y-------Y---BR--Y------- | | | | | | | | | | | | 411 chroma samples are sited like: YBR-----Y-------Y-------Y------- | | | | | | | | | | | | YBR-----Y-------Y-------Y------- | | | | | | | | | | | | YBR-----Y-------Y-------Y------- | | | | | | | | | | | | YBR-----Y-------Y-------Y------- | | | | | | | | | | | | We use a filter to resample at site locations one eighth pixel (at the source chroma plane's horizontal resolution) and five eighths of a pixel to the right.*/ static void y4m_convert_411_422jpeg(y4m_input *_y4m,unsigned char *_dst, unsigned char *_aux){ int c_w; int dst_c_w; int c_h; int pli; int y; int x; /*Skip past the luma data.*/ _dst+=_y4m->pic_w*_y4m->pic_h; /*Compute the size of each chroma plane.*/ c_w=(_y4m->pic_w+_y4m->src_c_dec_h-1)/_y4m->src_c_dec_h; dst_c_w=(_y4m->pic_w+_y4m->dst_c_dec_h-1)/_y4m->dst_c_dec_h; c_h=(_y4m->pic_h+_y4m->dst_c_dec_v-1)/_y4m->dst_c_dec_v; for(pli=1;pli<3;pli++){ for(y=0;y>7,255); _dst[x<<1|1]=(unsigned char)OC_CLAMPI(0,47*_aux[0]+ 86*_aux[OC_MINI(1,c_w-1)]-5*_aux[OC_MINI(2,c_w-1)]+64>>7,255); } for(;x>7,255); _dst[x<<1|1]=(unsigned char)OC_CLAMPI(0,-3*_aux[x-1]+50*_aux[x]+ 86*_aux[x+1]-5*_aux[x+2]+64>>7,255); } for(;x>7,255); if((x<<1|1)>7,255); } } _dst+=dst_c_w; _aux+=c_w; } } } /*The image is padded with empty chroma components at 4:2:0. This costs about 17 bits a frame to code.*/ static void y4m_convert_mono_420jpeg(y4m_input *_y4m,unsigned char *_dst, unsigned char *_aux){ int c_sz; _dst+=_y4m->pic_w*_y4m->pic_h; c_sz=((_y4m->pic_w+_y4m->dst_c_dec_h-1)/_y4m->dst_c_dec_h)* ((_y4m->pic_h+_y4m->dst_c_dec_v-1)/_y4m->dst_c_dec_v); memset(_dst,128,c_sz*2); } #if 0 /*Right now just 444 to 420. Not too hard to generalize.*/ static void y4m_convert_4xxjpeg_42xjpeg(y4m_input *_y4m,unsigned char *_dst, unsigned char *_aux){ unsigned char *tmp; int c_w; int c_h; int pic_sz; int tmp_sz; int c_sz; int pli; int y; int x; /*Compute the size of each chroma plane.*/ c_w=(_y4m->pic_w+_y4m->dst_c_dec_h-1)/_y4m->dst_c_dec_h; c_h=(_y4m->pic_h+_y4m->dst_c_dec_v-1)/_y4m->dst_c_dec_v; pic_sz=_y4m->pic_w*_y4m->pic_h; tmp_sz=c_w*_y4m->pic_h; c_sz=c_w*c_h; _dst+=pic_sz; for(pli=1;pli<3;pli++){ tmp=_aux+pic_sz; /*In reality, the horizontal and vertical steps could be pipelined, for less memory consumption and better cache performance, but we do them separately for simplicity.*/ /*First do horizontal filtering (convert to 4:2:2)*/ /*Filter: [3 -17 78 78 -17 3]/128, derived from a 6-tap Lanczos window.*/ for(y=0;y<_y4m->pic_h;y++){ for(x=0;xpic_w,2);x+=2){ tmp[x>>1]=OC_CLAMPI(0,64*_aux[0]+78*_aux[OC_MINI(1,_y4m->pic_w-1)] -17*_aux[OC_MINI(2,_y4m->pic_w-1)] +3*_aux[OC_MINI(3,_y4m->pic_w-1)]+64>>7,255); } for(;x<_y4m->pic_w-3;x+=2){ tmp[x>>1]=OC_CLAMPI(0,3*(_aux[x-2]+_aux[x+3])-17*(_aux[x-1]+_aux[x+2])+ 78*(_aux[x]+_aux[x+1])+64>>7,255); } for(;x<_y4m->pic_w;x+=2){ tmp[x>>1]=OC_CLAMPI(0,3*(_aux[x-2]+_aux[_y4m->pic_w-1])- 17*(_aux[x-1]+_aux[OC_MINI(x+2,_y4m->pic_w-1)])+ 78*(_aux[x]+_aux[OC_MINI(x+1,_y4m->pic_w-1)])+64>>7,255); } tmp+=c_w; _aux+=_y4m->pic_w; } _aux-=pic_sz; tmp-=tmp_sz; /*Now do the vertical filtering.*/ for(x=0;xpic_h,2);y+=2){ _dst[(y>>1)*c_w]=OC_CLAMPI(0,64*tmp[0] +78*tmp[OC_MINI(1,_y4m->pic_h-1)*c_w] -17*tmp[OC_MINI(2,_y4m->pic_h-1)*c_w] +3*tmp[OC_MINI(3,_y4m->pic_h-1)*c_w]+64>>7,255); } for(;y<_y4m->pic_h-3;y+=2){ _dst[(y>>1)*c_w]=OC_CLAMPI(0,3*(tmp[(y-2)*c_w]+tmp[(y+3)*c_w])- 17*(tmp[(y-1)*c_w]+tmp[(y+2)*c_w])+78*(tmp[y*c_w]+tmp[(y+1)*c_w])+ 64>>7,255); } for(;y<_y4m->pic_h;y+=2){ _dst[(y>>1)*c_w]=OC_CLAMPI(0,3*(tmp[(y-2)*c_w] +tmp[(_y4m->pic_h-1)*c_w])-17*(tmp[(y-1)*c_w] +tmp[OC_MINI(y+2,_y4m->pic_h-1)*c_w]) +78*(tmp[y*c_w]+tmp[OC_MINI(y+1,_y4m->pic_h-1)*c_w])+64>>7,255); } tmp++; _dst++; } _dst-=c_w; } } #endif /*No conversion function needed.*/ static void y4m_convert_null(y4m_input *_y4m,unsigned char *_dst, unsigned char *_aux){ } static int y4m_input_open(y4m_input *_y4m,FILE *_fin,char *_skip,int _nskip){ char buffer[80]; int ret; int i; /*Read until newline, or 80 cols, whichever happens first.*/ for(i=0;i<79;i++){ if(_nskip>0){ buffer[i]=*_skip++; _nskip--; } else{ ret=fread(buffer+i,1,1,_fin); if(ret<1)return -1; } if(buffer[i]=='\n')break; } /*We skipped too much header data.*/ if(_nskip>0)return -1; if(i==79){ fprintf(stderr,"Error parsing header; not a YUV2MPEG2 file?\n"); return -1; } buffer[i]='\0'; if(memcmp(buffer,"YUV4MPEG",8)){ fprintf(stderr,"Incomplete magic for YUV4MPEG file.\n"); return -1; } if(buffer[8]!='2'){ fprintf(stderr,"Incorrect YUV input file version; YUV4MPEG2 required.\n"); } ret=y4m_parse_tags(_y4m,buffer+5); if(ret<0){ fprintf(stderr,"Error parsing YUV4MPEG2 header.\n"); return ret; } if(_y4m->interlace!='p'){ fprintf(stderr,"Input video is interlaced; " "Theora only handles progressive scan.\n"); return -1; } if(strcmp(_y4m->chroma_type,"420")==0|| strcmp(_y4m->chroma_type,"420jpeg")==0){ _y4m->src_c_dec_h=_y4m->dst_c_dec_h=_y4m->src_c_dec_v=_y4m->dst_c_dec_v=2; _y4m->dst_buf_read_sz=_y4m->pic_w*_y4m->pic_h +2*((_y4m->pic_w+1)/2)*((_y4m->pic_h+1)/2); /*Natively supported: no conversion required.*/ _y4m->aux_buf_sz=_y4m->aux_buf_read_sz=0; _y4m->convert=y4m_convert_null; } else if(strcmp(_y4m->chroma_type,"420mpeg2")==0){ _y4m->src_c_dec_h=_y4m->dst_c_dec_h=_y4m->src_c_dec_v=_y4m->dst_c_dec_v=2; _y4m->dst_buf_read_sz=_y4m->pic_w*_y4m->pic_h; /*Chroma filter required: read into the aux buf first.*/ _y4m->aux_buf_sz=_y4m->aux_buf_read_sz= 2*((_y4m->pic_w+1)/2)*((_y4m->pic_h+1)/2); _y4m->convert=y4m_convert_42xmpeg2_42xjpeg; } else if(strcmp(_y4m->chroma_type,"420paldv")==0){ _y4m->src_c_dec_h=_y4m->dst_c_dec_h=_y4m->src_c_dec_v=_y4m->dst_c_dec_v=2; _y4m->dst_buf_read_sz=_y4m->pic_w*_y4m->pic_h; /*Chroma filter required: read into the aux buf first. We need to make two filter passes, so we need some extra space in the aux buffer.*/ _y4m->aux_buf_sz=3*((_y4m->pic_w+1)/2)*((_y4m->pic_h+1)/2); _y4m->aux_buf_read_sz=2*((_y4m->pic_w+1)/2)*((_y4m->pic_h+1)/2); _y4m->convert=y4m_convert_42xpaldv_42xjpeg; } else if(strcmp(_y4m->chroma_type,"422")==0){ _y4m->src_c_dec_h=_y4m->dst_c_dec_h=2; _y4m->src_c_dec_v=_y4m->dst_c_dec_v=1; _y4m->dst_buf_read_sz=_y4m->pic_w*_y4m->pic_h; /*Chroma filter required: read into the aux buf first.*/ _y4m->aux_buf_sz=_y4m->aux_buf_read_sz=2*((_y4m->pic_w+1)/2)*_y4m->pic_h; _y4m->convert=y4m_convert_42xmpeg2_42xjpeg; } else if(strcmp(_y4m->chroma_type,"422jpeg")==0){ _y4m->src_c_dec_h=_y4m->dst_c_dec_h=2; _y4m->src_c_dec_v=_y4m->dst_c_dec_v=1; _y4m->dst_buf_read_sz=_y4m->pic_w*_y4m->pic_h +2*((_y4m->pic_w+1)/2)*_y4m->pic_h; /*Natively supported: no conversion required.*/ _y4m->aux_buf_sz=_y4m->aux_buf_read_sz=0; _y4m->convert=y4m_convert_null; } else if(strcmp(_y4m->chroma_type,"411")==0){ _y4m->src_c_dec_h=4; /*We don't want to introduce any additional sub-sampling, so we promote 4:1:1 material to 4:2:2, as the closest format Theora can handle.*/ _y4m->dst_c_dec_h=2; _y4m->src_c_dec_v=_y4m->dst_c_dec_v=1; _y4m->dst_buf_read_sz=_y4m->pic_w*_y4m->pic_h; /*Chroma filter required: read into the aux buf first.*/ _y4m->aux_buf_sz=_y4m->aux_buf_read_sz=2*((_y4m->pic_w+3)/4)*_y4m->pic_h; _y4m->convert=y4m_convert_411_422jpeg; } else if(strcmp(_y4m->chroma_type,"444")==0){ _y4m->src_c_dec_h=_y4m->dst_c_dec_h=_y4m->src_c_dec_v=_y4m->dst_c_dec_v=1; _y4m->dst_buf_read_sz=_y4m->pic_w*_y4m->pic_h*3; /*Natively supported: no conversion required.*/ _y4m->aux_buf_sz=_y4m->aux_buf_read_sz=0; _y4m->convert=y4m_convert_null; } else if(strcmp(_y4m->chroma_type,"444alpha")==0){ _y4m->src_c_dec_h=_y4m->dst_c_dec_h=_y4m->src_c_dec_v=_y4m->dst_c_dec_v=1; _y4m->dst_buf_read_sz=_y4m->pic_w*_y4m->pic_h*3; /*Read the extra alpha plane into the aux buf. It will be discarded.*/ _y4m->aux_buf_sz=_y4m->aux_buf_read_sz=_y4m->pic_w*_y4m->pic_h; _y4m->convert=y4m_convert_null; } else if(strcmp(_y4m->chroma_type,"mono")==0){ _y4m->src_c_dec_h=_y4m->src_c_dec_v=0; _y4m->dst_c_dec_h=_y4m->dst_c_dec_v=2; _y4m->dst_buf_read_sz=_y4m->pic_w*_y4m->pic_h; /*No extra space required, but we need to clear the chroma planes.*/ _y4m->aux_buf_sz=_y4m->aux_buf_read_sz=0; _y4m->convert=y4m_convert_mono_420jpeg; } else{ fprintf(stderr,"Unknown chroma sampling type: %s\n",_y4m->chroma_type); return -1; } /*The size of the final frame buffers is always computed from the destination chroma decimation type.*/ _y4m->dst_buf_sz=_y4m->pic_w*_y4m->pic_h +2*((_y4m->pic_w+_y4m->dst_c_dec_h-1)/_y4m->dst_c_dec_h)* ((_y4m->pic_h+_y4m->dst_c_dec_v-1)/_y4m->dst_c_dec_v); /*Scale the picture size up to a multiple of 16.*/ _y4m->frame_w=_y4m->pic_w+15&~0xF; _y4m->frame_h=_y4m->pic_h+15&~0xF; /*Force the offsets to be even so that chroma samples line up like we expect.*/ _y4m->pic_x=_y4m->frame_w-_y4m->pic_w>>1&~1; _y4m->pic_y=_y4m->frame_h-_y4m->pic_h>>1&~1; _y4m->dst_buf=(unsigned char *)malloc(_y4m->dst_buf_sz); _y4m->aux_buf=(unsigned char *)malloc(_y4m->aux_buf_sz); return 0; } static void y4m_input_get_info(y4m_input *_y4m,th_info *_ti){ _ti->frame_width=_y4m->frame_w; _ti->frame_height=_y4m->frame_h; _ti->pic_width=_y4m->pic_w; _ti->pic_height=_y4m->pic_h; _ti->pic_x=_y4m->pic_x; _ti->pic_y=_y4m->pic_y; _ti->fps_numerator=_y4m->fps_n; _ti->fps_denominator=_y4m->fps_d; _ti->aspect_numerator=_y4m->par_n; _ti->aspect_denominator=_y4m->par_d; _ti->pixel_fmt=_y4m->dst_c_dec_h==2? (_y4m->dst_c_dec_v==2?TH_PF_420:TH_PF_422):TH_PF_444; } static int y4m_input_fetch_frame(y4m_input *_y4m,FILE *_fin, th_ycbcr_buffer _ycbcr){ char frame[6]; int pic_sz; int frame_c_w; int frame_c_h; int c_w; int c_h; int c_sz; int ret; pic_sz=_y4m->pic_w*_y4m->pic_h; frame_c_w=_y4m->frame_w/_y4m->dst_c_dec_h; frame_c_h=_y4m->frame_h/_y4m->dst_c_dec_v; c_w=(_y4m->pic_w+_y4m->dst_c_dec_h-1)/_y4m->dst_c_dec_h; c_h=(_y4m->pic_h+_y4m->dst_c_dec_v-1)/_y4m->dst_c_dec_v; c_sz=c_w*c_h; /*Read and skip the frame header.*/ ret=fread(frame,1,6,_fin); if(ret<6)return 0; if(memcmp(frame,"FRAME",5)){ fprintf(stderr,"Loss of framing in YUV input data\n"); exit(1); } if(frame[5]!='\n'){ char c; int j; for(j=0;j<79&&fread(&c,1,1,_fin)&&c!='\n';j++); if(j==79){ fprintf(stderr,"Error parsing YUV frame header\n"); return -1; } } /*Read the frame data that needs no conversion.*/ if(fread(_y4m->dst_buf,1,_y4m->dst_buf_read_sz,_fin)!=_y4m->dst_buf_read_sz){ fprintf(stderr,"Error reading YUV frame data.\n"); return -1; } /*Read the frame data that does need conversion.*/ if(fread(_y4m->aux_buf,1,_y4m->aux_buf_read_sz,_fin)!=_y4m->aux_buf_read_sz){ fprintf(stderr,"Error reading YUV frame data.\n"); return -1; } /*Now convert the just read frame.*/ (*_y4m->convert)(_y4m,_y4m->dst_buf,_y4m->aux_buf); /*Fill in the frame buffer pointers.*/ _ycbcr[0].width=_y4m->frame_w; _ycbcr[0].height=_y4m->frame_h; _ycbcr[0].stride=_y4m->pic_w; _ycbcr[0].data=_y4m->dst_buf-_y4m->pic_x-_y4m->pic_y*_y4m->pic_w; _ycbcr[1].width=frame_c_w; _ycbcr[1].height=frame_c_h; _ycbcr[1].stride=c_w; _ycbcr[1].data=_y4m->dst_buf+pic_sz-(_y4m->pic_x/_y4m->dst_c_dec_h)- (_y4m->pic_y/_y4m->dst_c_dec_v)*c_w; _ycbcr[2].width=frame_c_w; _ycbcr[2].height=frame_c_h; _ycbcr[2].stride=c_w; _ycbcr[2].data=_ycbcr[1].data+c_sz; return 1; } static void y4m_input_close(y4m_input *_y4m){ free(_y4m->dst_buf); free(_y4m->aux_buf); } typedef struct th_input th_input; struct th_input{ ogg_sync_state oy; int theora_p; ogg_stream_state to; th_info ti; th_comment tc; th_dec_ctx *td; }; /*Grab some more compressed bitstream and sync it for page extraction.*/ static int th_input_buffer_data(th_input *_th,FILE *_fin){ char *buffer; int bytes; buffer=ogg_sync_buffer(&_th->oy,4096); bytes=fread(buffer,1,4096,_fin); ogg_sync_wrote(&_th->oy,bytes); return bytes; } /*Push a page into the appropriate steam. This can be done blindly; a stream won't accept a page that doesn't belong to it.*/ static void th_input_queue_page(th_input *_th,ogg_page *_og){ if(_th->theora_p)ogg_stream_pagein(&_th->to,_og); } static int th_input_open_impl(th_input *_th,th_setup_info **_ts,FILE *_fin, char *_sig,int _nsig){ ogg_packet op; ogg_page og; int nheaders_left; int done_headers; ogg_sync_init(&_th->oy); th_info_init(&_th->ti); th_comment_init(&_th->tc); *_ts=NULL; /*Buffer any initial data read for file ID.*/ if(_nsig>0){ char *buffer; buffer=ogg_sync_buffer(&_th->oy,_nsig); memcpy(buffer,_sig,_nsig); ogg_sync_wrote(&_th->oy,_nsig); } _th->theora_p=0; nheaders_left=0; for(done_headers=0;!done_headers;){ if(th_input_buffer_data(_th,_fin)==0)break; while(ogg_sync_pageout(&_th->oy,&og)>0){ ogg_stream_state test; /*Is this a mandated initial header? If not, stop parsing.*/ if(!ogg_page_bos(&og)){ /*Don't leak the page; get it into the appropriate stream.*/ th_input_queue_page(_th,&og); done_headers=1; break; } ogg_stream_init(&test,ogg_page_serialno(&og)); ogg_stream_pagein(&test,&og); ogg_stream_packetpeek(&test,&op); /*Identify the codec: try Theora.*/ if(!_th->theora_p){ nheaders_left=th_decode_headerin(&_th->ti,&_th->tc,_ts,&op); if(nheaders_left>=0){ /*It is Theora.*/ memcpy(&_th->to,&test,sizeof(test)); _th->theora_p=1; /*Advance past the successfully processed header.*/ if(nheaders_left>0)ogg_stream_packetout(&_th->to,NULL); continue; } } /*Whatever it is, we don't care about it.*/ ogg_stream_clear(&test); } } /*We're expecting more header packets.*/ while(_th->theora_p&&nheaders_left>0){ int ret; while(nheaders_left>0){ ret=ogg_stream_packetpeek(&_th->to,&op); if(ret==0)break; if(ret<0)continue; nheaders_left=th_decode_headerin(&_th->ti,&_th->tc,_ts,&op); if(nheaders_left<0){ fprintf(stderr,"Error parsing Theora stream headers; " "corrupt stream?\n"); return -1; } /*Advance past the successfully processed header.*/ else if(nheaders_left>0)ogg_stream_packetout(&_th->to,NULL); _th->theora_p++; } /*Stop now so we don't fail if there aren't enough pages in a short stream.*/ if(!(_th->theora_p&&nheaders_left>0))break; /*The header pages/packets will arrive before anything else we care about, or the stream is not obeying spec.*/ if(ogg_sync_pageout(&_th->oy,&og)>0)th_input_queue_page(_th,&og); /*We need more data.*/ else if(th_input_buffer_data(_th,_fin)==0){ fprintf(stderr,"End of file while searching for codec headers.\n"); return -1; } } /*And now we have it all. Initialize the decoder.*/ if(_th->theora_p){ _th->td=th_decode_alloc(&_th->ti,*_ts); if(_th->td!=NULL){ fprintf(stderr,"Ogg logical stream %lx is Theora %ix%i %.02f fps video.\n" "Encoded frame content is %ix%i with %ix%i offset.\n", _th->to.serialno,_th->ti.frame_width,_th->ti.frame_height, (double)_th->ti.fps_numerator/_th->ti.fps_denominator, _th->ti.pic_width,_th->ti.pic_height,_th->ti.pic_x,_th->ti.pic_y); return 1; } } return -1; } static void th_input_close(th_input *_th){ if(_th->theora_p){ ogg_stream_clear(&_th->to); th_decode_free(_th->td); } th_comment_clear(&_th->tc); th_info_clear(&_th->ti); ogg_sync_clear(&_th->oy); } static int th_input_open(th_input *_th,FILE *_fin,char *_sig,int _nsig){ th_input th; th_setup_info *ts; int ret; ret=th_input_open_impl(&th,&ts,_fin,_sig,_nsig); th_setup_free(ts); /*Clean up on failure.*/ if(ret<0)th_input_close(&th); else memcpy(_th,&th,sizeof(th)); return ret; } static void th_input_get_info(th_input *_th,th_info *_ti){ memcpy(_ti,&_th->ti,sizeof(*_ti)); } static int th_input_fetch_frame(th_input *_th,FILE *_fin, th_ycbcr_buffer _ycbcr){ for(;;){ ogg_page og; ogg_packet op; if(ogg_stream_packetout(&_th->to,&op)>0){ if(th_decode_packetin(_th->td,&op,NULL)>=0){ th_decode_ycbcr_out(_th->td,_ycbcr); if(!summary_only&&show_frame_type){ printf("%c",th_packet_iskeyframe(&op)?'K':'D'); if(op.bytes>0)printf("%02i ",op.packet[0]&0x3F); else printf("-- "); } return 1; } else return -1; } while(ogg_sync_pageout(&_th->oy,&og)<=0){ if(th_input_buffer_data(_th,_fin)==0)return feof(_fin)?0:-1; } th_input_queue_page(_th,&og); } } typedef struct video_input video_input; typedef void (*video_input_get_info_func)(void *_ctx,th_info *_ti); typedef int (*video_input_fetch_frame_func)(void *_ctx,FILE *_fin, th_ycbcr_buffer _ycbcr); typedef void (*video_input_close_func)(void *_ctx); struct video_input{ FILE *fin; video_input_get_info_func get_info; video_input_fetch_frame_func fetch_frame; video_input_close_func close; union{ y4m_input y4m; th_input th; }ctx; }; static int video_input_open(video_input *_vid,FILE *_fin){ char buffer[4]; int ret; /* look for magic */ ret=fread(buffer,1,4,_fin); if(ret<4)fprintf(stderr,"EOF determining file type of file.\n"); else{ if(!memcmp(buffer,"YUV4",4)){ if(y4m_input_open(&_vid->ctx.y4m,_fin,buffer,4)>=0){ /*fprintf(stderr,"Original %s is %dx%d %.02f fps %s video.\n", f,_y4m->pic_w,_y4m->pic_h,(double)_y4m->fps_n/_y4m->fps_d,_y4m->chroma_type);*/ _vid->fin=_fin; _vid->get_info=(video_input_get_info_func)y4m_input_get_info; _vid->fetch_frame=(video_input_fetch_frame_func)y4m_input_fetch_frame; _vid->close=(video_input_close_func)y4m_input_close; return 0; } } else if(!memcmp(buffer,"OggS",4)){ if(th_input_open(&_vid->ctx.th,_fin,buffer,4)>=0){ _vid->fin=_fin; _vid->get_info=(video_input_get_info_func)th_input_get_info; _vid->fetch_frame=(video_input_fetch_frame_func)th_input_fetch_frame; _vid->close=(video_input_close_func)th_input_close; return 0; } } else fprintf(stderr,"Unknown file type.\n"); } return -1; } static void video_input_get_info(video_input *_vid,th_info *_ti){ (*_vid->get_info)(&_vid->ctx,_ti); } static int video_input_fetch_frame(video_input *_vid,th_ycbcr_buffer _ycbcr){ return (*_vid->fetch_frame)(&_vid->ctx,_vid->fin,_ycbcr); } static void video_input_close(video_input *_vid){ (*_vid->close)(&_vid->ctx); fclose(_vid->fin); } static void usage(char *_argv[]){ fprintf(stderr,"Usage: %s [options] \n" " and may be either YUV4MPEG or Ogg Theora files.\n\n" " Options:\n\n" " -f --frame-type Show frame type and QI value for each Theora frame.\n" " -s --summary Only output the summary line.\n" " -y --luma-only Only output values for the luma channel.\n",_argv[0]); } int main(int _argc,char *_argv[]){ video_input vid1; th_info ti1; video_input vid2; th_info ti2; ogg_int64_t gsqerr; ogg_int64_t gnpixels; ogg_int64_t gplsqerr[3]; ogg_int64_t gplnpixels[3]; int frameno; FILE *fin; int long_option_index; int c; #ifdef _WIN32 /*We need to set stdin/stdout to binary mode on windows. Beware the evil ifdef. We avoid these where we can, but this one we cannot. Don't add any more, you'll probably go to hell if you do.*/ _setmode(_fileno(stdin),_O_BINARY); #endif /*Process option arguments.*/ while((c=getopt_long(_argc,_argv,optstring,options,&long_option_index))!=EOF){ switch(c){ case 'f':show_frame_type=1;break; case 's':summary_only=1;break; case 'y':luma_only=1;break; default:usage(_argv);break; } } if(optind+2!=_argc){ usage(_argv); exit(1); } fin=strcmp(_argv[optind],"-")==0?stdin:fopen(_argv[optind],"rb"); if(fin==NULL){ fprintf(stderr,"Unable to open '%s' for extraction.\n",_argv[optind]); exit(1); } fprintf(stderr,"Opening %s...\n",_argv[optind]); if(video_input_open(&vid1,fin)<0)exit(1); video_input_get_info(&vid1,&ti1); fin=strcmp(_argv[optind+1],"-")==0?stdin:fopen(_argv[optind+1],"rb"); if(fin==NULL){ fprintf(stderr,"Unable to open '%s' for extraction.\n",_argv[optind+1]); exit(1); } fprintf(stderr,"Opening %s...\n",_argv[optind+1]); if(video_input_open(&vid2,fin)<0)exit(1); video_input_get_info(&vid2,&ti2); /*Check to make sure these videos are compatible.*/ if(ti1.pic_width!=ti2.pic_width||ti1.pic_height!=ti2.pic_height){ fprintf(stderr,"Video resolution does not match.\n"); exit(1); } if(ti1.pixel_fmt!=ti2.pixel_fmt){ fprintf(stderr,"Pixel formats do not match.\n"); exit(1); } if((ti1.pic_x&!(ti1.pixel_fmt&1))!=(ti2.pic_x&!(ti2.pixel_fmt&1))|| (ti1.pic_y&!(ti1.pixel_fmt&2))!=(ti2.pic_y&!(ti2.pixel_fmt&2))){ fprintf(stderr,"Chroma subsampling offsets do not match.\n"); exit(1); } if(ti1.fps_numerator*(ogg_int64_t)ti2.fps_denominator!= ti2.fps_numerator*(ogg_int64_t)ti1.fps_denominator){ fprintf(stderr,"Warning: framerates do not match.\n"); } if(ti1.aspect_numerator*(ogg_int64_t)ti2.aspect_denominator!= ti2.aspect_numerator*(ogg_int64_t)ti1.aspect_denominator){ fprintf(stderr,"Warning: aspect ratios do not match.\n"); } gsqerr=gplsqerr[0]=gplsqerr[1]=gplsqerr[2]=0; gnpixels=gplnpixels[0]=gplnpixels[1]=gplnpixels[2]=0; for(frameno=0;;frameno++){ th_ycbcr_buffer f1; th_ycbcr_buffer f2; ogg_int64_t plsqerr[3]; long plnpixels[3]; ogg_int64_t sqerr; long npixels; int ret1; int ret2; int pli; ret1=video_input_fetch_frame(&vid1,f1); ret2=video_input_fetch_frame(&vid2,f2); if(ret1==0&&ret2==0)break; else if(ret1<0||ret2<0)break; else if(ret1==0){ fprintf(stderr,"%s ended before %s.\n", _argv[optind],_argv[optind+1]); break; } else if(ret2==0){ fprintf(stderr,"%s ended before %s.\n", _argv[optind+1],_argv[optind]); break; } /*Okay, we got one frame from each.*/ sqerr=0; npixels=0; for(pli=0;pli<3;pli++){ int xdec; int ydec; int y1; int y2; xdec=pli&&!(ti1.pixel_fmt&1); ydec=pli&&!(ti1.pixel_fmt&2); plsqerr[pli]=0; plnpixels[pli]=0; for(y1=ti1.pic_y>>ydec,y2=ti2.pic_y>>ydec; y1>ydec;y1++,y2++){ int x1; int x2; for(x1=ti1.pic_x>>xdec,x2=ti2.pic_x>>xdec; x1>xdec;x1++,x2++){ int d; d=*(f1[pli].data+y1*f1[pli].stride+x1)- *(f2[pli].data+y2*f2[pli].stride+x2); plsqerr[pli]+=d*d; plnpixels[pli]++; } } sqerr+=plsqerr[pli]; gplsqerr[pli]+=plsqerr[pli]; npixels+=plnpixels[pli]; gplnpixels[pli]+=plnpixels[pli]; } if(!summary_only){ if(!luma_only){ printf("%08i: %-7lG (Y': %-7lG Cb: %-7lG Cr: %-7lG)\n",frameno, 10*(log10(255*255)+log10(npixels)-log10(sqerr)), 10*(log10(255*255)+log10(plnpixels[0])-log10(plsqerr[0])), 10*(log10(255*255)+log10(plnpixels[1])-log10(plsqerr[1])), 10*(log10(255*255)+log10(plnpixels[2])-log10(plsqerr[2]))); } else{ printf("%08i: %-7lG\n",frameno, 10*(log10(255*255)+log10(plnpixels[0])-log10(plsqerr[0]))); } } gsqerr+=sqerr; gnpixels+=npixels; } if(!luma_only){ printf("Total: %-7lG (Y': %-7lG Cb: %-7lG Cr: %-7lG)\n", 10*(log10(255*255)+log10(gnpixels)-log10(gsqerr)), 10*(log10(255*255)+log10(gplnpixels[0])-log10(gplsqerr[0])), 10*(log10(255*255)+log10(gplnpixels[1])-log10(gplsqerr[1])), 10*(log10(255*255)+log10(gplnpixels[2])-log10(gplsqerr[2]))); } else{ printf("Total: %-7lG\n", 10*(log10(255*255)+log10(gplnpixels[0])-log10(gplsqerr[0]))); } video_input_close(&vid1); video_input_close(&vid2); return 0; } libtheora-1.2.0/examples/Makefile.am0000644000175000017500000000323214771706724016024 0ustar perepere## Process this file with automake to produce Makefile.in noinst_PROGRAMS = dump_video dump_psnr libtheora_info \ $(BUILDABLE_EXAMPLES) # possible contents of BUILDABLE_EXAMPLES: EXTRA_PROGRAMS = player_example encoder_example png2theora tiff2theora EXTRA_DIST = encoder_example_ffmpeg AM_CPPFLAGS = -I$(top_srcdir)/include AM_CFLAGS = $(OGG_CFLAGS) LDADD = ../lib/libtheora.la $(OGG_LIBS) LDADDDEC = ../lib/libtheoradec.la $(OGG_LIBS) LDADDENC = ../lib/libtheoraenc.la ../lib/libtheoradec.la $(OGG_LIBS) dump_video_SOURCES = dump_video.c EXTRA_dump_video_SOURCES = getopt.c getopt1.c getopt.h dump_video_LDADD = $(GETOPT_OBJS) $(LDADDDEC) $(COMPAT_LIBS) dump_psnr_SOURCES = dump_psnr.c EXTRA_dump_psnr_SOURCES = getopt.c getopt1.c getopt.h dump_psnr_LDADD = $(GETOPT_OBJS) $(LDADDDEC) -lm libtheora_info_SOURCES = libtheora_info.c libtheora_info_LDADD = $(LDADDENC) player_example_SOURCES = player_example.c player_example_CFLAGS = $(SDL_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) player_example_LDADD = $(LDADDDEC) $(SDL_LIBS) $(VORBIS_LIBS) $(OSS_LIBS) -lm encoder_example_SOURCES = encoder_example.c EXTRA_encoder_example_SOURCES = getopt.c getopt1.c getopt.h encoder_example_CFLAGS = $(OGG_CFLAGS) $(VORBIS_CFLAGS) encoder_example_LDADD = $(GETOPT_OBJS) $(LDADDENC) $(VORBIS_LIBS) $(VORBISENC_LIBS) -lm png2theora_SOURCES = png2theora.c png2theora_CFLAGS = $(OGG_CFLAGS) $(PNG_CFLAGS) png2theora_LDADD = $(GETOPT_OBJS) $(LDADDENC) $(PNG_LIBS) -lm tiff2theora_SOURCES = tiff2theora.c tiff2theora_CFLAGS = $(OGG_CFLAGS) $(TIFF_CFLAGS) tiff2theora_LDADD = $(GETOPT_OBJS) $(LDADDENC) $(TIFF_LIBS) -lm debug: $(MAKE) all CFLAGS="@DEBUG@" profile: $(MAKE) all CFLAGS="@PROFILE@" libtheora-1.2.0/examples/libtheora_info.c0000644000175000017500000000771014771706724017125 0ustar perepere/******************************************************************** * * * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. * * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2010 * * by the Xiph.Org Foundation and contributors * * https://www.xiph.org/ * * * ******************************************************************** function: example of querying various library parameters. ********************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include #include #include "theora/theoraenc.h" /* Print the library's bitstream version number This is the highest supported bitstream version number, not the version number of the implementation itself. */ int print_version(void) { unsigned version = th_version_number(); fprintf(stdout, "Bitstream: %d.%d.%d (0x%06X)\n", (version >> 16) & 0xff, (version >> 8) & 0xff, (version) & 0xff, version); return 0; } /* Print the library's own version string This is generally the same at the vendor string embedded in encoded files. */ int print_version_string(void) { const char *version = th_version_string(); if (version == NULL) { fprintf(stderr, "Error querying libtheora version string.\n"); return -1; } fprintf(stdout, "Version: %s\n", version); return 0; } /* Generate a dummy encoder context for use in th_encode_ctl queries */ th_enc_ctx *dummy_encode_ctx(void) { th_enc_ctx *ctx; th_info info; /* set the minimal video parameters */ th_info_init(&info); info.frame_width=320; info.frame_height=240; info.fps_numerator=1; info.fps_denominator=1; /* allocate and initialize a context object */ ctx = th_encode_alloc(&info); if (ctx == NULL) { fprintf(stderr, "Error allocating encoder context.\n"); } /* clear the info struct */ th_info_clear(&info); return ctx; } /* Query the current and maximum values for the 'speed level' setting. This can be used to ask the encoder to trade off encoding quality vs. performance cost, for example to adapt to realtime constraints. */ int check_speed_level(th_enc_ctx *ctx, int *current, int *max) { int ret; /* query the current speed level */ ret = th_encode_ctl(ctx, TH_ENCCTL_GET_SPLEVEL, current, sizeof(int)); if (ret) { fprintf(stderr, "Error %d getting current speed level.\n", ret); return ret; } /* query the maximum speed level, which varies by encoder version */ ret = th_encode_ctl(ctx, TH_ENCCTL_GET_SPLEVEL_MAX, max, sizeof(int)); if (ret) { fprintf(stderr, "Error %d getting max speed level.\n", ret); return ret; } return 0; } /* Print the current and maximum speed level settings */ int print_speed_level(th_enc_ctx *ctx) { int current = -1; int max = -1; int ret; ret = check_speed_level(ctx, ¤t, &max); if (ret == 0) { fprintf(stdout, "Default speed level: %d\n", current); fprintf(stdout, "Maximum speed level: %d\n", max); } return ret; } int main(int argc, char **argv) { th_enc_ctx *ctx; /* print versioning */ print_version_string(); print_version(); /* allocate a generic context for queries that require it */ ctx = dummy_encode_ctx(); if (ctx != NULL) { /* dump the speed level setting */ print_speed_level(ctx); /* clean up */ th_encode_free(ctx); } return 0; } libtheora-1.2.0/examples/encoder_example_ffmpeg0000755000175000017500000000512414771706724020376 0ustar perepere#!/bin/sh #################################################################### # # # THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. # # USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS # # GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE # # IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. # # # # THE Theora SOURCE CODE IS COPYRIGHT (C) 2009,2025 # # by the Xiph.Org Foundation and contributors # # https://www.xiph.org/ # # # #################################################################### ffmpeg=ffmpeg if ! command -v $ffmpeg 2>&1 >/dev/null ; then echo error: $ffmpeg executable not found! exit 1 fi ffprobe=ffprobe if ! command -v $ffprobe 2>&1 >/dev/null ; then echo error: $ffprobe executable not found! exit 1 fi # TODO: get script dir, and call encoder_example from the same dir, to # support both system installed as well as local dir version # check encoder_example as well as Debian named theora_encoder_example if command -v encoder_example 2>&1 >/dev/null ; then encoder_example=encoder_example elif command -v theora_encoder_example 2>&1 >/dev/null ; then encoder_example=theora_encoder_example else echo error: encoder_example or theora_encoder_example executable \ not found! exit 1 fi if [ -z "$2" ] ; then echo usage: echo $0 inputfile outputfile [$encoder_example encoder options] echo echo for $encoder_example encoder options run: echo $encoder_example -h exit fi inputfile=$1 outputfile=$2 shift 2 INPUT_AUDIO=0 # check if there is audio in the input file, then encoder_example # needs a different syntax $ffprobe -i $inputfile -show_streams -select_streams a -loglevel error | \ grep -q audio && INPUT_AUDIO=1 video=$(mktemp -u) mkfifo -m 600 $video # TODO: merge the two separate ffmpeg commands to a single process $ffmpeg -i $inputfile -y -hide_banner -loglevel error -an \ -f yuv4mpegpipe $video & if [ "$INPUT_AUDIO" = 1 ] ; then audio=$(mktemp -u) mkfifo -m 600 $audio $ffmpeg -i $inputfile -y -hide_banner -loglevel error -vn -f wav \ -bitexact $audio & $encoder_example $@ $audio $video -o $outputfile rm -f $audio else $encoder_example $@ $video -o $outputfile fi rm -f $video libtheora-1.2.0/examples/player_example.c0000644000175000017500000006634514771706724017161 0ustar perepere/******************************************************************** * * * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. * * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009,2025 * * by the Xiph.Org Foundation and contributors * * https://www.xiph.org/ * * * ******************************************************************** function: example SDL player application; plays Ogg Theora files (with optional Vorbis audio second stream) ********************************************************************/ /* far more complex than most Ogg 'example' programs. The complexity of maintaining A/V sync is pretty much unavoidable. It's necessary to actually have audio/video playback to make the hard audio clock sync actually work. If there's audio playback, there might as well be simple video playback as well... A simple 'demux and write back streams' would have been easier, it's true. On Linux platforms with ALSA support instead of OSS, the aoss helper program from the alsa-oss package can be used to emulate OSS support to get the audio working. */ #if !defined(_GNU_SOURCE) #define _GNU_SOURCE #endif #if !defined(_LARGEFILE_SOURCE) #define _LARGEFILE_SOURCE #endif #if !defined(_LARGEFILE64_SOURCE) #define _LARGEFILE64_SOURCE #endif #if !defined(_FILE_OFFSET_BITS) #define _FILE_OFFSET_BITS 64 #endif #ifdef HAVE_CONFIG_H # include #endif #ifndef _REENTRANT # define _REENTRANT #endif #include #include #include #include #include #include #include #include #include #include #include "theora/theoradec.h" #include "vorbis/codec.h" #include /* yes, this makes us OSS-specific for now. None of SDL, libao, libao2 give us any way to determine hardware timing, and since the hard/kernel buffer is going to be most of or > a second, that's just a little bit important */ #if defined(__FreeBSD__) #include #define AUDIO_DEVICE "/dev/audio" #elif defined(__NetBSD__) || defined(__OpenBSD__) #include #define AUDIO_DEVICE "/dev/audio" #else #include #define AUDIO_DEVICE "/dev/dsp" #endif #include /* Helper; just grab some more compressed bitstream and sync it for page extraction */ int buffer_data(FILE *in,ogg_sync_state *oy){ char *buffer=ogg_sync_buffer(oy,4096); int bytes=fread(buffer,1,4096,in); ogg_sync_wrote(oy,bytes); return(bytes); } /* never forget that globals are a one-way ticket to Hell */ /* Ogg and codec state for demux/decode */ ogg_sync_state oy; ogg_page og; ogg_stream_state vo; ogg_stream_state to; th_info ti; th_comment tc; th_dec_ctx *td = NULL; th_setup_info *ts = NULL; vorbis_info vi; vorbis_dsp_state vd; vorbis_block vb; vorbis_comment vc; th_pixel_fmt px_fmt; int theora_p=0; int vorbis_p=0; int stateflag=0; /* SDL Video playback structures */ SDL_Surface *screen; SDL_Overlay *yuv_overlay; SDL_Rect rect; unsigned char *RGBbuffer; #define OC_CLAMP255(_x) ((unsigned char)((((_x)<0)-1)&((_x)|-((_x)>255)))) /* single frame video buffering */ int videobuf_ready=0; ogg_int64_t videobuf_granulepos=-1; double videobuf_time=0; /* single audio fragment audio buffering */ int audiobuf_fill=0; int audiobuf_ready=0; ogg_int16_t *audiobuf; ogg_int64_t audiobuf_granulepos=0; /* time position of last sample */ /* audio / video synchronization tracking: Since this will make it to Google at some point and lots of people search for how to do this, a quick rundown of a practical A/V sync strategy under Linux [the UNIX where Everything Is Hard]. Naturally, this works on other platforms using OSS for sound as well. In OSS, we don't have reliable access to any precise information on the exact current playback position (that, of course would have been too easy; the kernel folks like to keep us app people working hard doing simple things that should have been solved once and abstracted long ago). Hopefully ALSA solves this a little better; we'll probably use that once ALSA is the standard in the stable kernel. We can't use the system clock for a/v sync because audio is hard synced to its own clock, and both the system and audio clocks suffer from wobble, drift, and a lack of accuracy that can be guaranteed to add a reliable percent or so of error. After ten seconds, that's 100ms. We can't drift by half a second every minute. Although OSS can't generally tell us where the audio playback pointer is, we do know that if we work in complete audio fragments and keep the kernel buffer full, a blocking select on the audio buffer will give us a writable fragment immediately after playback finishes with it. We assume at that point that we know the exact number of bytes in the kernel buffer that have not been played (total fragments minus one) and calculate clock drift between audio and system then (and only then). Damp the sync correction fraction, apply, and walla: A reliable A/V clock that even works if it's interrupted. */ long audiofd_totalsize=-1; int audiofd_fragsize; /* read and write only complete fragments so that SNDCTL_DSP_GETOSPACE is accurate immediately after a bank switch */ int audiofd=-1; ogg_int64_t audiofd_timer_calibrate=-1; static void open_audio(){ audio_buf_info info; int format=AFMT_S16_NE; /* host endian */ int channels=vi.channels; int rate=vi.rate; int ret; audiofd=open(AUDIO_DEVICE,O_RDWR); if(audiofd<0){ fprintf(stderr,"Could not open audio device " AUDIO_DEVICE ".\n"); #if defined(__linux__) fprintf(stderr,"Perhaps aoss wrapper from alsa-oss can get audio working?\n"); #endif /* __linux__ */ exit(1); } ret=ioctl(audiofd,SNDCTL_DSP_SETFMT,&format); if(ret){ fprintf(stderr,"Could not set 16 bit host-endian playback\n"); exit(1); } ret=ioctl(audiofd,SNDCTL_DSP_CHANNELS,&channels); if(ret){ fprintf(stderr,"Could not set %d channel playback\n",channels); exit(1); } ret=ioctl(audiofd,SNDCTL_DSP_SPEED,&rate); if(ret){ fprintf(stderr,"Could not set %d Hz playback\n",rate); exit(1); } ioctl(audiofd,SNDCTL_DSP_GETOSPACE,&info); audiofd_fragsize=info.fragsize; audiofd_totalsize=info.fragstotal*info.fragsize; audiobuf=malloc(audiofd_fragsize); } static void audio_close(void){ if(audiofd>-1){ ioctl(audiofd,SNDCTL_DSP_RESET,NULL); close(audiofd); free(audiobuf); } } /* call this only immediately after unblocking from a full kernel having a newly empty fragment or at the point of DMA restart */ void audio_calibrate_timer(int restart){ struct timeval tv; ogg_int64_t current_sample; ogg_int64_t new_time; gettimeofday(&tv,0); new_time=tv.tv_sec*1000+tv.tv_usec/1000; if(restart){ current_sample=audiobuf_granulepos-audiobuf_fill/2/vi.channels; }else current_sample=audiobuf_granulepos- (audiobuf_fill+audiofd_totalsize-audiofd_fragsize)/2/vi.channels; new_time-=1000*current_sample/vi.rate; audiofd_timer_calibrate=new_time; } /* get relative time since beginning playback, compensating for A/V drift */ double get_time(){ static ogg_int64_t last=0; static ogg_int64_t up=0; ogg_int64_t now; struct timeval tv; gettimeofday(&tv,0); now=tv.tv_sec*1000+tv.tv_usec/1000; if(audiofd_timer_calibrate==-1)audiofd_timer_calibrate=last=now; if(audiofd<0){ /* no audio timer to worry about, we can just use the system clock */ /* only one complication: If the process is suspended, we should reset timing to account for the gap in play time. Do it the easy/hack way */ if(now-last>1000)audiofd_timer_calibrate+=(now-last); last=now; } if(now-up>200){ double timebase=(now-audiofd_timer_calibrate)*.001; int hundredths=timebase*100-(long)timebase*100; int seconds=(long)timebase%60; int minutes=((long)timebase/60)%60; int hours=(long)timebase/3600; fprintf(stderr," Playing: %d:%02d:%02d.%02d \r", hours,minutes,seconds,hundredths); up=now; } return (now-audiofd_timer_calibrate)*.001; } /* write a fragment to the OSS kernel audio API, but only if we can stuff in a whole fragment without blocking */ void audio_write_nonblocking(void){ if(audiobuf_ready){ audio_buf_info info; long bytes; ioctl(audiofd,SNDCTL_DSP_GETOSPACE,&info); bytes=info.bytes; if(bytes>=audiofd_fragsize){ if(bytes==audiofd_totalsize)audio_calibrate_timer(1); while(1){ bytes=write(audiofd,audiobuf+(audiofd_fragsize-audiobuf_fill), audiofd_fragsize); if(bytes>0){ if(bytes!=audiobuf_fill){ /* shouldn't actually be possible... but eh */ audiobuf_fill-=bytes; }else break; } } audiobuf_fill=0; audiobuf_ready=0; } } } /* clean quit on Ctrl-C for SDL and thread shutdown as per SDL example (we don't use any threads, but libSDL does) */ int got_sigint=0; static void sigint_handler (int signal) { got_sigint = 1; } static void open_video(void){ int w; int h; w=(ti.pic_x+ti.pic_width+1&~1)-(ti.pic_x&~1); h=(ti.pic_y+ti.pic_height+1&~1)-(ti.pic_y&~1); if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) { fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError()); exit(1); } screen = SDL_SetVideoMode(w, h, 0, SDL_SWSURFACE); if ( screen == NULL ) { fprintf(stderr, "Unable to set %dx%d video: %s\n", w,h,SDL_GetError()); exit(1); } if (px_fmt==TH_PF_422) yuv_overlay = SDL_CreateYUVOverlay(w, h, SDL_YUY2_OVERLAY, screen); else if (px_fmt==TH_PF_444) { RGBbuffer = calloc(w*h*4,sizeof(*RGBbuffer)); fprintf(stderr,"warning: SDL does not support YUV 4:4:4, using slow software conversion.\n"); } else yuv_overlay = SDL_CreateYUVOverlay(w, h, SDL_YV12_OVERLAY, screen); if ( (yuv_overlay == NULL && px_fmt!=TH_PF_444) || (screen == NULL && px_fmt==TH_PF_444) ) { fprintf(stderr, "SDL: xCouldn't create SDL_yuv_overlay: %s\n", SDL_GetError()); exit(1); } rect.x = 0; rect.y = 0; rect.w = w; rect.h = h; if (px_fmt!=TH_PF_444) SDL_DisplayYUVOverlay(yuv_overlay, &rect); } static void video_write(void){ int i; th_ycbcr_buffer yuv; int y_offset, uv_offset; th_decode_ycbcr_out(td,yuv); /* Lock SDL_yuv_overlay */ if ( SDL_MUSTLOCK(screen) ) { if ( SDL_LockSurface(screen) < 0 ) return; } if (px_fmt!=TH_PF_444 && SDL_LockYUVOverlay(yuv_overlay) < 0) return; /* let's draw the data on a SDL screen (*screen) */ /* deal with border stride */ /* reverse u and v for SDL */ /* and crop input properly, respecting the encoded frame rect */ /* problems may exist for odd frame rect for some encodings */ y_offset=(ti.pic_x&~1)+yuv[0].stride*(ti.pic_y&~1); if (px_fmt==TH_PF_422) { uv_offset=(ti.pic_x/2)+(yuv[1].stride)*(ti.pic_y); /* SDL doesn't have a planar 4:2:2 */ for(i=0;ih;i++) { int j; char *in_y = (char *)yuv[0].data+y_offset+yuv[0].stride*i; char *out = (char *)(yuv_overlay->pixels[0]+yuv_overlay->pitches[0]*i); for (j=0;jw;j++) out[j*2] = in_y[j]; char *in_u = (char *)yuv[1].data+uv_offset+yuv[1].stride*i; char *in_v = (char *)yuv[2].data+uv_offset+yuv[2].stride*i; for (j=0;jw>>1;j++) { out[j*4+1] = in_u[j]; out[j*4+3] = in_v[j]; } } } else if (px_fmt==TH_PF_444){ SDL_Surface *output; for(i=0;ih;i++) { int j; unsigned char *in_y = (unsigned char *)yuv[0].data+y_offset+yuv[0].stride*i; unsigned char *in_u = (unsigned char *)yuv[1].data+y_offset+yuv[1].stride*i; unsigned char *in_v = (unsigned char *)yuv[2].data+y_offset+yuv[2].stride*i; unsigned char *out = RGBbuffer+(screen->w*i*4); for (j=0;jw;j++) { int r, g, b; r=(1904000*in_y[j]+2609823*in_v[j]-363703744)/1635200; g=(3827562*in_y[j]-1287801*in_u[j] -2672387*in_v[j]+447306710)/3287200; b=(952000*in_y[j]+1649289*in_u[j]-225932192)/817600; out[4*j+0]=OC_CLAMP255(b); out[4*j+1]=OC_CLAMP255(g); out[4*j+2]=OC_CLAMP255(r); } output=SDL_CreateRGBSurfaceFrom(RGBbuffer,screen->w,screen->h,32,4*screen->w,0,0,0,0); SDL_BlitSurface(output,NULL,screen,NULL); } } else { uv_offset=(ti.pic_x/2)+(yuv[1].stride)*(ti.pic_y/2); for(i=0;ih;i++) memcpy(yuv_overlay->pixels[0]+yuv_overlay->pitches[0]*i, yuv[0].data+y_offset+yuv[0].stride*i, yuv_overlay->w); for(i=0;ih/2;i++){ memcpy(yuv_overlay->pixels[1]+yuv_overlay->pitches[1]*i, yuv[2].data+uv_offset+yuv[2].stride*i, yuv_overlay->w/2); memcpy(yuv_overlay->pixels[2]+yuv_overlay->pitches[2]*i, yuv[1].data+uv_offset+yuv[1].stride*i, yuv_overlay->w/2); } } /* Unlock SDL_yuv_overlay */ if ( SDL_MUSTLOCK(screen) ) { SDL_UnlockSurface(screen); } if (px_fmt!=TH_PF_444) { SDL_UnlockYUVOverlay(yuv_overlay); /* Show, baby, show! */ SDL_DisplayYUVOverlay(yuv_overlay, &rect); } else { SDL_Flip(screen); } } /* dump the theora (or vorbis) comment header */ static int dump_comments(th_comment *tc){ int i, len; char *value; FILE *out=stdout; fprintf(out,"Encoded by %s\n",tc->vendor); if(tc->comments){ fprintf(out, "theora comment header:\n"); for(i=0;icomments;i++){ if(tc->user_comments[i]){ len=tc->comment_lengths[i]; value=malloc(len+1); memcpy(value,tc->user_comments[i],len); value[len]='\0'; fprintf(out, "\t%s\n", value); free(value); } } } return(0); } /* Report the encoder-specified colorspace for the video, if any. We don't actually make use of the information in this example; a real player should attempt to perform color correction for whatever display device it supports. */ static void report_colorspace(th_info *ti) { switch(ti->colorspace){ case TH_CS_UNSPECIFIED: /* nothing to report */ break;; case TH_CS_ITU_REC_470M: fprintf(stderr," encoder specified ITU Rec 470M (NTSC) color.\n"); break;; case TH_CS_ITU_REC_470BG: fprintf(stderr," encoder specified ITU Rec 470BG (PAL) color.\n"); break;; default: fprintf(stderr,"warning: encoder specified unknown colorspace (%d).\n", ti->colorspace); break;; } } /* helper: push a page into the appropriate steam */ /* this can be done blindly; a stream won't accept a page that doesn't belong to it */ static int queue_page(ogg_page *page){ if(theora_p)ogg_stream_pagein(&to,page); if(vorbis_p)ogg_stream_pagein(&vo,page); return 0; } static void usage(void){ fprintf(stderr, "Usage: player_example \n" "input is read from stdin if no file is passed on the command line\n" "\n" ); } int main(int argc,char *const *argv){ int pp_level_max; int pp_level; int pp_inc; int i,j; ogg_packet op; FILE *infile = stdin; int frames = 0; int dropped = 0; #ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */ /* Beware the evil ifdef. We avoid these where we can, but this one we cannot. Don't add any more, you'll probably go to hell if you do. */ _setmode( _fileno( stdin ), _O_BINARY ); #endif /* open the input file if any */ if(argc==2){ infile=fopen(argv[1],"rb"); if(infile==NULL){ fprintf(stderr,"Unable to open '%s' for playback.\n", argv[1]); exit(1); } } if(argc>2){ usage(); exit(1); } /* start up Ogg stream synchronization layer */ ogg_sync_init(&oy); /* init supporting Vorbis structures needed in header parsing */ vorbis_info_init(&vi); vorbis_comment_init(&vc); /* init supporting Theora structures needed in header parsing */ th_comment_init(&tc); th_info_init(&ti); /* Ogg file open; parse the headers */ /* Only interested in Vorbis/Theora streams */ while(!stateflag){ int ret=buffer_data(infile,&oy); if(ret==0)break; while(ogg_sync_pageout(&oy,&og)>0){ ogg_stream_state test; /* is this a mandated initial header? If not, stop parsing */ if(!ogg_page_bos(&og)){ /* don't leak the page; get it into the appropriate stream */ queue_page(&og); stateflag=1; break; } ogg_stream_init(&test,ogg_page_serialno(&og)); ogg_stream_pagein(&test,&og); ogg_stream_packetout(&test,&op); /* identify the codec: try theora */ if(!theora_p && th_decode_headerin(&ti,&tc,&ts,&op)>=0){ /* it is theora */ memcpy(&to,&test,sizeof(test)); theora_p=1; }else if(!vorbis_p && vorbis_synthesis_headerin(&vi,&vc,&op)>=0){ /* it is vorbis */ memcpy(&vo,&test,sizeof(test)); vorbis_p=1; }else{ /* whatever it is, we don't care about it */ ogg_stream_clear(&test); } } /* fall through to non-bos page parsing */ } /* we're expecting more header packets. */ while((theora_p && theora_p<3) || (vorbis_p && vorbis_p<3)){ int ret; /* look for further theora headers */ while(theora_p && (theora_p<3) && (ret=ogg_stream_packetout(&to,&op))){ if(ret<0){ fprintf(stderr,"Error parsing Theora stream headers; " "corrupt stream?\n"); exit(1); } if(!th_decode_headerin(&ti,&tc,&ts,&op)){ fprintf(stderr,"Error parsing Theora stream headers; " "corrupt stream?\n"); exit(1); } theora_p++; } /* look for more vorbis header packets */ while(vorbis_p && (vorbis_p<3) && (ret=ogg_stream_packetout(&vo,&op))){ if(ret<0){ fprintf(stderr,"Error parsing Vorbis stream headers; corrupt stream?\n"); exit(1); } if(vorbis_synthesis_headerin(&vi,&vc,&op)){ fprintf(stderr,"Error parsing Vorbis stream headers; corrupt stream?\n"); exit(1); } vorbis_p++; if(vorbis_p==3)break; } /* The header pages/packets will arrive before anything else we care about, or the stream is not obeying spec */ if(ogg_sync_pageout(&oy,&og)>0){ queue_page(&og); /* demux into the appropriate stream */ }else{ int ret=buffer_data(infile,&oy); /* someone needs more data */ if(ret==0){ fprintf(stderr,"End of file while searching for codec headers.\n"); exit(1); } } } /* and now we have it all. initialize decoders */ if(theora_p){ td=th_decode_alloc(&ti,ts); printf("Ogg logical stream %lx is Theora %dx%d %.02f fps", to.serialno,ti.pic_width,ti.pic_height, (double)ti.fps_numerator/ti.fps_denominator); px_fmt=ti.pixel_fmt; switch(ti.pixel_fmt){ case TH_PF_420: printf(" 4:2:0 video\n"); break; case TH_PF_422: printf(" 4:2:2 video\n"); break; case TH_PF_444: printf(" 4:4:4 video\n"); break; case TH_PF_RSVD: default: printf(" video\n (UNKNOWN Chroma sampling!)\n"); break; } if(ti.pic_width!=ti.frame_width || ti.pic_height!=ti.frame_height) printf(" Frame content is %dx%d with offset (%d,%d).\n", ti.frame_width, ti.frame_height, ti.pic_x, ti.pic_y); report_colorspace(&ti); dump_comments(&tc); th_decode_ctl(td,TH_DECCTL_GET_PPLEVEL_MAX,&pp_level_max, sizeof(pp_level_max)); pp_level=pp_level_max; th_decode_ctl(td,TH_DECCTL_SET_PPLEVEL,&pp_level,sizeof(pp_level)); pp_inc=0; /*{ int arg = 0xffff; th_decode_ctl(td,TH_DECCTL_SET_TELEMETRY_MBMODE,&arg,sizeof(arg)); th_decode_ctl(td,TH_DECCTL_SET_TELEMETRY_MV,&arg,sizeof(arg)); th_decode_ctl(td,TH_DECCTL_SET_TELEMETRY_QI,&arg,sizeof(arg)); arg=10; th_decode_ctl(td,TH_DECCTL_SET_TELEMETRY_BITS,&arg,sizeof(arg)); }*/ }else{ /* tear down the partial theora setup */ th_info_clear(&ti); th_comment_clear(&tc); } th_setup_free(ts); if(vorbis_p){ vorbis_synthesis_init(&vd,&vi); vorbis_block_init(&vd,&vb); fprintf(stderr,"Ogg logical stream %lx is Vorbis %d channel %ld Hz audio.\n", vo.serialno,vi.channels,vi.rate); }else{ /* tear down the partial vorbis setup */ vorbis_info_clear(&vi); vorbis_comment_clear(&vc); } /* open audio */ if(vorbis_p)open_audio(); /* open video */ if(theora_p)open_video(); /* install signal handler as SDL clobbered the default */ signal (SIGINT, sigint_handler); /* on to the main decode loop. We assume in this example that audio and video start roughly together, and don't begin playback until we have a start frame for both. This is not necessarily a valid assumption in Ogg A/V streams! It will always be true of the example_encoder (and most streams) though. */ stateflag=0; /* playback has not begun */ while(!got_sigint){ /* we want a video and audio frame ready to go at all times. If we have to buffer incoming, buffer the compressed data (ie, let ogg do the buffering) */ while(vorbis_p && !audiobuf_ready){ int ret; float **pcm; /* if there's pending, decoded audio, grab it */ if((ret=vorbis_synthesis_pcmout(&vd,&pcm))>0){ int count=audiobuf_fill/2; int maxsamples=(audiofd_fragsize-audiobuf_fill)/2/vi.channels; for(i=0;i32767)val=32767; if(val<-32768)val=-32768; audiobuf[count++]=val; } vorbis_synthesis_read(&vd,i); audiobuf_fill+=i*vi.channels*2; if(audiobuf_fill==audiofd_fragsize)audiobuf_ready=1; if(vd.granulepos>=0) audiobuf_granulepos=vd.granulepos-ret+i; else audiobuf_granulepos+=i; }else{ /* no pending audio; is there a pending packet to decode? */ if(ogg_stream_packetout(&vo,&op)>0){ if(vorbis_synthesis(&vb,&op)==0) /* test for success! */ vorbis_synthesis_blockin(&vd,&vb); }else /* we need more data; break out to suck in another page */ break; } } while(theora_p && !videobuf_ready){ /* theora is one in, one out... */ if(ogg_stream_packetout(&to,&op)>0){ if(pp_inc){ pp_level+=pp_inc; th_decode_ctl(td,TH_DECCTL_SET_PPLEVEL,&pp_level, sizeof(pp_level)); pp_inc=0; } /*HACK: This should be set after a seek or a gap, but we might not have a granulepos for the first packet (we only have them for the last packet on a page), so we just set it as often as we get it. To do this right, we should back-track from the last packet on the page and compute the correct granulepos for the first packet after a seek or a gap.*/ if(op.granulepos>=0){ th_decode_ctl(td,TH_DECCTL_SET_GRANPOS,&op.granulepos, sizeof(op.granulepos)); } if(th_decode_packetin(td,&op,&videobuf_granulepos)==0){ videobuf_time=th_granule_time(td,videobuf_granulepos); frames++; /* is it already too old to be useful? This is only actually useful cosmetically after a SIGSTOP. Note that we have to decode the frame even if we don't show it (for now) due to keyframing. Soon enough libtheora will be able to deal with non-keyframe seeks. */ if(videobuf_time>=get_time()) videobuf_ready=1; else{ /*If we are too slow, reduce the pp level.*/ pp_inc=pp_level>0?-1:0; dropped++; } } }else break; } if(!videobuf_ready && !audiobuf_ready && feof(infile))break; if(!videobuf_ready || !audiobuf_ready){ /* no data yet for somebody. Grab another page */ buffer_data(infile,&oy); while(ogg_sync_pageout(&oy,&og)>0){ queue_page(&og); } } /* If playback has begun, top audio buffer off immediately. */ if(stateflag) audio_write_nonblocking(); /* are we at or past time for this video frame? */ if(stateflag && videobuf_ready && videobuf_time<=get_time()){ video_write(); videobuf_ready=0; } if(stateflag && (audiobuf_ready || !vorbis_p) && (videobuf_ready || !theora_p) && !got_sigint){ /* we have an audio frame ready (which means the audio buffer is full), it's not time to play video, so wait until one of the audio buffer is ready or it's near time to play video */ /* set up select wait on the audiobuffer and a timeout for video */ struct timeval timeout; fd_set writefs; int n=0; FD_ZERO(&writefs); if(audiofd>=0){ FD_SET(audiofd,&writefs); n=audiofd+1; } if(theora_p){ double tdiff; long milliseconds; tdiff=videobuf_time-get_time(); /*If we have lots of extra time, increase the post-processing level.*/ if(tdiff>ti.fps_denominator*0.25/ti.fps_numerator){ pp_inc=pp_level0?-1:0; } milliseconds=tdiff*1000-5; if(milliseconds>500)milliseconds=500; if(milliseconds>0){ timeout.tv_sec=milliseconds/1000; timeout.tv_usec=(milliseconds%1000)*1000; n=select(n,NULL,&writefs,NULL,&timeout); if(n)audio_calibrate_timer(0); } }else{ select(n,NULL,&writefs,NULL,NULL); } } /* if our buffers either don't exist or are ready to go, we can begin playback */ if((!theora_p || videobuf_ready) && (!vorbis_p || audiobuf_ready))stateflag=1; /* same if we've run out of input */ if(feof(infile))stateflag=1; } /* tear it all down */ audio_close(); SDL_Quit(); if(vorbis_p){ ogg_stream_clear(&vo); vorbis_block_clear(&vb); vorbis_dsp_clear(&vd); vorbis_comment_clear(&vc); vorbis_info_clear(&vi); } if(theora_p){ ogg_stream_clear(&to); th_decode_free(td); th_comment_clear(&tc); th_info_clear(&ti); } ogg_sync_clear(&oy); if(infile && infile!=stdin)fclose(infile); fprintf(stderr, "\r \r"); fprintf(stderr, "%d frames", frames); if (dropped) fprintf(stderr, " (%d dropped)", dropped); fprintf(stderr, "\n"); fprintf(stderr, "\nDone.\n"); return(0); } libtheora-1.2.0/configure0000755000175000017500000211635714771707053014074 0ustar perepere#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for libtheora 1.2.0. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: theora-dev@xiph.org about your system, including any $0: error possibly output before this message. Then install $0: a modern shell, or manually run the script under such a $0: shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='libtheora' PACKAGE_TARNAME='libtheora' PACKAGE_VERSION='1.2.0' PACKAGE_STRING='libtheora 1.2.0' PACKAGE_BUGREPORT='theora-dev@xiph.org' PACKAGE_URL='' ac_unique_file="lib/fdct.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_subst_vars='DOCDIR BINDIR INCLUDEDIR LIBDIR am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS PROFILE DEBUG BUILDABLE_EXAMPLES GETOPT_OBJS THEORA_ENABLE_EXAMPLES_FALSE THEORA_ENABLE_EXAMPLES_TRUE THEORA_DISABLE_ENCODE_FALSE THEORA_DISABLE_ENCODE_TRUE CAIRO_LIBS CAIRO_CFLAGS TIFF_LIBS TIFF_CFLAGS HAVE_TIFF PNG_LIBS PNG_CFLAGS OSS_LIBS SDL_LIBS SDL_CFLAGS VORBISFILE_LIBS VORBISENC_LIBS VORBIS_LIBS VORBIS_CFLAGS OGG_LIBS OGG_CFLAGS PKG_CONFIG THEORA_LIBOGG_REQ_VERSION HAVE_PKG_CONFIG THEORA_LDFLAGS THEORAENC_LDFLAGS THEORADEC_LDFLAGS CPU_c64x_FALSE CPU_c64x_TRUE CPU_arm_FALSE CPU_arm_TRUE CPU_x86_32_FALSE CPU_x86_32_TRUE CPU_x86_64_FALSE CPU_x86_64_TRUE HAVE_ARM_ASM_NEON HAVE_ARM_ASM_MEDIA HAVE_ARM_ASM_EDSP HAVE_PERL TEST_ENV VALGRIND BUILD_SPEC_FALSE BUILD_SPEC_TRUE HAVE_TRANSFIG HAVE_BIBTEX HAVE_PDFLATEX HAVE_DOXYGEN_FALSE HAVE_DOXYGEN_TRUE HAVE_DOXYGEN LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR FILECMD LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED LIBTOOL OBJDUMP DLLTOOL AS CPP am__fastdepCCAS_FALSE am__fastdepCCAS_TRUE CCASDEPMODE CCASFLAGS CCAS am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC THENC_LIB_AGE THENC_LIB_REVISION THENC_LIB_CURRENT THDEC_LIB_AGE THDEC_LIB_REVISION THDEC_LIB_CURRENT TH_LIB_AGE TH_LIB_REVISION TH_LIB_CURRENT MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V CSCOPE ETAGS CTAGS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_doc enable_spec enable_valgrind_testing enable_gcc_sanitizers enable_asm enable_asflag_probe with_ogg with_ogg_libraries with_ogg_includes enable_oggtest with_vorbis with_vorbis_libraries with_vorbis_includes enable_vorbistest enable_telemetry enable_mem_constraint enable_encode enable_examples ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CCAS CCASFLAGS CPP LT_SYS_LIBRARY_PATH PKG_CONFIG OGG_CFLAGS OGG_LIBS VORBIS_CFLAGS VORBIS_LIBS SDL_CFLAGS SDL_LIBS PNG_CFLAGS PNG_LIBS CAIRO_CFLAGS CAIRO_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures libtheora 1.2.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/libtheora] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of libtheora 1.2.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --disable-maintainer-mode disable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-doc Do not build API documentation --disable-spec Do not build the specification --enable-valgrind-testing enable running of tests inside Valgrind (default disabled) --enable-gcc-sanitizers Enable GCC sanitizers --disable-asm Disable assembly optimizations --disable-asflag-probe Disable instructions not supported by the default ASFLAGS (ARM only). --disable-oggtest Do not try to compile and run a test Ogg program --disable-vorbistest Do not try to compile and run a test Vorbis program --enable-telemetry Enable debugging output controls --enable-mem-constraint Abort if size exceeds 16384x16384 (for fuzzing only) --disable-encode Disable encoding support --disable-examples Disable examples Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-ogg=PFX Prefix where libogg is installed (optional) --with-ogg-libraries=DIR Directory where libogg library is installed (optional) --with-ogg-includes=DIR Directory where libogg header files are installed (optional) --with-vorbis=PFX Prefix where libvorbis is installed (optional) --with-vorbis-libraries=DIR Directory where libvorbis library is installed (optional) --with-vorbis-includes=DIR Directory where libvorbis header files are installed (optional) Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CCAS assembler compiler command (defaults to CC) CCASFLAGS assembler compiler flags (defaults to CFLAGS) CPP C preprocessor LT_SYS_LIBRARY_PATH User-defined run-time library search path. PKG_CONFIG path to pkg-config utility OGG_CFLAGS C compiler flags for OGG, overriding pkg-config OGG_LIBS linker flags for OGG, overriding pkg-config VORBIS_CFLAGS C compiler flags for VORBIS, overriding pkg-config VORBIS_LIBS linker flags for VORBIS, overriding pkg-config SDL_CFLAGS C compiler flags for SDL, overriding pkg-config SDL_LIBS linker flags for SDL, overriding pkg-config PNG_CFLAGS C compiler flags for PNG, overriding pkg-config PNG_LIBS linker flags for PNG, overriding pkg-config CAIRO_CFLAGS C compiler flags for CAIRO, overriding pkg-config CAIRO_LIBS linker flags for CAIRO, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF libtheora configure 1.2.0 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_try_run LINENO # ---------------------- # Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that # executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: program exited with status $ac_status" >&5 printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by libtheora $as_me 1.2.0, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' // Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' // Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" # Auxiliary files required by this configure script. ac_aux_files="ltmain.sh compile missing install-sh config.guess config.sub" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac am__api_version='1.16' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else $as_nop if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='libtheora' VERSION='1.2.0' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi if test -z "$ETAGS"; then ETAGS=etags fi if test -z "$CSCOPE"; then CSCOPE=cscope fi # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test ${enable_maintainer_mode+y} then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else $as_nop USE_MAINTAINER_MODE=yes fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else $as_nop if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' ################################################################################ # Set the shared versioning info, according to section 6.3 of the libtool info # # pages. CURRENT:REVISION:AGE must be updated immediately before each release: # # # # * If the library source code has changed at all since the last # # update, then increment TH*_LIB_REVISION (`C:R:A' becomes `C:r+1:A'). # # # # * If any interfaces have been added, removed, or changed since the # # last update, increment TH*_LIB_CURRENT, and set TH*_LIB_REVISION to 0. # # # # * If any interfaces have been added since the last public release, # # then increment TH*_LIB_AGE. # # # # * If any interfaces have been removed since the last public release, # # then set TH*_LIB_AGE to 0. # # # ################################################################################ TH_LIB_CURRENT=5 TH_LIB_REVISION=1 TH_LIB_AGE=4 THDEC_LIB_CURRENT=3 THDEC_LIB_REVISION=1 THDEC_LIB_AGE=1 THENC_LIB_CURRENT=4 THENC_LIB_REVISION=1 THENC_LIB_AGE=2 THEORA_LDFLAGS="" DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # By default we simply use the C compiler to build assembly code. test "${CCAS+set}" = set || CCAS=$CC test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS depcc="$CCAS" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CCAS_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CCAS_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CCAS_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CCAS_dependencies_compiler_type=none fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CCAS_dependencies_compiler_type" >&6; } CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then am__fastdepCCAS_TRUE= am__fastdepCCAS_FALSE='#' else am__fastdepCCAS_TRUE='#' am__fastdepCCAS_FALSE= fi cflags_save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 printf %s "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test ${ac_cv_prog_CPP+y} then : printf %s "(cached) " >&6 else $as_nop # Double quotes because $CC needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 printf "%s\n" "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CFLAGS="$cflags_save" case `pwd` in *\ * | *\ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.7' macro_revision='2.4.7' ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 printf "%s\n" "printf" >&6; } ;; print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 printf "%s\n" "print -r" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 printf "%s\n" "cat" >&6; } ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 printf %s "checking for fgrep... " >&6; } if test ${ac_cv_path_FGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in fgrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test ${lt_cv_path_NM+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DUMPBIN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 printf "%s\n" "$DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DUMPBIN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 printf %s "checking the name lister ($NM) interface... " >&6; } if test ${lt_cv_nm_interface+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 printf "%s\n" "$lt_cv_nm_interface" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 printf %s "checking the maximum length of command line arguments... " >&6; } if test ${lt_cv_sys_max_cmd_len+y} then : printf %s "(cached) " >&6 else $as_nop i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 printf %s "checking how to convert $build file names to $host format... " >&6; } if test ${lt_cv_to_host_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 printf %s "checking how to convert $build file names to toolchain format... " >&6; } if test ${lt_cv_to_tool_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 printf %s "checking for $LD option to reload object files... " >&6; } if test ${lt_cv_ld_reload_flag+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_reload_flag='-r' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}file", so it can be a program name with args. set dummy ${ac_tool_prefix}file; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_FILECMD+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$FILECMD"; then ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_FILECMD="${ac_tool_prefix}file" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi FILECMD=$ac_cv_prog_FILECMD if test -n "$FILECMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 printf "%s\n" "$FILECMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_FILECMD"; then ac_ct_FILECMD=$FILECMD # Extract the first word of "file", so it can be a program name with args. set dummy file; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_FILECMD+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_FILECMD"; then ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_FILECMD="file" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD if test -n "$ac_ct_FILECMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5 printf "%s\n" "$ac_ct_FILECMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_FILECMD" = x; then FILECMD=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac FILECMD=$ac_ct_FILECMD fi else FILECMD="$ac_cv_prog_FILECMD" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 printf "%s\n" "$OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 printf %s "checking how to recognize dependent libraries... " >&6; } if test ${lt_cv_deplibs_check_method+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 printf "%s\n" "$DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 printf %s "checking how to associate runtime and link libraries... " >&6; } if test ${lt_cv_sharedlib_from_linklib_cmd+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because thats what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 printf %s "checking for archiver @FILE support... " >&6; } if test ${lt_cv_ar_at_file+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 printf %s "checking command to parse $NM output from $compiler object... " >&6; } if test ${lt_cv_sys_global_symbol_pipe+y} then : printf %s "(cached) " >&6 else $as_nop # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 printf "%s\n" "failed" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 printf "%s\n" "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test ${with_sysroot+y} then : withval=$with_sysroot; else $as_nop with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 printf "%s\n" "${lt_sysroot:-no}" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 printf %s "checking for a working dd... " >&6; } if test ${ac_cv_path_lt_DD+y} then : printf %s "(cached) " >&6 else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in dd do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 printf "%s\n" "$ac_cv_path_lt_DD" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 printf %s "checking how to truncate binary pipes... " >&6; } if test ${lt_cv_truncate_bin+y} then : printf %s "(cached) " >&6 else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 printf "%s\n" "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test ${enable_libtool_lock+y} then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 printf %s "checking whether the C compiler needs -belf... " >&6; } if test ${lt_cv_cc_needs_belf+y} then : printf %s "(cached) " >&6 else $as_nop ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_cc_needs_belf=yes else $as_nop lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 printf "%s\n" "$MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if test ${lt_cv_path_mainfest_tool+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DSYMUTIL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 printf "%s\n" "$DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NMEDIT+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 printf "%s\n" "$NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NMEDIT+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 printf "%s\n" "$ac_ct_NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LIPO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 printf "%s\n" "$LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_LIPO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 printf "%s\n" "$ac_ct_LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 printf "%s\n" "$OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 printf "%s\n" "$ac_ct_OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL64+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 printf "%s\n" "$OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL64+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 printf "%s\n" "$ac_ct_OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 printf %s "checking for -single_module linker flag... " >&6; } if test ${lt_cv_apple_cc_single_mod+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 printf %s "checking for -exported_symbols_list linker flag... " >&6; } if test ${lt_cv_ld_exported_symbols_list+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_ld_exported_symbols_list=yes else $as_nop lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 printf %s "checking for -force_load linker flag... " >&6; } if test ${lt_cv_ld_force_load+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 $AR $AR_FLAGS libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) case $MACOSX_DEPLOYMENT_TARGET,$host in 10.[012],*|,*powerpc*-darwin[5-8]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; *) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes then : printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi # Set options enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AS+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 printf "%s\n" "$AS" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AS+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 printf "%s\n" "$ac_ct_AS" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 printf "%s\n" "$DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 printf "%s\n" "$OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac test -z "$AS" && AS=as test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump enable_dlopen=no # Check whether --enable-shared was given. if test ${enable_shared+y} then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_shared=yes fi # Check whether --enable-static was given. if test ${enable_static+y} then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_static=yes fi # Check whether --with-pic was given. if test ${with_pic+y} then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop pic_mode=default fi # Check whether --enable-fast-install was given. if test ${enable_fast_install+y} then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test ${with_aix_soname+y} then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else $as_nop if test ${lt_cv_with_aix_soname+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 printf %s "checking for objdir... " >&6; } if test ${lt_cv_objdir+y} then : printf %s "(cached) " >&6 else $as_nop rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC and # ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 printf %s "checking for ${ac_tool_prefix}file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 printf %s "checking for file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test ${lt_cv_prog_compiler_rtti_exceptions+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # flang / f18. f95 an alias for gfortran or flang on Debian flang* | f18* | f95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl* | icl*) # Native MSVC or ICC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC and ICC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly* | midnightbsd*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 printf %s "checking if $CC understands -b... " >&6; } if test ${lt_cv_prog_compiler__b+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if test ${lt_cv_irix_exported_symbol+y} then : printf %s "(cached) " >&6 else $as_nop save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_irix_exported_symbol=yes else $as_nop lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc+y} then : printf %s "(cached) " >&6 else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else $as_nop lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes then : lt_cv_dlopen=shl_load else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 printf %s "checking for shl_load in -ldld... " >&6; } if test ${ac_cv_lib_dld_shl_load+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char shl_load (); int main (void) { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_shl_load=yes else $as_nop ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else $as_nop ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes then : lt_cv_dlopen=dlopen else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 printf %s "checking for dlopen in -lsvld... " >&6; } if test ${ac_cv_lib_svld_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_svld_dlopen=yes else $as_nop ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 printf %s "checking for dld_link in -ldld... " >&6; } if test ${ac_cv_lib_dld_dld_link+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dld_link (); int main (void) { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_dld_link=yes else $as_nop ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 printf %s "checking whether a program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self+y} then : printf %s "(cached) " >&6 else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 printf %s "checking whether a statically linked program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self_static+y} then : printf %s "(cached) " >&6 else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 printf %s "checking whether stripping libraries is possible... " >&6; } if test -z "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac fi fi # Report what library types will actually be built { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 printf %s "checking if libtool supports shared libraries... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 printf "%s\n" "$can_build_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 printf "%s\n" "$enable_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 printf "%s\n" "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC ac_config_commands="$ac_config_commands libtool" # Only expand once: # Check whether --enable-doc was given. if test ${enable_doc+y} then : enableval=$enable_doc; ac_enable_doc=$enableval else $as_nop ac_enable_doc=auto fi if test "x$ac_enable_doc" != "xno"; then # Extract the first word of "doxygen", so it can be a program name with args. set dummy doxygen; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_HAVE_DOXYGEN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$HAVE_DOXYGEN"; then ac_cv_prog_HAVE_DOXYGEN="$HAVE_DOXYGEN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_HAVE_DOXYGEN="true" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_HAVE_DOXYGEN" && ac_cv_prog_HAVE_DOXYGEN="false" fi fi HAVE_DOXYGEN=$ac_cv_prog_HAVE_DOXYGEN if test -n "$HAVE_DOXYGEN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HAVE_DOXYGEN" >&5 printf "%s\n" "$HAVE_DOXYGEN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$HAVE_DOXYGEN" = "xfalse" -a "x$ac_enable_doc" = "xyes"; then as_fn_error $? "*** API documentation explicitly requested but Doxygen not found" "$LINENO" 5 fi else HAVE_DOXYGEN=false fi if $HAVE_DOXYGEN; then HAVE_DOXYGEN_TRUE= HAVE_DOXYGEN_FALSE='#' else HAVE_DOXYGEN_TRUE='#' HAVE_DOXYGEN_FALSE= fi if test $HAVE_DOXYGEN = "false"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: *** doxygen not found, API documentation will not be built" >&5 printf "%s\n" "$as_me: WARNING: *** doxygen not found, API documentation will not be built" >&2;} fi BUILD_SPEC="false" ac_build_spec=yes # Check whether --enable-spec was given. if test ${enable_spec+y} then : enableval=$enable_spec; if test "x$enableval" = "xno"; then ac_build_spec=$enableval fi else $as_nop ac_build_spec=yes fi if test "x$ac_build_spec" = "xyes"; then # Extract the first word of "pdflatex", so it can be a program name with args. set dummy pdflatex; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_HAVE_PDFLATEX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$HAVE_PDFLATEX"; then ac_cv_prog_HAVE_PDFLATEX="$HAVE_PDFLATEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_HAVE_PDFLATEX="yes" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi HAVE_PDFLATEX=$ac_cv_prog_HAVE_PDFLATEX if test -n "$HAVE_PDFLATEX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HAVE_PDFLATEX" >&5 printf "%s\n" "$HAVE_PDFLATEX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "bibtex", so it can be a program name with args. set dummy bibtex; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_HAVE_BIBTEX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$HAVE_BIBTEX"; then ac_cv_prog_HAVE_BIBTEX="$HAVE_BIBTEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_HAVE_BIBTEX="yes" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi HAVE_BIBTEX=$ac_cv_prog_HAVE_BIBTEX if test -n "$HAVE_BIBTEX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HAVE_BIBTEX" >&5 printf "%s\n" "$HAVE_BIBTEX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "fig2dev", so it can be a program name with args. set dummy fig2dev; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_HAVE_TRANSFIG+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$HAVE_TRANSFIG"; then ac_cv_prog_HAVE_TRANSFIG="$HAVE_TRANSFIG" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_HAVE_TRANSFIG="yes" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi HAVE_TRANSFIG=$ac_cv_prog_HAVE_TRANSFIG if test -n "$HAVE_TRANSFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HAVE_TRANSFIG" >&5 printf "%s\n" "$HAVE_TRANSFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Checking for packages in ${srcdir}/doc/spec/spec.tex..." >&5 printf "%s\n" "$as_me: Checking for packages in ${srcdir}/doc/spec/spec.tex..." >&6;} if test -r ${srcdir}/doc/spec/spec.tex; then if test "x$HAVE_PDFLATEX" = "xyes"; then if test "x$HAVE_BIBTEX" = "xyes"; then if test "x$HAVE_TRANSFIG" = "xyes"; then tex_pkg_list=`fgrep usepackage ${srcdir}/doc/spec/spec.tex | grep \{ | grep -v ltablex` tex_pkg_ok="yes" for pkg_line in $tex_pkg_list; do pkg_name=`echo $pkg_line | sed -e 's/.*{\(.*\)}.*/\1/'` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Tex package $pkg_name" >&5 printf %s "checking for Tex package $pkg_name... " >&6; } cat >conftest.tex <<_ACEOF \\documentclass{book} $pkg_line \\begin{document} Hello World. \\end{document} _ACEOF if pdflatex -interaction batchmode -halt-on-error conftest < /dev/null > /dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 printf "%s\n" "ok" >&6; } else tex_pkg_ok="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi done if test -w conftest.tex; then rm conftest.tex; fi if test -w conftest.tex; then rm conftest.aux; fi if test -w conftest.pdf; then rm conftest.pdf; fi if test "x$tex_pkg_ok" = "xyes" && test x$cross_compiling = xno; then BUILD_SPEC="true" fi fi fi fi fi fi if $BUILD_SPEC; then BUILD_SPEC_TRUE= BUILD_SPEC_FALSE='#' else BUILD_SPEC_TRUE='#' BUILD_SPEC_FALSE= fi if test $BUILD_SPEC = "false"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: *** Format Specification will not built." >&5 printf "%s\n" "$as_me: WARNING: *** Format Specification will not built." >&2;} fi # Check for valgrind # Check whether --enable-valgrind-testing was given. if test ${enable_valgrind_testing+y} then : enableval=$enable_valgrind_testing; fi if test "x$enable_valgrind_testing" = "xyes" then # Extract the first word of "valgrind", so it can be a program name with args. set dummy valgrind; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_VALGRIND+y} then : printf %s "(cached) " >&6 else $as_nop case $VALGRIND in [\\/]* | ?:[\\/]*) ac_cv_path_VALGRIND="$VALGRIND" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_VALGRIND="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi VALGRIND=$ac_cv_path_VALGRIND if test -n "$VALGRIND"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $VALGRIND" >&5 printf "%s\n" "$VALGRIND" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$VALGRIND" != "x" then VALGRIND="$VALGRIND -q --error-exitcode=99 --leak-check=full --show-reachable=yes --num-callers=50" TESTS_INFO="Test suite will be run under: ${VALGRIND}" else TESTS_INFO="Type 'make check' to run test suite (Valgrind not found)" fi else TESTS_INFO="Type 'make check' to run test suite (Valgrind testing not enabled)" fi cc_compiler=unknown cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if ! __clang__ #error #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : cc_compiler=clang else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if ! __GNUC__ #error #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : cc_compiler=gcc fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cflags_save="$CFLAGS" if test $cc_compiler != "gcc" ; then case $host in *) DEBUG="-g -DDEBUG" CFLAGS="-O" PROFILE="-g -p -DDEBUG" ;; esac else case $host in *) DEBUG="-g -Wall -Werror=uninitialized -Winit-self -Wno-parentheses -DDEBUG -D__NO_MATH_INLINES" CFLAGS="-Wall -Werror=uninitialized -Winit-self -Wno-parentheses -O3 -fomit-frame-pointer -finline-functions -funroll-loops" PROFILE="-Wall -Werror=uninitialized -Winit-self -Wno-parentheses -pg -g -O3 -fno-inline-functions -DDEBUG";; esac fi CFLAGS="$CFLAGS $cflags_save" # Check whether --enable-gcc-sanitizers was given. if test ${enable_gcc_sanitizers+y} then : enableval=$enable_gcc_sanitizers; ac_enable_gcc_sanitizers=$enableval else $as_nop ac_enable_gcc_sanitizers=no fi if test $cc_compiler = "gcc" && test "x${ac_enable_gcc_sanitizers}" = xyes; then CFLAGS="${CFLAGS} -fsanitize=address -fsanitize=undefined -g" LDFLAGS="${CFLAGS} -fsanitize=address" TEST_ENV="env UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=1" fi cpu_x86_64=no cpu_x86_32=no cpu_arm=no cpu_c64x=no # Check whether --enable-asm was given. if test ${enable_asm+y} then : enableval=$enable_asm; ac_enable_asm=$enableval else $as_nop ac_enable_asm=yes fi if test "x${ac_enable_asm}" = xyes; then cpu_optimization="no optimization for your platform, please send a patch" case $host_cpu in i[3456]86) cpu_x86_32=yes cpu_optimization="32 bit x86" printf "%s\n" "#define OC_X86_ASM /**/" >>confdefs.h if test "x$host_vendor" = "xapple"; then THEORA_LDFLAGS="$THEORA_LDFLAGS -Wl,-read_only_relocs,suppress" fi ;; x86_64) cpu_x86_64=yes cpu_optimization="64 bit x86" printf "%s\n" "#define OC_X86_ASM /**/" >>confdefs.h printf "%s\n" "#define OC_X86_64_ASM /**/" >>confdefs.h ;; arm*) cpu_arm=yes cpu_optimization="ARM" printf "%s\n" "#define OC_ARM_ASM /**/" >>confdefs.h # Check whether --enable-asflag-probe was given. if test ${enable_asflag_probe+y} then : enableval=$enable_asflag_probe; ac_enable_asflag_probe=$enableval else $as_nop ac_enable_asflag_probe=yes fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_HAVE_PERL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$HAVE_PERL"; then ac_cv_prog_HAVE_PERL="$HAVE_PERL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_HAVE_PERL="yes" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_HAVE_PERL" && ac_cv_prog_HAVE_PERL="no" fi fi HAVE_PERL=$ac_cv_prog_HAVE_PERL if test -n "$HAVE_PERL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HAVE_PERL" >&5 printf "%s\n" "$HAVE_PERL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$HAVE_PERL" = "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: *** ARM assembly requires perl -- disabling optimizations" >&5 printf "%s\n" "$as_me: WARNING: *** ARM assembly requires perl -- disabling optimizations" >&2;} cpu_arm=no cpu_optimization="(missing perl dependency for ARM)" fi save_CFLAGS="$CFLAGS" ARM_CCASFLAGS= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if assembler supports NEON instructions on ARM" >&5 printf %s "checking if assembler supports NEON instructions on ARM... " >&6; } ac_c_ext=$ac_ext ac_ext=${ac_s_ext-s} cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then ac_ext=$ac_c_ext flag_ok=yes rm -rf conftest* else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_ext=$ac_c_ext rm -rf conftest* flag_ok=no fi rm -rf conftest* if test "X$flag_ok" = Xyes ; then HAVE_ARM_ASM_NEON=1 true else HAVE_ARM_ASM_NEON=0 true fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5 printf "%s\n" "$flag_ok" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if assembler supports ARMv6 media instructions on ARM" >&5 printf %s "checking if assembler supports ARMv6 media instructions on ARM... " >&6; } ac_c_ext=$ac_ext ac_ext=${ac_s_ext-s} cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then ac_ext=$ac_c_ext flag_ok=yes rm -rf conftest* else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_ext=$ac_c_ext rm -rf conftest* flag_ok=no fi rm -rf conftest* if test "X$flag_ok" = Xyes ; then HAVE_ARM_ASM_MEDIA=1 true else HAVE_ARM_ASM_MEDIA=0 true fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5 printf "%s\n" "$flag_ok" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if assembler supports EDSP instructions on ARM" >&5 printf %s "checking if assembler supports EDSP instructions on ARM... " >&6; } ac_c_ext=$ac_ext ac_ext=${ac_s_ext-s} cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then ac_ext=$ac_c_ext flag_ok=yes rm -rf conftest* else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_ext=$ac_c_ext rm -rf conftest* flag_ok=no fi rm -rf conftest* if test "X$flag_ok" = Xyes ; then HAVE_ARM_ASM_EDSP=1 true else HAVE_ARM_ASM_EDSP=0 true fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5 printf "%s\n" "$flag_ok" >&6; } if test "x${ac_enable_asflag_probe}" = xyes; then if test x$HAVE_ARM_ASM_NEON != x1 ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying custom CCASFLAGS to enable NEON instructions..." >&5 printf "%s\n" "$as_me: trying custom CCASFLAGS to enable NEON instructions..." >&6;} ARM_CCASFLAGS="-mfpu=neon -march=armv7-a" CFLAGS="$save_CFLAGS $ARM_CCASFLAGS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if assembler supports NEON instructions on ARM" >&5 printf %s "checking if assembler supports NEON instructions on ARM... " >&6; } ac_c_ext=$ac_ext ac_ext=${ac_s_ext-s} cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then ac_ext=$ac_c_ext flag_ok=yes rm -rf conftest* else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_ext=$ac_c_ext rm -rf conftest* flag_ok=no fi rm -rf conftest* if test "X$flag_ok" = Xyes ; then HAVE_ARM_ASM_NEON=1 true else HAVE_ARM_ASM_NEON=0 true fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5 printf "%s\n" "$flag_ok" >&6; } if test x$HAVE_ARM_ASM_NEON != x1 ; then ARM_CCASFLAGS= CFLAGS="$save_CFLAGS" fi fi if test x$HAVE_ARM_ASM_MEDIA != x1 ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying custom CCASFLAGS to enable ARMv6 media instructions..." >&5 printf "%s\n" "$as_me: trying custom CCASFLAGS to enable ARMv6 media instructions..." >&6;} ARM_CCASFLAGS="-march=armv6j" CFLAGS="$save_CFLAGS $ARM_CCASFLAGS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if assembler supports ARMv6 media instructions on ARM" >&5 printf %s "checking if assembler supports ARMv6 media instructions on ARM... " >&6; } ac_c_ext=$ac_ext ac_ext=${ac_s_ext-s} cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then ac_ext=$ac_c_ext flag_ok=yes rm -rf conftest* else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_ext=$ac_c_ext rm -rf conftest* flag_ok=no fi rm -rf conftest* if test "X$flag_ok" = Xyes ; then HAVE_ARM_ASM_MEDIA=1 true else HAVE_ARM_ASM_MEDIA=0 true fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5 printf "%s\n" "$flag_ok" >&6; } if test x$HAVE_ARM_ASM_MEDIA != x1 ; then ARM_CCASFLAGS= CFLAGS="$save_CFLAGS" fi fi if test x$HAVE_ARM_ASM_EDSP != x1 ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying custom CCASFLAGS to enable EDSP compilation..." >&5 printf "%s\n" "$as_me: trying custom CCASFLAGS to enable EDSP compilation..." >&6;} ARM_CCASFLAGS="-march=armv5e" CFLAGS="$save_CFLAGS $ARM_CCASFLAGS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if assembler supports EDSP instructions on ARM" >&5 printf %s "checking if assembler supports EDSP instructions on ARM... " >&6; } ac_c_ext=$ac_ext ac_ext=${ac_s_ext-s} cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then ac_ext=$ac_c_ext flag_ok=yes rm -rf conftest* else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_ext=$ac_c_ext rm -rf conftest* flag_ok=no fi rm -rf conftest* if test "X$flag_ok" = Xyes ; then HAVE_ARM_ASM_EDSP=1 true else HAVE_ARM_ASM_EDSP=0 true fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5 printf "%s\n" "$flag_ok" >&6; } if test x$HAVE_ARM_ASM_MEDIA != x1 ; then ARM_CCASFLAGS= CFLAGS="$save_CFLAGS" fi fi fi if test x$cpu_arm = xyes; then if test x$HAVE_ARM_ASM_EDSP = x1 ; then printf "%s\n" "#define OC_ARM_ASM_EDSP 1" >>confdefs.h cpu_optimization="$cpu_optimization (EDSP)" fi if test x$HAVE_ARM_ASM_MEDIA = x1 ; then printf "%s\n" "#define OC_ARM_ASM_MEDIA 1" >>confdefs.h cpu_optimization="$cpu_optimization (Media)" fi if test x$HAVE_ARM_ASM_NEON = x1 ; then printf "%s\n" "#define OC_ARM_ASM_NEON 1" >>confdefs.h cpu_optimization="$cpu_optimization (NEON)" fi fi CFLAGS="$save_CFLAGS" CCASFLAGS="$CCASFLAGS $ARM_CCASFLAGS" ;; tic6x) cpu_c64x=yes cpu_optimization="TI C64x+" printf "%s\n" "#define OC_C64X_ASM /**/" >>confdefs.h ;; esac else cpu_optimization="disabled" fi if test x$cpu_x86_64 = xyes; then CPU_x86_64_TRUE= CPU_x86_64_FALSE='#' else CPU_x86_64_TRUE='#' CPU_x86_64_FALSE= fi if test x$cpu_x86_32 = xyes; then CPU_x86_32_TRUE= CPU_x86_32_FALSE='#' else CPU_x86_32_TRUE='#' CPU_x86_32_FALSE= fi if test x$cpu_arm = xyes; then CPU_arm_TRUE= CPU_arm_FALSE='#' else CPU_arm_TRUE='#' CPU_arm_FALSE= fi if test x$cpu_c64x = xyes; then CPU_c64x_TRUE= CPU_c64x_FALSE='#' else CPU_c64x_TRUE='#' CPU_c64x_FALSE= fi # Test whenever ld supports -version-script # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to control symbol export" >&5 printf %s "checking how to control symbol export... " >&6; } THDEC_VERSION_ARG="" THENC_VERSION_ARG="" TH_VERSION_ARG="" if test "x$lt_cv_prog_gnu_ld" = "xyes"; then case "$host_os" in *mingw*) THEORA_LDFLAGS="$THEORA_LDFLAGS -no-undefined" THDEC_VERSION_ARG="-export-symbols \$(top_srcdir)/win32/xmingw32/libtheoradec-all.def" THENC_VERSION_ARG="-export-symbols \$(top_srcdir)/win32/xmingw32/libtheoraenc-all.def" THENC_VERSION_ARG="$THENC_VERSION_ARG -ltheoradec" THC_VERSION_ARG="-export-symbols \$(top_srcdir)/win32/libtheora.def" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: -export-symbols" >&5 printf "%s\n" "-export-symbols" >&6; } ;; linux* | solaris* | gnu* | k*bsd*-gnu) THDEC_VERSION_ARG='-Wl,--version-script=$(srcdir)/Version_script-dec' THENC_VERSION_ARG='-Wl,--version-script=$(srcdir)/Version_script-enc' TH_VERSION_ARG='-Wl,--version-script=$(srcdir)/Version_script' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: --version-script" >&5 printf "%s\n" "--version-script" >&6; } ;; *) # build without versioning { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac else case "$host_os" in darwin*) THDEC_VERSION_ARG='-Wl,-exported_symbols_list,$(srcdir)/theoradec.exp' THENC_VERSION_ARG='-Wl,-exported_symbols_list,$(srcdir)/theoraenc.exp' TH_VERSION_ARG='-Wl,-exported_symbols_list,$(srcdir)/theora.exp' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: -exported_symbols_list" >&5 printf "%s\n" "-exported_symbols_list" >&6; } ;; *) # build without versioning { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac fi THEORADEC_LDFLAGS="$THEORA_LDFLAGS $THDEC_VERSION_ARG" THEORAENC_LDFLAGS="$THEORA_LDFLAGS $THENC_VERSION_ARG" THEORA_LDFLAGS="$THEORA_LDFLAGS $TH_VERSION_ARG" HAVE_OGG=no # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_HAVE_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$HAVE_PKG_CONFIG"; then ac_cv_prog_HAVE_PKG_CONFIG="$HAVE_PKG_CONFIG" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_HAVE_PKG_CONFIG="yes" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi HAVE_PKG_CONFIG=$ac_cv_prog_HAVE_PKG_CONFIG if test -n "$HAVE_PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HAVE_PKG_CONFIG" >&5 printf "%s\n" "$HAVE_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi THEORA_LIBOGG_REQ_VERSION=1.3.4 if test "x$HAVE_PKG_CONFIG" = "xyes" then if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 printf "%s\n" "$PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OGG" >&5 printf %s "checking for OGG... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$OGG_CFLAGS"; then pkg_cv_OGG_CFLAGS="$OGG_CFLAGS" else if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ogg >= \$THEORA_LIBOGG_REQ_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "ogg >= $THEORA_LIBOGG_REQ_VERSION") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OGG_CFLAGS=`$PKG_CONFIG --cflags "ogg >= $THEORA_LIBOGG_REQ_VERSION" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$OGG_LIBS"; then pkg_cv_OGG_LIBS="$OGG_LIBS" else if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ogg >= \$THEORA_LIBOGG_REQ_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "ogg >= $THEORA_LIBOGG_REQ_VERSION") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OGG_LIBS=`$PKG_CONFIG --libs "ogg >= $THEORA_LIBOGG_REQ_VERSION" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then OGG_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "ogg >= $THEORA_LIBOGG_REQ_VERSION"` else OGG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ogg >= $THEORA_LIBOGG_REQ_VERSION"` fi # Put the nasty error message in config.log where it belongs echo "$OGG_PKG_ERRORS" >&5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } HAVE_OGG=no elif test $pkg_failed = untried; then HAVE_OGG=no else OGG_CFLAGS=$pkg_cv_OGG_CFLAGS OGG_LIBS=$pkg_cv_OGG_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } HAVE_OGG=yes fi fi if test "x$HAVE_OGG" = "xno" then # Check whether --with-ogg was given. if test ${with_ogg+y} then : withval=$with_ogg; ogg_prefix="$withval" else $as_nop ogg_prefix="" fi # Check whether --with-ogg-libraries was given. if test ${with_ogg_libraries+y} then : withval=$with_ogg_libraries; ogg_libraries="$withval" else $as_nop ogg_libraries="" fi # Check whether --with-ogg-includes was given. if test ${with_ogg_includes+y} then : withval=$with_ogg_includes; ogg_includes="$withval" else $as_nop ogg_includes="" fi # Check whether --enable-oggtest was given. if test ${enable_oggtest+y} then : enableval=$enable_oggtest; else $as_nop enable_oggtest=yes fi if test "x$ogg_libraries" != "x" ; then OGG_LIBS="-L$ogg_libraries" elif test "x$ogg_prefix" = "xno" || test "x$ogg_prefix" = "xyes" ; then OGG_LIBS="" elif test "x$ogg_prefix" != "x" ; then OGG_LIBS="-L$ogg_prefix/lib" elif test "x$prefix" != "xNONE" ; then OGG_LIBS="-L$prefix/lib" fi if test "x$ogg_prefix" != "xno" ; then OGG_LIBS="$OGG_LIBS -logg" fi if test "x$ogg_includes" != "x" ; then OGG_CFLAGS="-I$ogg_includes" elif test "x$ogg_prefix" = "xno" || test "x$ogg_prefix" = "xyes" ; then OGG_CFLAGS="" elif test "x$ogg_prefix" != "x" ; then OGG_CFLAGS="-I$ogg_prefix/include" elif test "x$prefix" != "xNONE"; then OGG_CFLAGS="-I$prefix/include" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Ogg" >&5 printf %s "checking for Ogg... " >&6; } if test "x$ogg_prefix" = "xno" ; then no_ogg="disabled" enable_oggtest="no" else no_ogg="" fi if test "x$enable_oggtest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $OGG_CFLAGS" LIBS="$LIBS $OGG_LIBS" rm -f conf.oggtest if test "$cross_compiling" = yes then : echo $ac_n "cross compiling; assumed OK... $ac_c" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { system("touch conf.oggtest"); return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : else $as_nop no_ogg=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi if test "x$no_ogg" = "xdisabled" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? " libogg is required to build this package! please see https://www.xiph.org/ for how to obtain a copy. " "$LINENO" 5 elif test "x$no_ogg" = "x" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } : else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if test -f conf.oggtest ; then : else echo "*** Could not run Ogg test program, checking why..." CFLAGS="$CFLAGS $OGG_CFLAGS" LIBS="$LIBS $OGG_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding Ogg or finding the wrong" echo "*** version of Ogg. If it is not finding Ogg, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else $as_nop echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occurred. This usually means Ogg was incorrectly installed" echo "*** or that you have moved Ogg since it was installed." fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi OGG_CFLAGS="" OGG_LIBS="" as_fn_error $? " libogg is required to build this package! please see https://www.xiph.org/ for how to obtain a copy. " "$LINENO" 5 fi rm -f conf.oggtest cflags_save=$CFLAGS libs_save=$LIBS CFLAGS="$CFLAGS $OGG_CFLAGS" LIBS="$LIBS $OGG_LIBS" ac_fn_c_check_func "$LINENO" "oggpackB_read" "ac_cv_func_oggpackB_read" if test "x$ac_cv_func_oggpackB_read" = xyes then : else $as_nop as_fn_error $? "newer libogg version ($THEORA_LIBOGG_REQ_VERSION or later) required" "$LINENO" 5 fi CFLAGS=$cflags_save LIBS=$libs_save fi HAVE_VORBIS=no if test "x$HAVE_PKG_CONFIG" = "xyes" then pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for VORBIS" >&5 printf %s "checking for VORBIS... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$VORBIS_CFLAGS"; then pkg_cv_VORBIS_CFLAGS="$VORBIS_CFLAGS" else if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbis >= 1.0.1\""; } >&5 ($PKG_CONFIG --exists --print-errors "vorbis >= 1.0.1") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VORBIS_CFLAGS=`$PKG_CONFIG --cflags "vorbis >= 1.0.1" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$VORBIS_LIBS"; then pkg_cv_VORBIS_LIBS="$VORBIS_LIBS" else if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbis >= 1.0.1\""; } >&5 ($PKG_CONFIG --exists --print-errors "vorbis >= 1.0.1") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VORBIS_LIBS=`$PKG_CONFIG --libs "vorbis >= 1.0.1" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then VORBIS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "vorbis >= 1.0.1"` else VORBIS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "vorbis >= 1.0.1"` fi # Put the nasty error message in config.log where it belongs echo "$VORBIS_PKG_ERRORS" >&5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } HAVE_VORBIS=no elif test $pkg_failed = untried; then HAVE_VORBIS=no else VORBIS_CFLAGS=$pkg_cv_VORBIS_CFLAGS VORBIS_LIBS=$pkg_cv_VORBIS_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } HAVE_VORBIS=yes fi VORBISENC_LIBS="-lvorbisenc" fi if test "x$HAVE_VORBIS" = "xno" then # Check whether --with-vorbis was given. if test ${with_vorbis+y} then : withval=$with_vorbis; vorbis_prefix="$withval" else $as_nop vorbis_prefix="" fi # Check whether --with-vorbis-libraries was given. if test ${with_vorbis_libraries+y} then : withval=$with_vorbis_libraries; vorbis_libraries="$withval" else $as_nop vorbis_libraries="" fi # Check whether --with-vorbis-includes was given. if test ${with_vorbis_includes+y} then : withval=$with_vorbis_includes; vorbis_includes="$withval" else $as_nop vorbis_includes="" fi # Check whether --enable-vorbistest was given. if test ${enable_vorbistest+y} then : enableval=$enable_vorbistest; else $as_nop enable_vorbistest=yes fi if test "x$vorbis_libraries" != "x" ; then VORBIS_LIBS="-L$vorbis_libraries" elif test "x$vorbis_prefix" != "x" ; then VORBIS_LIBS="-L$vorbis_prefix/lib" elif test "x$prefix" != "xNONE"; then VORBIS_LIBS="-L$libdir" fi VORBIS_LIBS="$VORBIS_LIBS -lvorbis -lm" VORBISFILE_LIBS="-lvorbisfile" VORBISENC_LIBS="-lvorbisenc" if test "x$vorbis_includes" != "x" ; then VORBIS_CFLAGS="-I$vorbis_includes" elif test "x$vorbis_prefix" != "x" ; then VORBIS_CFLAGS="-I$vorbis_prefix/include" elif test "x$prefix" != "xNONE"; then VORBIS_CFLAGS="" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Vorbis" >&5 printf %s "checking for Vorbis... " >&6; } no_vorbis="" if test "x$enable_vorbistest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $VORBIS_CFLAGS $OGG_CFLAGS" LIBS="$LIBS $VORBIS_LIBS $VORBISENC_LIBS $OGG_LIBS" rm -f conf.vorbistest if test "$cross_compiling" = yes then : echo $ac_n "cross compiling; assumed OK... $ac_c" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #include int main () { vorbis_block vb; vorbis_dsp_state vd; vorbis_info vi; vorbis_info_init (&vi); vorbis_encode_init (&vi, 2, 44100, -1, 128000, -1); vorbis_analysis_init (&vd, &vi); vorbis_block_init (&vd, &vb); /* this function was added in 1.0rc3, so this is what we're testing for */ vorbis_bitrate_addblock (&vb); system("touch conf.vorbistest"); return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : else $as_nop no_vorbis=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi if test "x$no_vorbis" = "x" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } HAVE_VORBIS=yes else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if test -f conf.vorbistest ; then : else echo "*** Could not run Vorbis test program, checking why..." CFLAGS="$CFLAGS $VORBIS_CFLAGS" LIBS="$LIBS $VORBIS_LIBS $OGG_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding Vorbis or finding the wrong" echo "*** version of Vorbis. If it is not finding Vorbis, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else $as_nop echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occurred. This usually means Vorbis was incorrectly installed" echo "*** or that you have moved Vorbis since it was installed." fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi VORBIS_CFLAGS="" VORBIS_LIBS="" VORBISFILE_LIBS="" VORBISENC_LIBS="" HAVE_VORBIS=no fi rm -f conf.vorbistest fi HAVE_SDL=no if test "x$HAVE_PKG_CONFIG" = "xyes" then pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SDL" >&5 printf %s "checking for SDL... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$SDL_CFLAGS"; then pkg_cv_SDL_CFLAGS="$SDL_CFLAGS" else if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl\""; } >&5 ($PKG_CONFIG --exists --print-errors "sdl") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SDL_CFLAGS=`$PKG_CONFIG --cflags "sdl" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$SDL_LIBS"; then pkg_cv_SDL_LIBS="$SDL_LIBS" else if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl\""; } >&5 ($PKG_CONFIG --exists --print-errors "sdl") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SDL_LIBS=`$PKG_CONFIG --libs "sdl" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then SDL_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "sdl"` else SDL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "sdl"` fi # Put the nasty error message in config.log where it belongs echo "$SDL_PKG_ERRORS" >&5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } HAVE_SDL=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: *** Unable to find SDL -- Not compiling example players ***" >&5 printf "%s\n" "$as_me: WARNING: *** Unable to find SDL -- Not compiling example players ***" >&2;} elif test $pkg_failed = untried; then HAVE_SDL=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: *** Unable to find SDL -- Not compiling example players ***" >&5 printf "%s\n" "$as_me: WARNING: *** Unable to find SDL -- Not compiling example players ***" >&2;} else SDL_CFLAGS=$pkg_cv_SDL_CFLAGS SDL_LIBS=$pkg_cv_SDL_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } HAVE_SDL=yes fi fi HAVE_OSS=no for ac_header in sys/soundcard.h soundcard.h machine/soundcard.h do : as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF #define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF HAVE_OSS=yes break fi done if test x$HAVE_OSS != xyes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: OSS audio support not found -- not compiling player_example" >&5 printf "%s\n" "$as_me: WARNING: OSS audio support not found -- not compiling player_example" >&2;} fi OSS_LIBS= case "$host_os" in openbsd*) OSS_LIBS='-lossaudio' ;; esac HAVE_PNG=no if test "x$HAVE_PKG_CONFIG" = "xyes" then pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PNG" >&5 printf %s "checking for PNG... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$PNG_CFLAGS"; then pkg_cv_PNG_CFLAGS="$PNG_CFLAGS" else if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpng") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PNG_CFLAGS=`$PKG_CONFIG --cflags "libpng" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$PNG_LIBS"; then pkg_cv_PNG_LIBS="$PNG_LIBS" else if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpng") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PNG_LIBS=`$PKG_CONFIG --libs "libpng" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PNG_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libpng"` else PNG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libpng"` fi # Put the nasty error message in config.log where it belongs echo "$PNG_PKG_ERRORS" >&5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } HAVE_PNG=no elif test $pkg_failed = untried; then HAVE_PNG=no else PNG_CFLAGS=$pkg_cv_PNG_CFLAGS PNG_LIBS=$pkg_cv_PNG_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } HAVE_PNG=yes fi fi HAVE_TIFF=no TIFF_CFLAGS='' TIFF_LIBS='' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for TIFFReadRGBAImage in -ltiff" >&5 printf %s "checking for TIFFReadRGBAImage in -ltiff... " >&6; } if test ${ac_cv_lib_tiff_TIFFReadRGBAImage+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ltiff $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char TIFFReadRGBAImage (); int main (void) { return TIFFReadRGBAImage (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_tiff_TIFFReadRGBAImage=yes else $as_nop ac_cv_lib_tiff_TIFFReadRGBAImage=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tiff_TIFFReadRGBAImage" >&5 printf "%s\n" "$ac_cv_lib_tiff_TIFFReadRGBAImage" >&6; } if test "x$ac_cv_lib_tiff_TIFFReadRGBAImage" = xyes then : TIFF_LIBS='-ltiff' ac_fn_c_check_header_compile "$LINENO" "tiffio.h" "ac_cv_header_tiffio_h" "$ac_includes_default" if test "x$ac_cv_header_tiffio_h" = xyes then : HAVE_TIFF=yes fi fi HAVE_CAIRO=no # Check whether --enable-telemetry was given. if test ${enable_telemetry+y} then : enableval=$enable_telemetry; ac_enable_telemetry=$enableval else $as_nop ac_enable_telemetry=no fi if test "x${ac_enable_telemetry}" = xyes; then if test "x$HAVE_PKG_CONFIG" = "xyes" then pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5 printf %s "checking for CAIRO... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$CAIRO_CFLAGS"; then pkg_cv_CAIRO_CFLAGS="$CAIRO_CFLAGS" else if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo\""; } >&5 ($PKG_CONFIG --exists --print-errors "cairo") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$CAIRO_LIBS"; then pkg_cv_CAIRO_LIBS="$CAIRO_LIBS" else if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo\""; } >&5 ($PKG_CONFIG --exists --print-errors "cairo") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs "cairo" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "cairo"` else CAIRO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "cairo"` fi # Put the nasty error message in config.log where it belongs echo "$CAIRO_PKG_ERRORS" >&5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } HAVE_CAIRO=no elif test $pkg_failed = untried; then HAVE_CAIRO=no else CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS CAIRO_LIBS=$pkg_cv_CAIRO_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } HAVE_CAIRO=yes fi printf "%s\n" "#define HAVE_CAIRO /**/" >>confdefs.h fi if test x$HAVE_CAIRO != xyes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libcairo not found -- not compiling telemetry output support " >&5 printf "%s\n" "$as_me: WARNING: libcairo not found -- not compiling telemetry output support " >&2;} fi fi # Check whether --enable-mem-constraint was given. if test ${enable_mem_constraint+y} then : enableval=$enable_mem_constraint; ac_enable_mem_constraint=$enableval else $as_nop ac_enable_mem_constraint=no fi if test "x${ac_enable_mem_constraint}" = xyes; then printf "%s\n" "#define HAVE_MEMORY_CONSTRAINT /**/" >>confdefs.h fi ac_enable_encode=yes # Check whether --enable-encode was given. if test ${enable_encode+y} then : enableval=$enable_encode; ac_enable_encode=$enableval else $as_nop ac_enable_encode=yes fi if test "x${ac_enable_encode}" != xyes ; then printf "%s\n" "#define THEORA_DISABLE_ENCODE /**/" >>confdefs.h else if test x$HAVE_VORBIS = xyes; then BUILDABLE_EXAMPLES="$BUILDABLE_EXAMPLES encoder_example\$(EXEEXT)" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Vorbis missing, cannot build example encoder" >&5 printf "%s\n" "$as_me: Vorbis missing, cannot build example encoder" >&6;} fi fi if test "x${ac_enable_encode}" != xyes; then THEORA_DISABLE_ENCODE_TRUE= THEORA_DISABLE_ENCODE_FALSE='#' else THEORA_DISABLE_ENCODE_TRUE='#' THEORA_DISABLE_ENCODE_FALSE= fi ac_enable_examples=yes # Check whether --enable-examples was given. if test ${enable_examples+y} then : enableval=$enable_examples; ac_enable_examples=$enableval else $as_nop ac_enable_examples=yes fi if test "x${ac_enable_examples}" != xno; then THEORA_ENABLE_EXAMPLES_TRUE= THEORA_ENABLE_EXAMPLES_FALSE='#' else THEORA_ENABLE_EXAMPLES_TRUE='#' THEORA_ENABLE_EXAMPLES_FALSE= fi # The dump_video example requires either clock_gettime or ftime. # clock_gettime is used only if time.h defines CLOCK_REALTIME and the # function is available in the standard library; on platforms such as # glibc < 2.17 where -lrt or another library would be required, ftime # will be used. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_gettime" >&5 printf %s "checking for clock_gettime... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { struct timespec ts; return clock_gettime(CLOCK_REALTIME, &ts); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define OP_HAVE_CLOCK_GETTIME 1" >>confdefs.h else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing ftime" >&5 printf %s "checking for library containing ftime... " >&6; } if test ${ac_cv_search_ftime+y} then : printf %s "(cached) " >&6 else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char ftime (); int main (void) { return ftime (); ; return 0; } _ACEOF for ac_lib in '' compat do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_ftime=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_ftime+y} then : break fi done if test ${ac_cv_search_ftime+y} then : else $as_nop ac_cv_search_ftime=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ftime" >&5 printf "%s\n" "$ac_cv_search_ftime" >&6; } ac_res=$ac_cv_search_ftime if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long" if test "x$ac_cv_func_getopt_long" = xyes then : GETOPT_OBJS='' else $as_nop GETOPT_OBJS='getopt.$(OBJEXT) getopt1.$(OBJEXT)' fi if test x$HAVE_SDL = xyes -a x$HAVE_OSS = xyes -a x$HAVE_VORBIS = xyes; then BUILDABLE_EXAMPLES="$BUILDABLE_EXAMPLES player_example\$(EXEEXT)" fi if test x$HAVE_PNG = xyes; then BUILDABLE_EXAMPLES="$BUILDABLE_EXAMPLES png2theora\$(EXEEXT)" fi if test x$HAVE_TIFF = xyes; then BUILDABLE_EXAMPLES="$BUILDABLE_EXAMPLES tiff2theora\$(EXEEXT)" fi ac_config_files="$ac_config_files Makefile lib/Makefile lib/arm/armopts.s include/Makefile include/theora/Makefile examples/Makefile doc/Makefile doc/Doxyfile doc/spec/Makefile tests/Makefile m4/Makefile libtheora.spec theora.pc theora-uninstalled.pc theoradec.pc theoradec-uninstalled.pc theoraenc.pc theoraenc-uninstalled.pc" ac_config_headers="$ac_config_headers config.h" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_DOXYGEN_TRUE}" && test -z "${HAVE_DOXYGEN_FALSE}"; then as_fn_error $? "conditional \"HAVE_DOXYGEN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_SPEC_TRUE}" && test -z "${BUILD_SPEC_FALSE}"; then as_fn_error $? "conditional \"BUILD_SPEC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CPU_x86_64_TRUE}" && test -z "${CPU_x86_64_FALSE}"; then as_fn_error $? "conditional \"CPU_x86_64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CPU_x86_32_TRUE}" && test -z "${CPU_x86_32_FALSE}"; then as_fn_error $? "conditional \"CPU_x86_32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CPU_arm_TRUE}" && test -z "${CPU_arm_FALSE}"; then as_fn_error $? "conditional \"CPU_arm\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CPU_c64x_TRUE}" && test -z "${CPU_c64x_FALSE}"; then as_fn_error $? "conditional \"CPU_c64x\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${THEORA_DISABLE_ENCODE_TRUE}" && test -z "${THEORA_DISABLE_ENCODE_FALSE}"; then as_fn_error $? "conditional \"THEORA_DISABLE_ENCODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${THEORA_ENABLE_EXAMPLES_TRUE}" && test -z "${THEORA_ENABLE_EXAMPLES_FALSE}"; then as_fn_error $? "conditional \"THEORA_ENABLE_EXAMPLES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by libtheora $as_me 1.2.0, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ libtheora config.status 1.2.0 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in AS \ DLLTOOL \ OBJDUMP \ SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ FILECMD \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ sharedlib_from_linklib_cmd \ AR \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "lib/arm/armopts.s") CONFIG_FILES="$CONFIG_FILES lib/arm/armopts.s" ;; "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "include/theora/Makefile") CONFIG_FILES="$CONFIG_FILES include/theora/Makefile" ;; "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;; "doc/spec/Makefile") CONFIG_FILES="$CONFIG_FILES doc/spec/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; "libtheora.spec") CONFIG_FILES="$CONFIG_FILES libtheora.spec" ;; "theora.pc") CONFIG_FILES="$CONFIG_FILES theora.pc" ;; "theora-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES theora-uninstalled.pc" ;; "theoradec.pc") CONFIG_FILES="$CONFIG_FILES theoradec.pc" ;; "theoradec-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES theoradec-uninstalled.pc" ;; "theoraenc.pc") CONFIG_FILES="$CONFIG_FILES theoraenc.pc" ;; "theoraenc-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES theoraenc-uninstalled.pc" ;; "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Assembler program. AS=$lt_AS # DLL creation program. DLLTOOL=$lt_DLLTOOL # Object dumper program. OBJDUMP=$lt_OBJDUMP # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # A file(cmd) program that detects file types. FILECMD=$lt_FILECMD # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive (by configure). lt_ar_flags=$lt_ar_flags # Flags to create an archive. AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi EXP_VAR=LIBDIR FROM_VAR=${libdir} prefix_save=$prefix exec_prefix_save=$exec_prefix if test "x$prefix" = "xNONE"; then prefix="$ac_default_prefix" fi if test "x$exec_prefix" = "xNONE"; then exec_prefix=$prefix fi full_var="$FROM_VAR" while true; do new_full_var="`eval echo $full_var`" if test "x$new_full_var" = "x$full_var"; then break; fi full_var=$new_full_var done full_var=$new_full_var LIBDIR="$full_var" prefix=$prefix_save exec_prefix=$exec_prefix_save EXP_VAR=INCLUDEDIR FROM_VAR=${includedir} prefix_save=$prefix exec_prefix_save=$exec_prefix if test "x$prefix" = "xNONE"; then prefix="$ac_default_prefix" fi if test "x$exec_prefix" = "xNONE"; then exec_prefix=$prefix fi full_var="$FROM_VAR" while true; do new_full_var="`eval echo $full_var`" if test "x$new_full_var" = "x$full_var"; then break; fi full_var=$new_full_var done full_var=$new_full_var INCLUDEDIR="$full_var" prefix=$prefix_save exec_prefix=$exec_prefix_save EXP_VAR=BINDIR FROM_VAR=${bindir} prefix_save=$prefix exec_prefix_save=$exec_prefix if test "x$prefix" = "xNONE"; then prefix="$ac_default_prefix" fi if test "x$exec_prefix" = "xNONE"; then exec_prefix=$prefix fi full_var="$FROM_VAR" while true; do new_full_var="`eval echo $full_var`" if test "x$new_full_var" = "x$full_var"; then break; fi full_var=$new_full_var done full_var=$new_full_var BINDIR="$full_var" prefix=$prefix_save exec_prefix=$exec_prefix_save EXP_VAR=DOCDIR FROM_VAR=${docdir} prefix_save=$prefix exec_prefix_save=$exec_prefix if test "x$prefix" = "xNONE"; then prefix="$ac_default_prefix" fi if test "x$exec_prefix" = "xNONE"; then exec_prefix=$prefix fi full_var="$FROM_VAR" while true; do new_full_var="`eval echo $full_var`" if test "x$new_full_var" = "x$full_var"; then break; fi full_var=$new_full_var done full_var=$new_full_var DOCDIR="$full_var" prefix=$prefix_save exec_prefix=$exec_prefix_save if test $HAVE_DOXYGEN = "false"; then doc_build="no" else doc_build="yes" fi if test $BUILD_SPEC = "false"; then spec_build="no" else spec_build="yes" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ------------------------------------------------------------------------ $PACKAGE $VERSION: Automatic configuration OK. General configuration: Encoding support: ........... ${ac_enable_encode} Assembly optimization: ...... ${cpu_optimization} Debugging telemetry: ........ ${ac_enable_telemetry} Abort on huge files: ........ ${ac_enable_mem_constraint} Build example code: ......... ${ac_enable_examples} API Documentation: .......... ${doc_build} Format Documentation: ....... ${spec_build} Installation paths: libtheora: ................... ${LIBDIR} C header files: .............. ${INCLUDEDIR}/theora Documentation: ............... ${DOCDIR} Building: Type 'make' to compile $PACKAGE. Type 'make install' to install $PACKAGE. ${TESTS_INFO} Example programs will be built but not installed. ------------------------------------------------------------------------ " >&5 printf "%s\n" " ------------------------------------------------------------------------ $PACKAGE $VERSION: Automatic configuration OK. General configuration: Encoding support: ........... ${ac_enable_encode} Assembly optimization: ...... ${cpu_optimization} Debugging telemetry: ........ ${ac_enable_telemetry} Abort on huge files: ........ ${ac_enable_mem_constraint} Build example code: ......... ${ac_enable_examples} API Documentation: .......... ${doc_build} Format Documentation: ....... ${spec_build} Installation paths: libtheora: ................... ${LIBDIR} C header files: .............. ${INCLUDEDIR}/theora Documentation: ............... ${DOCDIR} Building: Type 'make' to compile $PACKAGE. Type 'make install' to install $PACKAGE. ${TESTS_INFO} Example programs will be built but not installed. ------------------------------------------------------------------------ " >&6; } libtheora-1.2.0/AUTHORS0000644000175000017500000000147414771706724013230 0ustar perepereMonty - Original VP3 port Timothy B. Terriberry Gregory Maxwell Ralph Giles Monty - Ongoing development Dan B. Miller - Pre alpha3 development Rudolf Marek Wim Tayman Dan Lenski Nils Pipenbrinck Monty - MMX optimized functions David Schleef - C64x port Aaron Colwell Thomas Vander Stichele Jan Gerber Conrad Parker Cristian Adam Sebastian Pippin Simon Hosie Brad Smith Petter Reinholdtsen Tristan Matthews - Bug fixes, enhancements, build systems. Mauricio Piacentini - Original win32 projects and example ports - VP3->Theora transcoder Silvia Pfeiffer - Figures for the spec Michael Smith Andre Pang calc Chris Cheney Brendan Cully Edward Hervey Adam Moss Colin Ward Jeremy C. Reed Arc Riley Rodolphe Ortalo - Bug fixes Robin Watts - ARM code optimisations and other Xiph.org contributors libtheora-1.2.0/config.guess0000755000175000017500000014051214175772605014474 0ustar perepere#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2022 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2022-01-09' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi # Just in case it came from the environment. GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver break fi done if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac } # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case $UNAME_SYSTEM in Linux|GNU|GNU/*) LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu #else #include /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl #endif #endif EOF cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` eval "$cc_set_libc" # Second heuristic to detect musl libc. if [ "$LIBC" = unknown ] && command -v ldd >/dev/null && ldd --version 2>&1 | grep -q ^musl; then LIBC=musl fi # If the system lacks a compiler, then just pick glibc. # We could probably try harder. if [ "$LIBC" = unknown ]; then LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` case $UNAME_MACHINE_ARCH in aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case $UNAME_VERSION in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. GUESS=$machine-${os}${release}${abi-} ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE ;; *:SecBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE ;; *:MidnightBSD:*:*) GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE ;; *:ekkoBSD:*:*) GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE ;; *:SolidBSD:*:*) GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE ;; *:OS108:*:*) GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE ;; macppc:MirBSD:*:*) GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE ;; *:MirBSD:*:*) GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE ;; *:Sortix:*:*) GUESS=$UNAME_MACHINE-unknown-sortix ;; *:Twizzler:*:*) GUESS=$UNAME_MACHINE-unknown-twizzler ;; *:Redox:*:*) GUESS=$UNAME_MACHINE-unknown-redox ;; mips:OSF1:*.*) GUESS=mips-dec-osf1 ;; alpha:OSF1:*:*) # Reset EXIT trap before exiting to avoid spurious non-zero exit code. trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` GUESS=$UNAME_MACHINE-dec-osf$OSF_REL ;; Amiga*:UNIX_System_V:4.0:*) GUESS=m68k-unknown-sysv4 ;; *:[Aa]miga[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-amigaos ;; *:[Mm]orph[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-morphos ;; *:OS/390:*:*) GUESS=i370-ibm-openedition ;; *:z/VM:*:*) GUESS=s390-ibm-zvmoe ;; *:OS400:*:*) GUESS=powerpc-ibm-os400 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) GUESS=arm-acorn-riscix$UNAME_RELEASE ;; arm*:riscos:*:*|arm*:RISCOS:*:*) GUESS=arm-unknown-riscos ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) GUESS=hppa1.1-hitachi-hiuxmpp ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. case `(/bin/universe) 2>/dev/null` in att) GUESS=pyramid-pyramid-sysv3 ;; *) GUESS=pyramid-pyramid-bsd ;; esac ;; NILE*:*:*:dcosx) GUESS=pyramid-pyramid-svr4 ;; DRS?6000:unix:4.0:6*) GUESS=sparc-icl-nx6 ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) GUESS=sparc-icl-nx7 ;; esac ;; s390x:SunOS:*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL ;; sun4H:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-hal-solaris2$SUN_REL ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris2$SUN_REL ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) GUESS=i386-pc-auroraux$UNAME_RELEASE ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$SUN_ARCH-pc-solaris2$SUN_REL ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris3$SUN_REL ;; sun4*:SunOS:*:*) case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` GUESS=sparc-sun-sunos$SUN_REL ;; sun3*:SunOS:*:*) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case `/bin/arch` in sun3) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac ;; aushp:SunOS:*:*) GUESS=sparc-auspex-sunos$UNAME_RELEASE ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) GUESS=m68k-milan-mint$UNAME_RELEASE ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) GUESS=m68k-hades-mint$UNAME_RELEASE ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) GUESS=m68k-unknown-mint$UNAME_RELEASE ;; m68k:machten:*:*) GUESS=m68k-apple-machten$UNAME_RELEASE ;; powerpc:machten:*:*) GUESS=powerpc-apple-machten$UNAME_RELEASE ;; RISC*:Mach:*:*) GUESS=mips-dec-mach_bsd4.3 ;; RISC*:ULTRIX:*:*) GUESS=mips-dec-ultrix$UNAME_RELEASE ;; VAX*:ULTRIX*:*:*) GUESS=vax-dec-ultrix$UNAME_RELEASE ;; 2020:CLIX:*:* | 2430:CLIX:*:*) GUESS=clipper-intergraph-clix$UNAME_RELEASE ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } GUESS=mips-mips-riscos$UNAME_RELEASE ;; Motorola:PowerMAX_OS:*:*) GUESS=powerpc-motorola-powermax ;; Motorola:*:4.3:PL8-*) GUESS=powerpc-harris-powermax ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) GUESS=powerpc-harris-powermax ;; Night_Hawk:Power_UNIX:*:*) GUESS=powerpc-harris-powerunix ;; m88k:CX/UX:7*:*) GUESS=m88k-harris-cxux7 ;; m88k:*:4*:R4*) GUESS=m88k-motorola-sysv4 ;; m88k:*:3*:R3*) GUESS=m88k-motorola-sysv3 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then GUESS=m88k-dg-dgux$UNAME_RELEASE else GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else GUESS=i586-dg-dgux$UNAME_RELEASE fi ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) GUESS=m88k-dolphin-sysv3 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 GUESS=m88k-motorola-sysv3 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) GUESS=m88k-tektronix-sysv3 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) GUESS=m68k-tektronix-bsd ;; *:IRIX*:*:*) IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` GUESS=mips-sgi-irix$IRIX_REL ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) GUESS=i386-ibm-aix ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then GUESS=$SYSTEM_NAME else GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then GUESS=rs6000-ibm-aix3.2.4 else GUESS=rs6000-ibm-aix3.2 fi ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$IBM_ARCH-ibm-aix$IBM_REV ;; *:AIX:*:*) GUESS=rs6000-ibm-aix ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) GUESS=romp-ibm-bsd4.4 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) GUESS=rs6000-bull-bosx ;; DPX/2?00:B.O.S.:*:*) GUESS=m68k-bull-sysv3 ;; 9000/[34]??:4.3bsd:1.*:*) GUESS=m68k-hp-bsd ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) GUESS=m68k-hp-bsd4.4 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if test "$HP_ARCH" = hppa2.0w then set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi GUESS=$HP_ARCH-hp-hpux$HPUX_REV ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` GUESS=ia64-hp-hpux$HPUX_REV ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } GUESS=unknown-hitachi-hiuxwe2 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) GUESS=hppa1.1-hp-bsd ;; 9000/8??:4.3bsd:*:*) GUESS=hppa1.0-hp-bsd ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) GUESS=hppa1.0-hp-mpeix ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) GUESS=hppa1.1-hp-osf ;; hp8??:OSF1:*:*) GUESS=hppa1.0-hp-osf ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then GUESS=$UNAME_MACHINE-unknown-osf1mk else GUESS=$UNAME_MACHINE-unknown-osf1 fi ;; parisc*:Lites*:*:*) GUESS=hppa1.1-hp-lites ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) GUESS=c1-convex-bsd ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) GUESS=c34-convex-bsd ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) GUESS=c38-convex-bsd ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) GUESS=c4-convex-bsd ;; CRAY*Y-MP:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=ymp-cray-unicos$CRAY_REL ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=t90-cray-unicos$CRAY_REL ;; CRAY*T3E:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=alphaev5-cray-unicosmk$CRAY_REL ;; CRAY*SV1:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=sv1-cray-unicos$CRAY_REL ;; *:UNICOS/mp:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=craynv-cray-unicosmp$CRAY_REL ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE ;; sparc*:BSD/OS:*:*) GUESS=sparc-unknown-bsdi$UNAME_RELEASE ;; *:BSD/OS:*:*) GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL ;; i*:CYGWIN*:*) GUESS=$UNAME_MACHINE-pc-cygwin ;; *:MINGW64*:*) GUESS=$UNAME_MACHINE-pc-mingw64 ;; *:MINGW*:*) GUESS=$UNAME_MACHINE-pc-mingw32 ;; *:MSYS*:*) GUESS=$UNAME_MACHINE-pc-msys ;; i*:PW*:*) GUESS=$UNAME_MACHINE-pc-pw32 ;; *:SerenityOS:*:*) GUESS=$UNAME_MACHINE-pc-serenity ;; *:Interix*:*) case $UNAME_MACHINE in x86) GUESS=i586-pc-interix$UNAME_RELEASE ;; authenticamd | genuineintel | EM64T) GUESS=x86_64-unknown-interix$UNAME_RELEASE ;; IA64) GUESS=ia64-unknown-interix$UNAME_RELEASE ;; esac ;; i*:UWIN*:*) GUESS=$UNAME_MACHINE-pc-uwin ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) GUESS=x86_64-pc-cygwin ;; prep*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=powerpcle-unknown-solaris2$SUN_REL ;; *:GNU:*:*) # the GNU system GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL ;; *:GNU/*:*:*) # other systems with GNU libc and userland GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ;; *:Minix:*:*) GUESS=$UNAME_MACHINE-unknown-minix ;; aarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi ;; avr32*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; cris:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; crisv32:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; e2k:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; frv:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; hexagon:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:Linux:*:*) GUESS=$UNAME_MACHINE-pc-linux-$LIBC ;; ia64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m32r*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m68*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef mips #undef mipsel #undef mips64 #undef mips64el #if ${IS_GLIBC} && defined(_ABI64) LIBCABI=gnuabi64 #else #if ${IS_GLIBC} && defined(_ABIN32) LIBCABI=gnuabin32 #else LIBCABI=${LIBC} #endif #endif #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa64r6 #else #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa32r6 #else #if defined(__mips64) CPU=mips64 #else CPU=mips #endif #endif #endif #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) MIPS_ENDIAN= #else MIPS_ENDIAN= #endif #endif EOF cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; openrisc*:Linux:*:*) GUESS=or1k-unknown-linux-$LIBC ;; or32:Linux:*:* | or1k*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; padre:Linux:*:*) GUESS=sparc-unknown-linux-$LIBC ;; parisc64:Linux:*:* | hppa64:Linux:*:*) GUESS=hppa64-unknown-linux-$LIBC ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; *) GUESS=hppa-unknown-linux-$LIBC ;; esac ;; ppc64:Linux:*:*) GUESS=powerpc64-unknown-linux-$LIBC ;; ppc:Linux:*:*) GUESS=powerpc-unknown-linux-$LIBC ;; ppc64le:Linux:*:*) GUESS=powerpc64le-unknown-linux-$LIBC ;; ppcle:Linux:*:*) GUESS=powerpcle-unknown-linux-$LIBC ;; riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; s390:Linux:*:* | s390x:Linux:*:*) GUESS=$UNAME_MACHINE-ibm-linux-$LIBC ;; sh64*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sh*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sparc:Linux:*:* | sparc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; tile*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; vax:Linux:*:*) GUESS=$UNAME_MACHINE-dec-linux-$LIBC ;; x86_64:Linux:*:*) set_cc_for_build LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_X32 >/dev/null then LIBCABI=${LIBC}x32 fi fi GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI ;; xtensa*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. GUESS=i386-sequent-sysv4 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. GUESS=$UNAME_MACHINE-pc-os2-emx ;; i*86:XTS-300:*:STOP) GUESS=$UNAME_MACHINE-unknown-stop ;; i*86:atheos:*:*) GUESS=$UNAME_MACHINE-unknown-atheos ;; i*86:syllable:*:*) GUESS=$UNAME_MACHINE-pc-syllable ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) GUESS=i386-unknown-lynxos$UNAME_RELEASE ;; i*86:*DOS:*:*) GUESS=$UNAME_MACHINE-pc-msdosdjgpp ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv32 fi ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. GUESS=i586-pc-msdosdjgpp ;; Intel:Mach:3*:*) GUESS=i386-pc-mach3 ;; paragon:*:*:*) GUESS=i860-intel-osf1 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi ;; mini*:CTIX:SYS*5:*) # "miniframe" GUESS=m68010-convergent-sysv ;; mc68k:UNIX:SYSTEM5:3.51m) GUESS=m68k-convergent-sysv ;; M680?0:D-NIX:5.3:*) GUESS=m68k-diab-dnix ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) GUESS=m68k-unknown-lynxos$UNAME_RELEASE ;; mc68030:UNIX_System_V:4.*:*) GUESS=m68k-atari-sysv4 ;; TSUNAMI:LynxOS:2.*:*) GUESS=sparc-unknown-lynxos$UNAME_RELEASE ;; rs6000:LynxOS:2.*:*) GUESS=rs6000-unknown-lynxos$UNAME_RELEASE ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) GUESS=powerpc-unknown-lynxos$UNAME_RELEASE ;; SM[BE]S:UNIX_SV:*:*) GUESS=mips-dde-sysv$UNAME_RELEASE ;; RM*:ReliantUNIX-*:*:*) GUESS=mips-sni-sysv4 ;; RM*:SINIX-*:*:*) GUESS=mips-sni-sysv4 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` GUESS=$UNAME_MACHINE-sni-sysv4 else GUESS=ns32k-sni-sysv fi ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says GUESS=i586-unisys-sysv4 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm GUESS=hppa1.1-stratus-sysv4 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. GUESS=i860-stratus-sysv4 ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. GUESS=$UNAME_MACHINE-stratus-vos ;; *:VOS:*:*) # From Paul.Green@stratus.com. GUESS=hppa1.1-stratus-vos ;; mc68*:A/UX:*:*) GUESS=m68k-apple-aux$UNAME_RELEASE ;; news*:NEWS-OS:6*:*) GUESS=mips-sony-newsos6 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then GUESS=mips-nec-sysv$UNAME_RELEASE else GUESS=mips-unknown-sysv$UNAME_RELEASE fi ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. GUESS=powerpc-be-beos ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. GUESS=powerpc-apple-beos ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. GUESS=i586-pc-beos ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. GUESS=i586-pc-haiku ;; x86_64:Haiku:*:*) GUESS=x86_64-unknown-haiku ;; SX-4:SUPER-UX:*:*) GUESS=sx4-nec-superux$UNAME_RELEASE ;; SX-5:SUPER-UX:*:*) GUESS=sx5-nec-superux$UNAME_RELEASE ;; SX-6:SUPER-UX:*:*) GUESS=sx6-nec-superux$UNAME_RELEASE ;; SX-7:SUPER-UX:*:*) GUESS=sx7-nec-superux$UNAME_RELEASE ;; SX-8:SUPER-UX:*:*) GUESS=sx8-nec-superux$UNAME_RELEASE ;; SX-8R:SUPER-UX:*:*) GUESS=sx8r-nec-superux$UNAME_RELEASE ;; SX-ACE:SUPER-UX:*:*) GUESS=sxace-nec-superux$UNAME_RELEASE ;; Power*:Rhapsody:*:*) GUESS=powerpc-apple-rhapsody$UNAME_RELEASE ;; *:Rhapsody:*:*) GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE ;; arm64:Darwin:*:*) GUESS=aarch64-apple-darwin$UNAME_RELEASE ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac if command -v xcode-select > /dev/null 2> /dev/null && \ ! xcode-select --print-path > /dev/null 2> /dev/null ; then # Avoid executing cc if there is no toolchain installed as # cc will be a stub that puts up a graphical alert # prompting the user to install developer tools. CC_FOR_BUILD=no_compiler_found else set_cc_for_build fi if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE ;; *:QNX:*:4*) GUESS=i386-pc-qnx ;; NEO-*:NONSTOP_KERNEL:*:*) GUESS=neo-tandem-nsk$UNAME_RELEASE ;; NSE-*:NONSTOP_KERNEL:*:*) GUESS=nse-tandem-nsk$UNAME_RELEASE ;; NSR-*:NONSTOP_KERNEL:*:*) GUESS=nsr-tandem-nsk$UNAME_RELEASE ;; NSV-*:NONSTOP_KERNEL:*:*) GUESS=nsv-tandem-nsk$UNAME_RELEASE ;; NSX-*:NONSTOP_KERNEL:*:*) GUESS=nsx-tandem-nsk$UNAME_RELEASE ;; *:NonStop-UX:*:*) GUESS=mips-compaq-nonstopux ;; BS2000:POSIX*:*:*) GUESS=bs2000-siemens-sysv ;; DS/*:UNIX_System_V:*:*) GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "${cputype-}" = 386; then UNAME_MACHINE=i386 elif test "x${cputype-}" != x; then UNAME_MACHINE=$cputype fi GUESS=$UNAME_MACHINE-unknown-plan9 ;; *:TOPS-10:*:*) GUESS=pdp10-unknown-tops10 ;; *:TENEX:*:*) GUESS=pdp10-unknown-tenex ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) GUESS=pdp10-dec-tops20 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) GUESS=pdp10-xkl-tops20 ;; *:TOPS-20:*:*) GUESS=pdp10-unknown-tops20 ;; *:ITS:*:*) GUESS=pdp10-unknown-its ;; SEI:*:*:SEIUX) GUESS=mips-sei-seiux$UNAME_RELEASE ;; *:DragonFly:*:*) DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case $UNAME_MACHINE in A*) GUESS=alpha-dec-vms ;; I*) GUESS=ia64-dec-vms ;; V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) GUESS=i386-pc-xenix ;; i*86:skyos:*:*) SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL ;; i*86:rdos:*:*) GUESS=$UNAME_MACHINE-pc-rdos ;; i*86:Fiwix:*:*) GUESS=$UNAME_MACHINE-pc-fiwix ;; *:AROS:*:*) GUESS=$UNAME_MACHINE-unknown-aros ;; x86_64:VMkernel:*:*) GUESS=$UNAME_MACHINE-unknown-esx ;; amd64:Isilon\ OneFS:*:*) GUESS=x86_64-unknown-onefs ;; *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; esac # Do we have a guess based on uname results? if test "x$GUESS" != x; then echo "$GUESS" exit fi # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" < #include #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #include #if defined(_SIZE_T_) || defined(SIGLOST) #include #endif #endif #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) #if !defined (ultrix) #include #if defined (BSD) #if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); #else #if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); #else printf ("vax-dec-bsd\n"); exit (0); #endif #endif #else printf ("vax-dec-bsd\n"); exit (0); #endif #else #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname un; uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname *un; uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF fi exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: libtheora-1.2.0/ltmain.sh0000755000175000017500000121240114605317530013763 0ustar perepere#! /usr/bin/env sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2019-02-19.15 # libtool (GNU libtool) 2.4.7 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2019, 2021-2022 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.7 Debian-2.4.7-7~deb12u1" package_revision=2.4.7 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2019-02-19.15; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2004-2019, 2021 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # These NLS vars are set unconditionally (bootstrap issue #24). Unset those # in case the environment reset is needed later and the $save_* variant is not # defined (see the code above). LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # func_unset VAR # -------------- # Portably unset VAR. # In some shells, an 'unset VAR' statement leaves a non-zero return # status if VAR is already unset, which might be problematic if the # statement is used at the end of a function (thus poisoning its return # value) or when 'set -e' is active (causing even a spurious abort of # the script in this case). func_unset () { { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } } # Make sure CDPATH doesn't cause `cd` commands to output the target dir. func_unset CDPATH # Make sure ${,E,F}GREP behave sanely. func_unset GREP_OPTIONS ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin" rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin" GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" # require_check_ifs_backslash # --------------------------- # Check if we can use backslash as IFS='\' separator, and set # $check_ifs_backshlash_broken to ':' or 'false'. require_check_ifs_backslash=func_require_check_ifs_backslash func_require_check_ifs_backslash () { _G_save_IFS=$IFS IFS='\' _G_check_ifs_backshlash='a\\b' for _G_i in $_G_check_ifs_backshlash do case $_G_i in a) check_ifs_backshlash_broken=false ;; '') break ;; *) check_ifs_backshlash_broken=: break ;; esac done IFS=$_G_save_IFS require_check_ifs_backslash=: } ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. if test -z "$_G_HAVE_PLUSEQ_OP" && \ __PLUSEQ_TEST="a" && \ __PLUSEQ_TEST+=" b" 2>/dev/null && \ test "a b" = "$__PLUSEQ_TEST"; then _G_HAVE_PLUSEQ_OP=yes fi if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_arg pretty "$2" eval "$1+=\\ \$func_quote_arg_result" }' else func_append_quoted () { $debug_cmd func_quote_arg pretty "$2" eval "$1=\$$1\\ \$func_quote_arg_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_portable EVAL ARG # ---------------------------- # Internal function to portably implement func_quote_arg. Note that we still # keep attention to performance here so we as much as possible try to avoid # calling sed binary (so far O(N) complexity as long as func_append is O(1)). func_quote_portable () { $debug_cmd $require_check_ifs_backslash func_quote_portable_result=$2 # one-time-loop (easy break) while true do if $1; then func_quote_portable_result=`$ECHO "$2" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` break fi # Quote for eval. case $func_quote_portable_result in *[\\\`\"\$]*) # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string # contains the shell wildcard characters. case $check_ifs_backshlash_broken$func_quote_portable_result in :*|*[\[\*\?]*) func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ | $SED "$sed_quote_subst"` break ;; esac func_quote_portable_old_IFS=$IFS for _G_char in '\' '`' '"' '$' do # STATE($1) PREV($2) SEPARATOR($3) set start "" "" func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy IFS=$_G_char for _G_part in $func_quote_portable_result do case $1 in quote) func_append func_quote_portable_result "$3$2" set quote "$_G_part" "\\$_G_char" ;; start) set first "" "" func_quote_portable_result= ;; first) set quote "$_G_part" "" ;; esac done done IFS=$func_quote_portable_old_IFS ;; *) ;; esac break done func_quote_portable_unquoted_result=$func_quote_portable_result case $func_quote_portable_result in # double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # many bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_portable_result=\"$func_quote_portable_result\" ;; esac } # func_quotefast_eval ARG # ----------------------- # Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', # but optimized for speed. Result is stored in $func_quotefast_eval. if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then printf -v _GL_test_printf_tilde %q '~' if test '\~' = "$_GL_test_printf_tilde"; then func_quotefast_eval () { printf -v func_quotefast_eval_result %q "$1" } else # Broken older Bash implementations. Make those faster too if possible. func_quotefast_eval () { case $1 in '~'*) func_quote_portable false "$1" func_quotefast_eval_result=$func_quote_portable_result ;; *) printf -v func_quotefast_eval_result %q "$1" ;; esac } fi else func_quotefast_eval () { func_quote_portable false "$1" func_quotefast_eval_result=$func_quote_portable_result } fi # func_quote_arg MODEs ARG # ------------------------ # Quote one ARG to be evaled later. MODEs argument may contain zero or more # specifiers listed below separated by ',' character. This function returns two # values: # i) func_quote_arg_result # double-quoted (when needed), suitable for a subsequent eval # ii) func_quote_arg_unquoted_result # has all characters that are still active within double # quotes backslashified. Available only if 'unquoted' is specified. # # Available modes: # ---------------- # 'eval' (default) # - escape shell special characters # 'expand' # - the same as 'eval'; but do not quote variable references # 'pretty' # - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might # be used later in func_quote to get output like: 'echo "a b"' instead # of 'echo a\ b'. This is slower than default on some shells. # 'unquoted' # - produce also $func_quote_arg_unquoted_result which does not contain # wrapping double-quotes. # # Examples for 'func_quote_arg pretty,unquoted string': # # string | *_result | *_unquoted_result # ------------+-----------------------+------------------- # " | \" | \" # a b | "a b" | a b # "a b" | "\"a b\"" | \"a b\" # * | "*" | * # z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" # # Examples for 'func_quote_arg pretty,unquoted,expand string': # # string | *_result | *_unquoted_result # --------------+---------------------+-------------------- # z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" func_quote_arg () { _G_quote_expand=false case ,$1, in *,expand,*) _G_quote_expand=: ;; esac case ,$1, in *,pretty,*|*,expand,*|*,unquoted,*) func_quote_portable $_G_quote_expand "$2" func_quote_arg_result=$func_quote_portable_result func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result ;; *) # Faster quote-for-eval for some shells. func_quotefast_eval "$2" func_quote_arg_result=$func_quotefast_eval_result ;; esac } # func_quote MODEs ARGs... # ------------------------ # Quote all ARGs to be evaled later and join them into single command. See # func_quote_arg's description for more info. func_quote () { $debug_cmd _G_func_quote_mode=$1 ; shift func_quote_result= while test 0 -lt $#; do func_quote_arg "$_G_func_quote_mode" "$1" if test -n "$func_quote_result"; then func_append func_quote_result " $func_quote_arg_result" else func_append func_quote_result "$func_quote_arg_result" fi shift done } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_arg pretty,expand "$_G_cmd" eval "func_notquiet $func_quote_arg_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_arg expand,pretty "$_G_cmd" eval "func_echo $func_quote_arg_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2010-2019, 2021 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # # Set a version string for this script. scriptversion=2019-02-19.15; # UTC ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# Copyright'. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug in processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # in the main code. A hook is just a list of function names that can be # run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of hook functions to be called by # FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_propagate_result FUNC_NAME_A FUNC_NAME_B # --------------------------------------------- # If the *_result variable of FUNC_NAME_A _is set_, assign its value to # *_result variable of FUNC_NAME_B. func_propagate_result () { $debug_cmd func_propagate_result_result=: if eval "test \"\${${1}_result+set}\" = set" then eval "${2}_result=\$${1}_result" else func_propagate_result_result=false fi } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It's assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd _G_rc_run_hooks=false case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook functions." ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do func_unset "${_G_hook}_result" eval $_G_hook '${1+"$@"}' func_propagate_result $_G_hook func_run_hooks if $func_propagate_result_result; then eval set dummy "$func_run_hooks_result"; shift fi done } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list from your hook function. You may remove # or edit any options that you action, and then pass back the remaining # unprocessed options in '_result', escaped # suitably for 'eval'. # # The '_result' variable is automatically unset # before your hook gets called; for best performance, only set the # *_result variable when necessary (i.e. don't call the 'func_quote' # function unnecessarily because it can be an expensive operation on some # machines). # # Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # No change in '$@' (ignored completely by this hook). Leave # # my_options_prep_result variable intact. # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # args_changed=false # # # Note that, for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: # args_changed=: # ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # args_changed=: # ;; # *) # Make sure the first unrecognised option "$_G_opt" # # is added back to "$@" in case we need it later, # # if $args_changed was set to 'true'. # set dummy "$_G_opt" ${1+"$@"}; shift; break ;; # esac # done # # # Only call 'func_quote' here if we processed at least one argument. # if $args_changed; then # func_quote eval ${1+"$@"} # my_silent_option_result=$func_quote_result # fi # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # } # func_add_hook func_validate_options my_option_validation # # You'll also need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options_finish [ARG]... # ---------------------------- # Finishing the option parse loop (call 'func_options' hooks ATM). func_options_finish () { $debug_cmd func_run_hooks func_options ${1+"$@"} func_propagate_result func_run_hooks func_options_finish } # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd _G_options_quoted=false for my_func in options_prep parse_options validate_options options_finish do func_unset func_${my_func}_result func_unset func_run_hooks_result eval func_$my_func '${1+"$@"}' func_propagate_result func_$my_func func_options if $func_propagate_result_result; then eval set dummy "$func_options_result"; shift _G_options_quoted=: fi done $_G_options_quoted || { # As we (func_options) are top-level options-parser function and # nobody quoted "$@" for us yet, we need to do it explicitly for # caller. func_quote eval ${1+"$@"} func_options_result=$func_quote_result } } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propagate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} func_propagate_result func_run_hooks func_options_prep } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd _G_parse_options_requote=false # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} func_propagate_result func_run_hooks func_parse_options if $func_propagate_result_result; then eval set dummy "$func_parse_options_result"; shift # Even though we may have changed "$@", we passed the "$@" array # down into the hook and it quoted it for us (because we are in # this if-branch). No need to quote it again. _G_parse_options_requote=false fi # Break out of the loop if we already parsed every option. test $# -gt 0 || break # We expect that one of the options parsed in this function matches # and thus we remove _G_opt from "$@" and need to re-quote. _G_match_parse_options=: _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" >&2 $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) if test $# = 0 && func_missing_arg $_G_opt; then _G_parse_options_requote=: break fi case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) _G_parse_options_requote=: ; break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift _G_match_parse_options=false break ;; esac if $_G_match_parse_options; then _G_parse_options_requote=: fi done if $_G_parse_options_requote; then # save modified positional parameters for caller func_quote eval ${1+"$@"} func_parse_options_result=$func_quote_result fi } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} func_propagate_result func_run_hooks func_validate_options # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables # after splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} if test "x$func_split_equals_lhs" = "x$1"; then func_split_equals_rhs= fi }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs=" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. # The version message is extracted from the calling file's header # comments, with leading '# ' stripped: # 1. First display the progname and version # 2. Followed by the header comment line matching /^# Written by / # 3. Then a blank line followed by the first following line matching # /^# Copyright / # 4. Immediately followed by any lines between the previous matches, # except lines preceding the intervening completely blank line. # For example, see the header comments of this file. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /^# Written by /!b s|^# ||; p; n :fwd2blnk /./ { n b fwd2blnk } p; n :holdwrnt s|^# || s|^# *$|| /^Copyright /!{ /./H n b holdwrnt } s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| G s|\(\n\)\n*|\1|g p; q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.7' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname $scriptversion Debian-2.4.7-7~deb12u1 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= _G_rc_lt_options_prep=: _G_rc_lt_options_prep=: # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; *) _G_rc_lt_options_prep=false ;; esac if $_G_rc_lt_options_prep; then # Pass back the list of options. func_quote eval ${1+"$@"} libtool_options_prep_result=$func_quote_result fi } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd _G_rc_lt_parse_options=false # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_match_lt_parse_options=: _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"} ; shift _G_match_lt_parse_options=false break ;; esac $_G_match_lt_parse_options && _G_rc_lt_parse_options=: done if $_G_rc_lt_parse_options; then # save modified positional parameters for caller func_quote eval ${1+"$@"} libtool_parse_options_result=$func_quote_result fi } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote eval ${1+"$@"} libtool_validate_options_result=$func_quote_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_arg pretty "$libobj" test "X$libobj" != "X$func_quote_arg_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_arg pretty "$srcfile" qsrcfile=$func_quote_arg_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG -Xcompiler FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wa,FLAG -Xassembler FLAG pass linker-specific FLAG directly to the assembler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_arg pretty "$nonopt" install_prog="$func_quote_arg_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_arg pretty "$arg" func_append install_prog "$func_quote_arg_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_arg pretty "$arg" func_append install_prog " $func_quote_arg_result" if test -n "$arg2"; then func_quote_arg pretty "$arg2" fi func_append install_shared_prog " $func_quote_arg_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_arg pretty "$install_override_mode" func_append install_shared_prog " -m $func_quote_arg_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_arg expand,pretty "$relink_command" eval "func_echo $func_quote_arg_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" func_quote_arg pretty "$ECHO" qECHO=$func_quote_arg_result $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=$qECHO fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_arg pretty,unquoted "$arg" qarg=$func_quote_arg_unquoted_result func_append libtool_args " $func_quote_arg_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xassembler) func_append compiler_flags " -Xassembler $qarg" prev= func_append compile_command " -Xassembler $qarg" func_append finalize_command " -Xassembler $qarg" continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; # Solaris ld rejects as of 11.4. Refer to Oracle bug 22985199. -pthread) case $host in *solaris2*) ;; *) case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac ;; esac continue ;; -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_arg pretty "$flag" func_append arg " $func_quote_arg_result" func_append compiler_flags " $func_quote_arg_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_arg pretty "$flag" func_append arg " $wl$func_quote_arg_result" func_append compiler_flags " $wl$func_quote_arg_result" func_append linker_flags " $func_quote_arg_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xassembler) prev=xassembler continue ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_arg pretty "$arg" arg=$func_quote_arg_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer # -fuse-ld=* Linker select flags for GCC # -static-* direct GCC to link specific libraries statically # -fcilkplus Cilk Plus language extension features for C/C++ # -Wa,* Pass flags directly to the assembler -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus|-Wa,*) func_quote_arg pretty "$arg" arg=$func_quote_arg_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_arg pretty "$arg" arg=$func_quote_arg_result fi ;; # Some other compiler flag. -* | +*) func_quote_arg pretty "$arg" arg=$func_quote_arg_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_arg pretty "$arg" arg=$func_quote_arg_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type '$version_type'" ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf | midnightbsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_arg expand,pretty "$cmd" eval "func_echo $func_quote_arg_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_arg expand,pretty "$cmd" eval "func_echo $func_quote_arg_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_arg pretty "$var_value" relink_command="$var=$func_quote_arg_result; export $var; $relink_command" fi done func_quote eval cd "`pwd`" func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)" relink_command=$func_quote_arg_unquoted_result fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_arg pretty,unquoted "$var_value" relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command" fi done # Quote the link command for shipping. func_quote eval cd "`pwd`" relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" func_quote_arg pretty,unquoted "$relink_command" relink_command=$func_quote_arg_unquoted_result if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: libtheora-1.2.0/COPYING0000644000175000017500000000267614771706724013220 0ustar perepereCopyright (C) 2002-2009 Xiph.org Foundation Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the Xiph.org Foundation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. libtheora-1.2.0/README.md0000644000175000017500000001223014771706724013427 0ustar perepere# Xiph.org Foundation's libtheora ### What is Theora? Theora was Xiph.Org's first publicly released video codec, intended for use within the Foundation's Ogg multimedia streaming system. Theora is derived directly from On2's VP3 codec, adds new features while allowing it a longer useful lifetime. The 1.0 release decoder supported all the new features, but the encoder is nearly identical to the VP3 code. The 1.1 release, codenamed Thusnelda, featured a completely rewritten encoder, offering better performance and compression, and making more complete use of the format's feature set. The 1.2 release, codenamed Ptalarbvorm, features significant additional improvements in compression and performance. Files produced by newer encoders can be decoded by earlier releases. ### Where is Theora? Theora's main site is https://www.theora.org. Releases of Theora and related libraries can be found on the [download page](https://www.theora.org/downloads/) or the [main Xiph.Org site](https://xiph.org/downloads/). Development source is kept at https://gitlab.xiph.org/xiph/theora. ## Getting started with the code ### What do I need to build the source? Requirements summary: For libtheora: * libogg 1.3.4 or newer. For example encoder: * as above, * libvorbis and libvorbisenc 1.0.1 or newer. (libvorbis 1.3.1 or newer for 5.1 audio) For creating a source distribution package: * as above, * Doxygen to build the API documentation, * pdflatex and fig2dev to build the format specification (transfig package in Ubuntu). For the player only: * as above, * SDL (Simple Direct media Layer) libraries and headers, * OSS audio driver and development headers. The provided build system is the GNU automake/autoconf system, and the main library, libtheora, should already build smoothly on any system. Failure of libtheora to build on a GNU-enabled system is considered a bug; please report problems to theora-dev@xiph.org, https://lists.xiph.org/mailman/listinfo/theora-dev or preferably to https://gitlab.xiph.org/xiph/theora. Windows build support is included in the win32 directory. Project files for Apple XCode are included in the macosx directory. There is also a more limited scons build. The mailing list theora@xiph.org has been created for discussing use of the theora video codec, https://lists.xiph.org/mailman/listinfo/theora. ### How do I use the sample encoder? The sample encoder takes raw video in YUV4MPEG2 format, as used by lavtools, mjpeg-tools and other packages. The encoder expects audio, if any, in a separate wave WAV file. Try 'encoder_example -h' for a complete list of options. An easy way to get raw video and audio files is to use MPlayer as an export utility. The options " -ao pcm -vo yuv4mpeg " will export a wav file named audiodump.wav and a YUV video file in the correct format for encoder_example as stream.yuv. Be careful when exporting video alone; MPlayer may drop frames to 'keep up' with the audio timer. The example encoder can't properly synchronize input audio and video file that aren't in sync to begin with. The encoder will also take video or audio on stdin if '-' is specified as the input file name. There is also a 'png2theora' example which accepts a set of image files in that format. ### How do I use the sample player? The sample player takes an Ogg file on standard in; the file may be audio alone, video alone or video with audio. ### What other tools are available? The programs in the examples directory are intended as tutorial source for developers using the library. As such they sacrifice features and robustness in the interests of comprehension and should not be considered serious applications. If you're wanting to just use theora, consider the programs linked from https://www.theora.org/. There is playback support in a number of common free players, and plugins for major media frameworks. Jan Gerber's ffmpeg2theora is an excellent encoding front end. ## Troubleshooting the build process ### Compile error, such as: encoder_internal.h:664: parse error before `ogg_uint16_t` This means you have version of libogg prior to 1.3.4. A *complete* new Ogg install, libs and headers is needed. Also be sure that there aren't multiple copies of Ogg installed in /usr and /usr/local; an older one might be first on the search path for libs and headers. ### Link error, such as: undefined reference to `oggpackB_stream` See above; you need libogg 1.3.4 or later. ### Link error, such as: undefined reference to `vorbis_granule_time` You need libvorbis and libvorbisenc from the 1.0.1 release or later. ### Link error, such as: /usr/lib/libSDL.a(SDL_esdaudio.lo): In function `ESD_OpenAudio`: SDL_esdaudio.lo(.text+0x25d): undefined reference to `esd_play_stream` Be sure to use an SDL that's built to work with OSS. If you use an SDL that is also built with ESD and/or ALSA support, it will try to suck in all those extra libraries at link time too. That will only work if the extra libraries are also installed. ### Link warning, such as: libtool: link: warning: library `/usr/lib/libogg.la` was moved. libtool: link: warning: library `/usr/lib/libogg.la` was moved. Re-run theora/autogen.sh after an Ogg or Vorbis rebuild/reinstall libtheora-1.2.0/config.sub0000755000175000017500000010511614175772605014140 0ustar perepere#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2022 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2022-01-03' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Split fields of configuration type # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 basic_os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova*) basic_machine=$field1 basic_os=$maybe_os ;; android-linux) basic_machine=$field1-unknown basic_os=linux-android ;; *) basic_machine=$field1-$field2 basic_os=$field3 ;; esac ;; *-*) # A lone config we happen to match not fitting any pattern case $field1-$field2 in decstation-3100) basic_machine=mips-dec basic_os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 basic_os=$field2 ;; zephyr*) basic_machine=$field1-unknown basic_os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ | convergent* | ncr* | news | 32* | 3600* | 3100* \ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ | ultra | tti* | harris | dolphin | highlevel | gould \ | cbm | ns | masscomp | apple | axis | knuth | cray \ | microblaze* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 basic_os= ;; *) basic_machine=$field1 basic_os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc basic_os=bsd ;; a29khif) basic_machine=a29k-amd basic_os=udi ;; adobe68k) basic_machine=m68010-adobe basic_os=scout ;; alliant) basic_machine=fx80-alliant basic_os= ;; altos | altos3068) basic_machine=m68k-altos basic_os= ;; am29k) basic_machine=a29k-none basic_os=bsd ;; amdahl) basic_machine=580-amdahl basic_os=sysv ;; amiga) basic_machine=m68k-unknown basic_os= ;; amigaos | amigados) basic_machine=m68k-unknown basic_os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown basic_os=sysv4 ;; apollo68) basic_machine=m68k-apollo basic_os=sysv ;; apollo68bsd) basic_machine=m68k-apollo basic_os=bsd ;; aros) basic_machine=i386-pc basic_os=aros ;; aux) basic_machine=m68k-apple basic_os=aux ;; balance) basic_machine=ns32k-sequent basic_os=dynix ;; blackfin) basic_machine=bfin-unknown basic_os=linux ;; cegcc) basic_machine=arm-unknown basic_os=cegcc ;; convex-c1) basic_machine=c1-convex basic_os=bsd ;; convex-c2) basic_machine=c2-convex basic_os=bsd ;; convex-c32) basic_machine=c32-convex basic_os=bsd ;; convex-c34) basic_machine=c34-convex basic_os=bsd ;; convex-c38) basic_machine=c38-convex basic_os=bsd ;; cray) basic_machine=j90-cray basic_os=unicos ;; crds | unos) basic_machine=m68k-crds basic_os= ;; da30) basic_machine=m68k-da30 basic_os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec basic_os= ;; delta88) basic_machine=m88k-motorola basic_os=sysv3 ;; dicos) basic_machine=i686-pc basic_os=dicos ;; djgpp) basic_machine=i586-pc basic_os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd basic_os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson basic_os=ose ;; gmicro) basic_machine=tron-gmicro basic_os=sysv ;; go32) basic_machine=i386-pc basic_os=go32 ;; h8300hms) basic_machine=h8300-hitachi basic_os=hms ;; h8300xray) basic_machine=h8300-hitachi basic_os=xray ;; h8500hms) basic_machine=h8500-hitachi basic_os=hms ;; harris) basic_machine=m88k-harris basic_os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp basic_os=hpux ;; hp300bsd) basic_machine=m68k-hp basic_os=bsd ;; hppaosf) basic_machine=hppa1.1-hp basic_os=osf ;; hppro) basic_machine=hppa1.1-hp basic_os=proelf ;; i386mach) basic_machine=i386-mach basic_os=mach ;; isi68 | isi) basic_machine=m68k-isi basic_os=sysv ;; m68knommu) basic_machine=m68k-unknown basic_os=linux ;; magnum | m3230) basic_machine=mips-mips basic_os=sysv ;; merlin) basic_machine=ns32k-utek basic_os=sysv ;; mingw64) basic_machine=x86_64-pc basic_os=mingw64 ;; mingw32) basic_machine=i686-pc basic_os=mingw32 ;; mingw32ce) basic_machine=arm-unknown basic_os=mingw32ce ;; monitor) basic_machine=m68k-rom68k basic_os=coff ;; morphos) basic_machine=powerpc-unknown basic_os=morphos ;; moxiebox) basic_machine=moxie-unknown basic_os=moxiebox ;; msdos) basic_machine=i386-pc basic_os=msdos ;; msys) basic_machine=i686-pc basic_os=msys ;; mvs) basic_machine=i370-ibm basic_os=mvs ;; nacl) basic_machine=le32-unknown basic_os=nacl ;; ncr3000) basic_machine=i486-ncr basic_os=sysv4 ;; netbsd386) basic_machine=i386-pc basic_os=netbsd ;; netwinder) basic_machine=armv4l-rebel basic_os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony basic_os=newsos ;; news1000) basic_machine=m68030-sony basic_os=newsos ;; necv70) basic_machine=v70-nec basic_os=sysv ;; nh3000) basic_machine=m68k-harris basic_os=cxux ;; nh[45]000) basic_machine=m88k-harris basic_os=cxux ;; nindy960) basic_machine=i960-intel basic_os=nindy ;; mon960) basic_machine=i960-intel basic_os=mon960 ;; nonstopux) basic_machine=mips-compaq basic_os=nonstopux ;; os400) basic_machine=powerpc-ibm basic_os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson basic_os=ose ;; os68k) basic_machine=m68k-none basic_os=os68k ;; paragon) basic_machine=i860-intel basic_os=osf ;; parisc) basic_machine=hppa-unknown basic_os=linux ;; psp) basic_machine=mipsallegrexel-sony basic_os=psp ;; pw32) basic_machine=i586-unknown basic_os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc basic_os=rdos ;; rdos32) basic_machine=i386-pc basic_os=rdos ;; rom68k) basic_machine=m68k-rom68k basic_os=coff ;; sa29200) basic_machine=a29k-amd basic_os=udi ;; sei) basic_machine=mips-sei basic_os=seiux ;; sequent) basic_machine=i386-sequent basic_os= ;; sps7) basic_machine=m68k-bull basic_os=sysv2 ;; st2000) basic_machine=m68k-tandem basic_os= ;; stratus) basic_machine=i860-stratus basic_os=sysv4 ;; sun2) basic_machine=m68000-sun basic_os= ;; sun2os3) basic_machine=m68000-sun basic_os=sunos3 ;; sun2os4) basic_machine=m68000-sun basic_os=sunos4 ;; sun3) basic_machine=m68k-sun basic_os= ;; sun3os3) basic_machine=m68k-sun basic_os=sunos3 ;; sun3os4) basic_machine=m68k-sun basic_os=sunos4 ;; sun4) basic_machine=sparc-sun basic_os= ;; sun4os3) basic_machine=sparc-sun basic_os=sunos3 ;; sun4os4) basic_machine=sparc-sun basic_os=sunos4 ;; sun4sol2) basic_machine=sparc-sun basic_os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun basic_os= ;; sv1) basic_machine=sv1-cray basic_os=unicos ;; symmetry) basic_machine=i386-sequent basic_os=dynix ;; t3e) basic_machine=alphaev5-cray basic_os=unicos ;; t90) basic_machine=t90-cray basic_os=unicos ;; toad1) basic_machine=pdp10-xkl basic_os=tops20 ;; tpf) basic_machine=s390x-ibm basic_os=tpf ;; udi29k) basic_machine=a29k-amd basic_os=udi ;; ultra3) basic_machine=a29k-nyu basic_os=sym1 ;; v810 | necv810) basic_machine=v810-nec basic_os=none ;; vaxv) basic_machine=vax-dec basic_os=sysv ;; vms) basic_machine=vax-dec basic_os=vms ;; vsta) basic_machine=i386-pc basic_os=vsta ;; vxworks960) basic_machine=i960-wrs basic_os=vxworks ;; vxworks68) basic_machine=m68k-wrs basic_os=vxworks ;; vxworks29k) basic_machine=a29k-wrs basic_os=vxworks ;; xbox) basic_machine=i686-pc basic_os=mingw32 ;; ymp) basic_machine=ymp-cray basic_os=unicos ;; *) basic_machine=$1 basic_os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm basic_os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec basic_os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec basic_os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) cpu=m68k vendor=motorola ;; dpx2*) cpu=m68k vendor=bull basic_os=sysv3 ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi basic_os=${basic_os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray basic_os=${basic_os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $basic_os in irix*) ;; *) basic_os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari basic_os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony basic_os=newsos ;; next | m*-next) cpu=m68k vendor=next case $basic_os in openstep*) ;; nextstep*) ;; ns2*) basic_os=nextstep2 ;; *) basic_os=nextstep3 ;; esac ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki basic_os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde basic_os=${basic_os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs basic_os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond basic_os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if test x$basic_os != x then # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. case $basic_os in gnu/linux*) kernel=linux os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` ;; os2-emx) kernel=os2 os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read kernel os <&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. case $kernel-$os in linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ | linux-musl* | linux-relibc* | linux-uclibc* ) ;; uclinux-uclibc* ) ;; -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 exit 1 ;; kfreebsd*-gnu* | kopensolaris*-gnu*) ;; vxworks-simlinux | vxworks-simwindows | vxworks-spe) ;; nto-qnx*) ;; os2-emx) ;; *-eabi* | *-gnueabi*) ;; -*) # Blank kernel with real OS is always fine. ;; *-*) echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 exit 1 ;; esac # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $cpu-$os in *-riscix*) vendor=acorn ;; *-sunos*) vendor=sun ;; *-cnk* | *-aix*) vendor=ibm ;; *-beos*) vendor=be ;; *-hpux*) vendor=hp ;; *-mpeix*) vendor=hp ;; *-hiux*) vendor=hitachi ;; *-unos*) vendor=crds ;; *-dgux*) vendor=dg ;; *-luna*) vendor=omron ;; *-genix*) vendor=ns ;; *-clix*) vendor=intergraph ;; *-mvs* | *-opened*) vendor=ibm ;; *-os400*) vendor=ibm ;; s390-* | s390x-*) vendor=ibm ;; *-ptx*) vendor=sequent ;; *-tpf*) vendor=ibm ;; *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; *-aux*) vendor=apple ;; *-hms*) vendor=hitachi ;; *-mpw* | *-macos*) vendor=apple ;; *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; *-vos*) vendor=stratus ;; esac ;; esac echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: libtheora-1.2.0/theoraenc.pc.in0000644000175000017500000000047514771706724015061 0ustar perepere# theoraenc installed pkg-config file prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: theora Description: Theora video codec (encoder) Version: @VERSION@ Requires: theoradec, ogg >= @THEORA_LIBOGG_REQ_VERSION@ Conflicts: Libs: -L${libdir} -ltheoraenc Cflags: -I${includedir} libtheora-1.2.0/CHANGES0000644000175000017500000003022514771706724013147 0ustar pereperelibtheora 1.2.0 (2025 March 29) * Bumped minor SONAME versions as oc_comment_unpack() implementation changed. * Added example wrapper script encoder_example_ffmpeg (#1601 #2336). * Improve comment handling on platforms where malloc(0) return NULL (#2304). * Added pragma in example code to quiet clang op precedenca warnings. * Adjusted encoder_example help text. * Adjusted README, CHANGES, pkg-config and spec files to better reflect current release (#2331 #2328). * Corrected english typos in source and build system. * Switched http links to https in doc and comments where relevant. Did not touch RFC drafts. libtheora 1.2.0beta1 (2025 March 15) * Bumped minor SONAME versions as methods changed constness of arguments. * Updated libogg dependency to version 1.3.4 for ogg_uint64_t. * Updated doxygen setup. * Updated autotools setup and support scripts (#1467 #1800 #1987 #2318 #2320). * Added support for RISC OS. * Fixed mingw build (#2141). * Improved ARM support. * Converted SCons setup to work with Python 3. * Introduced new configure options --enable-mem-constraint and --enable-gcc-sanitizers. * Fixed all known compiler warnings and errors from gcc and clang. * Improved examples for stability and correctness. * Various speed, bug fixes and code quality improvements. - Fixed build problem with Visual Studio (#2317). - Avoids undefined bit shift of signed numbers (#2321, #2322). - Avoids example encoder crash on bogus audio input (#2305). - Fixed musl linking issue with asm enabled (#2287). - Fixed some broken clamping in rate control (#2229). - Added NULL check _tc and _setup even for data packets (#2279). - Fixed mismatched oc_mb_fill_cmapping11 signature (#2068). - Updated the documentation for theora_encode_comment() (#726). - Adjusted build to only link libcompat with dump_video (#1587). - Corrected an operator precedence error in the visualization code (#1751). - Fixed two spelling errors in the comments (#1804). - Avoid negative bit shift operation in huffdec.c (CVE-2024-56431). * Improved library documentation and specification text. * Adjusted library dependencies so libtheoraenc do not depend on libtheoradec. * Handle fallout from CVE-2017-14633 in libvorbis, check return value in encoder_example and transcoder_example. libtheora 1.2.0alpha1 (2010 September 23) * New 'ptalarbvorm' encoder with better rate/distortion optimization * New th_encode_ctl option for copying configuration from an existing setup header, useful for splicing streams. * Returns TH_DUPFRAME in more cases. * Add ARM optimizations * Add TI C64x+ DSP optimizations * Other performance improvements * Rename speedlevel 2 to 3 and provide a new speedlevel 2 * Various minor bug fixes libtheora 1.1.2 (unreleased snapshot) * Fix Huffman table decoding with OC_HUFF_SLUSH is set to 0 * Fix a frame size bug in player_example * Add support for passing a buffer the size of the picture region, rather than a full padded frame to th_encode_ycbcr_in() as was possible with the legacy pre-1.0 API. * 4:4:4 support in player_example using software yuv->rgb * Better rgb->yuv conversion in png2theora * Clean up warnings and local variables * Build and documentation fixes libtheora 1.1.1 (2009 October 1) * Fix problems with MSVC inline assembly * Add the missing encoder_disabled.c to the distribution * build updates: autogen.sh should work better after switching systems and the MSVC project now defaults to the dynamic runtime library * Namespace some variables to avoid conflicts on wince. libtheora 1.1.0 (2009 September 24) * Fix various small issues with the example and telemetry code * Fix handing a zero-byte packet as the first frame * Documentation cleanup * Two minor build fixes libtheora 1.1beta3 (2009 August 22) * Rate control fixes to smooth quality * MSVC build now exports all of the 1.0 api * Assorted small bug fixes libtheora 1.1beta2 (2009 August 12) * Fix a rate control problem with difficult input * Build fixes for OpenBSD and Apple Xcode * Examples now all use the 1.0 api * TH_ENCCTL_SET_SPLEVEL works again * Various bug fixes and source tree rearrangement libtheora 1.1beta1 (2009 August 5) * Support for two-pass encoding * Performance optimization of both encoder and decoder * Encoder supports dynamic adjustment of quality and bitrate targets * Encoder is generally more configurable, and all rate control modes perform better * Encoder now accepts 4:2:2 and 4:4:4 chroma sampling * Decoder telemetry output shows quantization choice and a breakdown of bitrate usage in the frame * MSVC assembly optimizations up to date and functional libtheora 1.1alpha2 (2009 May 26) * Reduce lambda for small quantizers. * New encoder fDCT does better on smooth gradients * Use SATD for mode decisions (1-2% bitrate reduction) * Assembly rewrite for new features and general speed up * Share code between the encoder and decoder for performance * Fix 4:2:2 decoding and telemetry * MSVC project files updated, but assembly is disabled. * New configure option --disable-spec to work around toolchain detection failures. * Limit symbol exports on MacOS X. * Port remaining unit tests from the 1.0 release. libtheora 1.1alpha1 (2009 March 27) * Encoder rewrite with much improved vbr quality/bitrate and better tracking of the target rate in cbr mode. * MSVC project files do not work in this release. libtheora 1.0 (2008 November 3) * Merge x86 assembly for forward DCT from Thusnelda branch. * Update 32 bit MMX with loop filter fix. * Check for an uninitialized state before dereferencing in propagating decode calls. * Remove all TH_DEBUG statements. * Rename the bitpacker source files copied from libogg to avoid confusing simple build systems using both libraries. * Declare bitfield entries to be explicitly signed for Solaris cc. * Set quantization parameters to default values when an empty buffer is passed with TH_ENCCTL_SET_QUANT_PARAMS. * Split encoder and decoder tests depending on configure settings. * Return lstylex.sty to the distribution. * Disable inline assembly on gcc versions prior to 3.1. * Remove extern references for OC_*_QUANT_MIN. * Make various data tables static const so they can be read-only. * Remove ENCCTL codes from the old encoder API. * Implement TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE ctl. * Fix segfault when exactly one of the width or height is not a multiple of 16, but the other is. * Compute the correct vertical offset for chroma. * cpuid assembly fix for MSVC. * Add VS2008 project files. * Build updates for 64-bit platforms, Mingw32, VS and XCode. * Do not clobber the cropping rectangle. * Declare ourselves 1.0final to pkg-config to sort after beta releases. * Fix the scons build to include asm in libtheoradec/enc. libtheora 1.0beta3 (2008 April 16) * Build new libtheoradec and libtheoraenc libraries supporting the new API from theora-exp. This API should not be considered stable yet. * Change granule_frame() to return an index as documented. This is a change of behaviour from 1.0beta1. * Document that granule_time() returns the end of the presentation interval. * Use a custom copy of the libogg bitpacker in the decoder to avoid function call overhead. * MMX code improved and ported to MSVC. * Fix a problem with the MMX code on SELinux. * Fix a problem with decoder quantizer initialization. * Fix a page queue problem with png2theora. * Improved robustness. * Updated VS2005 project files. * Dropped build support for Microsoft VS2003. * Dropped build support for the unreleased libogg2. * Added the specification to the autotools build. * Specification corrections. libtheora 1.0beta2 (2007 October 12) * Fix a crash bug on char-is-unsigned architectures (PowerPC) * Fix a buffer sizing issue that caused rare encoder crashes * Fix a buffer alignment issue * Build fixes for MingW32, MSVC * Improved format documentation. libtheora 1.0beta1 (2007 September 22) * Granulepos scheme modified to match other codecs. This bumps the bitstream revision to 3.2.1. Bitstreams marked 3.2.0 are handled correctly by this decoder. Older decoders will show a one frame sync error in the less noticeable direction. libtheora 1.0alpha8 (2007 September 18) * Switch to new spec compliant decoder from theora-exp branch. Written by Dr. Timothy Terriberry. * Add support to the encoder for using quantization settings provided by the application. * more assembly optimizations libtheora 1.0alpha7 (2006 June 20) * Enable mmx assembly by default * Avoid some relocations that caused problems on SELinux * Other build fixes * time testing mode (-f) for the dump_video example libtheora 1.0alpha6 (2006 May 30) * Merge theora-mmx simd acceleration (x86_32 and x86_64) * Major RTP payload specification update * Minor format specification updates * Fix some spurious calls to free() instead of _ogg_free() * Fix invalid array indexing in PixelLineSearch() * Improve robustness against invalid input * General warning cleanup * The offset_y member now means what every application thought it meant (offset from the top). This will mean some old files (those with a non-centered image created with a buggy encoder) will display differently. libtheora 1.0alpha5 (2005 August 20) * Fixed bitrate management bugs that caused popping and encode errors * Fixed a crash problem with the theora_state internals not being initialized properly. * new utility function: - theora_granule_shift() * dump_video example now makes YUV4MPEG files by default, so the results can be fed back to encoder_example and similar tools. The old behavior is restored through the '-r' switch. * ./configure now prints a summary * simple unit test of the comment api under 'make check' * misc code cleanup, warning and leak fixes libtheora 1.0alpha4 (2004 December 15) * first draft of the Theora I Format Specification * API documentation generated from theora.h with Doxygen * fix a double-update bug in the motion analysis * apply the loop filter before filling motion vector border in the reference frame * new utility functions: - theora_packet_isheader(), - theora_packet_iskeyframe() - theora_granule_frame() * optional support for building without floating point * optional support for building without encode support * various build and packaging fixes * pkg-config support * SymbianOS build support libtheora 1.0alpha3 (2004 March 20) UPDATE: on 2004 July 1 the Theora I bitstream format was frozen. Files produced by the libtheora 1.0alpha3 reference encoder will always be decodable by the Theora I spec. * Bitstream info header FORMAT CHANGES: - move the granulepos shift field to maintain byte alignment longer. - reserve 5 additional bits for subsampling and interlace flags. * Bitstream setup header FORMAT CHANGES: - support for a range of interpolated quant matrices. - include the in-loop block filter coeff. * Bitsteam data packet FORMAT CHANGES: - Reserve a bit for per-block Q index selection. - Flip the coded image orientation for compatibility with VP3. This allows lossless transcoding of VP3 content, but files encoded with earlier theora releases would play upside down. * example VP3 lossless transcoder * optional support for libogg2 * timing improvements in the example player * packaging and build system updates and fixes libtheora 1.0alpha2 (2003 June 9) * bitstream FORMAT CHANGES: - store the quant tables in a third setup header for future encoder flexibility - store the huffman tables in the third setup header - add a field for marking the colorspace to the info header - add crop parameters for non-multiple-of-16 frame sizes - add a second vorbiscomment-style metadata header * API changes to handle multiple headers with a single theora_decode_header() call, like libvorbis * code cleanup and minor fixes * new dump_video code example/utility * experimental win32 code examples libtheora 1.0alpha1 (2002 September 25) * First release of the theora reference implementation * Port of the newly opened VP3 code to the Ogg container * Rewrite of the code for portability and to use the libogg bitpacker libtheora-1.2.0/Makefile.in0000644000175000017500000007657514771707054014240 0ustar perepere# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ $(top_srcdir)/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/ogg.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/vorbis.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = lib/arm/armopts.s libtheora.spec theora.pc \ theora-uninstalled.pc theoradec.pc theoradec-uninstalled.pc \ theoraenc.pc theoraenc-uninstalled.pc CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgconfigdir)" DATA = $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir distdir-am dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = lib include doc tests m4 examples am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/libtheora.spec.in $(srcdir)/theora-uninstalled.pc.in \ $(srcdir)/theora.pc.in $(srcdir)/theoradec-uninstalled.pc.in \ $(srcdir)/theoradec.pc.in \ $(srcdir)/theoraenc-uninstalled.pc.in \ $(srcdir)/theoraenc.pc.in $(top_srcdir)/lib/arm/armopts.s.in \ AUTHORS COPYING README.md compile config.guess config.sub \ install-sh ltmain.sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz $(distdir).zip GZIP_ENV = --best DIST_TARGETS = dist-xz dist-gzip dist-zip # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINDIR = @BINDIR@ BUILDABLE_EXAMPLES = @BUILDABLE_EXAMPLES@ CAIRO_CFLAGS = @CAIRO_CFLAGS@ CAIRO_LIBS = @CAIRO_LIBS@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG = @DEBUG@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOCDIR = @DOCDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GETOPT_OBJS = @GETOPT_OBJS@ GREP = @GREP@ HAVE_ARM_ASM_EDSP = @HAVE_ARM_ASM_EDSP@ HAVE_ARM_ASM_MEDIA = @HAVE_ARM_ASM_MEDIA@ HAVE_ARM_ASM_NEON = @HAVE_ARM_ASM_NEON@ HAVE_BIBTEX = @HAVE_BIBTEX@ HAVE_DOXYGEN = @HAVE_DOXYGEN@ HAVE_PDFLATEX = @HAVE_PDFLATEX@ HAVE_PERL = @HAVE_PERL@ HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@ HAVE_TIFF = @HAVE_TIFF@ HAVE_TRANSFIG = @HAVE_TRANSFIG@ INCLUDEDIR = @INCLUDEDIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBDIR = @LIBDIR@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OGG_CFLAGS = @OGG_CFLAGS@ OGG_LIBS = @OGG_LIBS@ OSS_LIBS = @OSS_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_LIBS = @PNG_LIBS@ PROFILE = @PROFILE@ RANLIB = @RANLIB@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEST_ENV = @TEST_ENV@ THDEC_LIB_AGE = @THDEC_LIB_AGE@ THDEC_LIB_CURRENT = @THDEC_LIB_CURRENT@ THDEC_LIB_REVISION = @THDEC_LIB_REVISION@ THENC_LIB_AGE = @THENC_LIB_AGE@ THENC_LIB_CURRENT = @THENC_LIB_CURRENT@ THENC_LIB_REVISION = @THENC_LIB_REVISION@ THEORADEC_LDFLAGS = @THEORADEC_LDFLAGS@ THEORAENC_LDFLAGS = @THEORAENC_LDFLAGS@ THEORA_LDFLAGS = @THEORA_LDFLAGS@ THEORA_LIBOGG_REQ_VERSION = @THEORA_LIBOGG_REQ_VERSION@ TH_LIB_AGE = @TH_LIB_AGE@ TH_LIB_CURRENT = @TH_LIB_CURRENT@ TH_LIB_REVISION = @TH_LIB_REVISION@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_LIBS = @TIFF_LIBS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ VORBISENC_LIBS = @VORBISENC_LIBS@ VORBISFILE_LIBS = @VORBISFILE_LIBS@ VORBIS_CFLAGS = @VORBIS_CFLAGS@ VORBIS_LIBS = @VORBIS_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign 1.11 dist-zip dist-xz ACLOCAL_AMFLAGS = -I m4 @THEORA_ENABLE_EXAMPLES_FALSE@EXAMPLES_DIR = @THEORA_ENABLE_EXAMPLES_TRUE@EXAMPLES_DIR = examples SUBDIRS = lib include doc tests m4 $(EXAMPLES_DIR) EXTRA_DIST = \ README.md CHANGES COPYING LICENSE \ autogen.sh win32 macosx symbian SConstruct \ libtheora.spec libtheora.spec.in \ theora-uninstalled.pc.in pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = theora.pc theoradec.pc theoraenc.pc all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 lib/arm/armopts.s: $(top_builddir)/config.status $(top_srcdir)/lib/arm/armopts.s.in cd $(top_builddir) && $(SHELL) ./config.status $@ libtheora.spec: $(top_builddir)/config.status $(srcdir)/libtheora.spec.in cd $(top_builddir) && $(SHELL) ./config.status $@ theora.pc: $(top_builddir)/config.status $(srcdir)/theora.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ theora-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/theora-uninstalled.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ theoradec.pc: $(top_builddir)/config.status $(srcdir)/theoradec.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ theoradec-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/theoradec-uninstalled.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ theoraenc.pc: $(top_builddir)/config.status $(srcdir)/theoraenc.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ theoraenc-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/theoraenc-uninstalled.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-zstd: distdir tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkgconfigDATA .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \ dist-tarZ dist-xz dist-zip dist-zstd distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-pkgconfigDATA .PRECIOUS: Makefile # Remove the .svn folders included in the tarball dist-hook: find $(distdir) -type d -name '.svn' | xargs rm -rf debug: $(MAKE) all CFLAGS="@DEBUG@" profile: $(MAKE) all CFLAGS="@PROFILE@" # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libtheora-1.2.0/libtheora.spec.in0000644000175000017500000000452514771706724015412 0ustar perepereName: libtheora Version: @VERSION@ Release: 0.xiph.0 Summary: The Theora Video Compression Codec. Group: System Environment/Libraries License: BSD URL: https://www.theora.org/ Vendor: Xiph.org Foundation Source: http://downloads.xiph.org/releases/theora/%{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-root BuildRequires: libogg-devel >= 2:@THEORA_LIBOGG_REQ_VERSION@ BuildRequires: libvorbis-devel >= 1:1.0.1 BuildRequires: SDL-devel # this needs to be explicit since vorbis's .so versioning didn't get bumped # when going from 1.0 to 1.0.1 Requires: libvorbis >= 1:1.0.1 %description Theora is Xiph.Org's first publicly released video codec, intended for use within the Ogg's project's Ogg multimedia streaming system. Theora is derived directly from On2's VP3 codec; Currently the two are nearly identical, varying only in encapsulating decoder tables in the bitstream headers, but Theora will make use of this extra freedom in the future to improve over what is possible with VP3. %package devel Summary: Development tools for Theora applications. Group: Development/Libraries Requires: %{name} = %{version}-%{release} Requires: libogg-devel >= 2:@THEORA_LIBOGG_REQ_VERSION@ %description devel The libtheora-devel package contains the header files and documentation needed to develop applications with Ogg Theora. %prep %setup -q -n %{name}-%{version} %build %configure --enable-shared make %install rm -rf $RPM_BUILD_ROOT # make sure our temp doc build dir is removed rm -rf $(pwd)/__docs %makeinstall docdir=$(pwd)/__docs find $RPM_BUILD_ROOT -type f -name "*.la" -exec rm -f {} ';' %clean rm -rf $RPM_BUILD_ROOT %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %defattr(-,root,root) %doc COPYING README %{_libdir}/libtheora.so.* %files devel %defattr(-,root,root,-) %doc __docs/* %{_libdir}/libtheora.a %{_libdir}/libtheora.so %dir %{_includedir}/theora %{_includedir}/theora/codec.h %{_includedir}/theora/theora.h %{_includedir}/theora/theoradec.h %{_libdir}/pkgconfig/theora.pc %changelog * Sat Mar 29 2025 Petter Reinholdtsen - updated version for 1.2.0 release * Sat Aug 20 2005 Ralph Giles - updated version for 1.0alpha5 release * Thu Jun 10 2004 Thomas Vander Stichele - transported fedora.us spec file libtheora-1.2.0/missing0000755000175000017500000001533614215102164013536 0ustar perepere#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1996-2021 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=https://www.perl.org/ flex_URL=https://github.com/westes/flex gnu_software_URL=https://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: libtheora-1.2.0/theoradec.pc.in0000644000175000017500000000046214771706724015043 0ustar perepere# theoradec installed pkg-config file prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: theora Description: Theora video codec (decoder) Version: @VERSION@ Requires: ogg >= @THEORA_LIBOGG_REQ_VERSION@ Conflicts: Libs: -L${libdir} -ltheoradec Cflags: -I${includedir} libtheora-1.2.0/theora-uninstalled.pc.in0000644000175000017500000000047514771706724016713 0ustar perepere# theora uninstalled pkg-config file prefix= exec_prefix= libdir=${pcfiledir}/lib includedir=${pcfiledir}/include Name: theora uninstalled Description: Theora video codec (not installed) Version: @VERSION@ Requires: ogg >= @THEORA_LIBOGG_REQ_VERSION@ Conflicts: Libs: ${libdir}/libtheora.la Cflags: -I${includedir} libtheora-1.2.0/depcomp0000755000175000017500000005602014215102164013507 0ustar perepere#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2021 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: libtheora-1.2.0/test-driver0000755000175000017500000001141714215102164014331 0ustar perepere#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2018-03-07.03; # UTC # Copyright (C) 2011-2021 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <"$log_file" "$@" >>"$log_file" 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>"$log_file" # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: libtheora-1.2.0/theoradec-uninstalled.pc.in0000644000175000017500000000051414771706724017361 0ustar perepere# theoradec uninstalled pkg-config file prefix= exec_prefix= libdir=${pcfiledir}/lib includedir=${pcfiledir}/include Name: theora uninstalled Description: Theora video codec(decoder) (not installed) Version: @VERSION@ Requires: ogg >= @THEORA_LIBOGG_REQ_VERSION@ Conflicts: Libs: ${libdir}/libtheoradec.la Cflags: -I${includedir} libtheora-1.2.0/theora.pc.in0000644000175000017500000000044214771706724014365 0ustar perepere# theora installed pkg-config file prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: theora Description: Theora video codec Version: @VERSION@ Requires: ogg >= @THEORA_LIBOGG_REQ_VERSION@ Conflicts: Libs: -L${libdir} -ltheora Cflags: -I${includedir} libtheora-1.2.0/config.h.in0000644000175000017500000000542714771707053014201 0ustar perepere/* config.h.in. Generated from configure.ac by autoheader. */ /* libcairo is available for visual debugging output */ #undef HAVE_CAIRO /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MACHINE_SOUNDCARD_H /* Abort if size exceeds 16384x16384 (for fuzzing only) */ #undef HAVE_MEMORY_CONSTRAINT /* Define to 1 if you have the header file. */ #undef HAVE_SOUNDCARD_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOUNDCARD_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* make use of arm asm optimization */ #undef OC_ARM_ASM /* Define if assembler supports EDSP instructions */ #undef OC_ARM_ASM_EDSP /* Define if assembler supports ARMv6 media instructions */ #undef OC_ARM_ASM_MEDIA /* Define if compiler supports NEON instructions */ #undef OC_ARM_ASM_NEON /* make use of c64x+ asm optimization */ #undef OC_C64X_ASM /* make use of x86_64 asm optimization */ #undef OC_X86_64_ASM /* make use of x86 asm optimization */ #undef OC_X86_ASM /* Enable use of clock_gettime function */ #undef OP_HAVE_CLOCK_GETTIME /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if all of the C90 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Define to exclude encode support from the build */ #undef THEORA_DISABLE_ENCODE /* Version number of package */ #undef VERSION libtheora-1.2.0/theoraenc-uninstalled.pc.in0000644000175000017500000000053014771706724017371 0ustar perepere# theoraenc uninstalled pkg-config file prefix= exec_prefix= libdir=${pcfiledir}/lib includedir=${pcfiledir}/include Name: theora uninstalled Description: Theora video codec (encoder) (not installed) Version: @VERSION@ Requires: theoradec, ogg >= @THEORA_LIBOGG_REQ_VERSION@ Conflicts: Libs: ${libdir}/libtheoraenc.la Cflags: -I${includedir} libtheora-1.2.0/macosx/0002755000175000017500000000000014771706724013446 5ustar pereperelibtheora-1.2.0/macosx/English.lproj/0002755000175000017500000000000014771706724016164 5ustar pereperelibtheora-1.2.0/macosx/English.lproj/InfoPlist.strings0000644000175000017500000000021614771706724021503 0ustar perepereþÿ/* Localized versions of Info.plist keys */ CFBundleName = "Theora"; libtheora-1.2.0/macosx/Info.plist0000644000175000017500000000210414771706724015411 0ustar perepere CFBundleDevelopmentRegion English CFBundleExecutable Theora CFBundleGetInfoString Theora framework 1.1alpha1svn, Copyright © 2002-2009Xiph.Org Foundation CFBundleIconFile CFBundleIdentifier org.xiph.theora CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType FMWK CFBundleSignature ???? CFBundleVersion 1.0d6 CFBundleShortVersionString 1.1alpha1svn NSHumanReadableCopyright Theora framework 1.1alpha1svn, Copyright © 2002-2009Xiph.Org Foundation CSResourcesFileMapped libtheora-1.2.0/macosx/Theora_Prefix.pch0000644000175000017500000000017014771706724016675 0ustar perepere// // Prefix header for all source files of the 'Theora' target in the 'Theora' project. // #include libtheora-1.2.0/macosx/Theora.xcodeproj/0002755000175000017500000000000014771706724016664 5ustar pereperelibtheora-1.2.0/macosx/Theora.xcodeproj/project.pbxproj0000644000175000017500000014750414771706724021751 0ustar perepere// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 42; objects = { /* Begin PBXBuildFile section */ 084C31FE0FE4E5BD00117FC9 /* apiwrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31D90FE4E5BD00117FC9 /* apiwrapper.c */; }; 084C31FF0FE4E5BD00117FC9 /* apiwrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31DA0FE4E5BD00117FC9 /* apiwrapper.h */; }; 084C32000FE4E5BD00117FC9 /* bitpack.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31DB0FE4E5BD00117FC9 /* bitpack.c */; }; 084C32010FE4E5BD00117FC9 /* bitpack.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31DC0FE4E5BD00117FC9 /* bitpack.h */; }; 084C32020FE4E5BD00117FC9 /* dct.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31DD0FE4E5BD00117FC9 /* dct.h */; }; 084C32030FE4E5BD00117FC9 /* decapiwrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31DE0FE4E5BD00117FC9 /* decapiwrapper.c */; }; 084C32040FE4E5BD00117FC9 /* decinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31DF0FE4E5BD00117FC9 /* decinfo.c */; }; 084C32050FE4E5BD00117FC9 /* decint.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31E00FE4E5BD00117FC9 /* decint.h */; }; 084C32060FE4E5BD00117FC9 /* decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31E10FE4E5BD00117FC9 /* decode.c */; }; 084C32070FE4E5BD00117FC9 /* dequant.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31E20FE4E5BD00117FC9 /* dequant.c */; }; 084C32080FE4E5BD00117FC9 /* dequant.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31E30FE4E5BD00117FC9 /* dequant.h */; }; 084C32090FE4E5BD00117FC9 /* fragment.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31E40FE4E5BD00117FC9 /* fragment.c */; }; 084C320A0FE4E5BD00117FC9 /* huffdec.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31E50FE4E5BD00117FC9 /* huffdec.c */; }; 084C320B0FE4E5BD00117FC9 /* huffdec.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31E60FE4E5BD00117FC9 /* huffdec.h */; }; 084C320C0FE4E5BD00117FC9 /* huffman.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31E70FE4E5BD00117FC9 /* huffman.h */; }; 084C320D0FE4E5BD00117FC9 /* idct.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31E80FE4E5BD00117FC9 /* idct.c */; }; 084C320E0FE4E5BD00117FC9 /* info.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31E90FE4E5BD00117FC9 /* info.c */; }; 084C320F0FE4E5BD00117FC9 /* internal.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31EA0FE4E5BD00117FC9 /* internal.c */; }; 084C32100FE4E5BD00117FC9 /* ocintrin.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31EB0FE4E5BD00117FC9 /* ocintrin.h */; }; 084C32110FE4E5BD00117FC9 /* quant.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31EC0FE4E5BD00117FC9 /* quant.c */; }; 084C32120FE4E5BD00117FC9 /* quant.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31ED0FE4E5BD00117FC9 /* quant.h */; }; 084C32130FE4E5BD00117FC9 /* state.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31EE0FE4E5BD00117FC9 /* state.c */; }; 084C32210FE4E5BD00117FC9 /* apiwrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31D90FE4E5BD00117FC9 /* apiwrapper.c */; }; 084C32220FE4E5BD00117FC9 /* apiwrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31DA0FE4E5BD00117FC9 /* apiwrapper.h */; }; 084C32230FE4E5BD00117FC9 /* bitpack.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31DB0FE4E5BD00117FC9 /* bitpack.c */; }; 084C32240FE4E5BD00117FC9 /* bitpack.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31DC0FE4E5BD00117FC9 /* bitpack.h */; }; 084C32250FE4E5BD00117FC9 /* dct.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31DD0FE4E5BD00117FC9 /* dct.h */; }; 084C32260FE4E5BD00117FC9 /* decapiwrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31DE0FE4E5BD00117FC9 /* decapiwrapper.c */; }; 084C32270FE4E5BD00117FC9 /* decinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31DF0FE4E5BD00117FC9 /* decinfo.c */; }; 084C32280FE4E5BD00117FC9 /* decint.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31E00FE4E5BD00117FC9 /* decint.h */; }; 084C32290FE4E5BD00117FC9 /* decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31E10FE4E5BD00117FC9 /* decode.c */; }; 084C322A0FE4E5BD00117FC9 /* dequant.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31E20FE4E5BD00117FC9 /* dequant.c */; }; 084C322B0FE4E5BD00117FC9 /* dequant.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31E30FE4E5BD00117FC9 /* dequant.h */; }; 084C322C0FE4E5BD00117FC9 /* fragment.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31E40FE4E5BD00117FC9 /* fragment.c */; }; 084C322D0FE4E5BD00117FC9 /* huffdec.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31E50FE4E5BD00117FC9 /* huffdec.c */; }; 084C322E0FE4E5BD00117FC9 /* huffdec.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31E60FE4E5BD00117FC9 /* huffdec.h */; }; 084C322F0FE4E5BD00117FC9 /* huffman.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31E70FE4E5BD00117FC9 /* huffman.h */; }; 084C32300FE4E5BD00117FC9 /* idct.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31E80FE4E5BD00117FC9 /* idct.c */; }; 084C32310FE4E5BD00117FC9 /* info.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31E90FE4E5BD00117FC9 /* info.c */; }; 084C32320FE4E5BD00117FC9 /* internal.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31EA0FE4E5BD00117FC9 /* internal.c */; }; 084C32330FE4E5BD00117FC9 /* ocintrin.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31EB0FE4E5BD00117FC9 /* ocintrin.h */; }; 084C32340FE4E5BD00117FC9 /* quant.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31EC0FE4E5BD00117FC9 /* quant.c */; }; 084C32350FE4E5BD00117FC9 /* quant.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31ED0FE4E5BD00117FC9 /* quant.h */; }; 084C32360FE4E5BD00117FC9 /* state.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31EE0FE4E5BD00117FC9 /* state.c */; }; 084C32620FE4E5D500117FC9 /* analyze.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32450FE4E5D500117FC9 /* analyze.c */; }; 084C32630FE4E5D500117FC9 /* encapiwrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32460FE4E5D500117FC9 /* encapiwrapper.c */; }; 084C32640FE4E5D500117FC9 /* encfrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32470FE4E5D500117FC9 /* encfrag.c */; }; 084C32650FE4E5D500117FC9 /* encinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32480FE4E5D500117FC9 /* encinfo.c */; }; 084C32660FE4E5D500117FC9 /* encint.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C32490FE4E5D500117FC9 /* encint.h */; }; 084C32670FE4E5D500117FC9 /* encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C324A0FE4E5D500117FC9 /* encode.c */; }; 084C32690FE4E5D500117FC9 /* enquant.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C324C0FE4E5D500117FC9 /* enquant.c */; }; 084C326A0FE4E5D500117FC9 /* enquant.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C324D0FE4E5D500117FC9 /* enquant.h */; }; 084C326B0FE4E5D500117FC9 /* fdct.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C324E0FE4E5D500117FC9 /* fdct.c */; }; 084C326C0FE4E5D500117FC9 /* huffenc.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C324F0FE4E5D500117FC9 /* huffenc.c */; }; 084C326D0FE4E5D500117FC9 /* huffenc.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C32500FE4E5D500117FC9 /* huffenc.h */; }; 084C326E0FE4E5D500117FC9 /* mathops.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32510FE4E5D500117FC9 /* mathops.c */; }; 084C326F0FE4E5D500117FC9 /* mathops.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C32520FE4E5D500117FC9 /* mathops.h */; }; 084C32700FE4E5D500117FC9 /* mcenc.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32530FE4E5D500117FC9 /* mcenc.c */; }; 084C32710FE4E5D500117FC9 /* modedec.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C32540FE4E5D500117FC9 /* modedec.h */; }; 084C32720FE4E5D500117FC9 /* rate.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32550FE4E5D500117FC9 /* rate.c */; }; 084C32730FE4E5D500117FC9 /* tokenize.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32560FE4E5D500117FC9 /* tokenize.c */; }; 084C327D0FE4E5D500117FC9 /* analyze.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32450FE4E5D500117FC9 /* analyze.c */; }; 084C327E0FE4E5D500117FC9 /* encapiwrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32460FE4E5D500117FC9 /* encapiwrapper.c */; }; 084C327F0FE4E5D500117FC9 /* encfrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32470FE4E5D500117FC9 /* encfrag.c */; }; 084C32800FE4E5D500117FC9 /* encinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32480FE4E5D500117FC9 /* encinfo.c */; }; 084C32810FE4E5D500117FC9 /* encint.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C32490FE4E5D500117FC9 /* encint.h */; }; 084C32820FE4E5D500117FC9 /* encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C324A0FE4E5D500117FC9 /* encode.c */; }; 084C32840FE4E5D500117FC9 /* enquant.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C324C0FE4E5D500117FC9 /* enquant.c */; }; 084C32850FE4E5D500117FC9 /* enquant.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C324D0FE4E5D500117FC9 /* enquant.h */; }; 084C32860FE4E5D500117FC9 /* fdct.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C324E0FE4E5D500117FC9 /* fdct.c */; }; 084C32870FE4E5D500117FC9 /* huffenc.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C324F0FE4E5D500117FC9 /* huffenc.c */; }; 084C32880FE4E5D500117FC9 /* huffenc.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C32500FE4E5D500117FC9 /* huffenc.h */; }; 084C32890FE4E5D500117FC9 /* mathops.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32510FE4E5D500117FC9 /* mathops.c */; }; 084C328A0FE4E5D500117FC9 /* mathops.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C32520FE4E5D500117FC9 /* mathops.h */; }; 084C328B0FE4E5D500117FC9 /* mcenc.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32530FE4E5D500117FC9 /* mcenc.c */; }; 084C328C0FE4E5D500117FC9 /* modedec.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C32540FE4E5D500117FC9 /* modedec.h */; }; 084C328D0FE4E5D500117FC9 /* rate.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32550FE4E5D500117FC9 /* rate.c */; }; 084C328E0FE4E5D500117FC9 /* tokenize.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C32560FE4E5D500117FC9 /* tokenize.c */; }; 084C32A70FE4E7FE00117FC9 /* apiwrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31D90FE4E5BD00117FC9 /* apiwrapper.c */; }; 084C32A80FE4E7FF00117FC9 /* apiwrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31DA0FE4E5BD00117FC9 /* apiwrapper.h */; }; 084C32A90FE4E82500117FC9 /* dct.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31DD0FE4E5BD00117FC9 /* dct.h */; }; 084C32AA0FE4E83100117FC9 /* idct.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31E80FE4E5BD00117FC9 /* idct.c */; }; 084C32AB0FE4E83300117FC9 /* internal.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31EA0FE4E5BD00117FC9 /* internal.c */; }; 084C32AC0FE4E83600117FC9 /* fragment.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31E40FE4E5BD00117FC9 /* fragment.c */; }; 084C32AD0FE4E84800117FC9 /* quant.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31ED0FE4E5BD00117FC9 /* quant.h */; }; 084C32AE0FE4E84A00117FC9 /* quant.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31EC0FE4E5BD00117FC9 /* quant.c */; }; 084C32AF0FE4E84C00117FC9 /* ocintrin.h in Headers */ = {isa = PBXBuildFile; fileRef = 084C31EB0FE4E5BD00117FC9 /* ocintrin.h */; }; 084C32B00FE4E84F00117FC9 /* state.c in Sources */ = {isa = PBXBuildFile; fileRef = 084C31EE0FE4E5BD00117FC9 /* state.c */; }; 08D99AEC12526E77005A6116 /* mmxencfrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45537124A6B6D00721BF7 /* mmxencfrag.c */; }; 08D99AED12526E7A005A6116 /* mmxfdct.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45538124A6B6D00721BF7 /* mmxfdct.c */; }; 08D99AEE12526E87005A6116 /* mmxfrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45539124A6B6D00721BF7 /* mmxfrag.c */; }; 08D99AEF12526E89005A6116 /* mmxidct.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E4553A124A6B6D00721BF7 /* mmxidct.c */; }; 08D99AF012526E90005A6116 /* mmxstate.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E4553C124A6B6D00721BF7 /* mmxstate.c */; }; 08D99AF112526E99005A6116 /* sse2encfrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E4553D124A6B6D00721BF7 /* sse2encfrag.c */; }; 08D99AF212526EA2005A6116 /* sse2idct.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E4553F124A6B6D00721BF7 /* sse2idct.c */; }; 08D99AF312526EAA005A6116 /* x86cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45541124A6B6D00721BF7 /* x86cpu.c */; }; 08D99AF412526EB0005A6116 /* x86enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45543124A6B6D00721BF7 /* x86enc.c */; }; 08D99AF512526EB2005A6116 /* x86enquant.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45545124A6B6D00721BF7 /* x86enquant.c */; }; 08D99AF612526EF8005A6116 /* x86state.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45547124A6B6D00721BF7 /* x86state.c */; }; 08D99AFC12526F06005A6116 /* x86cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45541124A6B6D00721BF7 /* x86cpu.c */; }; 08D99AFD12526F14005A6116 /* sse2idct.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E4553F124A6B6D00721BF7 /* sse2idct.c */; }; 08D99AFE12526F2C005A6116 /* mmxstate.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E4553C124A6B6D00721BF7 /* mmxstate.c */; }; 08D99AFF12526F32005A6116 /* mmxidct.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E4553A124A6B6D00721BF7 /* mmxidct.c */; }; 08D99B0012526F33005A6116 /* mmxfrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45539124A6B6D00721BF7 /* mmxfrag.c */; }; 08E45548124A6B6D00721BF7 /* mmxencfrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45537124A6B6D00721BF7 /* mmxencfrag.c */; }; 08E45549124A6B6D00721BF7 /* mmxfdct.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45538124A6B6D00721BF7 /* mmxfdct.c */; }; 08E4554A124A6B6D00721BF7 /* mmxfrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45539124A6B6D00721BF7 /* mmxfrag.c */; }; 08E4554B124A6B6D00721BF7 /* mmxidct.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E4553A124A6B6D00721BF7 /* mmxidct.c */; }; 08E4554C124A6B6D00721BF7 /* mmxloop.h in Headers */ = {isa = PBXBuildFile; fileRef = 08E4553B124A6B6D00721BF7 /* mmxloop.h */; }; 08E4554D124A6B6D00721BF7 /* mmxstate.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E4553C124A6B6D00721BF7 /* mmxstate.c */; }; 08E4554E124A6B6D00721BF7 /* sse2encfrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E4553D124A6B6D00721BF7 /* sse2encfrag.c */; }; 08E4554F124A6B6D00721BF7 /* sse2fdct.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E4553E124A6B6D00721BF7 /* sse2fdct.c */; }; 08E45550124A6B6D00721BF7 /* sse2idct.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E4553F124A6B6D00721BF7 /* sse2idct.c */; }; 08E45551124A6B6D00721BF7 /* sse2trans.h in Headers */ = {isa = PBXBuildFile; fileRef = 08E45540124A6B6D00721BF7 /* sse2trans.h */; }; 08E45552124A6B6D00721BF7 /* x86cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45541124A6B6D00721BF7 /* x86cpu.c */; }; 08E45553124A6B6D00721BF7 /* x86cpu.h in Headers */ = {isa = PBXBuildFile; fileRef = 08E45542124A6B6D00721BF7 /* x86cpu.h */; }; 08E45554124A6B6D00721BF7 /* x86enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45543124A6B6D00721BF7 /* x86enc.c */; }; 08E45555124A6B6D00721BF7 /* x86enc.h in Headers */ = {isa = PBXBuildFile; fileRef = 08E45544124A6B6D00721BF7 /* x86enc.h */; }; 08E45556124A6B6D00721BF7 /* x86enquant.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45545124A6B6D00721BF7 /* x86enquant.c */; }; 08E45557124A6B6D00721BF7 /* x86int.h in Headers */ = {isa = PBXBuildFile; fileRef = 08E45546124A6B6D00721BF7 /* x86int.h */; }; 08E45558124A6B6D00721BF7 /* x86state.c in Sources */ = {isa = PBXBuildFile; fileRef = 08E45547124A6B6D00721BF7 /* x86state.c */; }; 097729950BCAC60000303091 /* codec.h in Headers */ = {isa = PBXBuildFile; fileRef = 097729930BCAC60000303091 /* codec.h */; settings = {ATTRIBUTES = (Public, ); }; }; 097729960BCAC60000303091 /* theoradec.h in Headers */ = {isa = PBXBuildFile; fileRef = 097729940BCAC60000303091 /* theoradec.h */; settings = {ATTRIBUTES = (Public, ); }; }; 37C9B0140EBB831F0046849C /* theoraenc.h in Headers */ = {isa = PBXBuildFile; fileRef = 37C9B0130EBB831F0046849C /* theoraenc.h */; settings = {ATTRIBUTES = (Public, ); }; }; 37CA8E390DD747F1005C8CB6 /* internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 37CA8E380DD747F1005C8CB6 /* internal.h */; }; 734A751909D76ADD002D8FAE /* Ogg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 734A751809D76ADD002D8FAE /* Ogg.framework */; }; 734A75BF09D76BB9002D8FAE /* theora.h in Headers */ = {isa = PBXBuildFile; fileRef = 734A75BE09D76BB9002D8FAE /* theora.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8D07F2BE0486CC7A007CD1D0 /* Theora_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 32BAE0B70371A74B00C91783 /* Theora_Prefix.pch */; }; 8D07F2C00486CC7A007CD1D0 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 084C31D90FE4E5BD00117FC9 /* apiwrapper.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = apiwrapper.c; sourceTree = ""; }; 084C31DA0FE4E5BD00117FC9 /* apiwrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apiwrapper.h; sourceTree = ""; }; 084C31DB0FE4E5BD00117FC9 /* bitpack.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bitpack.c; sourceTree = ""; }; 084C31DC0FE4E5BD00117FC9 /* bitpack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitpack.h; sourceTree = ""; }; 084C31DD0FE4E5BD00117FC9 /* dct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dct.h; sourceTree = ""; }; 084C31DE0FE4E5BD00117FC9 /* decapiwrapper.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = decapiwrapper.c; sourceTree = ""; }; 084C31DF0FE4E5BD00117FC9 /* decinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = decinfo.c; sourceTree = ""; }; 084C31E00FE4E5BD00117FC9 /* decint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decint.h; sourceTree = ""; }; 084C31E10FE4E5BD00117FC9 /* decode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = decode.c; sourceTree = ""; }; 084C31E20FE4E5BD00117FC9 /* dequant.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dequant.c; sourceTree = ""; }; 084C31E30FE4E5BD00117FC9 /* dequant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dequant.h; sourceTree = ""; }; 084C31E40FE4E5BD00117FC9 /* fragment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fragment.c; sourceTree = ""; }; 084C31E50FE4E5BD00117FC9 /* huffdec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = huffdec.c; sourceTree = ""; }; 084C31E60FE4E5BD00117FC9 /* huffdec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = huffdec.h; sourceTree = ""; }; 084C31E70FE4E5BD00117FC9 /* huffman.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; 084C31E80FE4E5BD00117FC9 /* idct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = idct.c; sourceTree = ""; }; 084C31E90FE4E5BD00117FC9 /* info.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = info.c; sourceTree = ""; }; 084C31EA0FE4E5BD00117FC9 /* internal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = internal.c; sourceTree = ""; }; 084C31EB0FE4E5BD00117FC9 /* ocintrin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ocintrin.h; sourceTree = ""; }; 084C31EC0FE4E5BD00117FC9 /* quant.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = quant.c; sourceTree = ""; }; 084C31ED0FE4E5BD00117FC9 /* quant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quant.h; sourceTree = ""; }; 084C31EE0FE4E5BD00117FC9 /* state.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = state.c; sourceTree = ""; }; 084C32450FE4E5D500117FC9 /* analyze.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = analyze.c; sourceTree = ""; }; 084C32460FE4E5D500117FC9 /* encapiwrapper.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = encapiwrapper.c; sourceTree = ""; }; 084C32470FE4E5D500117FC9 /* encfrag.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = encfrag.c; sourceTree = ""; }; 084C32480FE4E5D500117FC9 /* encinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = encinfo.c; sourceTree = ""; }; 084C32490FE4E5D500117FC9 /* encint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = encint.h; sourceTree = ""; }; 084C324A0FE4E5D500117FC9 /* encode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = encode.c; sourceTree = ""; }; 084C324B0FE4E5D500117FC9 /* encoder_disabled.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = encoder_disabled.c; sourceTree = ""; }; 084C324C0FE4E5D500117FC9 /* enquant.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = enquant.c; sourceTree = ""; }; 084C324D0FE4E5D500117FC9 /* enquant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = enquant.h; sourceTree = ""; }; 084C324E0FE4E5D500117FC9 /* fdct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fdct.c; sourceTree = ""; }; 084C324F0FE4E5D500117FC9 /* huffenc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = huffenc.c; sourceTree = ""; }; 084C32500FE4E5D500117FC9 /* huffenc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = huffenc.h; sourceTree = ""; }; 084C32510FE4E5D500117FC9 /* mathops.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mathops.c; sourceTree = ""; }; 084C32520FE4E5D500117FC9 /* mathops.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mathops.h; sourceTree = ""; }; 084C32530FE4E5D500117FC9 /* mcenc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mcenc.c; sourceTree = ""; }; 084C32540FE4E5D500117FC9 /* modedec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modedec.h; sourceTree = ""; }; 084C32550FE4E5D500117FC9 /* rate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rate.c; sourceTree = ""; }; 084C32560FE4E5D500117FC9 /* tokenize.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tokenize.c; sourceTree = ""; }; 089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 08E45537124A6B6D00721BF7 /* mmxencfrag.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mmxencfrag.c; sourceTree = ""; }; 08E45538124A6B6D00721BF7 /* mmxfdct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mmxfdct.c; sourceTree = ""; }; 08E45539124A6B6D00721BF7 /* mmxfrag.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mmxfrag.c; sourceTree = ""; }; 08E4553A124A6B6D00721BF7 /* mmxidct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mmxidct.c; sourceTree = ""; }; 08E4553B124A6B6D00721BF7 /* mmxloop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mmxloop.h; sourceTree = ""; }; 08E4553C124A6B6D00721BF7 /* mmxstate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mmxstate.c; sourceTree = ""; }; 08E4553D124A6B6D00721BF7 /* sse2encfrag.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sse2encfrag.c; sourceTree = ""; }; 08E4553E124A6B6D00721BF7 /* sse2fdct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sse2fdct.c; sourceTree = ""; }; 08E4553F124A6B6D00721BF7 /* sse2idct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sse2idct.c; sourceTree = ""; }; 08E45540124A6B6D00721BF7 /* sse2trans.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sse2trans.h; sourceTree = ""; }; 08E45541124A6B6D00721BF7 /* x86cpu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = x86cpu.c; sourceTree = ""; }; 08E45542124A6B6D00721BF7 /* x86cpu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x86cpu.h; sourceTree = ""; }; 08E45543124A6B6D00721BF7 /* x86enc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = x86enc.c; sourceTree = ""; }; 08E45544124A6B6D00721BF7 /* x86enc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x86enc.h; sourceTree = ""; }; 08E45545124A6B6D00721BF7 /* x86enquant.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = x86enquant.c; sourceTree = ""; }; 08E45546124A6B6D00721BF7 /* x86int.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x86int.h; sourceTree = ""; }; 08E45547124A6B6D00721BF7 /* x86state.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = x86state.c; sourceTree = ""; }; 097729930BCAC60000303091 /* codec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = codec.h; path = ../include/theora/codec.h; sourceTree = SOURCE_ROOT; }; 097729940BCAC60000303091 /* theoradec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = theoradec.h; path = ../include/theora/theoradec.h; sourceTree = SOURCE_ROOT; }; 09C8F6430C82FBE500F72188 /* libtheoradec.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libtheoradec.a; sourceTree = BUILT_PRODUCTS_DIR; }; 32BAE0B70371A74B00C91783 /* Theora_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Theora_Prefix.pch; sourceTree = ""; }; 37C9B0130EBB831F0046849C /* theoraenc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = theoraenc.h; path = ../include/theora/theoraenc.h; sourceTree = SOURCE_ROOT; }; 37CA8E380DD747F1005C8CB6 /* internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = internal.h; path = ../lib/internal.h; sourceTree = SOURCE_ROOT; }; 734A751809D76ADD002D8FAE /* Ogg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Ogg.framework; path = /Library/Frameworks/Ogg.framework; sourceTree = ""; }; 734A75BE09D76BB9002D8FAE /* theora.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = theora.h; path = ../include/theora/theora.h; sourceTree = SOURCE_ROOT; }; 738837100B192732005C7A69 /* libtheoraenc.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libtheoraenc.a; sourceTree = BUILT_PRODUCTS_DIR; }; 8D07F2C70486CC7A007CD1D0 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 8D07F2C80486CC7A007CD1D0 /* Theora.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Theora.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 09C8F6410C82FBE500F72188 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 7388370E0B192732005C7A69 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 8D07F2C30486CC7A007CD1D0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 734A751909D76ADD002D8FAE /* Ogg.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 034768DDFF38A45A11DB9C8B /* Products */ = { isa = PBXGroup; children = ( 8D07F2C80486CC7A007CD1D0 /* Theora.framework */, 738837100B192732005C7A69 /* libtheoraenc.a */, 09C8F6430C82FBE500F72188 /* libtheoradec.a */, ); name = Products; sourceTree = ""; }; 084C31D80FE4E5BD00117FC9 /* lib */ = { isa = PBXGroup; children = ( 08E45536124A6B6D00721BF7 /* x86 */, 084C32450FE4E5D500117FC9 /* analyze.c */, 084C32460FE4E5D500117FC9 /* encapiwrapper.c */, 084C32470FE4E5D500117FC9 /* encfrag.c */, 084C32480FE4E5D500117FC9 /* encinfo.c */, 084C32490FE4E5D500117FC9 /* encint.h */, 084C324A0FE4E5D500117FC9 /* encode.c */, 084C324B0FE4E5D500117FC9 /* encoder_disabled.c */, 084C324C0FE4E5D500117FC9 /* enquant.c */, 084C324D0FE4E5D500117FC9 /* enquant.h */, 084C324E0FE4E5D500117FC9 /* fdct.c */, 084C324F0FE4E5D500117FC9 /* huffenc.c */, 084C32500FE4E5D500117FC9 /* huffenc.h */, 084C32510FE4E5D500117FC9 /* mathops.c */, 084C32520FE4E5D500117FC9 /* mathops.h */, 084C32530FE4E5D500117FC9 /* mcenc.c */, 084C32540FE4E5D500117FC9 /* modedec.h */, 084C32550FE4E5D500117FC9 /* rate.c */, 084C32560FE4E5D500117FC9 /* tokenize.c */, 084C31D90FE4E5BD00117FC9 /* apiwrapper.c */, 084C31DA0FE4E5BD00117FC9 /* apiwrapper.h */, 084C31DB0FE4E5BD00117FC9 /* bitpack.c */, 084C31DC0FE4E5BD00117FC9 /* bitpack.h */, 084C31DD0FE4E5BD00117FC9 /* dct.h */, 084C31DE0FE4E5BD00117FC9 /* decapiwrapper.c */, 084C31DF0FE4E5BD00117FC9 /* decinfo.c */, 084C31E00FE4E5BD00117FC9 /* decint.h */, 084C31E10FE4E5BD00117FC9 /* decode.c */, 084C31E20FE4E5BD00117FC9 /* dequant.c */, 084C31E30FE4E5BD00117FC9 /* dequant.h */, 084C31E40FE4E5BD00117FC9 /* fragment.c */, 084C31E50FE4E5BD00117FC9 /* huffdec.c */, 084C31E60FE4E5BD00117FC9 /* huffdec.h */, 084C31E70FE4E5BD00117FC9 /* huffman.h */, 084C31E80FE4E5BD00117FC9 /* idct.c */, 084C31E90FE4E5BD00117FC9 /* info.c */, 084C31EA0FE4E5BD00117FC9 /* internal.c */, 084C31EB0FE4E5BD00117FC9 /* ocintrin.h */, 084C31EC0FE4E5BD00117FC9 /* quant.c */, 084C31ED0FE4E5BD00117FC9 /* quant.h */, 084C31EE0FE4E5BD00117FC9 /* state.c */, ); name = lib; path = ../lib; sourceTree = SOURCE_ROOT; }; 0867D691FE84028FC02AAC07 /* Theora */ = { isa = PBXGroup; children = ( 734A75BD09D76B96002D8FAE /* Headers */, 08FB77ACFE841707C02AAC07 /* Source */, 089C1665FE841158C02AAC07 /* Resources */, 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, 034768DDFF38A45A11DB9C8B /* Products */, ); name = Theora; sourceTree = ""; }; 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { isa = PBXGroup; children = ( 734A751809D76ADD002D8FAE /* Ogg.framework */, ); name = "External Frameworks and Libraries"; sourceTree = ""; }; 089C1665FE841158C02AAC07 /* Resources */ = { isa = PBXGroup; children = ( 8D07F2C70486CC7A007CD1D0 /* Info.plist */, 089C1666FE841158C02AAC07 /* InfoPlist.strings */, ); name = Resources; sourceTree = ""; }; 08E45536124A6B6D00721BF7 /* x86 */ = { isa = PBXGroup; children = ( 08E45537124A6B6D00721BF7 /* mmxencfrag.c */, 08E45538124A6B6D00721BF7 /* mmxfdct.c */, 08E45539124A6B6D00721BF7 /* mmxfrag.c */, 08E4553A124A6B6D00721BF7 /* mmxidct.c */, 08E4553B124A6B6D00721BF7 /* mmxloop.h */, 08E4553C124A6B6D00721BF7 /* mmxstate.c */, 08E4553D124A6B6D00721BF7 /* sse2encfrag.c */, 08E4553E124A6B6D00721BF7 /* sse2fdct.c */, 08E4553F124A6B6D00721BF7 /* sse2idct.c */, 08E45540124A6B6D00721BF7 /* sse2trans.h */, 08E45541124A6B6D00721BF7 /* x86cpu.c */, 08E45542124A6B6D00721BF7 /* x86cpu.h */, 08E45543124A6B6D00721BF7 /* x86enc.c */, 08E45544124A6B6D00721BF7 /* x86enc.h */, 08E45545124A6B6D00721BF7 /* x86enquant.c */, 08E45546124A6B6D00721BF7 /* x86int.h */, 08E45547124A6B6D00721BF7 /* x86state.c */, ); path = x86; sourceTree = ""; }; 08FB77ACFE841707C02AAC07 /* Source */ = { isa = PBXGroup; children = ( 084C31D80FE4E5BD00117FC9 /* lib */, 37CA8E380DD747F1005C8CB6 /* internal.h */, 32BAE0B70371A74B00C91783 /* Theora_Prefix.pch */, ); name = Source; sourceTree = ""; }; 734A75BD09D76B96002D8FAE /* Headers */ = { isa = PBXGroup; children = ( 37C9B0130EBB831F0046849C /* theoraenc.h */, 097729940BCAC60000303091 /* theoradec.h */, 097729930BCAC60000303091 /* codec.h */, 734A75BE09D76BB9002D8FAE /* theora.h */, ); name = Headers; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ 09C8F63F0C82FBE500F72188 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 084C32220FE4E5BD00117FC9 /* apiwrapper.h in Headers */, 084C32240FE4E5BD00117FC9 /* bitpack.h in Headers */, 084C32250FE4E5BD00117FC9 /* dct.h in Headers */, 084C32280FE4E5BD00117FC9 /* decint.h in Headers */, 084C322B0FE4E5BD00117FC9 /* dequant.h in Headers */, 084C322E0FE4E5BD00117FC9 /* huffdec.h in Headers */, 084C322F0FE4E5BD00117FC9 /* huffman.h in Headers */, 084C32330FE4E5BD00117FC9 /* ocintrin.h in Headers */, 084C32350FE4E5BD00117FC9 /* quant.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 7388370C0B192732005C7A69 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 084C32810FE4E5D500117FC9 /* encint.h in Headers */, 084C32850FE4E5D500117FC9 /* enquant.h in Headers */, 084C32880FE4E5D500117FC9 /* huffenc.h in Headers */, 084C328A0FE4E5D500117FC9 /* mathops.h in Headers */, 084C328C0FE4E5D500117FC9 /* modedec.h in Headers */, 084C32A80FE4E7FF00117FC9 /* apiwrapper.h in Headers */, 084C32A90FE4E82500117FC9 /* dct.h in Headers */, 084C32AD0FE4E84800117FC9 /* quant.h in Headers */, 084C32AF0FE4E84C00117FC9 /* ocintrin.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 8D07F2BD0486CC7A007CD1D0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 8D07F2BE0486CC7A007CD1D0 /* Theora_Prefix.pch in Headers */, 734A75BF09D76BB9002D8FAE /* theora.h in Headers */, 097729950BCAC60000303091 /* codec.h in Headers */, 097729960BCAC60000303091 /* theoradec.h in Headers */, 37CA8E390DD747F1005C8CB6 /* internal.h in Headers */, 37C9B0140EBB831F0046849C /* theoraenc.h in Headers */, 084C31FF0FE4E5BD00117FC9 /* apiwrapper.h in Headers */, 084C32010FE4E5BD00117FC9 /* bitpack.h in Headers */, 084C32020FE4E5BD00117FC9 /* dct.h in Headers */, 084C32050FE4E5BD00117FC9 /* decint.h in Headers */, 084C32080FE4E5BD00117FC9 /* dequant.h in Headers */, 084C320B0FE4E5BD00117FC9 /* huffdec.h in Headers */, 084C320C0FE4E5BD00117FC9 /* huffman.h in Headers */, 084C32100FE4E5BD00117FC9 /* ocintrin.h in Headers */, 084C32120FE4E5BD00117FC9 /* quant.h in Headers */, 084C32660FE4E5D500117FC9 /* encint.h in Headers */, 084C326A0FE4E5D500117FC9 /* enquant.h in Headers */, 084C326D0FE4E5D500117FC9 /* huffenc.h in Headers */, 084C326F0FE4E5D500117FC9 /* mathops.h in Headers */, 084C32710FE4E5D500117FC9 /* modedec.h in Headers */, 08E4554C124A6B6D00721BF7 /* mmxloop.h in Headers */, 08E45551124A6B6D00721BF7 /* sse2trans.h in Headers */, 08E45553124A6B6D00721BF7 /* x86cpu.h in Headers */, 08E45555124A6B6D00721BF7 /* x86enc.h in Headers */, 08E45557124A6B6D00721BF7 /* x86int.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ 09C8F6420C82FBE500F72188 /* libtheoradec (static) */ = { isa = PBXNativeTarget; buildConfigurationList = 09C8F6610C82FC3E00F72188 /* Build configuration list for PBXNativeTarget "libtheoradec (static)" */; buildPhases = ( 09C8F63F0C82FBE500F72188 /* Headers */, 09C8F6400C82FBE500F72188 /* Sources */, 09C8F6410C82FBE500F72188 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = "libtheoradec (static)"; productName = libtheoradec; productReference = 09C8F6430C82FBE500F72188 /* libtheoradec.a */; productType = "com.apple.product-type.library.static"; }; 7388370F0B192732005C7A69 /* libtheoraenc (static) */ = { isa = PBXNativeTarget; buildConfigurationList = 738837110B19277F005C7A69 /* Build configuration list for PBXNativeTarget "libtheoraenc (static)" */; buildPhases = ( 7388370C0B192732005C7A69 /* Headers */, 7388370D0B192732005C7A69 /* Sources */, 7388370E0B192732005C7A69 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = "libtheoraenc (static)"; productName = theora; productReference = 738837100B192732005C7A69 /* libtheoraenc.a */; productType = "com.apple.product-type.library.static"; }; 8D07F2BC0486CC7A007CD1D0 /* Theora */ = { isa = PBXNativeTarget; buildConfigurationList = 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "Theora" */; buildPhases = ( 8D07F2BD0486CC7A007CD1D0 /* Headers */, 8D07F2BF0486CC7A007CD1D0 /* Resources */, 8D07F2C10486CC7A007CD1D0 /* Sources */, 8D07F2C30486CC7A007CD1D0 /* Frameworks */, 8D07F2C50486CC7A007CD1D0 /* Rez */, ); buildRules = ( ); dependencies = ( ); name = Theora; productInstallPath = "$(HOME)/Library/Frameworks"; productName = Theora; productReference = 8D07F2C80486CC7A007CD1D0 /* Theora.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 0867D690FE84028FC02AAC07 /* Project object */ = { isa = PBXProject; buildConfigurationList = 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "Theora" */; compatibilityVersion = "Xcode 2.4"; hasScannedForEncodings = 1; mainGroup = 0867D691FE84028FC02AAC07 /* Theora */; productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; projectDirPath = ""; projectRoot = ..; targets = ( 8D07F2BC0486CC7A007CD1D0 /* Theora */, 7388370F0B192732005C7A69 /* libtheoraenc (static) */, 09C8F6420C82FBE500F72188 /* libtheoradec (static) */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 8D07F2BF0486CC7A007CD1D0 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 8D07F2C00486CC7A007CD1D0 /* InfoPlist.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXRezBuildPhase section */ 8D07F2C50486CC7A007CD1D0 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXRezBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 09C8F6400C82FBE500F72188 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 084C32210FE4E5BD00117FC9 /* apiwrapper.c in Sources */, 084C32230FE4E5BD00117FC9 /* bitpack.c in Sources */, 084C32260FE4E5BD00117FC9 /* decapiwrapper.c in Sources */, 084C32270FE4E5BD00117FC9 /* decinfo.c in Sources */, 084C32290FE4E5BD00117FC9 /* decode.c in Sources */, 084C322A0FE4E5BD00117FC9 /* dequant.c in Sources */, 084C322C0FE4E5BD00117FC9 /* fragment.c in Sources */, 084C322D0FE4E5BD00117FC9 /* huffdec.c in Sources */, 084C32300FE4E5BD00117FC9 /* idct.c in Sources */, 084C32310FE4E5BD00117FC9 /* info.c in Sources */, 084C32320FE4E5BD00117FC9 /* internal.c in Sources */, 084C32340FE4E5BD00117FC9 /* quant.c in Sources */, 084C32360FE4E5BD00117FC9 /* state.c in Sources */, 08D99AF612526EF8005A6116 /* x86state.c in Sources */, 08D99AFC12526F06005A6116 /* x86cpu.c in Sources */, 08D99AFD12526F14005A6116 /* sse2idct.c in Sources */, 08D99AFE12526F2C005A6116 /* mmxstate.c in Sources */, 08D99AFF12526F32005A6116 /* mmxidct.c in Sources */, 08D99B0012526F33005A6116 /* mmxfrag.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 7388370D0B192732005C7A69 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 084C327D0FE4E5D500117FC9 /* analyze.c in Sources */, 084C327E0FE4E5D500117FC9 /* encapiwrapper.c in Sources */, 084C327F0FE4E5D500117FC9 /* encfrag.c in Sources */, 084C32800FE4E5D500117FC9 /* encinfo.c in Sources */, 084C32820FE4E5D500117FC9 /* encode.c in Sources */, 084C32840FE4E5D500117FC9 /* enquant.c in Sources */, 084C32860FE4E5D500117FC9 /* fdct.c in Sources */, 084C32870FE4E5D500117FC9 /* huffenc.c in Sources */, 084C32890FE4E5D500117FC9 /* mathops.c in Sources */, 084C328B0FE4E5D500117FC9 /* mcenc.c in Sources */, 084C328D0FE4E5D500117FC9 /* rate.c in Sources */, 084C328E0FE4E5D500117FC9 /* tokenize.c in Sources */, 084C32A70FE4E7FE00117FC9 /* apiwrapper.c in Sources */, 084C32AA0FE4E83100117FC9 /* idct.c in Sources */, 084C32AB0FE4E83300117FC9 /* internal.c in Sources */, 084C32AC0FE4E83600117FC9 /* fragment.c in Sources */, 084C32AE0FE4E84A00117FC9 /* quant.c in Sources */, 084C32B00FE4E84F00117FC9 /* state.c in Sources */, 08D99AEC12526E77005A6116 /* mmxencfrag.c in Sources */, 08D99AED12526E7A005A6116 /* mmxfdct.c in Sources */, 08D99AEE12526E87005A6116 /* mmxfrag.c in Sources */, 08D99AEF12526E89005A6116 /* mmxidct.c in Sources */, 08D99AF012526E90005A6116 /* mmxstate.c in Sources */, 08D99AF112526E99005A6116 /* sse2encfrag.c in Sources */, 08D99AF212526EA2005A6116 /* sse2idct.c in Sources */, 08D99AF312526EAA005A6116 /* x86cpu.c in Sources */, 08D99AF412526EB0005A6116 /* x86enc.c in Sources */, 08D99AF512526EB2005A6116 /* x86enquant.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 8D07F2C10486CC7A007CD1D0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 084C31FE0FE4E5BD00117FC9 /* apiwrapper.c in Sources */, 084C32000FE4E5BD00117FC9 /* bitpack.c in Sources */, 084C32030FE4E5BD00117FC9 /* decapiwrapper.c in Sources */, 084C32040FE4E5BD00117FC9 /* decinfo.c in Sources */, 084C32060FE4E5BD00117FC9 /* decode.c in Sources */, 084C32070FE4E5BD00117FC9 /* dequant.c in Sources */, 084C32090FE4E5BD00117FC9 /* fragment.c in Sources */, 084C320A0FE4E5BD00117FC9 /* huffdec.c in Sources */, 084C320D0FE4E5BD00117FC9 /* idct.c in Sources */, 084C320E0FE4E5BD00117FC9 /* info.c in Sources */, 084C320F0FE4E5BD00117FC9 /* internal.c in Sources */, 084C32110FE4E5BD00117FC9 /* quant.c in Sources */, 084C32130FE4E5BD00117FC9 /* state.c in Sources */, 084C32620FE4E5D500117FC9 /* analyze.c in Sources */, 084C32630FE4E5D500117FC9 /* encapiwrapper.c in Sources */, 084C32640FE4E5D500117FC9 /* encfrag.c in Sources */, 084C32650FE4E5D500117FC9 /* encinfo.c in Sources */, 084C32670FE4E5D500117FC9 /* encode.c in Sources */, 084C32690FE4E5D500117FC9 /* enquant.c in Sources */, 084C326B0FE4E5D500117FC9 /* fdct.c in Sources */, 084C326C0FE4E5D500117FC9 /* huffenc.c in Sources */, 084C326E0FE4E5D500117FC9 /* mathops.c in Sources */, 084C32700FE4E5D500117FC9 /* mcenc.c in Sources */, 084C32720FE4E5D500117FC9 /* rate.c in Sources */, 084C32730FE4E5D500117FC9 /* tokenize.c in Sources */, 08E45548124A6B6D00721BF7 /* mmxencfrag.c in Sources */, 08E45549124A6B6D00721BF7 /* mmxfdct.c in Sources */, 08E4554A124A6B6D00721BF7 /* mmxfrag.c in Sources */, 08E4554B124A6B6D00721BF7 /* mmxidct.c in Sources */, 08E4554D124A6B6D00721BF7 /* mmxstate.c in Sources */, 08E4554E124A6B6D00721BF7 /* sse2encfrag.c in Sources */, 08E4554F124A6B6D00721BF7 /* sse2fdct.c in Sources */, 08E45550124A6B6D00721BF7 /* sse2idct.c in Sources */, 08E45552124A6B6D00721BF7 /* x86cpu.c in Sources */, 08E45554124A6B6D00721BF7 /* x86enc.c in Sources */, 08E45556124A6B6D00721BF7 /* x86enquant.c in Sources */, 08E45558124A6B6D00721BF7 /* x86state.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ 089C1666FE841158C02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( 089C1667FE841158C02AAC07 /* English */, ); name = InfoPlist.strings; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 09C8F6620C82FC3E00F72188 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = ( "$(inherited)", ../../ogg/include, ); INSTALL_PATH = /usr/local/lib; PREBINDING = NO; PRODUCT_NAME = theoradec; ZERO_LINK = YES; }; name = Debug; }; 09C8F6630C82FC3E00F72188 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; HEADER_SEARCH_PATHS = ( "$(inherited)", ../../ogg/include, ); INSTALL_PATH = /usr/local/lib; PREBINDING = NO; PRODUCT_NAME = theoradec; ZERO_LINK = NO; }; name = Release; }; 4FADC24308B4156D00ABE55E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", /Library/Frameworks, ); FRAMEWORK_VERSION = A; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Theora_Prefix.pch; INFOPLIST_FILE = Info.plist; INSTALL_PATH = /Library/Frameworks; LIBRARY_STYLE = DYNAMIC; MACH_O_TYPE = mh_dylib; OTHER_LDFLAGS_i386 = "-Wl,-read_only_relocs,suppress"; PRODUCT_NAME = Theora; WRAPPER_EXTENSION = framework; ZERO_LINK = YES; }; name = Debug; }; 4FADC24408B4156D00ABE55E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", /Library/Frameworks, ); FRAMEWORK_VERSION = A; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Theora_Prefix.pch; INFOPLIST_FILE = Info.plist; INSTALL_PATH = /Library/Frameworks; LIBRARY_STYLE = DYNAMIC; MACH_O_TYPE = mh_dylib; OTHER_LDFLAGS_i386 = "-Wl,-read_only_relocs,suppress"; PREBINDING = YES; PRODUCT_NAME = Theora; WRAPPER_EXTENSION = framework; }; name = Release; }; 4FADC24708B4156D00ABE55E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "$(GCC_PREPROCESSOR_DEFINITIONS)", __MACOSX__, ); GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", ../include, "../lib/**", ); OTHER_CFLAGS = ""; PREBINDING = NO; SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; }; name = Debug; }; 4FADC24808B4156D00ABE55E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; GCC_OPTIMIZATION_LEVEL = 3; GCC_PREPROCESSOR_DEFINITIONS = ( "$(GCC_PREPROCESSOR_DEFINITIONS)", __MACOSX__, ); GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", ../include, "../lib/**", ); OTHER_CFLAGS = ( "$(OTHER_CFLAGS)", "-falign-loops=16", "-fforce-addr", "-fomit-frame-pointer", "-finline-functions", "-funroll-loops", ); PER_ARCH_CFLAGS_i386 = "-DOC_X86_ASM"; PREBINDING = NO; SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; }; name = Release; }; 738837120B19277F005C7A69 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = ( "$(inherited)", ../../ogg/include, ); INSTALL_PATH = /usr/local/lib; PREBINDING = NO; PRODUCT_NAME = theoraenc; ZERO_LINK = YES; }; name = Debug; }; 738837130B19277F005C7A69 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; HEADER_SEARCH_PATHS = ( "$(inherited)", ../../ogg/include, ); INSTALL_PATH = /usr/local/lib; PREBINDING = NO; PRODUCT_NAME = theoraenc; ZERO_LINK = NO; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 09C8F6610C82FC3E00F72188 /* Build configuration list for PBXNativeTarget "libtheoradec (static)" */ = { isa = XCConfigurationList; buildConfigurations = ( 09C8F6620C82FC3E00F72188 /* Debug */, 09C8F6630C82FC3E00F72188 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "Theora" */ = { isa = XCConfigurationList; buildConfigurations = ( 4FADC24308B4156D00ABE55E /* Debug */, 4FADC24408B4156D00ABE55E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "Theora" */ = { isa = XCConfigurationList; buildConfigurations = ( 4FADC24708B4156D00ABE55E /* Debug */, 4FADC24808B4156D00ABE55E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 738837110B19277F005C7A69 /* Build configuration list for PBXNativeTarget "libtheoraenc (static)" */ = { isa = XCConfigurationList; buildConfigurations = ( 738837120B19277F005C7A69 /* Debug */, 738837130B19277F005C7A69 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = 0867D690FE84028FC02AAC07 /* Project object */; } libtheora-1.2.0/win32/0002755000175000017500000000000014771706724013116 5ustar pereperelibtheora-1.2.0/win32/VS2010/0002755000175000017500000000000014771706724013751 5ustar pereperelibtheora-1.2.0/win32/VS2010/libogg.props0000644000175000017500000000215614771706724016303 0ustar perepere 1.2.0 <_ProjectFileVersion>10.0.30319.1 ..\..\..\..\libogg-$(LIBOGG_VERSION)\include;..\..\..\..\ogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include;%(AdditionalIncludeDirectories) ..\..\..\..\libogg-$(LIBOGG_VERSION)\win32\VS2010\$(PlatformName)\$(ConfigurationName);..\..\..\..\ogg\win32\VS2010\$(PlatformName)\$(ConfigurationName);..\..\..\..\..\..\..\core\ogg\libogg\win32\VS2010\$(PlatformName)\$(ConfigurationName) $(LIBOGG_VERSION) libtheora-1.2.0/win32/VS2010/libtheora_dynamic.sln0000644000175000017500000000544114771706724020146 0ustar perepere Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtheora_dynamic", "libtheora\libtheora_dynamic.vcxproj", "{653F3841-3F26-49B9-AFCF-091DB4B67031}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dump_video_dynamic", "dump_video\dump_video_dynamic.vcxproj", "{1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "encoder_example_dynamic", "encoder_example\encoder_example_dynamic.vcxproj", "{AD710263-EBFA-4388-BAA9-AD73C32AFF26}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.ActiveCfg = Debug|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.Build.0 = Debug|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.ActiveCfg = Debug|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.Build.0 = Debug|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.ActiveCfg = Release|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.Build.0 = Release|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.ActiveCfg = Release|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.Build.0 = Release|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.ActiveCfg = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.Build.0 = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.ActiveCfg = Debug|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.Build.0 = Debug|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.ActiveCfg = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.Build.0 = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.ActiveCfg = Release|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.Build.0 = Release|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.ActiveCfg = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.Build.0 = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.ActiveCfg = Debug|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.Build.0 = Debug|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.ActiveCfg = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.Build.0 = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.ActiveCfg = Release|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal libtheora-1.2.0/win32/VS2010/libvorbis.props0000644000175000017500000000220514771706724017026 0ustar perepere 1.3.1 <_ProjectFileVersion>10.0.30319.1 ..\..\..\..\libvorbis-$(LIBVORBIS_VERSION)\include;..\..\..\..\vorbis\include;..\..\..\..\..\..\vorbis\libs\libvorbis\include;%(AdditionalIncludeDirectories) ..\..\..\..\libvorbis-$(LIBVORBIS_VERSION)\win32\VS2010\$(Platform)\$(Configuration);..\..\..\..\vorbis\win32\VS2010\$(Platform)\$(Configuration);..\..\..\..\..\..\vorbis\libs\libvorbis\win32\VS2010\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) $(LIBVORBIS_VERSION) libtheora-1.2.0/win32/VS2010/dump_video/0002755000175000017500000000000014771706724016104 5ustar pereperelibtheora-1.2.0/win32/VS2010/dump_video/dump_video_dynamic.vcxproj0000644000175000017500000002615414771706724023366 0ustar perepere Debug Win32 Debug x64 Release Win32 Release x64 dump_video {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF} dump_video Win32Proj Application Unicode true Application Unicode Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ true $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ true $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ false $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ false Disabled ..\..\..\include;..\..\..\..\libogg\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true StackFrameRuntimeCheck MultiThreadedDebugDLL Level3 EditAndContinue libogg.lib;libtheora.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) true Console false MachineX86 X64 Disabled ..\..\..\include;..\..\..\..\libogg\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true StackFrameRuntimeCheck MultiThreadedDebugDLL Level3 ProgramDatabase libogg.lib;libtheora.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) true Console false MachineX64 ..\..\..\include;..\..\..\..\libogg\include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL Level3 ProgramDatabase libogg.lib;libtheora.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) false Console true true false MachineX86 X64 ..\..\..\include;..\..\..\..\libogg\include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL Level3 ProgramDatabase libogg.lib;libtheora.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) false Console true true false MachineX64 {653f3841-3f26-49b9-afcf-091db4b67031} libtheora-1.2.0/win32/VS2010/dump_video/dump_video_static.vcxproj0000644000175000017500000002627014771706724023230 0ustar perepere Debug Win32 Debug x64 Release Win32 Release x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF} dump_video Win32Proj Application Unicode true Application Unicode Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ true $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ true $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ false $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ false Disabled ..\..\..\include;..\..\..\..\libogg\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true StackFrameRuntimeCheck MultiThreadedDebugDLL Level3 EditAndContinue libogg_static.lib;libtheora_static.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) true Console false MachineX86 X64 Disabled ..\..\..\include;..\..\..\..\libogg\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true StackFrameRuntimeCheck MultiThreadedDebugDLL Level3 ProgramDatabase libogg_static.lib;libtheora_static.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) true Console false MachineX64 ..\..\..\include;..\..\..\..\libogg\include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL Level3 ProgramDatabase libogg_static.lib;libtheora_static.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) false Console true true false MachineX86 X64 ..\..\..\include;..\..\..\..\libogg\include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL Level3 ProgramDatabase libogg_static.lib;libtheora_static.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) false Console true true false MachineX64 {653f3841-3f26-49b9-afcf-091db4b67031} false libtheora-1.2.0/win32/VS2010/README0000644000175000017500000000125414771706724014631 0ustar pereperelibtheora has libogg as a dependency, and for examples, also libvorbis, therefore you need to have libogg and libvorbis compiled beforehand. Lets say you have libogg, libvorbis and libtheora in the same directory: libogg-1.1.4 libvorbis-1.2.2 libtheora-1.0 Because there is no automatic library detection you have to, either: 1. Rename libogg-1.1.4 to libogg, and libvorbis-1.2.2 to libvorbis. 2. Open libogg.props with a text editor (even notepad.exe will suffice) and see if LIBOGG_VERSION is set to the correct version, in this case "1.1.4". The same procedure should be done for libvorbis.props and check LIBVORBIS_VERSION for the correct version, in this case "1.2.2". libtheora-1.2.0/win32/VS2010/encoder_example/0002755000175000017500000000000014771706724017103 5ustar pereperelibtheora-1.2.0/win32/VS2010/encoder_example/encoder_example_static.vcxproj0000644000175000017500000003002514771706724025217 0ustar perepere Debug Win32 Debug x64 Release Win32 Release x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26} encoder_example Win32Proj Application Unicode true Application Unicode Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ true $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ true $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ false $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ false Disabled ..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true StackFrameRuntimeCheck MultiThreadedDebugDLL Level3 EditAndContinue libogg_static.lib;libvorbis_static.lib;libtheora_static.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\..\..\..\libvorbis\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) true Console false MachineX86 X64 Disabled ..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true StackFrameRuntimeCheck MultiThreadedDebugDLL Level3 ProgramDatabase libogg_static.lib;libvorbis_static.lib;libtheora_static.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\..\..\..\libvorbis\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) true Console false MachineX64 AnySuitable true Speed ..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL Level4 ProgramDatabase libogg_static.lib;libvorbis_static.lib;libtheora_static.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\..\..\..\libvorbis\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) false Console true true false MachineX86 X64 AnySuitable true Speed ..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL Level4 ProgramDatabase libogg_static.lib;libvorbis_static.lib;libtheora_static.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\..\..\..\libvorbis\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) false Console true true false MachineX64 {653f3841-3f26-49b9-afcf-091db4b67031} false libtheora-1.2.0/win32/VS2010/encoder_example/encoder_example_dynamic.vcxproj0000644000175000017500000002766214771706724025371 0ustar perepere Debug Win32 Debug x64 Release Win32 Release x64 encoder_example {AD710263-EBFA-4388-BAA9-AD73C32AFF26} encoder_example Win32Proj Application Unicode true Application Unicode Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ true $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ true $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ false $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ false Disabled ..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true StackFrameRuntimeCheck MultiThreadedDebugDLL Level3 EditAndContinue libogg.lib;libvorbis.lib;libtheora.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\..\..\..\libvorbis\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) true Console false MachineX86 X64 Disabled ..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true StackFrameRuntimeCheck MultiThreadedDebugDLL Level3 ProgramDatabase libogg.lib;libvorbis.lib;libtheora.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\..\..\..\libvorbis\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) true Console false MachineX64 AnySuitable true Speed ..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL Level4 ProgramDatabase libogg.lib;libvorbis.lib;libtheora.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\..\..\..\libvorbis\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) false Console true true false MachineX86 X64 AnySuitable true Speed ..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL Level4 ProgramDatabase libogg.lib;libvorbis.lib;libtheora.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);..\..\..\..\libvorbis\win32\VS2010\$(Platform)\$(Configuration);..\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) false Console true true false MachineX64 {653f3841-3f26-49b9-afcf-091db4b67031} libtheora-1.2.0/win32/VS2010/libtheora_static.sln0000644000175000017500000000543314771706724020012 0ustar perepere Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtheora_static", "libtheora\libtheora_static.vcxproj", "{653F3841-3F26-49B9-AFCF-091DB4B67031}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dump_video_static", "dump_video\dump_video_static.vcxproj", "{1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "encoder_example_static", "encoder_example\encoder_example_static.vcxproj", "{AD710263-EBFA-4388-BAA9-AD73C32AFF26}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.ActiveCfg = Debug|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.Build.0 = Debug|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.ActiveCfg = Debug|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.Build.0 = Debug|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.ActiveCfg = Release|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.Build.0 = Release|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.ActiveCfg = Release|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.Build.0 = Release|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.ActiveCfg = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.Build.0 = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.ActiveCfg = Debug|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.Build.0 = Debug|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.ActiveCfg = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.Build.0 = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.ActiveCfg = Release|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.Build.0 = Release|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.ActiveCfg = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.Build.0 = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.ActiveCfg = Debug|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.Build.0 = Debug|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.ActiveCfg = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.Build.0 = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.ActiveCfg = Release|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal libtheora-1.2.0/win32/VS2010/libtheora/0002755000175000017500000000000014771706724015722 5ustar pereperelibtheora-1.2.0/win32/VS2010/libtheora/libtheora_dynamic.vcxproj0000644000175000017500000004416014771706724023017 0ustar perepere Debug Win32 Debug x64 Release Win32 Release x64 libtheora {653F3841-3F26-49B9-AFCF-091DB4B67031} libtheora Win32Proj DynamicLibrary Unicode true DynamicLibrary Unicode DynamicLibrary Unicode true DynamicLibrary Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ Disabled ..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;OC_X86_ASM;%(PreprocessorDefinitions) true StackFrameRuntimeCheck MultiThreadedDebugDLL Level3 ProgramDatabase libogg.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) ..\..\..\lib\theora.def false X64 Disabled ..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;%(PreprocessorDefinitions) true StackFrameRuntimeCheck MultiThreadedDebugDLL Level3 ProgramDatabase libogg.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) ..\..\..\lib\theora.def false MaxSpeed AnySuitable true Speed ..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;OC_X86_ASM;%(PreprocessorDefinitions) true MultiThreadedDLL false Level4 CompileAsC 4244;4267;4057;4100;4245;%(DisableSpecificWarnings) libogg.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) ..\..\..\lib\theora.def false X64 MaxSpeed AnySuitable true Speed ..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;%(PreprocessorDefinitions) true MultiThreadedDLL false Level4 CompileAsC 4244;4267;4057;4100;4245;%(DisableSpecificWarnings) libogg.lib;%(AdditionalDependencies) ..\..\..\..\libogg\win32\VS2010\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) ..\..\..\lib\theora.def false true true true true $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc libtheora-1.2.0/win32/VS2010/libtheora/libtheora_static.vcxproj0000644000175000017500000004016514771706724022663 0ustar perepere Debug Win32 Debug x64 Release Win32 Release x64 {653F3841-3F26-49B9-AFCF-091DB4B67031} libtheora Win32Proj StaticLibrary Unicode true StaticLibrary Unicode StaticLibrary Unicode true StaticLibrary Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ Disabled ..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;OC_X86_ASM;%(PreprocessorDefinitions) true StackFrameRuntimeCheck MultiThreadedDebugDLL Level3 ProgramDatabase X64 Disabled ..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;%(PreprocessorDefinitions) true StackFrameRuntimeCheck MultiThreadedDebugDLL Level3 ProgramDatabase MaxSpeed AnySuitable true Speed ..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;OC_X86_ASM;%(PreprocessorDefinitions) true MultiThreadedDLL false Level4 CompileAsC 4244;4267;4057;4100;4245;%(DisableSpecificWarnings) X64 MaxSpeed AnySuitable true Speed ..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;%(PreprocessorDefinitions) true MultiThreadedDLL false Level4 CompileAsC 4244;4267;4057;4100;4245;%(DisableSpecificWarnings) true true true true $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc libtheora-1.2.0/win32/VS2005/0002755000175000017500000000000014771706724013755 5ustar pereperelibtheora-1.2.0/win32/VS2005/libtheora_dynamic.sln0000644000175000017500000000540514771706724020152 0ustar perepere Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtheora", "libtheora\libtheora_dynamic.vcproj", "{653F3841-3F26-49B9-AFCF-091DB4B67031}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dump_video", "dump_video\dump_video_dynamic.vcproj", "{1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "encoder_example", "encoder_example\encoder_example_dynamic.vcproj", "{AD710263-EBFA-4388-BAA9-AD73C32AFF26}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.ActiveCfg = Debug|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.Build.0 = Debug|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.ActiveCfg = Debug|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.Build.0 = Debug|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.ActiveCfg = Release|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.Build.0 = Release|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.ActiveCfg = Release|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.Build.0 = Release|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.ActiveCfg = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.Build.0 = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.ActiveCfg = Debug|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.Build.0 = Debug|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.ActiveCfg = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.Build.0 = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.ActiveCfg = Release|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.Build.0 = Release|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.ActiveCfg = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.Build.0 = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.ActiveCfg = Debug|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.Build.0 = Debug|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.ActiveCfg = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.Build.0 = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.ActiveCfg = Release|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal libtheora-1.2.0/win32/VS2005/dump_video/0002755000175000017500000000000014771706724016110 5ustar pereperelibtheora-1.2.0/win32/VS2005/dump_video/dump_video_dynamic.vcproj0000644000175000017500000003775714771706724023215 0ustar perepere libtheora-1.2.0/win32/VS2005/dump_video/dump_video_static.vcproj0000644000175000017500000003744414771706724023051 0ustar perepere libtheora-1.2.0/win32/VS2005/libogg.vsprops0000644000175000017500000000140714771706724016656 0ustar perepere libtheora-1.2.0/win32/VS2005/README0000644000175000017500000000130614771706724014633 0ustar pereperelibtheora has libogg as a dependency, and for examples, also libvorbis, therefore you need to have libogg and libvorbis compiled beforehand. Lets say you have libogg, libvorbis and libtheora in the same directory: libogg-1.1.4 libvorbis-1.2.2 libtheora-1.0 Because there is no automatic library detection you have to, either: 1. Rename libogg-1.1.4 to libogg, and libvorbis-1.2.2 to libvorbis. 2. Open libogg.vsprops with a text editor (even notepad.exe will suffice) and see if LIBOGG_VERSION is set to the correct version, in this case "1.1.4". The same procedure should be done for libvorbis.vsprops and check LIBVORBIS_VERSION for the correct version, in this case "1.2.2". libtheora-1.2.0/win32/VS2005/libvorbis.vsprops0000644000175000017500000000144514771706724017410 0ustar perepere libtheora-1.2.0/win32/VS2005/encoder_example/0002755000175000017500000000000014771706724017107 5ustar pereperelibtheora-1.2.0/win32/VS2005/encoder_example/encoder_example_dynamic.vcproj0000644000175000017500000004342214771706724025175 0ustar perepere libtheora-1.2.0/win32/VS2005/encoder_example/encoder_example_static.vcproj0000644000175000017500000004334314771706724025042 0ustar perepere libtheora-1.2.0/win32/VS2005/libtheora_static.sln0000644000175000017500000000542714771706724020021 0ustar perepere Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dump_video_static", "dump_video\dump_video_static.vcproj", "{1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtheora_static", "libtheora\libtheora_static.vcproj", "{653F3841-3F26-49B9-AFCF-091DB4B67031}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "encoder_example_static", "encoder_example\encoder_example_static.vcproj", "{AD710263-EBFA-4388-BAA9-AD73C32AFF26}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.ActiveCfg = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.Build.0 = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.ActiveCfg = Debug|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.Build.0 = Debug|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.ActiveCfg = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.Build.0 = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.ActiveCfg = Release|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.Build.0 = Release|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.ActiveCfg = Debug|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.Build.0 = Debug|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.ActiveCfg = Debug|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.Build.0 = Debug|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.ActiveCfg = Release|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.Build.0 = Release|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.ActiveCfg = Release|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.Build.0 = Release|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.ActiveCfg = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.Build.0 = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.ActiveCfg = Debug|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.Build.0 = Debug|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.ActiveCfg = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.Build.0 = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.ActiveCfg = Release|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal libtheora-1.2.0/win32/VS2005/libtheora/0002755000175000017500000000000014771706724015726 5ustar pereperelibtheora-1.2.0/win32/VS2005/libtheora/libtheora_static.vcproj0000644000175000017500000021573214771706724022503 0ustar perepere libtheora-1.2.0/win32/VS2005/libtheora/libtheora_dynamic.vcproj0000644000175000017500000022613614771706724022640 0ustar perepere libtheora-1.2.0/win32/build_theora_static_debug.bat0000755000175000017500000000100114771706724020755 0ustar perepere@echo off echo ---+++--- Building Theora (Static) ---+++--- if .%SRCROOT%==. set SRCROOT=D:\xiph set OLDPATH=%PATH% set OLDINCLUDE=%INCLUDE% set OLDLIB=%LIB% call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat" echo Setting include paths for Theora set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\theora\include echo Compiling... msdev theora_static.dsp /useenv /make "theora_static - Win32 Debug" /rebuild set PATH=%OLDPATH% set INCLUDE=%OLDINCLUDE% set LIB=%OLDLIB% libtheora-1.2.0/win32/getopt1.c0000644000175000017500000001071114771706724014643 0ustar perepere/* getopt_long and getopt_long_only entry points for GNU getopt. Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU C Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "getopt_win.h" #if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ #ifndef const #define const #endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 #if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 #include #if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION #define ELIDE_CODE #endif #endif #ifndef ELIDE_CODE /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ #include #endif #ifndef NULL #define NULL 0 #endif int getopt_long (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 0); } /* Like getopt_long, but '-' as well as '--' can indicate a long option. If an option that starts with '-' (not '--') doesn't match a long option, but does match a short option, it is parsed as a short option instead. */ int getopt_long_only (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 1); } #endif /* Not ELIDE_CODE. */ #ifdef TEST #include int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; int option_index = 0; static struct option long_options[] = { {"add", 1, 0, 0}, {"append", 0, 0, 0}, {"delete", 1, 0, 0}, {"verbose", 0, 0, 0}, {"create", 0, 0, 0}, {"file", 1, 0, 0}, {0, 0, 0, 0} }; c = getopt_long (argc, argv, "abc:d:0123456789", long_options, &option_index); if (c == -1) break; switch (c) { case 0: printf ("option %s", long_options[option_index].name); if (optarg) printf (" with arg %s", optarg); printf ("\n"); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case 'd': printf ("option d with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ libtheora-1.2.0/win32/getopt.c0000644000175000017500000007246714771706724014602 0ustar perepere/* Getopt for GNU. NOTE: getopt is now part of the C library, so if you don't know what "Keep this file name-space clean" means, talk to drepper@gnu.org before changing it! Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU C Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This tells Alpha OSF/1 not to define a getopt prototype in . Ditto for AIX 3.2 and . */ #ifndef _NO_PROTO # define _NO_PROTO #endif #ifdef HAVE_CONFIG_H # include "config.h" #endif #if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ # ifndef const # define const # endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 #if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 # include # if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION # define ELIDE_CODE # endif #endif #ifndef ELIDE_CODE /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ /* Don't include stdlib.h for non-GNU C libraries because some of them contain conflicting prototypes for getopt. */ # include # include #endif /* GNU C library. */ #ifdef VMS # include # if HAVE_STRING_H - 0 # include # endif #endif #ifndef _ /* This is for other GNU distributions with internationalized messages. When compiling libc, the _ macro is predefined. */ # ifdef HAVE_LIBINTL_H # include # define _(msgid) gettext (msgid) # else # define _(msgid) (msgid) # endif #endif /* This version of `getopt' appears to the caller like standard Unix `getopt' but it behaves differently for the user, since it allows the user to intersperse the options with the other arguments. As `getopt' works, it permutes the elements of ARGV so that, when it is done, all the options precede everything else. Thus all application programs are extended to handle flexible argument order. Setting the environment variable POSIXLY_CORRECT disables permutation. Then the behavior is completely standard. GNU application programs can use a third alternative mode in which they can distinguish the relative order of options and other arguments. */ #include "getopt_win.h" /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ /* 1003.2 says this must be 1 before any call. */ int optind = 1; /* Formerly, initialization of getopt depended on optind==0, which causes problems with re-calling getopt as programs generally don't know that. */ int __getopt_initialized; /* The next char to be scanned in the option-element in which the last option character we returned was found. This allows us to pick up the scan where we left off. If this is zero, or a null string, it means resume the scan by advancing to the next ARGV-element. */ static char *nextchar; /* Callers store zero here to inhibit the error message for unrecognized options. */ int opterr = 1; /* Set to an option character which was unrecognized. This must be initialized on some systems to avoid linking in the system's own getopt implementation. */ int optopt = '?'; /* Describe how to deal with options that follow non-option ARGV-elements. If the caller did not specify anything, the default is REQUIRE_ORDER if the environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what Unix does. This mode of operation is selected by either setting the environment variable POSIXLY_CORRECT, or using `+' as the first character of the list of option characters. PERMUTE is the default. We permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other ARGV-elements in any order and that care about the ordering of the two. We describe each non-option ARGV-element as if it were the argument of an option with character code 1. Using `-' as the first character of the list of option characters selects this mode of operation. The special argument `--' forces an end of option-scanning regardless of the value of `ordering'. In the case of RETURN_IN_ORDER, only `--' can cause `getopt' to return -1 with `optind' != ARGC. */ static enum { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER } ordering; /* Value of POSIXLY_CORRECT environment variable. */ static char *posixly_correct; #ifdef __GNU_LIBRARY__ /* We want to avoid inclusion of string.h with non-GNU libraries because there are many ways it can cause trouble. On some systems, it contains special magic macros that don't work in GCC. */ # include # define my_index strchr #else #include /* Avoid depending on library functions or files whose names are inconsistent. */ #ifndef getenv extern char *getenv (); #endif static char * my_index (str, chr) const char *str; int chr; { while (*str) { if (*str == chr) return (char *) str; str++; } return 0; } /* If using GCC, we can safely declare strlen this way. If not using GCC, it is ok not to declare it. */ #ifdef __GNUC__ /* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. That was relevant to code that was here before. */ # if (!defined __STDC__ || !__STDC__) && !defined strlen /* gcc with -traditional declares the built-in strlen to return int, and has done so at least since version 2.4.5. -- rms. */ extern int strlen (const char *); # endif /* not __STDC__ */ #endif /* __GNUC__ */ #endif /* not __GNU_LIBRARY__ */ /* Handle permutation of arguments. */ /* Describe the part of ARGV that contains non-options that have been skipped. `first_nonopt' is the index in ARGV of the first of them; `last_nonopt' is the index after the last of them. */ static int first_nonopt; static int last_nonopt; #ifdef _LIBC /* Bash 2.0 gives us an environment variable containing flags indicating ARGV elements that should not be considered arguments. */ /* Defined in getopt_init.c */ extern char *__getopt_nonoption_flags; static int nonoption_flags_max_len; static int nonoption_flags_len; static int original_argc; static char *const *original_argv; /* Make sure the environment variable bash 2.0 puts in the environment is valid for the getopt call we must make sure that the ARGV passed to getopt is that one passed to the process. */ static void __attribute__ ((unused)) store_args_and_env (int argc, char *const *argv) { /* XXX This is no good solution. We should rather copy the args so that we can compare them later. But we must not use malloc(3). */ original_argc = argc; original_argv = argv; } # ifdef text_set_element text_set_element (__libc_subinit, store_args_and_env); # endif /* text_set_element */ # define SWAP_FLAGS(ch1, ch2) \ if (nonoption_flags_len > 0) \ { \ char __tmp = __getopt_nonoption_flags[ch1]; \ __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ __getopt_nonoption_flags[ch2] = __tmp; \ } #else /* !_LIBC */ # define SWAP_FLAGS(ch1, ch2) #endif /* _LIBC */ /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) which contains all the non-options that have been skipped so far. The other is elements [last_nonopt,optind), which contains all the options processed since those non-options were skipped. `first_nonopt' and `last_nonopt' are relocated so that they describe the new indices of the non-options in ARGV after they are moved. */ #if defined __STDC__ && __STDC__ static void exchange (char **); #endif static void exchange (argv) char **argv; { int bottom = first_nonopt; int middle = last_nonopt; int top = optind; char *tem; /* Exchange the shorter segment with the far end of the longer segment. That puts the shorter segment into the right place. It leaves the longer segment in the right place overall, but it consists of two parts that need to be swapped next. */ #ifdef _LIBC /* First make sure the handling of the `__getopt_nonoption_flags' string can work normally. Our top argument must be in the range of the string. */ if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) { /* We must extend the array. The user plays games with us and presents new arguments. */ char *new_str = malloc (top + 1); if (new_str == NULL) nonoption_flags_len = nonoption_flags_max_len = 0; else { memset (__mempcpy (new_str, __getopt_nonoption_flags, nonoption_flags_max_len), '\0', top + 1 - nonoption_flags_max_len); nonoption_flags_max_len = top + 1; __getopt_nonoption_flags = new_str; } } #endif while (top > middle && middle > bottom) { if (top - middle > middle - bottom) { /* Bottom segment is the short one. */ int len = middle - bottom; register int i; /* Swap it with the top part of the top segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[top - (middle - bottom) + i]; argv[top - (middle - bottom) + i] = tem; SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); } /* Exclude the moved bottom segment from further swapping. */ top -= len; } else { /* Top segment is the short one. */ int len = top - middle; register int i; /* Swap it with the bottom part of the bottom segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[middle + i]; argv[middle + i] = tem; SWAP_FLAGS (bottom + i, middle + i); } /* Exclude the moved top segment from further swapping. */ bottom += len; } } /* Update records for the slots the non-options now occupy. */ first_nonopt += (optind - last_nonopt); last_nonopt = optind; } /* Initialize the internal data when the first call is made. */ #if defined __STDC__ && __STDC__ static const char *_getopt_initialize (int, char *const *, const char *); #endif static const char * _getopt_initialize (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { /* Start processing options with ARGV-element 1 (since ARGV-element 0 is the program name); the sequence of previously skipped non-option ARGV-elements is empty. */ first_nonopt = last_nonopt = optind; nextchar = NULL; posixly_correct = getenv ("POSIXLY_CORRECT"); /* Determine how to handle the ordering of options and nonoptions. */ if (optstring[0] == '-') { ordering = RETURN_IN_ORDER; ++optstring; } else if (optstring[0] == '+') { ordering = REQUIRE_ORDER; ++optstring; } else if (posixly_correct != NULL) ordering = REQUIRE_ORDER; else ordering = PERMUTE; #ifdef _LIBC if (posixly_correct == NULL && argc == original_argc && argv == original_argv) { if (nonoption_flags_max_len == 0) { if (__getopt_nonoption_flags == NULL || __getopt_nonoption_flags[0] == '\0') nonoption_flags_max_len = -1; else { const char *orig_str = __getopt_nonoption_flags; int len = nonoption_flags_max_len = strlen (orig_str); if (nonoption_flags_max_len < argc) nonoption_flags_max_len = argc; __getopt_nonoption_flags = (char *) malloc (nonoption_flags_max_len); if (__getopt_nonoption_flags == NULL) nonoption_flags_max_len = -1; else memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), '\0', nonoption_flags_max_len - len); } } nonoption_flags_len = nonoption_flags_max_len; } else nonoption_flags_len = 0; #endif return optstring; } /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. If an element of ARGV starts with '-', and is not exactly "-" or "--", then it is an option element. The characters of this element (aside from the initial '-') are option characters. If `getopt' is called repeatedly, it returns successively each of the option characters from each of the option elements. If `getopt' finds another option character, it returns that character, updating `optind' and `nextchar' so that the next call to `getopt' can resume the scan with the following option character or ARGV-element. If there are no more option characters, `getopt' returns -1. Then `optind' is the index in ARGV of the first ARGV-element that is not an option. (The ARGV-elements have been permuted so that those that are not options now come last.) OPTSTRING is a string containing the legitimate option characters. If an option character is seen that is not listed in OPTSTRING, return '?' after printing an error message. If you set `opterr' to zero, the error message is suppressed but we still return '?'. If a char in OPTSTRING is followed by a colon, that means it wants an arg, so the following text in the same ARGV-element, or the text of the following ARGV-element, is returned in `optarg'. Two colons mean an option that wants an optional arg; if there is text in the current ARGV-element, it is returned in `optarg', otherwise `optarg' is set to zero. If OPTSTRING starts with `-' or `+', it requests different methods of handling the non-option ARGV-elements. See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. Long-named options begin with `--' instead of `-'. Their names may be abbreviated as long as the abbreviation is unique or is an exact match for some defined option. If they have an argument, it follows the option name in the same ARGV-element, separated from the option name by a `=', or else the in next ARGV-element. When `getopt' finds a long-named option, it returns 0 if that option's `flag' field is nonzero, the value of the option's `val' field if the `flag' field is zero. The elements of ARGV aren't really const, because we permute them. But we pretend they're const in the prototype to be compatible with other systems. LONGOPTS is a vector of `struct option' terminated by an element containing a name which is zero. LONGIND returns the index in LONGOPT of the long-named option found. It is only valid when a long-named option has been found by the most recent call. If LONG_ONLY is nonzero, '-' as well as '--' can introduce long-named options. */ int _getopt_internal (argc, argv, optstring, longopts, longind, long_only) int argc; char *const *argv; const char *optstring; const struct option *longopts; int *longind; int long_only; { optarg = NULL; if (optind == 0 || !__getopt_initialized) { if (optind == 0) optind = 1; /* Don't scan ARGV[0], the program name. */ optstring = _getopt_initialize (argc, argv, optstring); __getopt_initialized = 1; } /* Test whether ARGV[optind] points to a non-option argument. Either it does not have option syntax, or there is an environment flag from the shell indicating it is not an option. The later information is only used when the used in the GNU libc. */ #ifdef _LIBC # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ || (optind < nonoption_flags_len \ && __getopt_nonoption_flags[optind] == '1')) #else # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') #endif if (nextchar == NULL || *nextchar == '\0') { /* Advance to the next ARGV-element. */ /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been moved back by the user (who may also have changed the arguments). */ if (last_nonopt > optind) last_nonopt = optind; if (first_nonopt > optind) first_nonopt = optind; if (ordering == PERMUTE) { /* If we have just processed some options following some non-options, exchange them so that the options come first. */ if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (last_nonopt != optind) first_nonopt = optind; /* Skip any additional non-options and extend the range of non-options previously skipped. */ while (optind < argc && NONOPTION_P) optind++; last_nonopt = optind; } /* The special ARGV-element `--' means premature end of options. Skip it like a null option, then exchange with previous non-options as if it were an option, then skip everything else like a non-option. */ if (optind != argc && !strcmp (argv[optind], "--")) { optind++; if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (first_nonopt == last_nonopt) first_nonopt = optind; last_nonopt = argc; optind = argc; } /* If we have done all the ARGV-elements, stop the scan and back over any non-options that we skipped and permuted. */ if (optind == argc) { /* Set the next-arg-index to point at the non-options that we previously skipped, so the caller will digest them. */ if (first_nonopt != last_nonopt) optind = first_nonopt; return -1; } /* If we have come to a non-option and did not permute it, either stop the scan or describe it to the caller and pass it by. */ if (NONOPTION_P) { if (ordering == REQUIRE_ORDER) return -1; optarg = argv[optind++]; return 1; } /* We have found another option-ARGV-element. Skip the initial punctuation. */ nextchar = (argv[optind] + 1 + (longopts != NULL && argv[optind][1] == '-')); } /* Decode the current option-ARGV-element. */ /* Check whether the ARGV-element is a long option. If long_only and the ARGV-element has the form "-f", where f is a valid short option, don't consider it an abbreviated form of a long option that starts with f. Otherwise there would be no way to give the -f short option. On the other hand, if there's a long option "fubar" and the ARGV-element is "-fu", do consider that an abbreviation of the long option, just like "--fu", and not "-f" with arg "u". This distinction seems to be the most useful approach. */ if (longopts != NULL && (argv[optind][1] == '-' || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = -1; int option_index; for (nameend = nextchar; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if ((unsigned int) (nameend - nextchar) == (unsigned int) strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (opterr) fprintf (stderr, _("%s: option `%s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; optopt = 0; return '?'; } if (pfound != NULL) { option_index = indfound; optind++; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (opterr) { if (argv[optind - 1][1] == '-') /* --option */ fprintf (stderr, _("%s: option `--%s' doesn't allow an argument\n"), argv[0], pfound->name); else /* +option or -option */ fprintf (stderr, _("%s: option `%c%s' doesn't allow an argument\n"), argv[0], argv[optind - 1][0], pfound->name); } nextchar += strlen (nextchar); optopt = pfound->val; return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (opterr) fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); nextchar += strlen (nextchar); optopt = pfound->val; return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } /* Can't find it as a long option. If this is not getopt_long_only, or the option starts with '--' or is not a valid short option, then it's an error. Otherwise interpret it as a short option. */ if (!long_only || argv[optind][1] == '-' || my_index (optstring, *nextchar) == NULL) { if (opterr) { if (argv[optind][1] == '-') /* --option */ fprintf (stderr, _("%s: unrecognized option `--%s'\n"), argv[0], nextchar); else /* +option or -option */ fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), argv[0], argv[optind][0], nextchar); } nextchar = (char *) ""; optind++; optopt = 0; return '?'; } } /* Look at and handle the next short option-character. */ { char c = *nextchar++; char *temp = my_index (optstring, c); /* Increment `optind' when we start to process its last character. */ if (*nextchar == '\0') ++optind; if (temp == NULL || c == ':') { if (opterr) { if (posixly_correct) /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c); else fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c); } optopt = c; return '?'; } /* Convenience. Treat POSIX -W foo same as long option --foo */ if (temp[0] == 'W' && temp[1] == ';') { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = 0; int option_index; /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (opterr) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; return c; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; /* optarg is now the argument, see if it's in the table of longopts. */ for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if ((unsigned int) (nameend - nextchar) == strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (opterr) fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; return '?'; } if (pfound != NULL) { option_index = indfound; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (opterr) fprintf (stderr, _("\ %s: option `-W %s' doesn't allow an argument\n"), argv[0], pfound->name); nextchar += strlen (nextchar); return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (opterr) fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); nextchar += strlen (nextchar); return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } nextchar = NULL; return 'W'; /* Let the application handle it. */ } if (temp[1] == ':') { if (temp[2] == ':') { /* This is an option that accepts an argument optionally. */ if (*nextchar != '\0') { optarg = nextchar; optind++; } else optarg = NULL; nextchar = NULL; } else { /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (opterr) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; nextchar = NULL; } } return c; } } int getopt (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { return _getopt_internal (argc, argv, optstring, (const struct option *) 0, (int *) 0, 0); } #endif /* Not ELIDE_CODE. */ #ifdef TEST /* Compile with -DTEST to make an executable for use in testing the above definition of `getopt'. */ int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; c = getopt (argc, argv, "abc:d:0123456789"); if (c == -1) break; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ libtheora-1.2.0/win32/experimental/0002755000175000017500000000000014771706724015613 5ustar pereperelibtheora-1.2.0/win32/experimental/wincompat/0002755000175000017500000000000014771706724017614 5ustar pereperelibtheora-1.2.0/win32/experimental/wincompat/getopt_long.c0000644000175000017500000003361014771706724022302 0ustar perepere/* $NetBSD: getopt_long.c,v 1.15 2002/01/31 22:43:40 tv Exp $ */ /* $FreeBSD: src/lib/libc/stdlib/getopt_long.c,v 1.2 2002/10/16 22:18:42 alfred Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Dieter Baron and Thomas Klausner. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the NetBSD * Foundation, Inc. and its contributors. * 4. Neither the name of The NetBSD Foundation nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #ifdef _WIN32 /* Windows needs warnx(). We change the definition though: * 1. (another) global is defined, opterrmsg, which holds the error message * 2. errors are always printed out on stderr w/o the program name * Note that opterrmsg always gets set no matter what opterr is set to. The * error message will not be printed if opterr is 0 as usual. */ #include #include GETOPT_API extern char opterrmsg[128]; char opterrmsg[128]; /* last error message is stored here */ static void warnx(int print_error, const char *fmt, ...) { va_list ap; va_start(ap, fmt); if (fmt != NULL) _vsnprintf(opterrmsg, 128, fmt, ap); else opterrmsg[0]='\0'; va_end(ap); if (print_error) { fprintf(stderr, opterrmsg); fprintf(stderr, "\n"); } } #endif /*_WIN32*/ /* not part of the original file */ #ifndef _DIAGASSERT #define _DIAGASSERT(X) #endif #if HAVE_CONFIG_H && !HAVE_GETOPT_LONG && !HAVE_DECL_OPTIND #define REPLACE_GETOPT #endif #ifdef REPLACE_GETOPT #ifdef __weak_alias __weak_alias(getopt,_getopt) #endif int opterr = 1; /* if error message should be printed */ int optind = 1; /* index into parent argv vector */ int optopt = '?'; /* character checked for validity */ int optreset; /* reset getopt */ char *optarg; /* argument associated with option */ #elif HAVE_CONFIG_H && !HAVE_DECL_OPTRESET static int optreset; #endif #ifdef __weak_alias __weak_alias(getopt_long,_getopt_long) #endif #if !HAVE_GETOPT_LONG #define IGNORE_FIRST (*options == '-' || *options == '+') #define PRINT_ERROR ((opterr) && ((*options != ':') \ || (IGNORE_FIRST && options[1] != ':'))) #define IS_POSIXLY_CORRECT (getenv("POSIXLY_CORRECT") != NULL) #define PERMUTE (!IS_POSIXLY_CORRECT && !IGNORE_FIRST) /* XXX: GNU ignores PC if *options == '-' */ #define IN_ORDER (!IS_POSIXLY_CORRECT && *options == '-') /* return values */ #define BADCH (int)'?' #define BADARG ((IGNORE_FIRST && options[1] == ':') \ || (*options == ':') ? (int)':' : (int)'?') #define INORDER (int)1 #define EMSG "" static int getopt_internal(int, char * const *, const char *); static int gcd(int, int); static void permute_args(int, int, int, char * const *); static char *place = EMSG; /* option letter processing */ /* XXX: set optreset to 1 rather than these two */ static int nonopt_start = -1; /* first non option argument (for permute) */ static int nonopt_end = -1; /* first option after non options (for permute) */ /* Error messages */ static const char recargchar[] = "option requires an argument -- %c"; static const char recargstring[] = "option requires an argument -- %s"; static const char ambig[] = "ambiguous option -- %.*s"; static const char noarg[] = "option doesn't take an argument -- %.*s"; static const char illoptchar[] = "unknown option -- %c"; static const char illoptstring[] = "unknown option -- %s"; /* * Compute the greatest common divisor of a and b. */ static int gcd(a, b) int a; int b; { int c; c = a % b; while (c != 0) { a = b; b = c; c = a % b; } return b; } /* * Exchange the block from nonopt_start to nonopt_end with the block * from nonopt_end to opt_end (keeping the same order of arguments * in each block). */ static void permute_args(panonopt_start, panonopt_end, opt_end, nargv) int panonopt_start; int panonopt_end; int opt_end; char * const *nargv; { int cstart, cyclelen, i, j, ncycle, nnonopts, nopts, pos; char *swap; _DIAGASSERT(nargv != NULL); /* * compute lengths of blocks and number and size of cycles */ nnonopts = panonopt_end - panonopt_start; nopts = opt_end - panonopt_end; ncycle = gcd(nnonopts, nopts); cyclelen = (opt_end - panonopt_start) / ncycle; for (i = 0; i < ncycle; i++) { cstart = panonopt_end+i; pos = cstart; for (j = 0; j < cyclelen; j++) { if (pos >= panonopt_end) pos -= nnonopts; else pos += nopts; swap = nargv[pos]; /* LINTED const cast */ ((char **) nargv)[pos] = nargv[cstart]; /* LINTED const cast */ ((char **)nargv)[cstart] = swap; } } } /* * getopt_internal -- * Parse argc/argv argument vector. Called by user level routines. * Returns -2 if -- is found (can be long option or end of options marker). */ static int getopt_internal(nargc, nargv, options) int nargc; char * const *nargv; const char *options; { char *oli; /* option letter list index */ int optchar; _DIAGASSERT(nargv != NULL); _DIAGASSERT(options != NULL); optarg = NULL; /* * XXX Some programs (like rsyncd) expect to be able to * XXX re-initialize optind to 0 and have getopt_long(3) * XXX properly function again. Work around this braindamage. */ if (optind == 0) optind = 1; if (optreset) nonopt_start = nonopt_end = -1; start: if (optreset || !*place) { /* update scanning pointer */ optreset = 0; if (optind >= nargc) { /* end of argument vector */ place = EMSG; if (nonopt_end != -1) { /* do permutation, if we have to */ permute_args(nonopt_start, nonopt_end, optind, nargv); optind -= nonopt_end - nonopt_start; } else if (nonopt_start != -1) { /* * If we skipped non-options, set optind * to the first of them. */ optind = nonopt_start; } nonopt_start = nonopt_end = -1; return -1; } if ((*(place = nargv[optind]) != '-') || (place[1] == '\0')) { /* found non-option */ place = EMSG; if (IN_ORDER) { /* * GNU extension: * return non-option as argument to option 1 */ optarg = nargv[optind++]; return INORDER; } if (!PERMUTE) { /* * if no permutation wanted, stop parsing * at first non-option */ return -1; } /* do permutation */ if (nonopt_start == -1) nonopt_start = optind; else if (nonopt_end != -1) { permute_args(nonopt_start, nonopt_end, optind, nargv); nonopt_start = optind - (nonopt_end - nonopt_start); nonopt_end = -1; } optind++; /* process next argument */ goto start; } if (nonopt_start != -1 && nonopt_end == -1) nonopt_end = optind; if (place[1] && *++place == '-') { /* found "--" */ place++; return -2; } } if ((optchar = (int)*place++) == (int)':' || (oli = strchr(options + (IGNORE_FIRST ? 1 : 0), optchar)) == NULL) { /* option letter unknown or ':' */ if (!*place) ++optind; #ifndef _WIN32 if (PRINT_ERROR) warnx(illoptchar, optchar); #else warnx(PRINT_ERROR, illoptchar, optchar); #endif optopt = optchar; return BADCH; } if (optchar == 'W' && oli[1] == ';') { /* -W long-option */ /* XXX: what if no long options provided (called by getopt)? */ if (*place) return -2; if (++optind >= nargc) { /* no arg */ place = EMSG; #ifndef _WIN32 if (PRINT_ERROR) warnx(recargchar, optchar); #else warnx(PRINT_ERROR, recargchar, optchar); #endif optopt = optchar; return BADARG; } else /* white space */ place = nargv[optind]; /* * Handle -W arg the same as --arg (which causes getopt to * stop parsing). */ return -2; } if (*++oli != ':') { /* doesn't take argument */ if (!*place) ++optind; } else { /* takes (optional) argument */ optarg = NULL; if (*place) /* no white space */ optarg = place; /* XXX: disable test for :: if PC? (GNU doesn't) */ else if (oli[1] != ':') { /* arg not optional */ if (++optind >= nargc) { /* no arg */ place = EMSG; #ifndef _WIN32 if (PRINT_ERROR) warnx(recargchar, optchar); #else warnx(PRINT_ERROR, recargchar, optchar); #endif optopt = optchar; return BADARG; } else optarg = nargv[optind]; } place = EMSG; ++optind; } /* dump back option letter */ return optchar; } #ifdef REPLACE_GETOPT /* * getopt -- * Parse argc/argv argument vector. * * [eventually this will replace the real getopt] */ int getopt(nargc, nargv, options) int nargc; char * const *nargv; const char *options; { int retval; _DIAGASSERT(nargv != NULL); _DIAGASSERT(options != NULL); if ((retval = getopt_internal(nargc, nargv, options)) == -2) { ++optind; /* * We found an option (--), so if we skipped non-options, * we have to permute. */ if (nonopt_end != -1) { permute_args(nonopt_start, nonopt_end, optind, nargv); optind -= nonopt_end - nonopt_start; } nonopt_start = nonopt_end = -1; retval = -1; } return retval; } #endif /* * getopt_long -- * Parse argc/argv argument vector. */ int getopt_long(nargc, nargv, options, long_options, idx) int nargc; char * const *nargv; const char *options; const struct option *long_options; int *idx; { int retval; _DIAGASSERT(nargv != NULL); _DIAGASSERT(options != NULL); _DIAGASSERT(long_options != NULL); /* idx may be NULL */ if ((retval = getopt_internal(nargc, nargv, options)) == -2) { char *current_argv, *has_equal; size_t current_argv_len; int i, match; current_argv = place; match = -1; optind++; place = EMSG; if (*current_argv == '\0') { /* found "--" */ /* * We found an option (--), so if we skipped * non-options, we have to permute. */ if (nonopt_end != -1) { permute_args(nonopt_start, nonopt_end, optind, nargv); optind -= nonopt_end - nonopt_start; } nonopt_start = nonopt_end = -1; return -1; } if ((has_equal = strchr(current_argv, '=')) != NULL) { /* argument found (--option=arg) */ current_argv_len = has_equal - current_argv; has_equal++; } else current_argv_len = strlen(current_argv); for (i = 0; long_options[i].name; i++) { /* find matching long option */ if (strncmp(current_argv, long_options[i].name, current_argv_len)) continue; if (strlen(long_options[i].name) == (unsigned)current_argv_len) { /* exact match */ match = i; break; } if (match == -1) /* partial match */ match = i; else { /* ambiguous abbreviation */ #ifndef _WIN32 if (PRINT_ERROR) warnx(ambig, (int)current_argv_len, current_argv); #else warnx(PRINT_ERROR, ambig, (int)current_argv_len, current_argv); #endif optopt = 0; return BADCH; } } if (match != -1) { /* option found */ if (long_options[match].has_arg == no_argument && has_equal) { #ifndef _WIN32 if (PRINT_ERROR) warnx(noarg, (int)current_argv_len, current_argv); #else warnx(PRINT_ERROR, noarg, (int)current_argv_len, current_argv); #endif /* * XXX: GNU sets optopt to val regardless of * flag */ if (long_options[match].flag == NULL) optopt = long_options[match].val; else optopt = 0; return BADARG; } if (long_options[match].has_arg == required_argument || long_options[match].has_arg == optional_argument) { if (has_equal) optarg = has_equal; else if (long_options[match].has_arg == required_argument) { /* * optional argument doesn't use * next nargv */ optarg = nargv[optind++]; } } if ((long_options[match].has_arg == required_argument) && (optarg == NULL)) { /* * Missing argument; leading ':' * indicates no error should be generated */ #ifndef _WIN32 if (PRINT_ERROR) warnx(recargstring, current_argv); #else warnx(PRINT_ERROR, recargstring, current_argv); #endif /* * XXX: GNU sets optopt to val regardless * of flag */ if (long_options[match].flag == NULL) optopt = long_options[match].val; else optopt = 0; --optind; return BADARG; } } else { /* unknown option */ #ifndef _WIN32 if (PRINT_ERROR) warnx(illoptstring, current_argv); #else warnx(PRINT_ERROR, illoptstring, current_argv); #endif optopt = 0; return BADCH; } if (long_options[match].flag) { *long_options[match].flag = long_options[match].val; retval = 0; } else retval = long_options[match].val; if (idx) *idx = match; } return retval; } #endif /* !GETOPT_LONG */ libtheora-1.2.0/win32/experimental/wincompat/README.txt0000644000175000017500000000007714771706724021314 0ustar perepereGetOpt routines ported from BSD-licensed sources, see comments.libtheora-1.2.0/win32/experimental/wincompat/getopt.h0000644000175000017500000000740614771706724021274 0ustar perepere/* $NetBSD: getopt.h,v 1.4 2000/07/07 10:43:54 ad Exp $ */ /* $FreeBSD: src/include/getopt.h,v 1.1 2002/09/29 04:14:30 eric Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Dieter Baron and Thomas Klausner. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the NetBSD * Foundation, Inc. and its contributors. * 4. Neither the name of The NetBSD Foundation nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef _GETOPT_H_ #define _GETOPT_H_ #ifdef _WIN32 /* from */ # ifdef __cplusplus # define __BEGIN_DECLS extern "C" { # define __END_DECLS } # else # define __BEGIN_DECLS # define __END_DECLS # endif # define __P(args) args #endif /*#ifndef _WIN32 #include #include #endif*/ #ifdef _WIN32 # if !defined(GETOPT_API) # define GETOPT_API __declspec(dllimport) # endif #endif /* * Gnu like getopt_long() and BSD4.4 getsubopt()/optreset extensions */ #if !defined(_POSIX_SOURCE) && !defined(_XOPEN_SOURCE) #define no_argument 0 #define required_argument 1 #define optional_argument 2 struct option { /* name of long option */ const char *name; /* * one of no_argument, required_argument, and optional_argument: * whether option takes an argument */ int has_arg; /* if not NULL, set *flag to val when option found */ int *flag; /* if flag not NULL, value to set *flag to; else return value */ int val; }; __BEGIN_DECLS GETOPT_API int getopt_long __P((int, char * const *, const char *, const struct option *, int *)); __END_DECLS #endif #ifdef _WIN32 /* These are global getopt variables */ __BEGIN_DECLS GETOPT_API extern int opterr, /* if error message should be printed */ optind, /* index into parent argv vector */ optopt, /* character checked for validity */ optreset; /* reset getopt */ GETOPT_API extern char* optarg; /* argument associated with option */ /* Original getopt */ GETOPT_API int getopt __P((int, char * const *, const char *)); __END_DECLS #endif #endif /* !_GETOPT_H_ */ libtheora-1.2.0/win32/experimental/wincompat/getopt.c0000644000175000017500000000774514771706724021275 0ustar perepere/* * Copyright (c) 1987, 1993, 1994 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /*#if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)getopt.c 8.3 (Berkeley) 4/27/95"; #endif /* LIBC_SCCS and not lint #include //__FBSDID("$FreeBSD: src/lib/libc/stdlib/getopt.c,v 1.6 2002/03/29 22:43:42 markm Exp $"); #include "namespace.h"*/ #include #include #include /*#include "un-namespace.h"*/ /*#include "libc_private.h"*/ int opterr = 1, /* if error message should be printed */ optind = 1, /* index into parent argv vector */ optopt, /* character checked for validity */ optreset; /* reset getopt */ char *optarg; /* argument associated with option */ #define BADCH (int)'?' #define BADARG (int)':' #define EMSG "" /* * getopt -- * Parse argc/argv argument vector. */ int getopt(nargc, nargv, ostr) int nargc; char * const *nargv; const char *ostr; { static char *place = EMSG; /* option letter processing */ char *oli; /* option letter list index */ if (optreset || !*place) { /* update scanning pointer */ optreset = 0; if (optind >= nargc || *(place = nargv[optind]) != '-') { place = EMSG; return (-1); } if (place[1] && *++place == '-') { /* found "--" */ ++optind; place = EMSG; return (-1); } } /* option letter okay? */ if ((optopt = (int)*place++) == (int)':' || !(oli = strchr(ostr, optopt))) { /* * if the user didn't specify '-' as an option, * assume it means -1. */ if (optopt == (int)'-') return (-1); if (!*place) ++optind; if (opterr && *ostr != ':' && optopt != BADCH) (void)fprintf(stderr, "%s: illegal option -- %c\n", "progname", optopt); return (BADCH); } if (*++oli != ':') { /* don't need argument */ optarg = NULL; if (!*place) ++optind; } else { /* need an argument */ if (*place) /* no white space */ optarg = place; else if (nargc <= ++optind) { /* no arg */ place = EMSG; if (*ostr == ':') return (BADARG); if (opterr) (void)fprintf(stderr, "%s: option requires an argument -- %c\n", "progname", optopt); return (BADCH); } else /* white space */ optarg = nargv[optind]; place = EMSG; ++optind; } return (optopt); /* dump back option letter */ } libtheora-1.2.0/win32/experimental/wincompat/unistd.h0000644000175000017500000000000014771706724021257 0ustar pereperelibtheora-1.2.0/win32/experimental/encoderwin/0002755000175000017500000000000014771706724017750 5ustar pereperelibtheora-1.2.0/win32/experimental/encoderwin/encoderwin.dsp0000644000175000017500000001233414771706724022616 0ustar perepere# Microsoft Developer Studio Project File - Name="encoderwin" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=encoderwin - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "encoderwin.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "encoderwin.mak" CFG="encoderwin - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "encoderwin - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "encoderwin - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "encoderwin - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\include" /I "..\..\..\..\vorbis\include" /I "..\..\..\..\ogg\include" /I "..\wincompat" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib theora_static.lib ogg_static.lib vorbis_static.lib vorbisenc_static.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"LIBCMT" /out:"encoderwin.exe" /libpath:"..\..\Static_Release" /libpath:"..\..\..\..\ogg\win32\Static_Release" /libpath:"..\..\..\..\vorbis\win32\Vorbis_Static_Release" /libpath:"..\..\..\..\vorbis\win32\VorbisEnc_Static_Release" !ELSEIF "$(CFG)" == "encoderwin - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\..\vorbis\include" /I "..\..\..\..\ogg\include" /I "..\wincompat" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib theora_static_d.lib ogg_static_d.lib vorbis_static_d.lib vorbisenc_static_d.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"LIBCD" /out:"encoderwin.exe" /pdbtype:sept /libpath:"..\..\Static_Debug" /libpath:"..\..\..\..\ogg\win32\Static_Debug" /libpath:"..\..\..\..\vorbis\win32\Vorbis_Static_Debug" /libpath:"..\..\..\..\vorbis\win32\VorbisEnc_Static_Debug" # SUBTRACT LINK32 /nodefaultlib !ENDIF # Begin Target # Name "encoderwin - Win32 Release" # Name "encoderwin - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\examples\encoder_example.c # End Source File # Begin Source File SOURCE=..\wincompat\getopt.c # End Source File # Begin Source File SOURCE=..\wincompat\getopt_long.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # Begin Group "library" # PROP Default_Filter "" # End Group # Begin Source File SOURCE=.\ReadMe.txt # End Source File # End Target # End Project libtheora-1.2.0/win32/experimental/encoderwin/ReadMe.txt0000644000175000017500000000065714771706724021654 0ustar perepere05/30/03 Updated to use the common encoder_sample.c source in theora/examples. 05/23/03 Very simple port of the sample encoder for Windows, for testing. Encoder options in the command line are not working, and the frame rate of video needs to be set in code (like in the simple sample encoder.) This example will be updated to a true Win32 app sometime in the future, hope it is useful for basic testing now. mauricio@xiph.orglibtheora-1.2.0/win32/experimental/dumpvid/0002755000175000017500000000000014771706724017263 5ustar pereperelibtheora-1.2.0/win32/experimental/dumpvid/dumpvid.dsp0000644000175000017500000001204414771706724021442 0ustar perepere# Microsoft Developer Studio Project File - Name="dumpvid" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=dumpvid - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "dumpvid.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "dumpvid.mak" CFG="dumpvid - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "dumpvid - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "dumpvid - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "dumpvid - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\include" /I "..\..\..\..\ogg\include" /I "..\wincompat" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib theora_static.lib ogg_static.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"LIBCMT" /out:"dump_vid.exe" /libpath:"..\..\Static_Release" /libpath:"..\..\..\..\ogg\win32\Static_Release" /libpath:"..\..\..\..\vorbis\win32\Vorbis_Static_Release" /libpath:"..\..\..\..\vorbis\win32\VorbisEnc_Static_Release" !ELSEIF "$(CFG)" == "dumpvid - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\..\ogg\include" /I "..\wincompat" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib theora_static_d.lib ogg_static_d.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"LIBCD" /out:"dump_vid.exe" /pdbtype:sept /libpath:"..\..\Static_Debug" /libpath:"..\..\..\..\ogg\win32\Static_Debug" /libpath:"..\..\..\..\vorbis\win32\Vorbis_Static_Debug" /libpath:"..\..\..\..\vorbis\win32\VorbisEnc_Static_Debug" # SUBTRACT LINK32 /nodefaultlib !ENDIF # Begin Target # Name "dumpvid - Win32 Release" # Name "dumpvid - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\..\examples\dump_video.c # End Source File # Begin Source File SOURCE=..\wincompat\getopt.c # End Source File # Begin Source File SOURCE=..\wincompat\getopt_long.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # Begin Group "library" # PROP Default_Filter "" # End Group # Begin Source File SOURCE=.\ReadMe.txt # End Source File # End Target # End Project libtheora-1.2.0/win32/experimental/transcoder/0002755000175000017500000000000014771706724017757 5ustar pereperelibtheora-1.2.0/win32/experimental/transcoder/transcoder.dsp0000644000175000017500000001235514771706724022637 0ustar perepere# Microsoft Developer Studio Project File - Name="transcoder" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=transcoder - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "transcoder.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "transcoder.mak" CFG="transcoder - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "transcoder - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "transcoder - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "transcoder - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\include" /I "..\..\..\..\vorbis\include" /I "..\..\..\..\ogg\include" /I "..\wincompat" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D GETOPT_API= /FD /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib theora_static.lib ogg_static.lib vorbis_static.lib vorbisenc_static.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"LIBCMT" /out:"transcoder.exe" /libpath:"..\..\Static_Release" /libpath:"..\..\..\..\ogg\win32\Static_Release" /libpath:"..\..\..\..\vorbis\win32\Vorbis_Static_Release" /libpath:"..\..\..\..\vorbis\win32\VorbisEnc_Static_Release" !ELSEIF "$(CFG)" == "transcoder - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\..\vorbis\include" /I "..\..\..\..\ogg\include" /I "..\wincompat" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D GETOPT_API= /FD /GZ /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib theora_static_d.lib ogg_static_d.lib vorbis_static_d.lib vorbisenc_static_d.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"LIBCD" /out:"transcoder.exe" /pdbtype:sept /libpath:"..\..\Static_Debug" /libpath:"..\..\..\..\ogg\win32\Static_Debug" /libpath:"..\..\..\..\vorbis\win32\Vorbis_Static_Debug" /libpath:"..\..\..\..\vorbis\win32\VorbisEnc_Static_Debug" # SUBTRACT LINK32 /nodefaultlib !ENDIF # Begin Target # Name "transcoder - Win32 Release" # Name "transcoder - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\wincompat\getopt.c # End Source File # Begin Source File SOURCE=..\wincompat\getopt_long.c # End Source File # Begin Source File SOURCE=.\transcoder_example.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # Begin Group "library" # PROP Default_Filter "" # End Group # Begin Source File SOURCE=.\ReadMe.txt # End Source File # End Target # End Project libtheora-1.2.0/win32/experimental/transcoder/readme.txt0000644000175000017500000000155414771706724021760 0ustar perepereQuick hack at a transcoder tool from VP3 to Theora I actually built the avi2vp3 tool with codeWarrior, but it should compile under VC as well. I have included a source avi file and the converted .vp3 output. Output is a file with some header info matching YUVMPEG, and for each frame: FRAME header block matching YUV2MPEG long (Intel aligned) keyframeflag describing in frame is a keyframe long (Intel aligned) fsize storing frame size in bytes bytes[fsize] with binary frame data The transcode tool is a modification of the current encoder. PUt it into the win32/experimental subdirectory, and the paths should be correct. It produces an apparently valid theora stream, but outputs garbage data. The code is packing the binary frame data in a way that SHOULD work at least imo, but I am probably missing some initialization issue (or vp3 is not transcodable to theora). libtheora-1.2.0/win32/experimental/transcoder/avi2vp3/0002755000175000017500000000000014771706724021251 5ustar pereperelibtheora-1.2.0/win32/experimental/transcoder/avi2vp3/avilib.h0000644000175000017500000002376014771706724022676 0ustar perepere/* * avilib.h * * Copyright (C) Thomas Östreich - June 2001 * multiple audio track support Copyright (C) 2002 Thomas Östreich * * Original code: * Copyright (C) 1999 Rainer Johanni * * This file is part of transcode, a linux video stream processing tool * * transcode is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * transcode is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * */ #include #include #include #include #include #include #include #include #include #include #ifndef AVILIB_H #define AVILIB_H #define AVI_MAX_TRACKS 8 typedef struct { unsigned long key; unsigned long pos; unsigned long len; } video_index_entry; typedef struct { unsigned long pos; unsigned long len; unsigned long tot; } audio_index_entry; typedef struct track_s { long a_fmt; /* Audio format, see #defines below */ long a_chans; /* Audio channels, 0 for no audio */ long a_rate; /* Rate in Hz */ long a_bits; /* bits per audio sample */ long mp3rate; /* mp3 bitrate kbs*/ long audio_strn; /* Audio stream number */ long audio_bytes; /* Total number of bytes of audio data */ long audio_chunks; /* Chunks of audio data in the file */ char audio_tag[4]; /* Tag of audio data */ long audio_posc; /* Audio position: chunk */ long audio_posb; /* Audio position: byte within chunk */ long a_codech_off; /* absolute offset of audio codec information */ long a_codecf_off; /* absolute offset of audio codec information */ audio_index_entry *audio_index; } track_t; typedef struct { long fdes; /* File descriptor of AVI file */ long mode; /* 0 for reading, 1 for writing */ long width; /* Width of a video frame */ long height; /* Height of a video frame */ double fps; /* Frames per second */ char compressor[8]; /* Type of compressor, 4 bytes + padding for 0 byte */ char compressor2[8]; /* Type of compressor, 4 bytes + padding for 0 byte */ long video_strn; /* Video stream number */ long video_frames; /* Number of video frames */ char video_tag[4]; /* Tag of video data */ long video_pos; /* Number of next frame to be read (if index present) */ unsigned long max_len; /* maximum video chunk present */ track_t track[AVI_MAX_TRACKS]; // up to AVI_MAX_TRACKS audio tracks supported unsigned long pos; /* position in file */ long n_idx; /* number of index entries actually filled */ long max_idx; /* number of index entries actually allocated */ long v_codech_off; /* absolute offset of video codec (strh) info */ long v_codecf_off; /* absolute offset of video codec (strf) info */ unsigned char (*idx)[16]; /* index entries (AVI idx1 tag) */ video_index_entry *video_index; unsigned long last_pos; /* Position of last frame written */ unsigned long last_len; /* Length of last frame written */ int must_use_index; /* Flag if frames are duplicated */ unsigned long movi_start; int anum; // total number of audio tracks int aptr; // current audio working track } avi_t; #define AVI_MODE_WRITE 0 #define AVI_MODE_READ 1 /* The error codes delivered by avi_open_input_file */ #define AVI_ERR_SIZELIM 1 /* The write of the data would exceed the maximum size of the AVI file. This is more a warning than an error since the file may be closed safely */ #define AVI_ERR_OPEN 2 /* Error opening the AVI file - wrong path name or file nor readable/writable */ #define AVI_ERR_READ 3 /* Error reading from AVI File */ #define AVI_ERR_WRITE 4 /* Error writing to AVI File, disk full ??? */ #define AVI_ERR_WRITE_INDEX 5 /* Could not write index to AVI file during close, file may still be usable */ #define AVI_ERR_CLOSE 6 /* Could not write header to AVI file or not truncate the file during close, file is most probably corrupted */ #define AVI_ERR_NOT_PERM 7 /* Operation not permitted: trying to read from a file open for writing or vice versa */ #define AVI_ERR_NO_MEM 8 /* malloc failed */ #define AVI_ERR_NO_AVI 9 /* Not an AVI file */ #define AVI_ERR_NO_HDRL 10 /* AVI file has no has no header list, corrupted ??? */ #define AVI_ERR_NO_MOVI 11 /* AVI file has no has no MOVI list, corrupted ??? */ #define AVI_ERR_NO_VIDS 12 /* AVI file contains no video data */ #define AVI_ERR_NO_IDX 13 /* The file has been opened with getIndex==0, but an operation has been performed that needs an index */ /* Possible Audio formats */ #ifndef WAVE_FORMAT_PCM #define WAVE_FORMAT_UNKNOWN (0x0000) #define WAVE_FORMAT_PCM (0x0001) #define WAVE_FORMAT_ADPCM (0x0002) #define WAVE_FORMAT_IBM_CVSD (0x0005) #define WAVE_FORMAT_ALAW (0x0006) #define WAVE_FORMAT_MULAW (0x0007) #define WAVE_FORMAT_OKI_ADPCM (0x0010) #define WAVE_FORMAT_DVI_ADPCM (0x0011) #define WAVE_FORMAT_DIGISTD (0x0015) #define WAVE_FORMAT_DIGIFIX (0x0016) #define WAVE_FORMAT_YAMAHA_ADPCM (0x0020) #define WAVE_FORMAT_DSP_TRUESPEECH (0x0022) #define WAVE_FORMAT_GSM610 (0x0031) #define IBM_FORMAT_MULAW (0x0101) #define IBM_FORMAT_ALAW (0x0102) #define IBM_FORMAT_ADPCM (0x0103) #endif avi_t* AVI_open_output_file(char * filename); void AVI_set_video(avi_t *AVI, int width, int height, double fps, char *compressor); void AVI_set_audio(avi_t *AVI, int channels, long rate, int bits, int format, long mp3rate); int AVI_write_frame(avi_t *AVI, char *data, long bytes, int keyframe); int AVI_dup_frame(avi_t *AVI); int AVI_write_audio(avi_t *AVI, char *data, long bytes); int AVI_append_audio(avi_t *AVI, char *data, long bytes); long AVI_bytes_remain(avi_t *AVI); int AVI_close(avi_t *AVI); long AVI_bytes_written(avi_t *AVI); avi_t *AVI_open_input_file(char *filename, int getIndex); avi_t *AVI_open_fd(int fd, int getIndex); int avi_parse_input_file(avi_t *AVI, int getIndex); long AVI_audio_mp3rate(avi_t *AVI); long AVI_video_frames(avi_t *AVI); int AVI_video_width(avi_t *AVI); int AVI_video_height(avi_t *AVI); double AVI_frame_rate(avi_t *AVI); char* AVI_video_compressor(avi_t *AVI); int AVI_audio_channels(avi_t *AVI); int AVI_audio_bits(avi_t *AVI); int AVI_audio_format(avi_t *AVI); long AVI_audio_rate(avi_t *AVI); long AVI_audio_bytes(avi_t *AVI); long AVI_audio_chunks(avi_t *AVI); long AVI_max_video_chunk(avi_t *AVI); long AVI_frame_size(avi_t *AVI, long frame); long AVI_audio_size(avi_t *AVI, long frame); int AVI_seek_start(avi_t *AVI); int AVI_set_video_position(avi_t *AVI, long frame); long AVI_get_video_position(avi_t *AVI, long frame); long AVI_read_frame(avi_t *AVI, char *vidbuf, int *keyframe); int AVI_set_audio_position(avi_t *AVI, long byte); int AVI_set_audio_bitrate(avi_t *AVI, long bitrate); long AVI_read_audio(avi_t *AVI, char *audbuf, long bytes); long AVI_audio_codech_offset(avi_t *AVI); long AVI_audio_codecf_offset(avi_t *AVI); long AVI_video_codech_offset(avi_t *AVI); long AVI_video_codecf_offset(avi_t *AVI); int AVI_read_data(avi_t *AVI, char *vidbuf, long max_vidbuf, char *audbuf, long max_audbuf, long *len); void AVI_print_error(char *str); char *AVI_strerror(); char *AVI_syserror(); int AVI_scan(char *name); int AVI_dump(char *name, int mode); char *AVI_codec2str(short cc); int AVI_file_check(char *import_file); void AVI_info(avi_t *avifile); uint64_t AVI_max_size(); int avi_update_header(avi_t *AVI); int AVI_set_audio_track(avi_t *AVI, int track); int AVI_get_audio_track(avi_t *AVI); int AVI_audio_tracks(avi_t *AVI); struct riff_struct { unsigned char id[4]; /* RIFF */ unsigned long len; unsigned char wave_id[4]; /* WAVE */ }; struct chunk_struct { unsigned char id[4]; unsigned long len; }; struct common_struct { unsigned short wFormatTag; unsigned short wChannels; unsigned long dwSamplesPerSec; unsigned long dwAvgBytesPerSec; unsigned short wBlockAlign; unsigned short wBitsPerSample; /* Only for PCM */ }; struct wave_header { struct riff_struct riff; struct chunk_struct format; struct common_struct common; struct chunk_struct data; }; struct AVIStreamHeader { long fccType; long fccHandler; long dwFlags; long dwPriority; long dwInitialFrames; long dwScale; long dwRate; long dwStart; long dwLength; long dwSuggestedBufferSize; long dwQuality; long dwSampleSize; }; #endif libtheora-1.2.0/win32/experimental/transcoder/avi2vp3/vp31.avi0000644000175000017500000111131414771706724022543 0ustar perepereRIFFÄ’AVI LIST6hdrlavih8W‚¬K¬@ðLISTtstrlstrh8vidsvp31èuK„ÿÿÿÿ@ðstrf((@ðVP31hLISTnstrlstrh8audsé™î™'éstrf"uD¬™éVOX.VOXrJUNK¢LIST8gmovi00dc2ÿª >™‹Cài°Á†Ylt5€ô‡M-+ Ê)²ÓÂ)R‡M`q°ø¥ ¶ `F àé'bÀð¦°ìk`f™…4 &°+AÐÊždÅta^ªŸ€|Ħ‘Í„Ž;Á͇¼Çb8ǯ£lR'c}ô»¥¥¥¥¥¤i“¥è¼Ï4ú{l2x‰Õ¹¤wö" /Nž£é0&ÑÔW¨¾¾|Óñîàúu?KÞ®—®°jé„p¸.lœú¢~Óéñl%ϧƒé¬ŽŸtòÑO>y’k –kÿ#G-Q¨æâ5Q¨êT´º¢r Ó"":#ÈÀK<š À00dc œ~ ÏÁ[À01wbéÁÿÿÿÿÿÿÿÿO5QpLo%­(ýÿÿÿÿÿÿÿÿÊ2÷OWÒŠÒÿÿÿÿÿÿÿÿÿûÿÿßïÿÿÿÿÿÿÿÿÿÿþÿßÿ÷ûÿÿÿÿÿÿÿÿÿÿ¿üÿÿý¿ÿÿÿÿÿÿÿÿÿ/ÿÿÿßïÿÿÿÿÿÿÿÿÿËÿ²ßÿ÷ÿýÿÿÿÿÿÿÿÿÿ¿üÿÿýÿÿÿÿÿÿÿÿÿÿÿûÿÿßÿ÷ÿÿÿÿÿÿÿÿÿþÿßÿ÷ÿýÿÿÿÿÿÿÿÿ¿þ¯ÿïýûÿÿÿÿÿÿÿÿÿÿÿûÿ¿ÿ÷ÿþßÿûÿïÿïÿ÷ÿ>MÓ4ÀÏS›×æµym^›×æD00dc ­~ ÏÁ[À01wbé²öÏv¶ÖùÓÏÅ&‹ÏkbñzLÍ"í–h>YŠe ¶>8áv½â’iœæò˜é®¤$b“w-'XZèýzâƒô[a‰mP^g“¤Û—¿”P”p-l¸Iún *—ûc'ýÀYÔ'4þ¨×!Ð">ÚC9 w'ào÷~zùZámpy¡}i…PH¤RBW2ËÍèàDÓƒRI’ÌõmÞ5þs°¨øà ù…=èbjv‰?Úsbeh“-wa§¿è0ØzÒ%—ñ—~÷Ì£Ç×;³3;³SÿOþäOú} `08kÕöŽzD00dc ­~ ÏÁ[À00dc ­~ ÏÁ[À01wbé„'O-ïy+ÿO³à Ë±ºþÅ{1u „¢ÉÕ'HÔÒ&°Z 9ß•I°ýÞÙnSfd!,“­¶ܺÔj*ÖËŒ¶ šåýí\xBæk§‡ vt¦U¶ ío(+GÝjZuœ+§êjÚB b±ÂnÏ)9ŠïTŽ–ÛºˆÁ_Žç¢ü„å‘suBþªNŒSý÷š‡¥GÕኡý°cµí:©àdª‰—!E˜¬'¢å¨u«l愈ý{·2…m=ܨCöbãØ©U˜Nû §ž>¼©VýbCÈG£ÀmEU8EQÈA¤µšZ%D00dc ­~ ÏÁ[À01wbé>ŽØšâðÿ.¸û¬w?1X;€ *÷°áë0Ð ÎR.Èô‰Xÿo¡ÝaTó—Ð#9Ê—¡ì¾ÈñÞ”ÛsL×ïØËâÐÔRÏ„g&ÖÏHÏ Œ>M+ŸÐ¿\½í«0å#Mÿ‹ù»}©Édr€¦)­'k˜WâÅ‹ &jM±â«)çÁru ûòˆ†ËeHöˆ™¦ÙŒ–°ú„yô–|ÊæQiVXŒ`yuR¾Lk,·øùÞ 7õ;£ëü°$m¨0ÐH—‹wî3ZY>držöÂûFƒèc' ÔmHWaé¥õåD00dc ­~ ÏÁ[À01wbéG›¼ø­ôåyDÿב žž Ê£Gß2Kh"ŠD×BÄ(Kã×?|U´N¦M88õ€XÏo©*柉ÍX³|ÄPÂ!MÎ…_Í^©Á„0}˱#á¢Ð‘FEfØ\8v'\ü8ÿngÖZÌÿ¢‚‰‘1ü¹¯Æ¡P½4ÏÚÂO²Ð|ÀMv{¡RªxZÏÕB !zŸ±òçÇâuøÊÍõˆì?7Êýab:‘.t·|D›ƒ‡ÿäՉتZèD½Ò’—rR\ô‹Œ‹Õ&_Ó,‚©Ug'Üi:úfûOÑ D00dc ­~ ÏÁ[À00dc ­~ ÏÁ[À01wbéCç—ùÕ£á%WŠA‘(M€£Í䮯¨ œM *u Ç¿¢­D€i*AàNþ4ò¹Ä» AåÈàt5’àä&åY*þNôz«ˆ×P7v®å.3Ï•ÿû¡¤J\-2ÊÐWDBVŽì”ü|ŒQÀÎ1p„yñgZú©Ž]Õð~¤þ'…øŒ‡VKrb$¨94JÙÇ]Â2 “á8¼³_¼8••î+ `Þ2{ò]°³I) ´Ö× «Rüb»7åÎêápG4äF„åP³«‚‘…éLXsC’ÄyUz,D00dcÄ®|.߀£Œx?;ìß¡Ûô(€˜~à‹ ¤C&8eÔŒ—Š}*úÖ ùY¬AtA®ƒŸHTMAÑiSFŒöÓêh`Keù1öÌ^µxCI²m¬®º¼Äš4^4ï~»u)í×6¦Jœ w´u°ÛÈÃL¥À*nþ ™ÎJõöm*¤y¤¼Í抜'yÚGïà!%®ûwz÷‘!rÓ¢SM¸¦Jc¸Ÿ¬*k\ÏÅï9X„URƒ9&w·Ïˆ`01wbé@å$ÂïŽ; O7??ï„§¹ñ#™¥Œd^ˆw¶¼HN^Ñ%å,a¨ÉR ”jÒ˜(vËÿQàt6çBU†Û9+ÖêyÐe4ŽÛŽðz<׎bLivïÈâ0m@“ò …Ók½*º&þ6î”`û¹3âÌÍìL9ÞE8|†HòE= .·5¼ÔŽÞ”yÛíþÄþ‘¸9÷ç/ uÃNú”zÄÏ.¢n¸Åº½c!ùH:@&†Êþò$&›·!ŒAvø{²hAäµ¾úëX‘1@‚9"Ã),f¯mƩă]Í3î)D00dcD®|.߀£Œx?tÌç©ñ©ñÕ_p­¦ÓÊÚ¬›Öàø/Ñýæ1@Ü4ÌÄTsÅàÖ >L´j¨ZTóÜ\ýU3N€ÅjhFpÛ"Þ8ŸCSÏšvwÒK·#Àà¤Ë®ÌJÒ_—[ɬA>€}¨˜¥Î‘4Õ1Ö¤X.§y›à<ŠÄF·ëfŸÝ\æe“¡íWB—< Ý×h {tOMÎS‚rР-Wë’ÉB±ZÞ— ÉG¿,iÓÈ×1Äu¬Eêçp,Â%W8¥rgÛôô+™|æ ëʬ'‘QÑÀÖØ·E¶é¿±×„Á?7rȶü¶[€kUÊ0´á“°;"z´$rÿpbõþ êê+÷Ët÷%휡etfzÃÞzûf^¥ûJÜçH¾\ }8剿ÀØ©O 00dc̺|.žÀ)F<Kð3g^”/SêcƒŽª¯¾‘Õ:sL£º»«y·šð‹{ÔíáÈwеjŒJdQu´?pøåT…[ÝP%Ø„ÂÀH#Yd°b'Àžd/ÐëÛ­Ÿcý’¦Ï¯jcB#Ä ‹ãiÚ@òK¾åÀqH“À2YJmý§Ö jyÕòÂ"™fÃRWØ9¨ôï(M}2yd-¡•ê÷,TçÁmEèAž¯Dû·8o†Èº€gå~°úëè“€¶Úp"<¡íÆàøÉ3ß7dåã@LEñR¥ýѽ¿‰Òår×þþ Ì?¶T“ÇÀ.«@Ô†Áå~á¾-~¿Oú4¶C»\.Í\(£=ü;"º0gòuNÜàF–Zu ú.NL̃©]I÷#ZN®@ ï£$D00dcÄ¿|.ÏÀ)F<Kð2o=âyΦ7®¦7§ßêŸXW0»)÷щ“ò)›ý;Bñ‹:G@ ÷úÿv=8j—’üÑ.« †pdz!lâߟ®ŠãŸ.ÍÅ¡Ü+Q\{f’•ó#!VÈ4]¶ .i•†ÆŽpF.ÀczPíÙÀ)‹á}o±¯å‹†KY{MShÒênZ”´×²îUè.}s:ÿfÊ6)VQ¾[ƒÎ~FŠm®w8x¾‘7mä .ø›FŽ!ˆLá‘lsÇN€tO ‚5è©IÑ»G¡áŠ^—*…¥©ª0^ee+g¬ðègcMŸÉZ0 s‘HüñcÒá‰lœsðy™ó”ƒx¨ÇhEÍaåþm¬=×[úraî3D’a<Ïþ7ÌùÌd]ƒ9…ôW€~¼¹ŠÒ¢©î¿÷zäQ;ˆ}ØÀŒð›Á€æ.)Á"ŸÎb“€„ç‚»Ó<Î2{'ù:î˵<²¸ôõXá Оz±rx4Ÿm˜±§ðT *Ì|OB/-@üViµ9_Çݺ©áP%Êj½ÜÌU”ˆê©U:Hrx7†µ™ÏßfAÆb·¾{ãÔèµC¢âµõ͹{G”Y¦~;±°®H%´ –û”ª¹@w=ÍìÏá9ôv›pÚTßÝgBˆàï¿hŬ>mšv%IGë$èœÅ.öž›û9ŸÍö•Ö©†qYA~ó³Šc,Dìt.1ã°ÏÁ8PÉÅî‘‘yÚ°Üåô]$sCcÁõÙS¥Ul@¢ýÔidK°çðG¶ƒ)=²Ç­’¿öÛRJÔmJ«»¼éR'è‹0ЦJiú”`‹ûÏ›£wÿ‰€ßóoú•Î2öŠ0âM(ÌÛ2öÿG|òúyúå+âßiy‘G‘\G˺4– g—ÆýgÌ7dÎ;9¿%e¦…­'jcò_ô¯wÙ+ÃÆ{ þPjг(4t{ «âº¶'¾qº=EG3J'ÌÖF¹óŸUu\7ƒ˜f|ÝÔ›#/ §ÊCžã¾{«uŸ‘W¾dÖÛ9ï^™–Rº²®þ6ò~9˜cQÉkãÌ“S!v ™˜ÖZÍ&ï« “Ã:ÝÙª½wHò—7½ü5åì û½É™ßdå•=3|Ï|ÄÖLHûlªº%ÐX)kB9ŸS;VwáÏŸ%Øqh;LzîöóÝq-…Q³‡8U<°üáãÉgiÁk} ¾%ݤ؈z¦ø€01wbé€2u0KÐds™ü.ç7Lòç:ÀÌió¦Äû-/ææ"R¾ÎJ$Üø59*h³ì\Œ[ù3tK¢Ÿ é‡‡!R·g¸Ë} Q¯|ÝI#—1s®ìý"@ùVø˜¤s(:ÞFœPCb€X6þ <ƵsÂ¥å0ÈŠF^øCCâ§U ¼<ÄM±T™0ÆA—xîÄËg`ˆ¯L¼cFò#Ù µý³ßW¯@ý¡i%çJ¤ÜÁ?±¢ÄÓAA^ú óí.ùÀqˆ¼ êÓBê^iZn!¬ºƒIéË ÂSŒºlhÅ(D00dcܼ|.»Ÿ€íŒkétü ™×xƒ;øO'sÈy;˜žCÊëëéòUöƒù òÕ¼_Õûßýx%¨ +ºvŸþ§NÖ@° ƒ?HÚ¹#ÏÒ9ÍŒK,¬ÎÆðî<•, ?pr\‘+^rg(SJÔ}ðsp“(2ÀBº^)Ý}ÉÙ†]ÍÀq´¤„J²1Cég˜gÊWnÜ_Öm?9št?ï€6Sá‘§c5Ë?…i™žúíÞõ(î’d5J9ßÕ¦ŸÜû¾óÁo ¥ €8±Ÿ/†}µmŽþí˜b0¿ÃóåA,×ö/ÑïàÅ ®.+áäîÐTTܦ4¡/Ôø’•Èy¢ÀW‡}†‹Ðrz/GòúC^Ö˜@HF…³F¡ùãæ°Dcۈµ ‹JºGôÛ ™‹Í¦ö¥9óËzD™¯s›J‡‘Ú.ô¥•)Ö×F϶ðú)¾£Ù¶AeU. ^Ôâ¥8Ö5%I„·É/—6]Ýó7ÁU”ÜSk’fz[Íi¿Ý³MVzqо¢îçŽbÇŠ¥Ô«ÿ4ÜÔõÚÍCùãØ½þôØðéØcÄ;qnžm>˜ûíðþËÓ‹ãïz£õ˜¥¦Ñ=ÔÄôfÖ³s„0¢Âž¬9hó^/LÜ·÷M4é‹$.pl±-Ó¿Íý®Ó'³[ÙÐÐÂ~gج5Ué>÷b-þÕ¶BóL†¥Ñ¢Áç·‰ëxg©‰œvß΃ý…bxÆmÜצï6»ßWzÇ@î‹¶^î<ÓOOLëy$¾+rIg¾9dåËŸy!æÂÈøw(÷º¹ÜßJbޝSÞþ‘ž?ÿ€ùÚÉà}´?Sݤ»´h7ê(Ä`M߯ír ö|nA…;dYŽ–ÞßQ°?µzÎmâÑz™ä¿ßõ“°p´BpÁž!bq$Ô*³üŸ›Ç§=,\çÿ¿2—Éö‹5ˆ^á(Ãçm‚–ïzÆ{‰õŽÆSe; ¶ÀE£ûáŽ#AIüGÉõ'¼+›¬¼ýÌlìlŇÀëÝ6Rð`yÓýø-W䯡랯^Š—“=L¾cÚûP œåÄ¥Ú/6 ABwž€°ÞózÂf¨ªÍ·¡t¶«)ÊŽÔ¦õóµZ®­É°¶mkCìî=ûJŠ-îm6ŠfR\žÿR kåµïÆÅiTÔyÁάšœ÷ŒÁBõAH˜¥*¯ï¥ö,[™m×å¤Ùò¦,º>+™=kº³¼Ÿr­Jõø2 õü+[¬Ø¾]ïû<¯ÿJž£å]`³4Tƒtû{‚$qͶë°[Ž*r{Ö›ºQùÜòCÅA”9I¯Û™’ÿéÕj‹¥/ÛlçªòQ¿ìýÆKŒ–éu5¸PT}Ar§QéÕÛFªûjÎÌ|(9jT7þa!íñõ_7º€T• nÑ¡V©C³Ú´;ÇÇàì0”¨¢¥~] ÒݓͶ=»-¨ÇXŽò=ÓÖÓÔ¥Lbó¶û`6ÏËgÎ^dH¨z:ÌDØ-W @?NÕXæœíÙÑiy2;o_\ÌG½S‡»éB#Ñî§ÄòÖeÜŸ óšÏVsÕz3žªau\Ù'Ë]g±áQœáÕmó]VÍQjêÃëÆh÷tÃ@Ñ™Ò<}Ÿ5Ò­ÄݲÐ7vþQûö¯u©Yk_$Ë–û''Q9ãÏWÊ-´fVeáiY™iLtÖ˜Oz´dmöÓfYwSvx×?:=ƒÇUÆ9²¯=EWï™·‘'šd%RÅ•]«ª9Ï««r£îή³¬È¸W( W™M嵚ù²T™ÅŠaLUÕžÑ=)•o››¶ÆË1o#?MÏJ‘ÕðYŽ®¤¨Wò€-þÍÛ£]Y‹Éöu/|~ëàÍÐ,ˆãÍâGºwWºóUg2Žî3}­èVnqõ^Ê÷£·@ù¹µSu]|×ÌwòÃŒtóÕcÕÄAê 1g‘ÝèùØ% À01wb适ÜÁƒÇ…Ôäöœ[¶×åÞPŠÊĺyàçå97ÂøoÌöÐñ(6{h‹7• â[$!9[çã³ã¿ ÿû;³È ²r¼°S"Á4Æžƒ—–îÝÒ+Œ¢ŠNŽÿvŠö-¾HïÁüŽq¿ë”±FÆw#,!ŠˆÖÐ¥ QMÚsfGLµŽŸZ+mþyJB‹ŽX–1Áøó”b"ô¾ÉF‰ïž‘üÖ’#mÅ-Û°f•0*­ a}qóå'7¥õ¼@ª;ç\¶åû(‰ÞûÇ-BK냩]é ~´Ê©UDW”Nk(D00dcT¯|.»Ÿ€íŒkétü ›Ïx‚|bxL{˜ŸçN§Ç¨. áŽèˆÚok«}&þ¯âÞÔ9,×á‚}y}ÏÔîoþíIlý.ÉþÈöëwÿýl›B9çsâ\f4«zƵ­ÄhÉ´OÉQè:Q"éeAŠ˜¸m—(€2¼`øNئø¥Aè=„FtWWoã 7u›1Ãæ ßÓ£zäl§–ðýðÅ/¶ýuøåÈn·’ÌAPÞ¡Ëþ\me‚VÈ|O“ø²Œ6Àù>êÅïû]k·²üÊ$ÎeÔNÓ¶ž=¡š­È?Š7Üó_–ûr ë^·D³þôVU`zò}þléŒ7}±ônißûHÓÁàúžŸg(§65u°¯…¾ËþøªìDÊ¡TGwu Ccaf+\.¢UívÑÀÍŸoÅëðþiÕ¢:oEÍþIuÈ@#C']BÔ0«±Ef¥@q2”X|ig@Ý»`“Ω9§s¿øØòBæ.dA±1xu0°x gÿb& aèÝGÊV½þÅÎæ÷}ÿ'«>—%¡¹ÊèÿŸ{BwVŽY V8T9‰ðîe~iõº?µ´õJè»ÓþVFŠ˜ù¸ þ›í`£¬&B=›Ûÿ“›õæa†y±zÓlê±õ¦¹Àë§TåáÌa@½ÆðˆqÃñ&KЀF7ñ€Œ¶ÛFx¶Øø²Ÿ¡JÖÚß ÉÆ%ÙÀÞ;{ˆøi§D7´Úi(ÏRÆ9&}K:R̈!šiKym¶7wâUâë€swÀOgË}§v°¬÷Å>½œ•ͼs6 {fŠ ¯€-/Å­|І›ïØ FµëY±ÛÛáãl/8òÇ/ã_G#rè5øfÇ9È Ñ‰Ü7t¤ÈWüÝcpNJ7W³ùF¿E¾ÏE ÄT6Êë(÷$ñ©Ÿc½zšª5hÕt5¶­G ¬jÅš«˜ˆÚ®Â‘î#ïÕX®8kòØVêH­à/10«¯Æç Xöx°˜R¾IƒO§ «jµ¾²irÓF¹œzë È2¬Îf~c9–»æ¼!VIæ¦W‡Â®ãÂ|XâPoXýÌ¢yök™‹ˆAH•ñGÎV± Lq0,¤’Cee3—.ïùHL—~ÒæKØ;KÌ%̵‰'é—%×Ö­Yz000dc$©|.ºO™‹;bÍ}.œ¿¦óÞTóÈS€Ägæhyò:¶vp|Ž­‚à™ð‘ã\âγT^IÚþîTëÚ­câ«qû/ÞÝ·§QÌhþ/ìý¯øþ¬–ü’d²h ¹ ÿ0TÂä*@@W$î?Ö¥yCµ×F€˜ÿ±ZÉÍŸjÜésŠ_„b\p\/âÇEι!ž…¥ÜZjÁs{ÈŠ_n˜æt VÑZšõ@3é]³²þEɶÀ‹…;BÜlÛàüHž€œµ‡y|¼üC¬éH1sÑ\»u 燂ÞÑiÙ‚Œ* ‰@E)àZñoQ†§üõF©þ±¤àšÖYï7{ÆÄçe¯½ëÕ™yw£“.ðÁN&À·O؈ž>6puR° ÖÔϹúVÛñQR5×`ßOïž÷Í«ŽdTý–.¸ª%7L†v”a¹7QÕïï8NÝ­R}E€qâì€{·ˆ°‚¹+Èyg\HŽ·ó÷Ù½äÅsb]Á=‡@lؾå»'p’z ³ÙpðØq¡½ëeŒƒÄÛÛë]öcÚë+¥¶Üʹö›{“;>øxµÚQÌEùœǛ·ñfUÏÆ; )|›&pAƒL5‰â"Æ|¬WâtOE‚Ä"ôl MP8áÂ×~lnÖšDÛµD)ºßL*omjã‹'G ¦PP, »x‹E…Á²Ëv€õ¾ž¨ðâ‘©´,šDÒ?éWé[¡F{œÐ]ïíimW]®Ò[u J²mО+å8®¬Æéÿù’aYÙµÁõÞ‰Šä„ÈT.L<ÌLN²y†‹Úfxóú­H>ýõEN•ŸÅuD*DÝAÜ—WÄø©Ù»CìÙ—mMÂe$|zl4ª²ÁüVÄž‹\}Ç­4ÏÖ4ëÑNʸÚqDÚZP¾îÔ×E ì•3ºñ¥ß¶$/¯-x5ÁÉÙMÞÇÙÔßù”Sª¯:Ý…âóíÿ­›6Œ “—ͺ{›zîuϰ¥"ý³øtdˆG_ŽB'†w7ÖÚ­³`öÜŽ²ðkdüPsi¬ÕX'RxOªY“@ã1ZJ±Vç÷¿Qø7GXE#w¨‘2ˆ1 ùõè ízõ‰:øsž¼wWµBuðõ"œH¾ÏL.Qq¿ŽÝæûÞoÚ4¶½áË{sKàVmþ‹óUö·{õ~ßðÊæ´j"°UÙ” sÁŸ[îKWØy´Õw;»–%9AÎGħd\ó2ejÑ¡ ØÔqTjYž:R@LªÁƒ! 옧bÔ=8}+ã–ýsVf@Ea‰Ìø¬ßž((î,H5îõii]Ýìì ,Ì"½äÊð®WäÒM4˜™)5ŠO< ™$MtÑL8i 2i¿Õ 01wbéØ 1Ì œ™ÎßZ.üÑK¥ÂEñ-³t>‚Öß|e︫ˆCX)9&¶ØŠH(¬æçG1ctÌ› [O?¨óËCJP)øÚV}¸-Ÿ#9 Ÿäá ‘ÝnH_N:=(°†Í?ZÊ–åxq€h÷;?±2¸Êj[†þO¤’ÈRV˜‘&4n+ƒÊæÌ6/—Éìó…<½!ó2‘ï(Mu„6dÇÃËeÍáU.Ž„T$ûÿ‡”czÂ3±”ã8-ó_-Ö{âª9¿.”~ðF[ÿ×>0àƒI,hVè•i¼òKœ>C(D00dcø¢|.ºß™‹;bÍ}.œ¿–†y¸t4à:p>&þfŽB×ÁÀô…;¨&¯póÀž+ÝÛÿÑÁGöùý–õäÌPw·ògù{OÕ~×Ý{÷ó}ø×ävèñ'ÛKsÞ­+EÙ ØDۄ̉£~¥sǨ™,§*êçGE™ŒÑ¨7 d†W<ð˜03•Ì>NÎCrPÏà{b/Épªvr~¼H2&8 gÚ·ÈÚhAm­ÑëRZ]C^í"µõ­Z²m:¯JÔWhJÝÃiK1ÚÂMG;‰¨¥jësþ %¡¥Ó_¸¤œßˆ¥sà!0Ö±ð‘ãJwÖ½º€a1Ṙûס³¤2áØ J0ˆÆr°dùýªpóF¨‰>ˆ—Ö ªb_ö ÅiµW¥úYCä¬á,à Z.±@Y;‰)_™DÞ6Ó-$Q‹ï¥Â6e º£güSJÐk¸U§»¢yW,†k _+ŸÊ~×wWÀŠ:öõwÑðÖ%hÀ Á\Mßá‡w+mmÉ)ñ¯yÊ×Ïšµ®Rç¢Ù~un?ÏÊܱ!¥ñG&¤1[wêŒGu2Rß$nkUÒÐÄaw9W \îZ±æáÏÍÜqbïâOe Á-·y6ÝúüS¢ÇÙèô|¦^«}¹”‰ Q)w1ó`¹+¬ñ*|e±?S|JAÛ·~Ë»†ÿ¡L,>EĈ*¢uÜÙ ”yÇÇý祀PXPüÏ¥‘{yömÝ™þ Þ6\%»½?ö¥©Kžå'3:ÈhÉ€'²áœÜÍRMž˜’¥ã¸î‰ê¯nýÓõa¸™:AJä ÜÓÈdJhù€De3&i›ÊZñùrZu4DElú01wbé{nŠ¡eÍN‘Kc}£{ÝmZk„_ÆþÊSqÆvÏÝ¿QûòsµäÉ1sxa¾¬ÿ(|ß¾1ï”U_UÌ«ªßȳVàTòƽ±àµÄMz´·m5¤tæˆÜ½'[ Âuõ|lG}¿ðÿK•ªñ÷6jRÿãbà°íBÜt-5þÈÈ9³@Å<ïB½h’ '´·% ÀËP°J(ÚŸ†qû?ä+²íhÌŸ'ìäbÛØ6JU«çê•"°>ÜûÔ_.õÝÓ=.ˆ%¦~F4 Z„ \I¬e6CEs¢Ù—“,D00dcx|.ÎGæz±e˜Å–>—«‡àÐÏ6§ÞM 8œ›ðh}¦†™¡§uñ>Çx¡¡§uñ< ‚gÒB×7Ü·.WxËK¶É:I¥åüÞÍý=Aß-ǵ_ÅÜãeÿ_ýû[“§cÉöÒš™å­²eL'0F´É¯¥»ô÷©Xž-•à0›4±LÙlžB*AÅθ¦š³˜@ðŽjÃÏéK?‡1ï¥K‰ã™ SY¼´ÌY·*1Ä®¡³û÷ˆýsÆBïäo ŠŸ¸!Ç7-ÄÓ–yLYCšÊt¿O€Ò¾)Wª=Ržý÷ÓS")òÈhöî ‹9š¥Áj1lÁ’ÈãÏØe=v¨Õ;s¯r_óW8Üí’当5>¬ìåšF`÷qWbPŒ}MÇöpúå«%­B ¨«™0}ö}›5¹_­ùMµ}¬¶×“×ÃàkZamxùýGÌ{8oû_°UÏ_ྉßðË_.>9byg)6Ä“˜•ÍG° Œw¨¾åûù µ£›U™¤ôgÍŽWónD ZÈu”5µéZä•ë_#¨žHø|¤ëãr2[HGª±ÃæBì;Dž„X)]c,zðÒPºÍ&€ÛþùÇÍr6Î*ÈyÉÍšMS?Ð%I@AD¯F¢Ã€7ü·ãoð{sƒ$È¿s‹üÝ”œ;D‰"ûˆ¨Àl‹£™ù¿<?ŸA—¯¸—ÙÀ š6»C9—#õy+·ÿìÎ@þ×Wöllksq/)ØÁ1¾2‹j÷êÑë¤/×±ýšÉÙúºÜÅ÷¾ ãqÄbAi®MÌ)2÷K0 ð8?kÅ?„¢OŸö€ë}Ž^cî[IC&]YÅ=ÐVŒíü´Éòønàï•ì.ÃóD<‚nÝè]¨QŠk%õ@ñÞˆ~Qæd‡gè<îNÿ¥3´1ƒŠ.n,ÔXFà‚xršC¤p\‡µë1—Ík¤ß¹×mr e9¬ H“®ô¿[vyæœJdSØÉÛï3jhqâÐ9Qµ©B‚*ñÆ+^¢¢KQùw^¿°N†X›ø+XøðŒ÷0SΦív¥LogFQMÍÞåFàâX“镘Ï6¢ÆRÉyª2d:†âÑþžb&•û®ú]êjS ˜ÒÃUÁZKuo¡Nb`¨qÿ«äC00dcôœ|.ÎG›Ó†,³²ÇÒõpüÚæà}¬ÐÒâ;07æpOŒÑÃ7“¬V}ŽñCy:Â03Àx(}›Dãå[ëȹŠæÚ­ÿ¦§³öà¯å«f}[>¿»÷¯» 99_½¯æ-û›jû÷«»ÿ¿M²=_yèèáÏr´Ñ•ùIê²b2\ŠtTÑ»~—  î^#»5'o:xž5÷deê¡€Áó¼;»¸ú,Îe‚;x$­•õÚœó'a$+^H®„”U_IJ»%;Èëç)ïæÉ·ÜìÎðk-k‚#ìÓÉšD0eøgmFµ7.¹½¼£•Zü o3ÃÛ|œïÛ!Øi÷/+RríÎn¬EªN[%,y2¾Ëù\àôö“¬J)°Y°®2µ¾¿ n}Ì`f“^ 3'«SóÈ×›‰ŸE…Eÿ‹Ï㨷Õ,?œ¬yîT=__“ˆ––|ï±é—­RÏìÜ”ÓsÕÙ/W²ÈVe¤æ0däg8†YÕ|o*¨YûÑ2†EÈ Dä‹í™ë lr,nu™Yyy˜¿!?AØ'/M‡8û÷"ŸIɾõsDÃ÷ýW;ÏŸJï;䇹å6'—j»P–0 ,M·2½‰Œ¿ø†kiÄX=„¼E@Z‡¼ È…ÀFàÀøNe½\Ðz&^8&?…Bmy•þK™L¯µ’U³ÌpÝ%Ç:pø61CÒPdäO¹“jãìÚ©VWU8)†»<æÒ—íYR?ÂÚÅχݟÐ/@Bq‹¡fEl`0@ ‡Ã}"ổ‘ŠŒ¹QÄ ÿßòôÔÆùNoDÞNßýö¾y6§èvbýÈÆÛYSF´ÿ»w±Ìª WŠÅV9³ãWôÍãäûˆ´çäv ü[©_€yzдcKÚÀ­×¸g,¢Îò^eª‰]ãHÒcKÿxæ1â~ïÚêè÷_àÜòÑðsNˆü÷îÅý›œyÊñço‹Žh‘Wûwц/Á~wúr¯P» ±±Ï‘ë^M?ÇÒ½6'£1É“MxYò½àÇZ /Z2㱦]’´ÓÓ|€Á¢ ‹W-d{ôgÇÐ4ñá÷÷ì­èVš©?²—¯Ê Gy3wò.Ny…|SÏ&=?2päÉÎúS8›³´$šÞ´ ˃U}7Úûr±qÀW@A£Ѝ•£Ë¶k‡§Žþ€¸r”ÞÎ(`JDÜ%%ÍK!ÃÆBNêø_¿wüÜÚËé7qæ“Pù†—5X]¿Üþo]vÂn®;Ÿ5Öj…fsøt01wbé@ØÿÌû‡ál ýìØ°?²DJ6¹PælîßeŒd^ËúÔW6'L2¢‰RÉ–ñ% σ{ïx4¿Ç'¼—ëÏÿ̸|†s(y÷€PÝÁŒŸ}HŒ™s§^Xô«‚|C6¿?+ÏéDñ_‚~IJ¢‡3ÈAüÔ÷H6ñ±÷\&ÃQ¾í{ú§!æ—á‹ ø¹#ކ£^¨(†¯û7'A|°Ã›pa{ ÌÒùãž¶Á^.­®<}A­qÄ£ä±Û Û4©êlââÿ£Äi<KT¤Ê©á£éia8D00dc|œ|.ÎG‚tá‹%Æ,•ô½\8rúšæà}¥ÐÒÉ2v_ðpOŒÑñiÐògØïÓÏÄy3À¸¦<®%xÙS ž¶mnlN-½ŸÉ?–ßnc޵¸‰îKØsÿŒ_Н[`ÌȈ€i¢v{ š¹ òëõõƒ×br 7§¤µø0k9ui4ìWÖËMx*ÆA‰mh æŒLú WÍæ›x;{¤n[y ên‡<¦§.^Vrö›Š×mùüjÏR”— ¬פ_É+Ê CÛ‹:õµ¬¶^" JI,]ëæ1»±%J¤læ©5é5a`U‰|È6é 3ö´ú/mÛ‡ 4KîdýÍ“«#Ëæ+V³¾ 0ºñKËï=FÀØ•µƒƵG½‰EØrå#!&5l +`Û/H^Ù '›šïUø—-vÙk“—Ÿ!}õ÷2Òà\•5,JÔÚƒPõZ½ Uà•­VÒñ}8΀:æ`ëÐ ¿«ë'Yì°Ô µõŠ$›ù§)c”§ƒãr½¤¬ÉüÖ¿+¹eúÖr‘«MÅË9ʧ¦ér^>\’û ü¹.“þzÁî|“–‡÷¹ñîI´+ünœ 7ÄNÄ_Œ‘ä~¥i™logˆ™~f95¥!^#ü`ª7ù†ÿíXL©ÉåæÅ#ÑÁ°ÔŽ»toá6œ§Šá§ï#=4`Ê@Z¿\ÙzpêÙª¾Ö¡ˆÿÊŠhÍž.?¦L}4wê¢WcOÅ#Ë¿  q43§:ÏÓ±Ÿxl(Ržx°‹ô)Т4;˜øWPé{ÇšAØ8ᵑ÷1-HÅvçóæ#?˜ÞÙýýÀ"úK·Úíü,mÀÁùš•)SÎwÑÓÅ’^ÛÔZÿ×*¯J¯_⸥Euì=©'ö¸±|‘ÆØg¹µÄÜ ã9Sfê¾×;›·§ã–8ùZ’u·#€ˆ£$²³Êå"xªWÅ.!E»ù-ŠˆÆPŸ@ Ê|ª×ìîLçߘ¾Jž+jŸÙ´Ñ¤OS‡èÍ|æþ¡g!¬”(£šìö€5GQ®Š ƒD ˆÐ‚¢ˆ'ýű‘`@Z¾Z%Ä,gˆJ¦—öÔ JŠe>Û§âdæŸRïû¢N¯¦ÑTÌ@;RÂÑX”ŸM*Ñ›IxçŸN„{j7Î >/œ|”áIjõdJ€uæä•Ö“Ö‘L _ŠÎR sâÏœÿþ01wbé„çKUz‰­ÇCvrÕ’'ŠbJYkêgôÇy¡|{(ïi:´ žbø/üI£¤)Aõ-ƒ»9ù\†|ðíT©zv—«²òŽ©nˆ49ŠtÏ*B,Í]¢õ;#jœöŸc\1:usñÙ×ßêΨ5ü»Ú*)AøO*C&„mz,é¼Èw[ÖjÅðP&ü«Á#Uµw¨ˆ´âÁ6"xþc¨Â xW¸ÇÌ“½9×+mÈDÅË©Çv‹@¢±á+:ƒ{%úBø@Ú‰Q1CÑ›Á¾>­„)< è±ñRr¡lÖƒPD00dc œ|.ÎG‚p8bÉq‹%}/W>¦†yšit4òLœâÓêp“>Gã:8 8ôgØïÅIñôgpLùõCÝ¡Qêl 5Z«6woÙvnFá×s¦0ÁWåOO?Öwåó?÷óo-M?ñÿkŠ—ýöd½g/ÑëLÚ9™Ö£iÕy’>lÂ0ÔIØØ&­Ã¸Èx§~T_j àŠNÏ!Š êtà©­{pNTƒ­©1(Úè‰\FË?«úðcÓ%€àü7]$,8NôaÊÑu78æyŽK8œP<´”Ö¼W=k’³»mÐýKkôWÓ¥¥ ¾Ø^Àý›ìÞ$ì,ò–gÒ@'˜h¢Òã±™¹fRÇ-bh:#z ~#¢8ÂÚ‘ÙOeD¿™™y™èlØéß·ßÔœÉÆ€Äú”ï8: `ºž&½¢~f-ãóòõË~tz}†|(?¡ý´bª÷fÐyu¯Ô«íŽ‚‡Eè,fÊÒƒó˸÷w!a£2°Äq~}Yè‚G’³ýóÇi«Ó†‰â–°U‹d.QÙêò«EÚˆ¼: róÊúìqÃÉÿïÄ÷¼-¶tå JxˆO6~¨!ïŒÈÃÙwX/ŸÔAÝ´²‚ƺ·f”Jxø‰ Ž~ $%^òÏg·2ƒA†õ#À§äü0úM«óüËZÌÒy º‰íåÊÆ>€& î£<îI=æhto[8îžb£žæÎg°ÌE™†ÛT,“ðÉh@þ'ã³K}Ì! hÊÇáúž~ÿ»žn‡¬ÜÉ·Ï~þ‰øî¡àå^é0û}n'§Z“b;yÙ ng–’ìÖœî&h{‰š`+HPBOB%Pª.5RŒ¬Wê¶–-W…Ý£6]¿IÇØ¦Èe#iªŠ¯µÑÉÍ¡#fÂO2b~±Æ¦7¯JP¡MWú01wbécKÞ ,òê†}•s°ìx¬ ÁÞâë{€{ãd#š¨Ž —ñŽ»#¿Ì"Ø!Ü&þË#,Y¶÷Ag}—Øa—¯æ”ü›hŠWdzËŒÉFÏ1–!Ï}pGÈ™~‘ÉeËI«2²ž¥ÎÈ€'iH:®›/!ÈQ™SŽóö™ä£ØZª$PÞ7Yz•—+‡ñ7P‚—°­©/XÁ,ëG8‚üøÃdç8X+¸Pä¡"íeRJ>²Gß¹t¼ÇŽ™S•ßGˆ‘è1®ú1ø¶d6ì>ƒ„I<èÌŸ…÷ƒ×Ð>/ÇäLD00dcœœ|.ÎFÃaö,“Ád‡Òõk\O¹¡žf‡Ú] `ýŽÓ&†=lýIogã:8 ôÜÂ)¨ù_M‡bB£îϤe«¢zÊœ‹Áf){¿¿»ôŸ×è·¯©¿¿ç!­¬½óÿâûýh¢ý7ø{þ½-¿‹Éµ–ûüè&‡• Dp°)ÖX,ŽÇ®÷ÓùÀGÑŸ0¾ä&ÊÕ´t~/ª`ÉŠN‘Úm©£E­VÚ2Í-³MÅIe‹z2¾f)å‘ÁѼƒâXú݉Âri.WdøþrcÔa×,ÈÙ™ÉYÌþí5aàeP“Ú¶˜ÝÕš?¯Ež° ]CÛÎŒÜ2¶È¡#ÐÉB'9úf*%“9™šº^¾¥¿D.!ð„ô8ß©â?s!JÂu)¨ƒ½gžikøÄy†coóärÌÏTóŸT1RrW {_èÇQ¿¢>2>OõÚvˆo©¼ZúœèÈxA,b pšx¢‹Âuæ?ÜϾ7Ãï úcû§ì”ü„TT T©cÎâÊ &##"/û07½¨ÄrÊ`ºÔù§šè´(¦'óÒ¨ž:Q ôxdz+uc¸Á³©šý±»:Žç)áÍÉÁz#ÄvVâ{ÛýABg½IÓñ–c ³Û–>?]„2Þêÿ dÈÖ|ü„ÆÜtEÍ·‚f1á |¸õ3!䘀Güc«š:õè:A–ÿ0ÐüôÓü×᪲ç§iMûé´X¬æãàCĨ̹IDÐ1ªšÀ«ŽS…ŸA¸¢æ2, iÙ*½á57²?ë ^E­>îõ§ÒÙüwoê™Sù‡.“›ÊmÇZvÎòòOi¸ÛFxúŽØÚûÁYÖÏÖ¯xšanÚ¬‰Æ ?ÙĨôÞ`—¸§2=·ÝÔJ)p›0º³õ¸Ã32ãäÎÀƒšÂ’2™ÛÆbâ ûWU+¤)×;½³¤âÞ¹6ü…߇ceAâ9Ùy«–‡Ñ¼‡X*{Bib¼R9Dmbº@à§Ú¼JVj”†x«öyiŸ¿Ît8`Àðª/½›'àŒ–V°á­¾;‘ZÃ0Û,ÉÈ7:hÈÑLèÄwâµXb}>.Ú^ñXº‰ß7°~¶ìçpD¦i¸JÝZ-ÕËæ†Ÿ~ÚnåÌµÌÆv׎†‚Ç4ªîž‹ºJåwF~öÑvDBA¯àž`üªûð·á³âéyø„ŠÄ9ÞW©aÛuK['.ñ>)ZIn·iSÓ´4.è–V¥µKKxï6ˣ̤t7Å"Qn÷e&Ö:õêWIÇ—5wåé6FuõÒìé¼<1QŠ·O}}o@G8Miµ½Q­:U(ÕTk#Ô¿BÌîªlFÊÓ‰$ˆI¬’Øs©Ò8ª¾”LºŒòob‘•h'^Ô¨¨‹àñ00dcˆœ}Nç#a’5ê°<õ=ZÉ·Ùè:š?Yt1ƒö;Kt1ðßn&J">14à4å›&Òú3hƒ§ÊªSêyD¸dzûË¡µ+gôøÕý'µw·þ~ÿß|fÝ8_k÷ûø‘gðÕŸy™ò6‘ü+ô}"â?•{¹Ãü"K³âtÅ5yònoV–èN i•èw‰6/¤0àxÀOYux†}#Þæ~zÞÖb]Ã5™‘Êy‚ƒQ£Ø£ÉÚE™ò‘ÉE_¶&]}šÊ•Ä΋ýq˜I­*:îR™ñå¸ ñáÇ“C§P0]@>&ÀAaKtä`ÆXwEi={Iô³´ÿ¥!Þ¬VVÍŠw“êÓOÉî<Ø=päêUƒO€Í¦§-â›ÐNJ0qäW® BŽb_<:ˆcb!9#[ñ‰iSz`´ÇWEЬE`|¸Ÿ&R È ]ʛ䠅¬ÿ\ÑùJçlS¾–:5h\ÉâîÄò©‘x à¡Áp®Š©¥pC «¨µ-Œ…`ê„^:ï±Ï®ã D£€J+«?b»PõÌÝg(b)¤+|õ×&5R¨­š§2Paòç†*˜”®<2ŒN(ʲ¬ÆõæäÉJò¾W×ûÿ´M, lÕg`ÒZ|1‰tSQD&qÿÄ@01wbé@eƆ˜À¬Îþü€À–܇n?ÂEã©'ýõÜ8Ù?Öž}ÿe]©×³]†}#ÉŒn—˜}¸…Õ+‰_ºdŸïÝå¢3;Ç—ræ’¸Ò?×°ÄòÁg;ÝÿW{Œ—‹6ßXË…ŽQÉ?%’ÑOš Sóñ ™bS´"K7n¨øãfˆŸX¾À¤ÞRÜáA!ÿ5tÛ¡s$s÷È/ˆCÛ7âK]áD$ß²¥Ýòh²Ó׬¸ðrï7Ò%ÅÇL‚÷UúhÜÙî-.LCh<ž$…)<Èaa:ƒwoª­hå@D00dc„œ}S©È¨1]<–ƒ ~-eÛìöu9½Ö] `ýO “C>I˜< §§,Úúði#ÀtÄ7xÙl·R¶öX§>ê¡p»ûûþ«ü£û}?ûÿ¾”~ù¿¡ýK›®¢]œ9ìÀbE6qíXy%D².#˜uÈ: :X…dp‚§õ¨Ýl¸5#ú9‹Þ5䑟|Ó±º–ž·ÈçË'‹‚b+'Ì‹fC5’ëv¶œ–™¸äY¦[ÍZŽNôÎ i(Ó¦ €`$_z˜³ƒ½py2PУÐÃA½EàÊí¼JÏ –¥fɶw-¨ªÑ4Ž"Vò´Ê ù‰.^Ôy§óñ#°)áIÓƒäÚ/™üH®ÝaSÉñŽ¿¸õƒbÉv/™Ÿÿ; .<ú ÃÍf:1µî¿KùUÖ‘©¼¾APp0ƒÍM"à'óª´Ê²g?ZØš›ÍTk],f…ŒV`È0I€ÿ{¤ f«èJšU­Ú ïd n„jeµ7ýó‰’óÄÓž|ò 4‡ÏÈñšôŒ}ã>›+…ÖÁB´`Zšæ¢ÈëX/Sÿè” ¾»é>jƒÛ¼ÕÔ†ÉQ Ðª#Ef>ÌgÿÞÜâjÜð½Xp¦l?ßóHàcÿhnàï8ØÀJðc=øCtÔ/Æ&u¡–É·ÏiYîûP>‚gU©_ÿ?”F} ܲ Á=2Gý™+:„?‚¿Ã¬Ÿ¥£ÛÒÞ¯ îss∶Ì\u=*Pksh–99JB¬þÿy ƒóÈåý‡¬ÿøñ`óç¿çîDyôÓ6ãF ®‡zv“GõÖµ“ØÚØ.¤Ôÿ|£ì;;qáÞxÈü jÅØÔpð tYÉG“JAøqŸ„uqΙO}wñ”žˆÌö‰™€%%ü÷ €ü¿ÇÆç„äTÁuäôƒÉöe1V£‚}k!äqéŠ+’†ùÅÙ"VBá ú«øR1V(?—Z ó O*dƒAö˜xÃRf"­Ü¦1‡y“¬ÿLÉì›jyª–.¶£ÜVgâ†÷pÊq7Þ›ë¡3)‚awáÈÐtÍ´†$òM0fn&g‹ÿ}«{ír$q™o›â&2Þ’QÅR©7B˜”üWT,$er …ÔJø¹<¦]££xJ33ì© 0ó N™e–$ÖõÕ‘)¦Òˆ³;µEÆÑOÅ» ›lòô- Aë)Y[ÝÅ>m;KÚZØs†©UqËÊ[KêÔç.ÂVÊ$¯i»TTžæi]úw¦Óoœ¤¡¹E­­SI±'Εô„i#T]\MÚ6KÔ«PgXwO,ó9#ÎÎæs½-¡>-,Z¶ÒÊŒK2¨ÖÃ…I<$ªè¦WTÅøÛ’%4D00dc¨œ~“‘"Žg@ðà«›=^a=0~Ï4~i“C)Úg ñȽ¦<Œ|Y¨yÁÓð!Ș¦=N ¹KÚÏ«¼jå+lýGþëín¿þ¾þý¢Ïï½Ã1ÿ‹ßâ¼_ïþçx2Ã>¿åIvam—5M‰dÛ~ZŠÊÁR¹¬Ç'b‡s,7í’{$Ú=ý…õMZoR§“•¸u~Rx{Ðh(d9ýG£ŠØ Œˆ\¦ý/‰›Ãÿ¬äž[°kªa׎•˜d2ꦲö¸â×Úªé¼?ú^n“¾Tú5™%Âfë“$"lIc™°žô¢…X´¥æ³€yî›æ“Ø '¦-´ž$(;’ 5¯?ÓÝ:£j«´~4ôhÏz ¿Ø?ú,ã¯#åtÇ@¿­ÄÙ¡ˆ°o¬Í¼Á–2loYy/_¼>qUöÕìÝ̉õƒ¼ºM7û×Ðh °b qþtÅ—LH“Q°|[œ1ÙÏ­*4¼¿9~9ðVþuúÉ[ëëPnîXô¢¦Ve`޼a¤?ë,¢ˆä8<`ájñV&ÅðW-‘GÆü[‘øâ›ž²ˆA—»­ò?± †=gŒ:ã4·iÉÇîùú®ø@ßéVÆ.ðyîýDµ™À1ÌÀ}3<Ç|Ÿq×èW¡@þt¦†[u$>9ìý;¿ã‹‘ƒïE,ŸýgŠúJ€iÊ´UU ­ä´rY‚+iäRÄ"ßs9á$µ?³¾¿hEðÞŽ ã"aïãgîYAÙîy©Ç¿ë=äySgÑ¡-y3“‹#8À‰6ÿL“/úÅ"¡½˜ÿ^_œÊïãÁçýg~âøxvjÚæõçJZî‚«»Î=­Ã%¡oÇÆ¯KùèRÄ‚«õ •mi áX_€im¼Þn…l"ÐX8CÎT,ª¢ø×Œ½FßÇ’a>Td{Õö'×sñYá‘A½˜ ŽZüüB Zü(l+<ÁëÛäh„=LUj'Œr»f7ŠØN3FÖ%úì•–Á[_¶g§–§<ãóSޝš~û‘ÿ=ÏgL'ÕÅñÛo0ýN>>9VqZ  áÒñ ¸²ðb}Ss…w^‹ö4Ý÷sÿ’ûœž$’æûûøøÑH‡™R³ˆ*/ßÂ3,ØÑW,É0*µR8øZ“‰u,¶ŠR Üœwö@ʽŒM$M¯ö­rÐ:7×YZT­Pq´Çȯ›ßÂçŽl_±]ñÊ¢.&³)Jˆ§²¢/‘¨ž›cå: ZNSËæmcK™(tÎôÚf+ }J£xF²vªüÞµzMkVÇ«¾ð¾ÎWÛ˜­t\\ž¨-„q*Õ*+aMgö…qðîöŠvüZÚÝŽyFâ Uö—ŽÑF£Wÿ÷Í“ó—;öû÷ýéy»ß9úÝK’§Íù{/¦°]c—ùT11‹0€7q›z@cElî¬0Î6X >ûëS00=@‡ALó“¡j j†0œ%+€èô‹ nуçÉÎG+¦ökÀ_šè3tùjC¥™Çwñ϶Ӥê=uìÈ­D™¿´ùúËïÓ^BvÙþ zK øÌ’SD8Ì£L™^ Ò‘ÿ豫¾ÌZqÇ;®o4|<§|]kdÓEÿYùÎàküO|½Í×ÚÊ}Ÿ_(YÆgX =!“m`˜I_ssèIšÐE}¿ŠS™Y‹“ÂÇ«8?Áőٗ鶜sc®?RÞü{É¡vÿRÒþÙœxCzu^¿ >z|¾Øb«çŽy'\WÑŽœ­DÏ@:‰Z‚Ã>fU:¹²¶`÷•àé^qØŽW)Þé?÷ðÐh¯÷~Q|ó™à?gÞ]ü{á*ùD‹'ê¼³žŸ9c5#üîø±­A4•ýýîz·r† éåJª™› Wå“ZT¾WîôÁ)ïWé)ü×¬ÈøšK`ëÈJ|T˜ï²þ'“« ;‰sb½e‡3/ &Ùó½^lŠ’|Ü?=ífîsŸ³öüŒÝCÞŒç3 OX­gÇ ›‹‹#Ej v¿·(«iú¡[ÃêW:{Ú¬E™&B£à ð¥Uœ¿´rE.G%3-ìåÇ êL½N¥Éõ5 bˆ7ÖXÌø­Ø¬po* ºœï¨9œªè­–TReE ©{òÁ6ø[¨’*%ÙQ*îŠñT¬å†[¢¡ÔæšRé§*œå)3LÓtÜy«ju“¤Ú›Ò8Ð.;Iâ!yÜ&È<ì#¾¬Qý㬒Ƿp<*ÝìÀžu Œ*2•)>[­ÏV¶#o(ãµM-‚‘ß1¥tª•RR7¤šÐ[[ˆ%¾YÜëÔzImdŸ™ÉåÅÛtsÚÔw*•QïƒLîï´¶VQ¸ªê¼nW‘=P¡UÑtr¡}«am›0·Z×Éú(æ^ Zö›«VÀ01wbé@ÞaYsÁ:/£p(#ür™dØâ^å£PœVœÍsæâ?ÇŠéÒ‹™IšµÆD—4Ûê@ù;ÿQ«Œæw–’Iƒôá",'{~h³ìŸæ'Ÿ—òœ¸¬Vq:*‡Õø;³À™7D ù.ä3¸b™ÎÚ8îÙø§Œ¢ÂIþÆÚ <÷¿-$¶e-ù›tÕáˆNôß(Æ£d?µÌ]ÿÉk#y1Á‡œ?ï–râ§4RÝ«ª›Óé@õEæ¾Ì3ŽòùQ2%ú Ø8 ¼ÏĉQ‹?"Y2c†)8HÚk§»mƒ‰½ñmfTD00dcŒœ~ó*Á&7<ãÀü“>ìíøNyÙ?WžÓ&†>‡*v™Ã^[ð»ÏiŠÀÓÍž,êýÙÞ¡â ÷¸¶×ª* Uá ö)oßBÙ]7Ó}»IõÿýÿÓ8ÇT}õëüGéôGÄü®JþVÉýÿÝüGË~Ai1½˜ gž `ƒÙD ¢×ÑßyÌf1÷¯3oè¡¶ìˆÛ€qf-ɳì&mÖyÍkŸ‹[F»Ô—¤º9ƒ#š*Î@×»,Ý,±ºü†‘ûe¿ÂŠ“´Na“UêN@œñ¸ýr櫌Ƿk5éRyŸÌ:bÔ ¹u††²u© îÕ>•¦» çüu’‹~Y×<šöÞ%´.µÑš´ÎÐÞÅUk½ºS>08þÔ"“•Õ¦O¬©ý.&˜>]ÂÑrr_ŸµŸ•è«K…Ùè_g<Ù’D J¥öç#írÆ1“‹½#Ê­¨ˆ,€:,þ=¡Ôˆ}_Ó‹pfÈRáèq–M+F9ãž7Œ¸Xqifª3¸.žz'Å¡Y¼H^vfßð#žgnźªtӫݨsÓü¯©{-ûé1°Îuñ«=4¯ö§tHDU_©%Ý¢W§ç# ý¬žÿ@^ÎnGô±D¿qèýœ0.AÌ1 `üÂ@Ívãòï̈$ ô6 óù³º‚ˆ¤ÒSý‡ }ÎÊã"…³[q (]ËŸæW.¤Zm‹*ºUTj)kzª!¥ün[bÑVÔ¯a]=[<˜Yåa'ŠtôÿFfN`ú“Cg~ÇÏwì ’ú=‡85áæ1mº©k|À_‰ÍGãÖê¼æž §POmù£ßïìýîC²Z•¤W{Ýéü¢øG|´¢U÷{ÎP,ö²À]ì£í7á-—5êüf|qÇ âAuXö?Å8á‘'ÅøîU]s4Êö¦ÈȲß21sxrCLIÛ9J*BUü‘µÌïçå‡" Õ$Ê?‚Þðåפ_l’ââÍþ#Ê&fZkJ«Óß¶]Ó¨š¤çI·œ\\å® ”Þ« œ ºo³Ñ'1äq$ÿÝŠœ¼X†®à*å¿…–ŠPncgûnM$ôÝRSÔÎ^2“ivíãùòò±³jcZ€Ú-°ÅK 1JÌÄ$Œ+¼LŽc“8HuÐB¸ëzCœ®çÒ_¹rž¾×Ø,ÎÛÜ6Ñ7²°Î)ß“—NÚ§Þ¹Ú㔑Ztˆl—iµ™¦Ê ¥½5.Qq—™±i1f“RÞµi©&¦CÐZůVœ¼Áͧ®ü¤xl„¦îÛnׇ=ƒyPBvØìV¯uº­Ox¶´·v¼›áQ*í­Å¡¡¦È“¡y»KËK2‚›d§ˆ‰ß+\JÒRñâæk"åòq$÷5x_ˆü]íÄÜ<Þy¼G¾ú#8äš([ÕxÓ¯­(†(MÄzµuñœç“ŒžªYP±^Ó,Zé«ôë¨e7§i–ÿѮµãøýZ–`01wb选vÀ~G|hU:{¼„™ä.¢G ³–_0­£ˆdäp+Ž'Œº”ð_FTM¨t!5 ÀâÎ3œí—»IåÐvù_æUTHµ2ÄÄG‘lɵ'|‡å»f¿¨Øf¹ªßţĩœÖè¾ %ì«’šh?„’.²±8"þãÜ”Ù1Nú¶G-ÄZÊ<Á4óHaÒ¢*–þìàHöûOW£ñ8xÉ|3þøʸˆßK—,ÑM,®œ¤äãÈ âSŽUÀ3–xB)F”Õ ? L,·ÅI<¨ßÛÑd|¤¦'²¡â h Z‘ÁíDê`×k~)£õÜ)_“Ž‘>yQªð>,¢1t4ÿñ9©Þ±;Ñ/Yµ9LÈãŸÌôÿU>Á¿Þ*£~(ò£Io~:ý§³ É“éoç88}¯æœ}}‚Í“CŒªa_¤ì?ÆAß_eòÇ›4y}ÚšïF‡Í·ÎùÿÆ´4$ ç8 úØq¯“^ºº9âz¯³Ô¿y¦ê´/ÞøBØ6k̘D ÞZ7À.|¡\—PC3Ù·tÆLDïvæS¢x-®u#®kOïÃÅKq~ýU]öaÿ®Õ«ªßóÚŠa¸Ðg«È3PžjwùùB||²X×p¤_ÓÛNÿkpÐ}Ÿ=Ø™ÂÛ ­À»Ï³Ü«ç¤Bþ¥)…Ë!í†@÷ÓUµ>ùg.'\ˆŸV#¿=î·íŒçð3öôÆå²@¾"Ð%¨,ÊsâyDàœàvbÌ ]C‹óûÙ훽ßbð÷OvM ÞóÏX#Ýõ}ì7Ï>G®ùx6p¬•^£»¼=Òèéã¸Úˆ48‰=†p¨HÿtËR×íZ´˜ÊGN’Íí÷:o”Å1ë;œððìÁxÊYÔý0ó Ú»ÏÏ#e<=1†ª¢©8qü®¢¶åwÌWóú‰bÅÍ7'îïó/rpŸVd„¤V€¿«âŽh³ã+šØôúDõšúÉ,©¹DbaÒL_›¨˜>SÎþÙ·´*eMÎ=. xGl3(VüÀeÜîWv÷½© Y1"žðìÇJÑ",ðII“ÿúL¦¿gó+JAŒ6r¯çåÞ"®²•¤)0)8³ÔÃ¬Š¨,™S ²QgÂÈ"vY¼î:dû¬ÖÍÊß• jÝÎ2§öó•Îê,WÚ§¸—*–44Š‘Òi“ÊE„î ZQº[º+ↇ5Ѭ&’i­{l6½ZUX%åC¯^$´wØê˜TW„©Ò<û¾ÏâÅÝJ ]‰øì6âyq*1Ø“ÌÍ£ÇFù)îm»m^|nj™±½2©¸¡¡¦Wo`£–'kxØÊóbÑŠD"YûI3Œ‡tIŒaq¸Ð3kxЀ «xUÔ‹TÀ@ ²­/IRRˆ–ÚV÷gNYÔÀò'Êo:‰Bg6ÙÝœ¤vïªëýõzTGoºùsþû¯>ó7ö‰‚oWh¿Ïì¾kµû_ô+ëöWá¾Kò» yœ«ËÞ[Ñ4Ö«,ÉÏ#œ¶É~üö úØÆ}ÿèû÷÷(#7vC36bHúC.üÆÆYã-žÁ{Áb"’|‘ëÁPˆQ!Eï¼í¬¶UP¦˜©.2Ø h|ØèUuàËG\Ì1¨…¨Á'‚dÑ}€~pÏãˆú"j±ÕþÀÔ¬pÜÿ¸ýïÛ‰Y«Ù¬Hœ(—ø¯¢4èf—žY‰ž…{“ðÌ{|.\‘RÒ}*@ž$ÜØ˜·ôvªífoÅ"$JgaѰ#dEëjœãðZ4hl*±íŸ½cT¨s׿ñÍ…° ÏÎßp ôbs%Âlò龤±^Ò#cC±Ï¤Pöþ!¿LÛ9—Uæ¯lljÔÚ¼ÇÂg“‚Û˜ R“&¢èt&÷œš. rv+ÃYm­Mz¼Ž°]ƒhWM¯Ea¢´ °I™k+³3lóà.üI™Â½ —ÚÃbŽLv3¼WŽLÞ€òô¾DùŽ:_÷©__EùŒoÅÁ±ð ‚ÎJLfž³“Úˆ˜9(öœyñríèüd4Oj~‹ ]‹YŒOÑDZm3Šùµ¥V‚¥ãV³ÙÚùÐD©ñ’B)ö&ϹWœÿÑ„xé=š‹¡CøÄ8Ÿ·y®ÏسƒüÝ‘üÉÕd·7Ø{ÏŽ«¼·nÜÿ»ŽíÚ‘ï9”5¬þüŒi¤ïé*š??¾} «·E~2ª‡çp+’Û˜~3œ·¥æÓ Œ¯ƒ€Ö F5¦ ›¡wQ˜£u‚Æ4!(½u—§üñµÉb²ó_—y3>•¦Å&ÿf“t™Édà·¬jè~nðyŠé xhª¢|y»éC”óè1ã~‡{}bւͺc'"¡óàÜ1¸Ef.Ÿïñþ^÷¥ÑÑI©€±&¦-¾ZO—$œí-˜\õqYjÀ|h|wþ›ßÎ:°„Òê¬"¢ÏT00dc°œ}“¡ÌCXÜ郆Bðrã>'˜C¼©µî`|Çç=Ÿ¶sž¦×–øÜ³©ƒÛԽ雖u0|›Ï”¦7õwnÍÝ­·™µ]î„”ï r§o²ó¾óþþûyÞk¾¯ò¾-á‹ÿ¿»M’µb7ý+ sµ‡[¥øA¤5ø[ýT­5ã´km¤êCužÓé]öëEÈëhêTî%¬FÜr==]‡ÿì É®—4$|¹’®U¢X • ˜d1QЫÉä^ņWrðŠSÝ&j¶QU¬ÒdöÌ5Kj&Ë€þ,A²±äY=F'n=«¥“ˆM#žpHÜÆûv\Fçw–í?7þ°n]<·âØæäl?«Q)‘wbuiç\²5­ã$zÀK‹ÏÞÜ7ÝEüÅò¯TÛc1Œ“=ÓÁÁèÀ¿§‰ünXÏ7«^úÜllÎq‡`dm„,ÁV5ú‡KÀ"6tŸ¹ìp³ˆ"BFßáp\ûAr7g, ïÝô•¬œR6³ö¢2½w“÷-¬ì7zó[¤:¥åc¤5xþé%]·­zíX3Pobâ+¦Ç>þó‚·xüá <.'\žýÂèê,0ìê„·p±3žùrî=Žò‹É±ŠW“ÏWÎ_Áˆ&lW²çÁ´s9Tär½ó*TĬÿ“Ä L¨)Ÿ§ïÍX—=¼>óØñe(MŒ^j4ýg'JäK J7WPœ¥”÷ö¬âb}—›ÑVûWŒcj>™ªx˜OÎÅqäë’O•ý‚°>n‰à:áû'í[qEâ¤{-˜™òmñ”øµØÍ@ÉUÈ¿ƒƒåm‹eʱæàHBC@‡´Ž;ƒ¿ þL»Çœ˜b/ç+•8}æ¾»ý¨Z¿íxñ­õŠG´rògÞ¯k–FïÂö™>°~…‹ ØcøU¹×òFþçé fèaÅu®DYÿð?’?›š×¿â¥™)y7™˜.üئŠh¤üG¿cDÙ0*Ô1›R¡ õdØ€O,ëÀÒ~öÁ³c¸¼#Ãàé²ú&чm£FÅÀƒë†XÁ"óE:*ZSóBáø¾¶BßQúu³ÉkçĪ¢:[é¹³QÐ×ã7|U3I -ØðÅø|lòwÐ}ä…g¶<ž@´®G*¢D‚à_~}qzäÏŸ±'ñÏ8ùýs*×uJ­~‘LçF´0“…®óò¦%{«×òk™*þë® ˆ:I7ú¿¯µÕ?b 01wbé€Ô„{G@MLþÿä Æ i¢I™VH³’Ì(„°3ÐKF‚6â0aF8+â2Ž9£ƒºôÎ]ÀŠÉdTÜoÉ1p/9 úóãvìΔJù{ÚÅUù½˜½ä?öEœ› Qz~õO.ÞI¯ÇFŽî^Þ@±¬,~ñãG¢(6}"‚$ÈxðSfoðîç´ÄR"NüË"%9ÅO]ܨcC-BžO¥±Þ#4X&DG(02ÿ#˜cÅå^ž¯t¬ÈäSa5Õ§,m‡i<è 麇§—½Au XD00dcHœ|OC˜†«Œé—†L§ÖéË‹ø1^p6½Ì˜å œö|§?.ëËyë,M˜=Ëì„묱r`poƒ‘*,oµwvîW[ºòÝ[½°êˆÏ°íõße÷žm·ß}7Í|ëü!éñG }X2Fã{¼¹u¿’óEá—`vŠp»S³„|—÷Þ2ÙðdýÆt Žéûÿ¦aòŸ7/j¼ÿ›Däîãí…Ž(•šuß^䔊Þ`|TšéˆªùM¾3/àúW§ ÔZÑ®3c{³S[-Gð C£wgçŸ.‡WÑâÜ_á1Y®‘4’Xéj…÷ÔjßXgóM|¥ŒÂæ'ÆEÕ*v»Õßzà>Ç9ª33ÁØ™_˜ú)ÃBXÓÁ~[¡Œø_ßÈ¿$¿‰mÓÂüaØD•côEìñ0l„fV-úhàV .\²ÿf*•¬ÉYÆ“‘’]ƒá;×/2œsÂ:škæuT ÷Ám)m«ÞYåÕ9 4Œ~V&4HáÇs¡'ì žºƒÅ×bàx£‚óX#ÏåÐK¶|}¢€Ú˜ ±WÏ£Fúýìõqà)áÈ(mÈ0ð`ï>hϾlOɉDê>Í/UˆñQ:::É|Ž•’HeJ¨K¥·”­;Qòý®R”½-VÄ]ùؙѺEù‹#x¥ V휥ž‡äD?}Rcl>ó¦pøycñ¿•Ü$¬:Ç篛>&}Ì ©* SÐWIïAGÿavïvmMüËœŸ&ÿ&rUšítQE!éè=YMR,~º]ûZî ^ Ä>Šù6lè#?)ÈñŒ½"ð<"÷´$ѯxÌCRF+N‡·ŠhW^žÿßßÎÞÞñdL+¿¿!m4x$Ô¥ÓK[…Gîû¹çµ 8lcç{àîÄäÅ\Ũ»5 ͵¨álD!q+Ç D µ ÕÜÃçÓe;‚îoÎÀ:6É=VlÖ231=»éèî´_éôa—aæá—˜…J—ú{È1sèˆ9¼cé¿ 8Ç5ÈìyŸsÎÎO­›è_7KF¢KV6¨`:§>rsCLx˜f<˜.õ|Ý”çWt…+ãâ­6'A'z8P01wbé 7k#µfyùüù¢'²xߘ”±ÊË ³iÜ?ÀåÄÁÝþYþ¤P·“/úÌ÷Ž”±É”!äÌ¢apÀ' ±Ìqœ/Iéä¥gâ,)óp ¨6Ê7š ¶KÉø>7àãÞ‚±Ì¡µr.X“ª¢§È&Ë{ß› ÍŽá87^Ý"Ä«[²…T§Þˆ(öUx¢t5‡•bDx¤¼Îc”U–k¡M–s¸ÝïBЬÛ6ƒ“øÎ¥[~DøO~%@ƒfyçàä·œ‡…OuHJ—A_"E‡)H.E©°?ED|½K¡Ã¢WGIT^Ù™vª ?Å*ŽwRüçóƒuÁ=®R>m¾ Ýc²Ÿ‡Sà1¾H‡%òÞo±ok«íYs˜ÑWzô¶ëŸ,†M¼±ˆão¯®Üž&ZËc<³›¶Åu ›‘áµÉ†>µdº© ¯ºÕŸÐºâ…YœËܵKrÃõÙvˆ™JskíÔÙrzí»óû7;ò,I)o+òx&Óp’ìªN¬W8 è¨u¢árA¾bŠÄqì’6"åÇKRÊìö9ÙYQÅû\¹°ß 'ØÀ:[âYýÞì’AÁ“›â ‹Ûå¤×²Î«åê’Ûðº‚à÷ׄïVÇ$‚7ÀÐ °žOéŸßÁðz C¬Ã唾ñæµ™:J¿=Ièm$°‰A?“Çxuè!nþK…þ¼c¤è> ‹Ê{#Ç8»Uo †©E^º•hùî_½@n›¿O£i!w4dÕc;~¹/W˼•fo½­4Ô+k_±gÑ-u~,è:‚´Óï:ºï¾îßœÚ/¦ûäõ¡/¡!IŒ’«“g°¼È,‰3(`N¿CjˆfRâi1¦o9ß}Ò|/_P?(„TÎg{Ðp£byžJƒ~]ŽŠÔzþßVü$vpƒs~BxÄ÷x ¯ŸblG_'OG#žêŸ˜™óý /0·®z¢È8¢âa‡oNÔ¦Aθq/ÝocaøÏL”͇/ß–Á(™»nÝ¿¥¹è{èï…Uw©†ò Æ;Ñ<‘“€ –-'õQ3»»¹|Ih^p]lí±Sßr™H]®¹Þrʘ~w«‰ÓìZbÏ +ÀÈÎ ï60E¯`ë€lÙ졤:d üvå®@ùìõó:÷-K×ñ¡rQÓ tb]'í8?|¾´ˆ80& Ù5òau7V¡ú(É€Ëç&1>ð…Ï6I30ŸлØîðçãOï8ù)ñ÷7±w¯ö÷ÇÛÓÒêiÿ¤ö…­v²Ï(o÷P?0óÒWµùÜÌÿA¾—9Ø>IP}’¤£iä1ÌQ±Ÿ¿>pÊGÒ¾¸"Ç[:ro¦3Öæ´M–6:Ç”¥ŠsR' ¡ÈÕä¤åþ$º~ƒUi¾o‘_Zkûq# €01wbéo4/⊕×>ßÛL*õW¼¾Áª’‰èTd|³—7\äof°­×OÍ)™òÚÝBZvùŸUÓr m——ÆfXK¤3»çÖJAµBZ¹Ÿµ\׈‡Þš1„d-¶”1ÝHÞèçâ°RR¾”]3ÈÿH4ÕÀt>’¾{»ÅñI®]2Âx[Šªö8‡|Ê£±'b-Eù˜8{EV±ãt¹)6»9Ì艋ªü4‰ƒÄ£ ;ÛGü2±x+ZO›æ^t›¡nàse!Ø/è£$@(°"‡iè\Æ3Sõ<ºüÌd,bs…§þXýôÖ¶mû—^^¢Â¤÷;\ âè[‚êôi6èÜFÈ 5ðä³ ß¸epL¨à¹áÂÕ ýlõ¿éÒ^¿ —ÐMoqpÓÐN†?Ü÷ƒÿƒÖ, ²ì ‹»½5Œ¼†Ï>ĹVŸû¹fI±,z«¸.ï3Ôé~Yû¯Ö+5Ñ`*Áˆ¹ y)þ¿0Â¨Š“A‘bIû‡ ¢—À8QŽ/È&ÈX•Û4•=¼Vo}¸û‘sêE ¯$C…b¯ƒ= ™P¾+‡)<ŠG:1¸Œ¦mQWD00dc ¢|OC¡ÔøÙ1Ó&+ëtéø |`sÁÖL t6s]!Ö¸cÂàè$ŸP”Æêír¶¥;k` ßc¾ÝeóÓ}¶ŸyäÒ}ãy“¡~çFã‚ḥá€~”B¶Ý&jî•`çLÅÕ“†jóü ²iÈ‘*çWЩYT7’³6Æ"Q]?:2lt‘çÊ:xï·Ïú2£"c‰~•þx&12ø Î o——_Üo`’ã<_G»” ŸÀ¥„÷!wöÊð~6UB¬xæ9>°)ÔsÃJYï¤[áZ.çï÷H[ôqåÁ¶¾ÅXæ3©WÿpLí½ÒFn0 a×/•¯!d&±žR2¾®Ëpã1:l¹óåÉÜ%ÑõÞw³M8“礗Hðtd¾(|>{LÌy¨T2D¾(?I %8æO¿GÒI€é“w0uÅ ôê=u¤ j5+¥¯K£_UeYX¶QÁ'|Ü9»ÈדªÂsg¾šŒÔuÌa*Ÿ?œ?¯ÿëm•€é9›9YóœjãÇ‹÷÷0 ™J«‰€01wbé@$G2Êa ]¹Ï:ÇyA-_¹xúÚ('¥¥Ø•#B,uYr–¨D)RÞÄÚcò´…îO õoŽðÏ9Ž@¾`dÔúùA6¸w ¤èàŸµØ» !~ˆìËÑáªH Vó—1ý¸ÒþÔ_÷˜€_öZhÌè= ‘ ’0 ƒ!1|Ãï¿.ˆT4ÖungHK˜nˆÛÄCf©ÿÖ"[„V…r—8ŽƒÄ ÿ¸h3†û‰h¥83'Ôh8÷!ãq?îøãh÷áb4ðÑê§T<@Ì!0+‡y8ˆ#Ìľž—µtE™ND00dc¥|NçC¡ÔøÙ1Ó'OÀ ÓðøG?,˜3£»Dä:׃x烬*,oª­»‹jÙÍnëðûì¶úí8ó’Ç19ʱ±ÖZák«Þ J4^éþ9¹ææ±¦%Þ¬/£Ž®¨y™!¸UH‚[ŨaOÈÂxæ/ÈXúÀÚfi~'K‰rÙ?\O-x\yr;·ÈWð·—£¹@á¹è9‘¹Ø¶S3m¡ !q4û1Z |çþ‚䬗'Aƒ)/ë!Õ¨¨ zøŠø+¶ŸÇÏ(û‚\±éûÿ›\DéÞDs‡þYËD”a''¼òµâqaåqþ𣠞8h—ÞCPŸ­úë§õX¹ëpÍÙ…hŸ¶Ÿ÷äpHA¸sž–çoŸÝíßÿ”*hŠigÒ(\†nÒ¢K™‘ãž¿Ôßëne§ç(ÓÀ0ÐGêaŽ ¹|¢fg ßþ üZ«š~6Ö“ïlG·¡¶x;”QÆ,QºàðYƒ©\ò(½*TÙar@üøç>×GÑðº1ÏõÉæ¸lÑèäÌ!8»—¾Udöè^+9çÙ㕺%UÄ?~Iýàrèô¯¿W‹[›ùcÓp ‚sÂIb‰29_MÒ®"¹úœÆ±1iô¼k^/N{ëGÞ™QÏiÝ`*<ªç³úýýjæJóó+Ÿ>Ó±*¤=u¹¤…"00dcô¨x;w:O¹“Í“§àüØwä<iÖL½rkÁ{x:Èøé7SM§dQ«m¶Ü]Õž]ö_oþŸ6øúmðýÜ^NÔXúAÿ¬Æ½_ÂÆºqêVÁ1‚W¡Á íÖÄ´9h¦+öUi¼Š]ej wºÃM-HåÜW ?uý×§@ N•bècj•wÿý®& Z=òɾ½RoS8Ï‚|S¢û@1­KöfKŸÄ\E .^ 5>ë¥øÔKWíµCû»$Gkä1)¾%j†ÎnT¥P£$Ï#c:ËØBÀä÷yy¡Ûè Ð1Eû{¢¢Ñáúì'@ì¹×ç„•és@Ì‘Y¥bJ,Е.Kë'2•² ävy¿{wpHiŸy†ãðAÝÓ©’íÐdÛjåÒÚ~–žªmMžk‹‰V’iTëþx>{ÚÒò5ôã?w~IOÜíÿEá þ¬…îÈ™bÖôIë‰Ý ÉJ0] 8Lÿßy«<°$À›Èr§<þ¸ÎJÈÌÞ×åà¦+X˜…ppҜŤaè^Ìw0ÇãxêF fñæÐV4ˆç$uFašº Ùó=S?ªp6²*ùXTBÏÊ™{gäÍ«&ºæk’Áy˜Ôû±Ñ3hè01wbéIX}7ÔUN݇ÐU9¤tâÇÿ§ï’1"kž~ãÿ>ÿ—‘n696n—™=ÁñîŒÉ&:J8‹ž¢õÙjGÈ•8Ó†I¸˜9ÃàùIã@ï·ÃNòYàüÈ–ø?™wsŸ?a± åñ.&…Àb~_¬v92ù„Eyò‡¼d )ŸTsTÙH•&¸Í­°Ý¾Ãôf“ÁÕ]mé6˳7¬v¦Ín!» ùñ§ÀJÛ=éoM]å‹ Þ›Ýú()FÏ—?¿BO•Ž[1GèPpMê‡ÉËÅAôì zËHSD00dc\«x;w:>öO6NŸ€ð$aßpðuñÉáÖ¸:žCž²}MµiÙ-¶Û³«<»ì>o«+ìõÏêsêo”ºûkpá¼æM¸mŒ£æ—eµ°Kç8.b WdÁ×$üðIœÙÆn¸2aÉ:ÿSÒƒüI¿¦T×*¿­µû¦Ô*çD»¢‡pK;-œ\æ– àtSms†¹ðu×ZÒàÚùÐÜ/d½ï¼aBˆkó¨?eÉCçÈ&¿Ô:X†¿Æ)~•§”Î~Ã~Krûi^çÿ/a-?äLwKEË£i›c³cóÈüÉ6åšhÈÊùrÒ­‰¨?%?îÿ}]Ìä ØÁx´7X¯7‹Ù˜ •"Îeò}>Ú3_@BÜË&%KÍì³82œ’Š<Ï箹ئ7 ­>t|ßïÍø4©h+*Q‚˜hȯ‡DÔiöÃzT¡þ01wbé€5¿ã³ º…ÿO¤NE>ú è2Â$žß¼io:¬þ®Å#¬ Ì6H/¿8‰p¤Èè¿<ãýOŽ¢goNâ(O„!-ˆ#8%Ž6¢]°\;ôßÒcHó.Cý£ñÑ7ÿ$?ï°'xÝàüL…u9Ù÷ÇŠdrò‰ŒÏÌ Òpããĸs`äÿ×øÿK¶#‡ñÖDì°—*òð ô²á€Ç{ó$V¦_ýÅÁÏkäpÿ¬¶L2Íâk*N¯ÈE­K(E‰%¿rûÁ+~¢”ÈŒkˆ98êà.eˈÊS–—^SD00dc´¯x;N§o©Œz1ÛðIaßàï_/6ù¸viÐSž‚t“­6Û¶ÛoMfÖugÍ^ûœ8aÁ¾OŠË:3À„ ðÏ—=¡P6ÈÉæa9ˆ&fݨeø%‡NÍlÄüu\2élU¢ÿšûKÂûmvK߇ð$¾"¤×ö'SâÔçY—… ;ª¤­üv½ZI]Ž;ÿ–§ôŒcøH¶PÎøÏZ¾Ü&…ÕuÁ¯ž–.k×éÓª­5T‘Á0Áu^úÁÌH!è­ãåa1?oâ-˜‰Â«-/( €nòavò;ÿú(‡ÿžÛˆôøé¨ÓýÀ%¨HsࣇéæCpÖä']ûÍx–‡ö9ßÏ` §°–ÃÌùë&Wçr®y}ïŽg.sÖ!Ö,“Ádšüuäõ¶ÛñLùçØÀ?¯À'ØÀ?¯Ãzªª¯8? -(#@„}Ï&ò`uu˜´©iôiW†æQÄQRÇ s$$?9j¸ŽlóÃë Ý÷Û@01wbé€âÆœÍS;¤Yyç´°ìZˆ€Ã¬!Ä= è¬òN^Åá ÌÙx¹¤•ÿø8½øôñQŸß]ñ‘ï´iÍø“ å 1Üâ–âŒÍ3$…ÿ±¶0›§à¢ q¦!°æ_þàAÌç®ûýp~.Ÿ„ª¼zÉ·‡ê[޾žÞ¡‡4‚ .e^kÍiø‘T.“ûr[ª<8óÚxŠxÕâΚÐ6Å\]/RÖðÔ÷oH…=†Zd_$D;ù2$j3ÿG˜#d<î˜G ŽöˆÉ8êà õîÎÐÛ> XD00dc@®x;}BÂ_f13¦FWà|³«çC»ìíõ¦y¨s}öŸ “Â'âx=Ÿ “Â:ªªªªÿk¹p©Ù† 00dc(®~gÅžØü 'àæó§æóuäMGäò&‚£ãUUUðÖ01wbé@eu›ÝXIt°8à¨n*"‹?òoï,þ±wõqø[,ó'¢Í¥‘Øw,’µa1z*Ò/Ià¶ý)éºóµèAºÕß OðæßiH-ÙcÜí?úˆÜ’<ÔßâÿòŸ6‡ÆÄè+<&Ù\âéÏ5ްñ ’Ðúïy2ùs,9+fà.KÄ¡ËIœ&"â “G;Çœ1ä}|ccÈDZ› ÜGã©K1†d¸ÓC¡o#NùÚѵ‰bóáŒcRå˜/'F±ž#[þcüž5\¾3ÆGF,‰¨Hä²È#‡ÆÑ´¬Geåˆi‹C7l¤êVä7¹Þ\D00dc$­|3”~R½%x?Ï6ù¶óo<¡†ƒÁõC ƒÎªªøk€01wbé$Ïpyß…­—L·E9} HÊè!¯Us?(.JõˆåßÏךÛ~mâON…ü£Dê"/¿H"G®ÊE!‘MŸ=(§Ù]{ Eº{°¥mËõ3(9“#ç§TK%ÝΡÚ٣걃Óþ1.yˆ(õZàxcˆ¡é¦5†‚ÏâpÀ•€ÀÖ`Òê?Gö!ózAD¦Ý¤!÷W1Ìâ8]3Ö­<Ú¿¶ãSæmþQ-ƸœGã³á6–¾8UxeØ”°4Dïêä{CÎ|¥–¢Äª,T:‰i|×à|ç›y·›Ï<ómæÛæÞo=¡ì•ì`|_h{¥{ØWUUUUWÃX€01wbé€rN~B÷èí™5tV”ÄÝë½ã°$%’-!1ºF”Ûˆõ:Ohçl(ƒ£sœ„—ŽEN˽ñ‹|ŸrÞµ.X¡æ5.ÙååÊÞPCfdØM~ ##HÒè=æ‰ iË\ÜÿŸ?{³çBzùÚÕ¢K23œT¿"~r,ÿZ±?Ä-~ÕdËz/z† ªRQõŠ¢ahLÊõ^ˆ²®Cô6üÕ¥?˜dWŽÃ¿Ó·óG‡ä6”è9âGŒ˜â¯ÂòáMìKÆÓæ(Ñ^>Ž`d¥ˆikÓéÓeËàÒ 7[_D00dc ³~3é'±#€›y¶¾dCËæD9ÕU_ `001wbéÀãfCCQüÕÍø@RÕw>[¾ŸÞ#˜hs}Ï$iŠë¶iØŽœXÕªx„æA¢»„gÌFÀ–^JšÆÄ–ªRNy†«+ã^|‹Ðb´Äí*ì:Êö¶bLìÿ;!Þ,i‹|³ã+pó·ßœÞ‰ {‡7ýœ•L»êº¥Q-#²8¢XŽ'àT‹š×„žÕpÎíïÁ݃x jn‹dÕ!2h” øÓŒÏ±ùÿû_úªJ/ˆØ~N ãÖSØÕ÷[e%>º}Ÿ\o( r{ЏÂÜ=´ˆ)<„&vbéC KT܈mD00dc ¿~ ÏÁ[À00dc01wbétF“2$ÅÖŽ!øýš ¸qìü=Žÿù>ù—*È0*«DòPscƒÈ”t-\©²ÞâfüÃêÚ%­ÓsÒ±"+šÀ*ðZ—Uœüì, )fg©_&“B‚Èq# óÿòq¯.eÿKpoURÑ(Dþ_~²f<‰à*’1C11"Ú®+˜…8ͦWÉd´Å&Sfî:…†`ÿ¢Æ}íõ8ÖvÀrÁ¹= Z…Hp#°û¡Ü¿üå×(~…\?\y¢LtO»4c@(¯‡ÙÉ[€ÒÓ”R1ŠLD00dc01wbéÀ759‚ýzFšA|ŽVà%ãÆÄ?ùb4 „•„‰w´Û÷&ŽBbÔ~…¤Kò6J› ¼ÖéUy[$äà°€‡Pæeûá.‹ÿ£Ç8éü1³1>£ü•`±‹çEöÿÝ0-º˜€Õ^©×ZÊ eñmZ«\~ÂbC-iâ—ë œ}'׉ÿÇkî³øt–û«Ë(%„Ï\;ÕŒ8²ßà#ÔØ|þÿlÓ‡ ꎔà"þóíü€õ‰\‹ÞY>šç1B ”»'I%Áã×£ù‹ûI¿,LE‡É< ý vlHóÀþVD00dc01wbéO™›T-D‡ËmÍBúÎÈÿŠ+uµX[&Ëãå,"zö‡HIJ­D¥ )J*- Ø$Dêˆ*}ÄËJàˆ†ƒÕÅ’ Q,B°}Áÿ.øÿïsÞßyþwtM&=1Nczú7ÆLxÁã¾±csóò‰¡‡åéúmÔ+ÊìŸù¯^%£3ÑÇýÌ¢Xùq5„à³"ÿUü¸ˆìNñ7þg$4øû‹[ºx3ÏnâqU˜çLƒQˆGÝ·"²ïSlìO«>í>öø$1ôAjˆ*Ĩ¬X”,ˆÙk¢ùÑ‘§†)lÎ_ jD00dc00dc01wbéí–/Øù p#µs¹…DŒK«Èº|ýýÆÂ¿^ʽÈâ‚£äÆ{o ¢‹$, 9A=ƒ¯@ׯ›jÃÀoó˜H&Pá1ä”´.Æ<@þ;ÞDfý·Èüøÿò·e’]‹Ž!b¿Ã/]‹ âø%t\Ë0„’›“&ï-;¬¸C¸ûIBŸõ—IÝd ÞG2Èe¬2¼ZÉ£n¬âþß0û!\'q%Žç¹Ó>y hN. A|2ÔÚ±ò­ŠÔåˆ|•pJ!Ôøu*@Q‚^lùþíÿàþÀ½”Ú‡)<èçfmá‰Ý`^YD00dc01wbé@eÙSdб ñXïH©\õßêä%¼&¥=þò”ðç Çîn€«®¬T¯ S¤Sb6Niºü' áf¿C0,M˜IëR-å x=Äû2I³ÿ_ß'–S±ó•H†‰‹°¸(®ÄÆ&‹éE ¢Hz¹\ö‘¡\Šg;P)÷×»ÏâÿTCæ…œ}ÀóÏôªÎ(^s ô¾¡H"‹¼€ð®r¤XÞ*/†Ù8d Ejö?½d—¨jMD00dc00dc01wbé€åøBD{xÅ“Æ]69@N¨ž=òØ,<ýþŒ›™×ŽÉe×`‰8Ùäo\$X¶±ijjŽ/^PÉÀèi޳zßÖ+ÌØì¦ïf£5WâD3D*T+U¹bϰ0#!D ©úȰtõTïYMv—B5i™£ÅÞŸCÂÑë¯ç!²|È-ÛüÝ,÷ ²fÿ6Ϊx%= yª†õxœ ôG¯lô:N§*3f=ˆ+þa#!töáŇhxƒ©Ü¯fµ‡ý°žð$•Þ@L¿JÐ>2†©=¨BDôªš]b¯]ÿQD00dc01wbé@ÜÃ@¾tuCrý ˆm@\•B‹3+ÿQÃí€ óD†¬Rw€ÛrˆîF¤Û¤,ŒÜ¾qâÌ!öx¥™é_¹LÇÄj Ÿxª+‡ŠPED¿1'4]8—ÖMŸ´²ø­^ãÞ,(7ƒEyãHõzASB,°- p$‹1„Í(úå)à« ÌEt¤Ú?ÊšU 3‰ü'î¸âËÐë_G¹al8ëÈÄ™«KÔùâmÖãMúÕ±h¡Â©Ñ]ÊD][B)«wެxÅ,½b£q´ÛVGsÄ_øg¾tô…i<ãź”ìGѬµÙPD00dcп~Nß3ácðRYМ=¼R%^ÈêŸ2Š€~žµšÁÛÑ|ÉYž Ó§NÆŸ ÏP85ÙàÙw¯òWOÇÓµ¿¦t¼¼ÿÊ85²kò)Y0 œ¬^Àâ~†ÍFíW")ç¸êo”Cß×ZE¸@hIžõc`È(¸<;O…wJ)V‹$ £)_,Ú}¥;\¼eÒ€}%O>Y.‹^Ö7[Ší¸]¤kÔÔtì°­Ågy1Îb7øûcì›ç¼¥ˆ+ôWÃnÜ€01wbéÛ2LŽNt\Ú’›6w1Œ]Šß+þ)§»A ØsfB"}»^¯Hêcìvˆ [£z H(ãáÇ à «e󌉜~wž)ÂÌ@ö:‰ô‡Ã²íL,á59ÊÛïí8²Ì±ùEy«¸ž0”ÿ»"GPÀ˜€ ‹°"¢ÄOpçrÔ!qšŽüFÌe“=Á½Ûð:¡sÆøWX5ü¦=Uœ^ã’9 qÎ^6¯p<ìì&¦{§­ÎIŠ,‹ä†»’GVG¼ìgW’àºù†šË˜OËÓ¼ (Ù²·9Ý,³ìÌÁ{ü^ZU¶Ì0‘è00dcø¿~Nß3ácðRZF^nº.žùæÀ]t¡ÞDÐr&ÇÝ;rè’Ê·tGÜÛdÏ è"µË®ÆÔu[5Ïíù‡51öèŽçÀg6¡Ÿ9ÿc‡„Õ%¿øŒ7£Q(«eV£ÏÿxéãÖý z½SŽýØ·Ô%½UÄko" Wp–ZèËXs¢Ÿûç÷ ¹ÙÅÏ!þiðû¿¿€È Ò¥ˆ—Þi ÷äôû~4÷‹ ©m(âÀUõWïjù÷'1î6 g"½¤[)*{¹§ZWJorí@«½v`õ¿1ëÞ–KƒÛ­‘ÆLsA'vµD£ø³#È'³óK¾W`Ä·]{ä01‚Šz|9j G!ƒ>,0µyPň#>.Cœh›„ ;|^»Km3b =†Ã“#¿ÌCâF!aZæµ¼-¿aê/ šrÿ¡HLe„IÜ4~Yóir?€'Ø=D00dc¿~OÀð±ø¿Õ£Åæë¥—É„“Àa³ÉS ÷–ìÏyý?BK¿CÄSÒ¦"z¿ÐÏÍ…PÏØúG…¬¯é‰øéð…ÿ$ð®}n\]ä'æ.ÓæèEÜq”4Ÿ‹¼á'ÂOèhÉgùå²´7 ¾§ü©¿¤MÇm¤yŒ…’ÅÊüH½QyQÜÕ4&ógûŽO’__Ðÿi·x©/%âŽøídWË.éOØGñ3‡´<|wÿU!™ÿûú\”!·Ãšu»gLê·z:L{«¦ÁÌé±ð—R™ýVt~æ~ººP}´-ä©fývöû n#£æîž1ŸkÑÅWÀ¾º=6™õ­˜á3±­€01wbédmÉ}ç $ïœç;ý.'”yËâ8Ò1ñ_Ç·¬’}ßy›è‘²1Ä›ø1\P\z+Kd¬?ä?™ë*Ë ã*G·iïëý𔪠Œ<+K÷·ÊVJûói¬X—F/äákm^`Í@uÚø52ÂGŒ<9á.Ê)éKY{¼’Ã#,Ææ$Àç'_ÇçyLé?Ðh6æÄÛo';‹[”se|{°f$R_øÁýº~ÒtEf¿ôwˆƒÉeç) @ˆÁê#DÓ‹üб-ZnÒ-þÓ(<E„©=áÅöèI5AMP{:D00dc\¿~S·ÊøXüŸ€bÑìîî%Ä] ‘pŽ4–e¸b@¿ßà\½ÍÈ%sâÞ0DÖ)Í=Òw…ÝõiA{‰1\{Ï•/ l*Ê%ˆ½©ç§ÈFËúrày,¼ôk@´aàˆå?\MÌÉÓ@âI#•Ͷ¿s(ƒòåÓ Åø‰‘ƒÿŽHU—š>\:YLV”‚'9lH^uºÔCçÿµ¡˜ýù’âOÌÁÆÜ]äyÏúªí=Ù¹w¹! KvÖ9ý:Ô»ëñ ^_Yí5•¶Çuÿšz·l-þÿâöñ20~õ¢U@½H €®_-”z.Ÿ©¬)ïýÔx4½7Z©œ·Wr­ŒëF©ÜØo/tz²Nm9í)Y޹£”%]-û'(õ$[óé;],ÑlÇðéÌ}Y横àû²`½GjMÃ( S|H#“î²kŒ00dcü¿~S·ÊøXüŸ€cíêŒÐº ¢3‰Œ’ã¾ÆÄþåÞf±•^aéZ…:¸#Çkbö¨räÿà¡,¥_#ªHÇïÙU×±DYM `Ò£Fur‘>mO/E,X¼iKwx.“@…Ã5A¹@>%/þeË”õ # ]Q-󥎿u¤óø˜¡w1q°óµ¬wE{'ñ¿UÐûÒž1ý¤ø|ž] ËMä×Ps‹ƒÕ‰Ì†)~Ýä^ñºñP…ލÏYý¯¿.½Œü þ¡—ål¾2ýQÒªrê±U0»o»Ø7Ì{üª±gÅ»U\ˆ÷Ú;?‘tܪ^‹æÃN;œÜUÍÌÑe´Ñê Jﲯ\8–Õ|ûšº&üð‹±v%|žhìGhÑ©‹9Þf%‰¬²Ï"߀;«¼³ãÅ€«é9²ªqÛ©#4ÍE@ÌåáÙÚìL!O‘ ÁÏd §,AxÝ {öãËÄàÅs7Âß¹01wb逡sc“~sîb;_½·ô‡ŒBW£#>×3;㇅.±ï[WžK€%ï׊sdduy”ë¾ñÝÈWþ³ü@¾qí44v´\ÌH$ŠÍ*¯€°þ|Œb¼ p·Â–0 y;ß…zƒÆˆÂÇ FŠ{î²}ŒÅ”Ð‰Ëæx#ò´zçÞ#ÿPë?ÒÊ/#RŽÎ‘(Þ~FéCÚÐ[|Eé”!p hóÇ„MPÔ´_G;"WñîD¿Ôë³³7•ZÏÍÛc¶5 „I\G»m¥WÂq† šœ@D00dc”¿~Sï|,~Sð b^xã›Ê꪿"ú¥*—R¡: czÔŒÖIÅâ'¥’P™>%•—oŠJr°Cêúè%¨©[t‰:'ô¿ïÇÂqoßæ<(Å×ö ½ºtÌ4Ø1§_ƒ[˜ñj!|æŠ%µõã@—A#£¡gG<½AãCXí™b¹¬âK±ìh´ òû©K¡#OÙÊÞ½U°tF‡å“u¹R†tVe•¹NFap±~éÏm²~ýà=xÊUù|áãk‹YáüÒ'qx¿£ÕMmµT?ÀÚ,ˆrçküžûŒÂà™ñ¼Ë¯­’sãÔ¾Fˆ€ˆÅ™wSîȪ‰2÷”,ÐND†ybÌÙzŠï÷çó[GàL÷#– ÐyÝŽ“ ‹N0…Æ|m XÐf±ôÈEžÆ‘})”žûäƒóVæ x¼\Ç)|µnҠ󜵲k›ðCfL·¥–(Jÿõ!î)õ„÷tTž·9½ÈRæô×»– Ÿ÷ŽSÁÓ`²sýËÁÞ,›A)ßÙ°[®}Š€Îïù† °ñœ¥â~­Úë £‡©VÆ ¹_Î’8Þk9øƒm†öÂ%Õ¶õ}é!n¦ÔÑwßîÜ£ŸnªA«j¤Š­ÕHuSœaówsÖ¬È÷n¥.™—uÓ:kG]µhÊ­¸Éõß^æ‹¢çI£ÚDµŠê'˜¹™JR ¤ñ»DG•R7rQö££_~? oå¨3gŽ‚cÇ7nÑidwjíóé#XGc;u[¨Qº›Žáºî¡øcýqæìš«§æFªá³Ïq‹²<ûg4SÊõ–$¤ÿVdK§KÙn›ERM'/¾yïLÕçÇšõ{ÛÌ>yÒ6Û{Þ¸ºÔ4àà† 01wbéÀ{ÝîHaY-9 7ú‡Äøèã8oa!XtË ‚$’²GØÑý¹ÿiÇ{_Ξ•ª'7Döò°^/aH®Šë³ysq}H1÷¶ Ê¿© ƒ‡åG e[6û½K û€WûX¬F^ 0b/-‡ÌŒ·øè•ÖðBÙÿý_;CpªLäÌ…ã×À„Ór€4” z²ëÿ1²ðÈ»uÌ1Þ,Õ?’Þ$½ØxÆšáð˜™Z5Íg,hËŸ]âÃ'¬ˆåyûÔý‹ºŸD"Ø[¡®íƒ) _ üX™žuìMî=wU,bÆÔ®NÓF®SIGë#¥ÖæâÊô÷í=j¨HàðPZC:ð“õ;+a?(£šóië(!•¶ú¯£a6×-†?—/-pF6²üš¡ U®.•*ÇÄà.ëô|³ÅBOÎתF‚]! ÖG){S ŒTÿþJAŠSÏB­ˆœ´5!oEz'‹~?¹ M6ŒVaŸˆX©È J6 @†,Lõðv¼3Ë0=bÒ¶Ñ\A/»Ž¹ez‘¾>_-ùœSó1²7K$æu â/qTh°*]·Û3ì-I/+ =V¨*§ÕRõT⫦çüâ.¯cÝþ¹½‘Ç•fâëùUOLÔIÐc¹¨æmÞš;.ÑÝ…¹­½N_¹š63Ü Ü¹›Œr©»ÖgŠÍÒb͘Eƺé¾ÅZ¿‘ׯ `Uì‚ûÑWÝUô“‹1nYµèÀ^ÞZctA8Í;¸ÖÏF«¨ž:YÓÓÑ?aÇÛ¥«:¾†ÕÆuÓÚÏ¢:õ¾díÇQk±ñNâæÞãªåœÊªmÛ¿GÍÆþ|—^|&^?áü}¹D˜óÄlé{7E–`VFíö¼U¾¤©d5­ºB»¬Íñùç:@y/k}yyŽÍ±ÒÇlkÉGp´3x¬8(`±,ÑíC`01wbéÀþ ^ïøä®r4çA;$ ëfñ- ³Ü&g‹h$O©£ÿPä¶PÁž èߣú~_À¼#þ ïØè$—ïÎ,æ,×F]Iû?E=9*î8,‹Í°ˆYv-ÿáü—ì,NÖ‡õ0b}ŽŽkÌîß-ŒêH÷/“æˆÆùÈÈÉMÎchȽý×aºˆdàKžrU£ã° ÿñãY¹“-‹P¸d;ˆ'G!7,±ûN‹ŽJ@ Í—ê;‹ç°C1t”! S|OÊ~£YAD7‰ûÃdnmU,Æ¥ u„I\Ç1·Z)È2ƒ3l8DD00dcˆ¿~C·É> _€Ó™ø±2ówÂõáxuô…>T Q¥šy ?_­Ë4h§ôeUãÿofWX _RërÊ’ÔÐEÏùk¼qÝBAïx¨ rL̹œš2RÝZ© '‚7®£Î×^÷Á.[® ‚ìä/°rtt Œ ðÿùÅ¿m.1Ê,æZDÐ2]$ {Ù!¬Æ£[¼ ÿ–† 1y>ë(3Z?™¼Xb_^sžžìGÜPóñ|¼t–¾×]û=S NÇK¥Ô7d&å]ÿù€“)™á~á4!ÁM3Õãˆ8(žëz @@›F³o²jVÊTþ {ýxs@.–.GöeÏ—y_Iö&ýFu™ ½!¹ñVB¬Ž†ñ7(‘Z>•zH>!诿Tþ‰é‡ªá ¸8ùç[fbæ"ÉÖ9 7?úBï¤ÑzÛÓ³ƒ¥§8Ÿ\¬ƒ}­¯(‡^²ÜfÃøæ þ÷6÷¼gpU5JØPtéKxÛgiw+Ê“•ƒ¿ùõ ®þlâÝz’ü¦TªOßÔ6Ø>²üÖ¦©sùFÂáÎë¯]ËÆ»mÄ" ¹Ê7¾Â~ŸK¿~°¬VŠ£Ù Nþýy GÿšZ@RÚS¾è'»ål÷¼¾Ö´ž·k®’¾JSŸ^È{ý¹=Ñi™/7!b9}žø:ˆRS˜üïs?Š T©…Lãà 1 3bQ³†HwÐìÝ×…‚´4&þRA÷ùÇ®›jž+ðßP{j·üMÔ ÊMˆWÐEý¥.6ÕÝ}^9ƒt{ÏéõFö¿Ê©Ï 1ßÀàæ)¸ŒvÚ¨h¸j–êsŒš]Åq®ÏÏUÆeA£ÐG[SU#ÕLjµÍV:‰'Ð}ݺ1ïg‰o9ê{kžù•]å]U0ªšùy6½­OUIϔڊó¥óÕÛñŠê ™äÞfn3/}y¬Ìþù_i6b2 Õ7Kwn»¯À‚ĸÏ@Úú@55lQRW_;ístì2z¯cØŸ\x©&}R}¯G%]ŠŸÂ´r1K–wïðÁå@f6Ïë ²Xªn¥î=‡íËžâ=®Ý:t̪ÜsŸ¤~¬³Ú¬¾vþéžï5ÎÑö44ì>í!…É.ñ¿ŠMmÁ1(ñù ã™äó“€00dc±~3‘ÛÞYç,¯ÀaÌüZ/jxK~NÞÏ?ƒÛà=ë«URj¾ªñKtö,$aOT©O„öSs8¯E!g$*Xøº£¼H…<êÛ– ûÜ{C9xU‘|ârO¾¸hy/àÂ\ ÿrâC·2Šó†+S/ļMÎé‚Õ"uT²´bìAÙ]q·Ümr¾„ÿñü{s¤éEbÇ «H~4•®´ÚF0Á“4¿ ²'sDß¿7ØÕþ!|6Œ4…¤àí‚ü¾ õ¼|X’|¾4MºïœO ³ÏI]7:¸s,pN…€ñïsprˆtäöqä³øt Fl&ž»â¾Äçöðb `óžSÉð톶ÕV ¬àôâþׯ:\:RuK› ¨±)Óʾ³˜ 1½tõã2Óúø$Û\–±ÞòIc>/žä³²ÈFT? Sìݾ(Uê÷³_íè}ùçØ€¿uydbu)bV&îF$@aÄèûÂC> †ðÕ}:ûÑ5Îô´ïrîÙÚôÝ·Y:pNì¾ìL7-˜êÞÖ¯z[$Ã’‹ˆ¦G­.!ð§zšñlö¢¿ÇîÀ«õT?û³Ç÷S0Óaðj½Ô¾YAKu‡a7ŽÂ¸|l7öãþêMÂ+b¤˜@îC[û®¤92$Θ¨UQÐÕ㢬™ou±Aðp£p|1aÝ0ñøG©˜.5‰yJWF¢³Ët X01wbéÀ®AnVËtÌnXæØŽ-ü¡ÅŸtч€€{K"‰èÊÙõy¤µèW9FIiÓ6d×±¾ÊÄ¿›Ñ0]€t‡å«£1Â(tEBþYC_WsS/â0DÓvŸ´ûüýMCÈ­0Ð_ô–ƒïº´`ÿ§#Î>~-§jBSÙ7â 3Ûòaí¤Ö¨ Š·Éšl?‰A°/dCÍ@Oã;p÷}ðalv”x^KfØsÒÛí×—ÈqbšEiZ|»|‹›íxâ%|^"—ÂI˜0°5BÛBKÙÇc ŠCãU™|Å- +Â/Bú¾/ì€-<ó¾ð2@LW¹yðç„Qbî÷ ©÷^'v@h”˜ú>þ²ùð|þ…5ð]yç ÚôüßêÙ¯ `K€¢÷ 3µôf/‡Ï1§ååõ¾îÌ4‘Æ Oç»MÏüûËïmÌQ< EˆqI¤~ ÀñiñøL±VŸ@{uõík\^ius˜šiޏñè¿ìSÀ8ž©nW™ýS5CáôÀQþŽ:¸üé»ý°F€ðãN˜=J«­…ÖËÛ’Dýg„ªÕŠw; 7+sÂQêEÍ« %¬>h‰¡Òø„rµ0^‹žÍÇ"utL÷@ã6jܽ ,01wbéÀ³™1TKÙ½£T ô±ƒÖʲ_Y#á,þ-y,óÿM· Â|n–f7¸Ÿ¯ù½[L0k),äH2DöÍù¼¾ßh„{ÿ?£ð‹ÿ*ãHÔ/—!1ó vZåãðê–ãå(uH$ãìÿ¡#Þ6¾h:?Ÿ¼_u_aާò0’MÅgŠy'Ñþ Å\}YJvx«T¯Xˆ)Hb†·¼ øjÑ5º™Y1/Ì”ÕK½@~°ÔÌÀà“¡ÈP¿12ˆœïÊ:ßC¢¸æ+é›*6à(«éT©BŽ7b¶Æp)Úµ€®‘w!wÅB`|]Ö¥«¢‘~%{}û ükݵ­·wwøoe1]ª]ÛaÜWw­x—Ük±nñ€öñÙïì=c€õÆJøØàaKý 4¦Â² ßξEÔ¿ö'­ZÒ¹Ò Grë ouàxºÌz´OÛèt_J,Zàö«íKôdE‘ ‘»îëü. HR9 ˆ7ðwû¹ -Ü"¶† ©¤+_õ¥¨2ÔH~œ†:nõpÌÆæ†–=ÏñÊŒ@\ùï§ÀÂ>ìЙï¾5šlÛ jëÌdiÚ·°eÜ ¯]4´‹ú ÿT‰(Hàþò\ÌÚøÊ|äÓâ.yø%•I é’`D¡*ÆX˜ŒíåC[r>vÚyÑÝ,KÃ3à;r 9ï-ÒŸš4LL4jÓD—7™˜ð¼Ñ–+Âúð¬ Ô¿¦’U¯¾h©þ›œ1 -}ÝžŠ9¶Þ'ØÙRù/‚i•L[Ç^n¦ä{|‘©-hAfw'ö{£4ÒÎN6cPÓË5 ã…ÆâuÙ9M×És}$ÇMS;#zR½ÒVë»Uéìû¯óƒ>÷< /lð<¨ ¯K³û?ÂY=•½öÐóã¿kÕ‘“ö¹÷™¾1âš;‰Œ¯ñ,i ` N2Xü"3Ñ™Ë.—¦‰á>¢V±™ÓïG·ÏÓ®=‰>“p8ÃJU¤ÒžTö'hý°¿û§‡ Ôøè'ôYÇÚ êPý{©`ÐêLûRÍÏöé;¼¤µiW3±˜öõ„A9Uz¾ÿö Y¦G½Ò'ÆDùœäß!1z 01wbéãì§Â@¬7‹<‹ñ§ 6•–JÆÙRÇÌþÙ%Öóˆå„ ß[nad×ü ñEe«.é$ùû»¿;ïðgÖ鲸„¾tƒd”W¨ þKþeŒ+š´0du™w™1yL=\ÎÀ¸nÌ>æ’ˆ%,R «GJ:ö%´àÁÚì—ÆæõHùïϹ×Cﻊ—·c®@Pűx߯â–/ÂwÜŒwì]v©Ë8¬ô×<ÞN×ÂŒˆ°}ýí‡;]è É~¦¢€ƒÄy €G&´ùøÕ%”4‡¸IÂQa%ÄÇ"HD00dc £~÷‘Ä9žòÏ9e~Î?WgÝçÈiÜš³Øy¦|%øO†ËðÏXP™Þñ¶Òç;mº…Ÿê~ 9ò·éÌi×r9fŸiê”gq¶ª6{.ÚNØ\xî ‰ „©<ðZ„Éè$¸@*tNáâ䥰•ɲÈ>Ax£î«þn¶Èû|À,¥x²¬Û&Þy}áןé ^¶äìT¢ü6 þi$Þ°[T—݃Øö œ/ƒ-\ïþ7&ŽŽì2&÷/©;ZÇ¢¦VjŒq)˜­ ûJ€ýþ+o¿U·y%ÿŸRwM~¤xòø¶/ÊžÀöXò‹1msÕ±Ð×ÚŸ Iö¶³ôΊ7ôUˆjžx(9á2rÕ"ìãyÙXçEª&É”¢Æ½¾”û°`M î@!UjYh)ƒÒ ]¸zÅA®Ýâ¢á=6áI\Qk?{¾,å3âB ?œÒßf+àyÌgqg„°/¾ó“.ùÍTû?ƼõîÈÀ—ó׳e ^Àµžy”«Í©Ïޏ_R ¢›_ñz(Á~Ÿ–ïäCÏjpsiwùprúV‡A2àääcse‚õÚ!üi^QrÇ!žÍ¥á«‰î@ËfîîŠ;–úî¯ßÙtà8öîÚhPk@1$,4œ*¦D…pç´§[âFö´×„¬$#×ÿ Tl6øÆèÏíš½eÏÎÔNçÿ™Ÿÿô®ši¡´ewÛñö,«›Û¨ÊŸs{Êš÷Y¯+sð[º#—’h+Œ{Y/œCNyÝkÑÑb8~O"Y¨°6"4 2!R½…ß´»û‘’ßG¾ýúQ)Ë3»ý©ÿ3ÇxòfP»ü¬y %Ð è6"ºŒ åÕË4õÌÑ¥–À²:ehúìQ²Tîb § !Âl›)/3ÿdî8ãî # •'va5L5%`†ËV',k²À_'LgŸ0’Íâé`¸è¿üxñœåWscܘ  *ÿ;ÔRìn£0ªhG㪱œ9¿VÌ—¹N‚~ø00dc¢}Ó¡Àâó=IÚ‰+ðpûtö§ æOžËÔÐù…·’h¿ƒØôÅø<$H‰AkrÅ´é‘­ÈŽþÿèmŸëþŽiö§éü'r7+z˜êqWDËåxùoˆiø²úƒýë‹â‰Hì)Ã'€‘`ðTðF‹O—ß-^xâ#>ϧoÌýôtq‚XÛØ­[&sLô0ñ€çã÷cÄ ÄÂXÕ5˜H·w¸}ЃÀc'.œ¡ÀFRg0¥¥8r×÷Ø'^+Ë?$¦ƒ¸v8¿)žÇ«úÊV›á{!èÎÆ»qe 7Äe|¬éfŽ’ÂN•fimø~d¿7”%Ûh6Àl.cÁmx5^~ÛÍ®ðüÛ^1>á!Ji~GY.§÷qo»Kܺvô÷¦Ææ…QSxev³™±ZÄìµäýç~ˆcPÏþããËœJ§½*{ÔÔÌDsÝPû°ë8J÷‰†À]nô—z'“âe=¥8µHÖ']ý«þv¯^¦L›Æÿ,’©Ù"ñR­›nù²´ŽXI% r§¿ÇŽfîÐ\"/8O_=°’/篪yùø d>ûeòøÿçΨ©R®íR›¾„<‡˜Ò"üDø#{#ÿ‰¢'ã"ÉÈ¡Û#ÒIópÈö'¸þ.a]ÇJíYt7×H»b6nq¡¦UM•ÚUñ‡{ÕÃ#Ýò×4r.ZÜCúÒ¶Ä”a8Èx=%(ï{—i_ü¡õ"?¬¼™•'Iˆ34½Ìî(ŸTéže¥<}žnåã‰ÞãiØÀÎåОö¯r ¾\—Ö§8¶&À³ÞìW“À6dr>ÊÜÚÒ¸æ{¿aè˜0wZù©…ô֕Ȓۣ‹㗈õ 8)Ò4TÐþ´M4Ðü(ñüê·înÆ}¦ÞN‘‡>ÌiÚÅäù׋PCËõ‘8ªŒe/OHIJ O©¦v~×Ë|µ¦—Ëbi`ÆX°µÒÅ—žù,x¾UCºNUdêVä”0ÐЂ§Èû¸nk;D001wbé€Ýa?ÛïÒi9?)°âé(*'¦j-ùdw=~ÿ_Œ.t÷~º=Nä~bø÷çõWyÆ “ ¤‚!n(:/žw¤K(8¿'o‡–Ÿvy.}á)ö§ù÷˜^ŸdÒ#Ç9^•Ï‹›àFø6¼N–‰åÓØÊ ¥ñª„÷ 7’Ñ[•ý"SxWü…'@×¥Gm{àê¸ãLôæÿ|D ‹ûJ*"õc.¤ž˜åÉ8‚ žYÍ€Â9t–P ¬gŽLˆ˜ @x߸8|åͦñ°Ð_ ,¯‡I<ŠK¹\äNÇ<»’±#DmkaüV`[Ãv'ë!I!&JŸé8 ÷^ñ>NÛ mz¶|Ǽ¯ Åf6̤ócŸå›W.Îy½†7ˆ!æWA†Á³1E°Òùzee£T*èNt·$(e?uRÂ+9…¥û.{eÐa¸¼ÂKá2^x¯sÈæWo%^ô›Â²€ái¢›ý }Øq§¿jÔ)ËÊÙÁ!CaMž ßX'Ÿ˜¥–°%c.Ûžû¡É:ð°ð-½ ûSù‹V„‹f¤øèùQÓ‹ø=!×äXô^þ\´Í#寕˜ôR­l~ÑSµõ]‹ÇýË =tbC#0oÓT(æÆ7Å|=¦ÅkïO­z.ìÖ2u+”óÿÁæT¸Räû›8t9}b ûœlÝßöÿïW'6:Ô–þÊa²÷ƒsî+@0Sé4ÕÜ£;ça¼z;`c{7¡ŸÉp~M7©]+6’u,ÔL úŸÀÍÁ×ó½ë0[|ê¨gB1cÓÃéÓbPüB•"ê1è+è]­ˆ{ð‰nX|InËÅQerBÍ-ñ°ûöRøfq2iNÄ“yÈ-¾«JíÊß_ؤ­ÊDúî5^Gܦž™ þ™§ü·ÃÑôöz^Ô—2MO˜š”¾\Åj`„KEÙb0׋6)½ãÆÆ>9þjWZM‰ô1ÛCŠ@ÓÔ-0ãsˆb*€01wbé€þ 9éJ3\žÊ^‘KšdSš^­ÌP=¯U”UÕ5‘‹¢®_+,¹åm,ƒp`†|gðwà‰8„bù× ÄÈV6¸ãJÿŠå³mƒaö“ cÄø\¶æS*}‹\.±?‚R’ã㊸I-€‡âíÙ艟Ê\¥š”Y’§¦ægì=à¾Ç´7Oð×]7ÈxJ$ܸ]Ó‡Œxch‡&}±0®…xî(oÝÞ ñLŠáÃÿ˜XSÍèŒÃïøßO„˶ƒW)Ò~98w¿5rTEúE¦ûÝ'ÛÅ¢d‡É<$Æ{"îΣ“ƒoPD00dc4ž|³‘Èâó:zIdîY%}Ž_€²óÌù×À|þ®}RÔ>a‰I¼æ|ÍèÔùòùÌë£SæaàJ?=ÔØ?óŽëA¦?­ø¯³ûÿ§úÿš¾Ÿ‘IÅmÊEOb_œ½ì\ÎY•ÊÞžy šŽdEú Ö÷áÔ¸í¤vä¼µHèxT¡dnbçºû‚ub³"¸xsñŒð»IÔL6'âH=,Ú„Ê&á$ÁÞ¬á¿5Ãh÷®Ý™Y¤Oív ‹¼OQ˦à7pÐ% H)/nnRž…š/_ š†nÍK´çFÄó0Å?LØ“àõØ-($ÓJØ.3 ÞËåàsÛæg¢LóY¶Myœ|áÇ/ÖB˜’)~Íw›² ÇŒd6ÿR™q~r>a‹¿†¼_<ç¯×É`g¿‡c_¢óÓÕ[ Ÿ™¯ß»~Jâ¬%Z¦P%Ct=U~kÍÿ½HÉÓÂî_M`–ybíðͶäÁJšÖÒ¼%k§±°³°lŸÝ? èÇ`ƒ¥n’ï%sÛW[‚LW¥ÎÕ±¯\¶Á'ÐÜõêI|ç/˜\ÿ ˜ —'»½·¾¶k×ÿïi‹Õó¥òäÒw;¶Æ=Ç7XÛë)8)/Ñ)bÓæF¼à“6½øÖûx·¨uíhÛÄúö|Ùd}$øŠ§ãbÅ "ýHß“IùsÂd3pmí®ï½”r Ž@='7n2¿ ?åy\?ÏÌRÙôKt7(¢À{kþ­Ö½ûŠ)8UbTÈ4p˜p–óƒÁù’ž¾ÚhêÕ Á£~\NçíƒÃ ø~PãqSFcFÀû„O ¸Ó³ù‘á°T\µ§{³ó×@ݱo@bò‘剥µ=ˆè‘#ùS–ÎkÑË£‚<Ðb²HVÄ«^€¸­T8ø± zá“vûTj¥´‰ã‹KÆ–ƒ,T\õÁ ýŸe;)p ÏŸnÉräÑ17k®Ý¨æ:,#Ý'óÏÏòS$É„õÌDõ;+¢Š}r×eoZ“²Z`ãl|–œmòXqæh|™ÌÑ™®§ÑÂ`¦Æ¹ª*³tj"ª8àÆ–00dcT|·‚p8¼Îž’Y;–F>·À\‡ó¥|Ÿ0÷õsä>ƒæ”›ÉÝ<š™1>|‡¾Né$Äù˜. >œÆ¡îÖìyÕ0Toûÿ³û¿Ÿº¿£ê?¼B?¯ùìåù‹mùëàÍíå±êÞΟžÖ™§‘ÊÜ\èp£%¥•É¡<¤¥b{žð±R̤wÏDnq ”¬-YÓ F!”7ŸÐ )@IÖ’n.\¦Íái‚çµóÿ%3[y¥u.Ó‡·h²ô»IhF½‡ ‰ë{qŸ5»âw\Püêm+Q«ömN“;ÎÊ »šðÎMìlØ1NrÎlcÛözým£²åག.O݃aÅ뚊ùxÏïúN ]xk¿*€êr’uQ¶™“lÛæOFNð¤R½jø5¯ÛÈn€xf¬Ô·—‘¹7À؆M¯bt†'÷v‡ÁŸb;#êN7ƒG¯ß={­cÞy¨É¥/ZšúX÷0 ™z`Wƒ›ü-MðÅDtÔ  ‰(n^’5Ëœ&î%ó,dÖ¿Î [bñÕ¤lpO²×£Ìïåœï²‘Á~gÁI€í¹rñ`%)áÍgÓÛÛNߺÚOà6ORÀkþÙzÔÏ‚ƒR¸0ûÍ96îû*—´Ë!?ä5[~Ë©Ìé†w@]‹ìWØÝmæ¹*'ôÏùg<ö@j “0ϯss.n²¦1‚ øÏþ_þS!ÉÉßí~-ŒÈG*ˆéã¥|c7«ÿì3f•zûߊNp,ÁºÕC³ï°%i8 !e~äžúhî… sÕú~Ïÿoê/œÑçþ€´ûäçܺ ÌgQ÷Kì0Õ[tn²<Ïúö·ÖØêØçPXõ… £Yô {C 3ƒ³rø*+1ᘠÆFÓBò\†±À=؉£[‘^ê‚É ýÄlBo«M;D–ŒbK$´X”T`/š;â=0+çTàburnÒYè‹ÁqJäZº¯å®»ð¡Í|˜³|=º5Y®‰Ñ3¦äŸBýU×}½—iö×¥Z'zMb’M[hPkåµ1u ¾IÆù%¡^éYõsL×›á†Â?ë‘dþ’uv&ÅПš^G¤01wbéÀsÍ–æGQüë Õ3nàYCØô _ìÆö~¶öÂ8ªŽå­÷H¥¤=ò¨ †«Nץ̂3’_ÙñÛÉ$—¨Ø¢Ëä?_GQHjýñ1ÿ—ÉCǨ±ø·0õʲ¤7%èß“–z}¹5–}•ÔÅÁiYËÛRú8—Þä’ùO4+9ìñãÆ‚J.‚^ÐéÑGí3»AéÜfáÀ]Ù¢çÞÂ#OÜ db#Åe×ÃÉ'ÓãÊÜDP6áGA¿q1A0@¦aeb~GPÕìˆ9Ëâ~¦‰‘³}ø‚phD00dcìœyÞGâñy;–K&K,åñ8~NÝï™Ú}~mìÔù†½}ÜùÓØc³³¨žCå_¦Lû¬™ÔO!òª‚\ø BgvÙA™«¦mÔsT—¹ú±Fÿ­ë¯ð¤àîÿ§ùÌÞÝËܵÌçÑË_ }–ŒSL…F¹l¢rS• ÷¬»iÕ—6ÊŽu'Î1šakÚ†ÐêV€(B¾Ë9prŒ¤Lã|ë)^§‚>Â)Q‰ÈzAtá¿æ‰ìjJ¬ß»üâ:ãW3Mlêo’ß°¹¤‹X*ðÙžÕ—rœ7Ñy°NÔO¬Ä¦ÅܽúÞÌ]䌳-,–»C’}‚â7?íÔÂø÷ ‘~ò”g)»hµÁžqqzpеV¦¢h`JFÉ2Ù<ùX,¯ä­ˆöÔ׊jÔSÒ%¹ŸW¡ú“îñ ñøVˆøJƽwƒ¹Îó¹ÞlÌÜ&Ã'lOS~B Y¾tD çØ€°fr[;Hç,ôÔ …õe¡øáá¹M~ } ’·øŠá&}8âo©mâumϲ ©bêNˆP9NÀ¼Ó%…oÛ©ç¶ÎM!s‹¦ƒ¯eš¦7ç =/ÒKQ„7…pøðUûqD•ʵãæ|͈¤#V!C(9w?“îᛊ¾í_äŸO®îWŒÐÑAÓâÄ ¤{v:DÒâo!¨½jªBÐ#)ù ²!ÃóRí¾MÛ|oçÆ÷›|èü°ÌÁ‘Ÿ]=ªm??b6ú8¿ÎåÔGã)=STñQÿ½S~ÐØé «™ë¼ëÅYôÈNAÒu9½‰mÃ/æñ± ±òâ,rÃf6"=°(;p«2‰ÏAGïǺÞüøøŽMÞõΰe -Î>¬k%”MjK•Í5ÒtëH~?¶ÿWZ·­kLZ¾`¾LSÓÚ/—ªù8Ô£$ç%É9޳fºcÞ®L/þºÿÒŽººK}¥(Á [I&Ï ã¹qňÔ01wbé@D5ÛÚΤ»í mNŽ„ýÄÆä†ñ_vΡÿ˜°.É*¶3M’#²sõ†ý.æÈÅ¿ÒѰŸ™ç¢hnˆ÷F±8rý@$ƒx„ Ù‹e‚|ÂbC3Š| ò“¶BŽñÍ:JL_"£Çè7‰HÄgÛ¼î'Ü ìÉçøÊ(ùCþ:ê¾³Ôÿ—ƒÐW‹.ø×¡¬%ï…ÌS°®K#>åQh5×áïòsíÈ’Ê€v€> N  Ž„mde\ä@ ”B‰É<ÄÕ«EÇa "n`D00dcœyÞGâñyŸ²K2Y]>'ÀuÛŸÁëå/fsq>a§våÏþ; |sç^ÍL—Ä™×>qàeA ‚à™ò^ów1YŒë ªºíoÙåõ®Yé¿JGOÓùÕÝ•ùß–Ù}Ïsõü´nj÷ooù†æ/j§Ó L•/Ö¨„|`ÈL] C>8éÕ‚eùGœ v©+äÅ®wýf¢Nk¥¨šM³ÃHižæ ¾e€¨focê8æ¯ç²Ò¹¥nh¾I^®Üô½œ§¢a…ÞŽG §Ö&mæ¨Pª6§b³v2Y3ø æõ3Ú…­Dh LJcY¾_~~@µ™Yd³Üaq’eÙ­ù±duoÚ§¯9Šî6NþR:‘G­*sŒ|`7&‘àTšÅ=M5ü=G¯ñ™¶?º|£³rûwB?Gƒ® žDZ:׆¬B\Œ€[¤q[ b#ìGßYŽ|㈋î(ŒEKAñEe"s¢QDF•›ºžkE–¸8=´@98©]º ¹íÊ×ɽ×IkšLPõù Dóÿ*‚ÆêÙ¤–:Ô¦ Ëë´Ôù~ùŸSäµçÆÇ‰ò®¸V£N54T¦SRÙ'Kwf £X;+–æÍˆNÎþ\D01wbéÛÀÓøÒx­ìJ&ígP¬ÎŸ·,BäÊà?9`28·¦ãˆp2ó~*µ.ô?±üˆ= %žAÄå Æ/bq½†·ýr{#¯d€_»J÷còcúe.‚Ã$€Œ[Âé|£ð9K±Ñ¸&.Eä{ðÊÊÆ«±!\ŽÄ0À«¤{¶|”8 ]ÂE-¹DL¡_1ø >/±ðš'w䜸ùtû¦è(~íâd4pÕxD1»¤ãq˜Ê^þ«þn V©q[*&ü¤ycþèH$¯‰)kx0'oGÛðGÁyiD00dc œeâo3©Óà²Æ2Ë<?Ggjö}\ø³çòu>æý¶èi݇È|^ŸÞ¿BApPö5Ì;®Û*fµOU`ÍåÏÇìüÝnÜÕ¨¹£—/ªUÇ“†/j=jmì|MjÖµ¤{¸7ƒ¸³sW·§æé¾íá¶i:ÒeÓ8—oyb|ý7z¯.< Ì­–l1T·çdù‡Ë«tÈ"†È¬rJKkì[O6GgÐËü¨jÄ{vr³Žóë•뢩Þ^ÔS6€û Y¡SÈÂú½éŸyz±ö:öës‰âf/½Ø)à—·ü±x­€­¬“°¬Æò,*Æf}¶GIù¢x|dâõá«)|FÚÀŸïuŸ°0*ÑæL½ a¡£ÊL¹2Ç¢gä•Îã˜É©TŠi¼ Q­K¯Ù©›Oó|QŸÕ2„R~ÿªOéþ˜Tm++âŠ2›D]ÕÀFE.ÙÊïØáL½ó®–vä— v[¶UËݼ“qÞÅ®ËMÁ‡PýÃùÇïU€6JdNÆ0ËÝ@O<Ü¿q™–ãûŒ~ܲy]×A¨@Ô›6ªè®±ÃA«€•˃°^ǦâÿÏ^É=?p€ZÖšÒd¶þ²Gñ×%k¯ø’øìä?B2b[£Â2åKÍüÀ-\køä<Ë{w~xÚì_u'ÿw²Ÿ§< )Pµÿ§üSö{1¸^®À EïØP ÷òÑéSmÿgìÿùí>àÐþ––)þÀ31‡ê»‚r÷}SSÓÆqê)ó[z’aÙÑ`Êro•Û¡àXñÆs¾¾ä7ÅDÚ ·zv_66*¸ŽÄŸTxy.]B… ѳš;Mú|Ãà}@ù¨1`€áøvGé%ÔfM2ãȘ€Pô ŠxhsÉ Àׂ²ñBò9òÛãõ©½St[­`§¿d©è#\‘i--ùStZßWßEK­; Ù-2— ¡# œû¸_00dcœeäpN/©õIcÂK<\?‡gjö÷úXä^ÓGíÙö ;°—±ôæ|qãB‡¤ *æ|«°CÙÜ„ÎñРÜÁï3hͫʫ±Óùü©ú–¹›¹0oÒ[_ØüÉ8Ž÷0ooowc’(—úñ>+jÕõ¼IϔߒÒWkM¦÷ŸœÊiXû0ÜÑ !öCi ”>ÕŠÅq4 NZÏ•‡®.•ùýò>/`™ã]ÏÙá@Ó1UË€³Ÿ$ôâ«Kœ#+!ER…ßüECq=ulÃXë”úžî»6r§Ý/ØøÍµ›í1ѯÒMû¶× ±|žÁnINNr££°ü’†v+Îþß“cÏ<ã幪Æ2ŽÝyë õÑ^e!¸ÇQ0=ëa†¦:Ÿ€]ú>¶šî±HrâQ³ÞÊÁ ýH5îß°çô—3„R¼» ;eœç—b|äÔ¼ÁN(àüƒcc¬ÿnr<€ôý÷"&¹&p/nÛKØ_›Ð7¬·:h0ìd~ÈUÏ çº-UG„ Šêä«õ”©?ÌÉeŸgø×ÊJÏúŽõ‘Œ€ýû–9cÎ T­•©<!àÌÌü°ÁxЖ|`šŽk0öDÇÂK±•%>….OÏÝ_袊¨Ã —M§ÿþüw $ú!{Ž®'º«¿àß1÷2ïxž»üÛÝmë[èé=^q÷£é£ŽÞ‹…,ÊU7x­?MvŸ?ßÉÈQ‰*¿¾"xĸd@ψÜõöÏrp*> Ê~ßÿfç³ÿ· ”Ž^‰ÅöÜVõ+š‡›…Gµt¦Ã~ÐŽlÝs¨è88P±BˆðPô*Ñ–¯ìP–½A ;;àØcT*Ò›[°ˆ냾8–AìDl’ÒµÔ~!Ù_¾¬Ÿ‡Âñ¼\ïnnüG‹§K¶~›ÐëË•|蚬ŸS¦ª ó2íñIc}–ÊÚW¿MwÚ2ÖiÓ¬Eˆû5>V-֜剡Ž+‹à^ {w#»ÕeïY{Û|Üî;ˆ:7: •Fj†*w§¹õ'°~1ÿ¸3)Á€˜Æcü)®ˆàÔ2o{nAP6u·ÙæjâÍ?ƒ½@²\Iœ{f’%Í*ùèÕý½PVNUüµE4â¥F(ÞðÑ€ô½Û,²Ä¶^¬GáüèT q³( Á‡ú7ó¦’%Ó{GËÞõž¾W·l²õe‰uç^¬¬‡R¿= Ø”ëY¨»qFÙGõþŒ17û(Hb*—­fµ­x Dk£#¬×…8;m}à#xI~o?EÕ;Ȉæ&s~&©P#w×D4äsÝP>SezDÊ&ãƒé@-›úTs´›XºgÔßž9@Óâ¹\.Ô;×å}õ¨˜ŽcS_̾†v$ÕÑûË<±??6š&S˜>xVt+FÜ…Ô¯\þ8Ÿ ç´Ë2ìU:¢)'Y'¿‚ŽòÜN¤“!åW¯z¦ŠœhˆzÜåEÌDM+ócí[Œðbá÷ïÑкφGŒ7£¢>kÑ_"ütÍèñóBØ{Ï8"ññ£A£†Œl”[ÇD“tah·GÜd}kö,®Ùùöô}ò0ý½Ñ·£¤tlèyXì‹F2‘{à‘S¿Gó¶<'[f7«¾¼„Iœö9ÑÍê `¡ÿ¢â\<à_8Ý_ûõŠƒ5Yý5ïž¾6pv$ŠÒ_<ÓaMó«WÕu3øÉÈïo™ë‚ÀjÅXOñ—ó õÙŸÏwÜ›©xŠ>WF¼Ë›Ñ¡ši‚ãëÛÔõcÛø‚ÖØqD%É»^É7Ž$'\ 73ÄÝCIÎ<ëñë÷`?N] ààúÉ6wÌyõÈÍ7@áëÖ>¾o ÃÕMÓᙣqû˜’ü8]98 xå-²N7Õý¬]ÔsÕ©ôÓêY4øœZð²*T€ÈëÈúÉ.Ÿ™öT`Òig{ o ‡8P£9€‰9f"y'ZV ìÊ:F™Õ»6 ‚ÜXr¬ g’å«~ºÒàÏ-,Ã'^r'5éôRR¿`þÅ©¯.t®WÁî¯_hGû$Á[GÈ€v€n|7ƒB†F9ô"»)¯RI;L]'y›P” ÅoŽÑ¾‘üW¾ï¤¶1j¿aejµ7o5>³Œûn,èä ×jz´ÜBóO¸Ú¹¢¥fÖ=­Ù;þ[,Ììƒ'²Á—«·q^(fx£¥nÐý³Úwü~ŽæÌh,£kG¿\½L)ÇÇæ0ˆv!ÐþA­?cqf‰³xá š™¬µ´ª£S'‘âzŽ¿›˜|Rõ’97´U_ݨ_ÝAíÆÀØÜaž2¸I:Wö:I:¯|ÂŽÑrQ¾‰ÞÙ‡§Þ¿XêÅ—™~Ï×Xóù÷§ó»Ëï xÇîgiëõ·­ªÜR(ªÃüNkZ>ÿ ¢‹Ýr‘Œgc©áâD‰q|úD<¾**ñŒDð£¿ñ<öâe¬'…«Ý ô¥K¦—yaM=ZÂÍAwšÅ‚'®¥Y °”!™Z¬…Y[áîdÔ£é®,çmáëÞûñí° !ôê#ÁYþ/õMFΉÒ]¦Ù#°>’Ås á ±wŽúQoœ!¢'‡}',jxçÍÖ[l'‹h«úv‚ˆô´Ù»¨Ã6nÅCS\e×±ÖÉ[>äeÓS9[ÛÐaÐM û2¶…E+ݪ{¸¹}¢Xk{ÛýßÛš[®n#ÃÙ: ^Õè“L„=ƒŠjWßgöXرûœΨÁÊ[øq¶vã#Îø‹‘yÈE_þvû}ÙÞPwÏ=dž[ð‚ËtpfáÛš'F“B´dç0wÚ¶§• Õ–íœð‡u/uK“mëòhjûïáûrÐL©šgI?sï³VçÈU˜ïhÐþke¶Ñݼ¨ý/Ê?>jvØP‡Š þ[ìÛçñ¿ÅG^†jAö^ÐÑ«¿Æb3Ôs°Lát )ˆ;r?í ´ù+mK¨¥N\™ÙÙêpô¹$ž4»‰‘„ƒZœ½"]DúÙ?¿–û®ÊI¤µ¬-:ÿ§^Ѥ¯Z`x´u—4œàGèÒ.¿Û)~%²ÃØâÞL1g£XXæ_r2Zdú?·sý÷¾{g»ÏùŒ“^óÉøÖêƒG6…>2]:ƒ;Ÿ™Ì½ñMé§òûœ•È æ—ÄPS%t»Îg qÿ_<>û¥ÿÝå>ŒÖs¿…¢/¡üÃ×i£7@Þ„…ºiaéi—Öe F­wÅý ÙXL×6ÆAs®dQ— m>…­t]OÓWâN‚b‡Ímz ÜX:\xöyˆ¶ž–Ž¿œí| Ñì{Œ#¸ðÑóP\\ Ãbü ð+?#ß0uÁ²Ó?x¢àSó™b-À‚Ó"X¦X¹*t‹kf¾{­\¦=¢Uû'ʹ_ãûŸª?¿Rêsºzk£*.bázXwª‹®Úy„Æfë+3™;Ãxo¦‹<Ìq9yâfŒÛÌÀôú‡—ß\Õ3GÍïFc¥xãfÎ+þ!mÚ =L•8Â@µŠrÈ’èüºÅ)ì©ô) WcRÌ¢ÅÛy‰CnÆrjÚPiñÏµ×Ø/01wbé{«* û·r¾Qò–[,ÜÂÀª’†¼—éW'À-]ÆÄ­ÓÇ,˜–+R5&—M®— î¹t›Ñ~)醑ϩò[š–•¢o,^N€È±ÐYzB Å),@fÿ`×ÖrÕ^ÌM~qŠDHÍÚØ+DŒðýE›¼´|Ák3®9 à ^‚)á’–ý92—ÀWáŸCž%AtŒ?da)L€½F@ñ;”‰šW1´‹üþ©N;‡ì!1xˆ—þüÕd?Lá¦šŠ€¶öæèJp1oˆ)’߬ÑAž¹©[`æþñÙ[ Œ?8¢&(ö&—ò´ÁèüÅKkÇË%Ö–/]¤¼+u¥­*'Å36 2ò‘ŒOñ´ ¦¬@|ë]kLYokr²`"?Œcó©ÏŸ?ˆ·¼Úÿ í”Jù‡Q(Æ~±­m¿î~襦àÿæ§»ïΓÿÞ;MÜUŸ½…T{´¤FÅk{ÂÂIQQì7n˜–ô î¦ #RN ¼ùYÀ rÁ•:6cÕñ½úÁ$È€gÄÍ=êÒLºlRwïehxèM°?ÞýP°™Ÿ);ŽìwOrĤÃTcà}ÜPÇR{À ¶2= S¿øz15GâG÷þiJ笲{8¡^Æ<îž"âğ NfÚ|Î@ÂIØŽGc·$r‡'3˜ ä#‚´sÄÒ\ýkW…Kã…º®Ã5 >>éÌö+AŽ$ª@°Îm»Ñó'½òÛrðéï=ô‰Zp)b[Ûk¬äÏùyäè+çMm‹ÌÃl®h—>>>oâ½K¨î(ø„nJfêþñø“ç•å£JFþßé¼²tbðø±Ê¨ø¸.">áz)r{<—ì•iJüýƒ×îýí/ÆQëÂI1Ôy’+j¯EàÁ­/dc,¨ XÚ$ã1Ï5 Fsd>:Õñ– f-+ÃP ìå0y8&.í[ ¼$’r/0×°v8ÐÕ8ÇÇÇìà{¡Dݾ˰%ÞdI⊆O>è¿mó8föîÙ*N2“¯ädLV_y¼8ýB°GÔLÓZuÒ¡DÙ+{•œÔÎåµ+y5U¨ Žö‚¢¼Bر2¢oŠ-¢šö{‰M”Ò†‰Ó´év @p šz'Lú*V…XíYäW¤!6µ¯ÒkžWyÇ’ÑðA8y‡ôö"Tb©kTÊ{:òã öÃ7ü¤m_R·:¦¯½°î-aϯ׾þ™õ £š_|Ñ“â†9X(X¡2 (P ß©/*¡‘™-¢yÎk¾Ñï©ÊO00dc(œeä›S8æ~CÊHx©¼òaý7ÿ¸¸K’ÛúZC%£‹6:Aìש¦¸(¸ÏøÓÆônš)–ÏYÏæÞ ²§ÛíÛ}Ô·ÖÝý”[Qk |’uMÁÕö(+àÙqä>÷[’eWC=è$œ?bU°ÓM©ŽÈôp¨ÀIÀ‰0¤¨Q¿1Éšç ψ±¯>³ DtqÛÒë&ºW¼Óó6e\p¤Ñ†:•‘ª¬={#ŽÙƇ "ç(àñ”2ÎCrØKäÙgð·7hßãì…oG ¯dlÚãÖfî•;–,ü=kü˧HÆ€Yi²r²Ý[õiÿt }<š‰ÖVÅð\·2±šíE3Oäe(¤JK$ù R¡DƒÍ–¬piçׄ€Àl=4€X^°ÄwÊ.ìuJ:ÆjeÃTR,¿vý©–¡eå‹ú¸Ø<,®X¿ùop‰ììtZ‹éx/Ëm+=êí!YCU$wÔþÁPAË"rôYu$)ÊÔ,%üÐ;xÿ±‡»Îê498†¶å‹„cýqõDO›ldY/ËzhÆGhõ‹{xˆÀsõ‹æ$ @H>”ÇšXøpN¨ëÅ;³9ÿüý€bÈúQ´© ޽D­•ÿ‡4‘Õª >\¦WäP“4.Æà|ääåàIÖLR}!'?¸biíD÷ÇÃgéÍÊ§Ž¸=ßõÃdÙbÎ#>îÁ»ž?c4ŵFR¾Ý^ÙYÑ™˜l] ©+ëåÕ=è¨úèI ‚Ëb«|åHÂ_1Â%ÓmXþ9ðhýc~:ìN”J{=,4)áF˜)DŒ‚v"7.Î!Œò5wš_»¬ @E#Ø?oúídaƒT ~óx¾(œ Ý>÷ÿ\ûÊIð—èi˜“2€”‰œbµ„òÅp4²É‡|+ŠéöË«ü½pz>ó‰†78O¬:B ·ÜÆP˜EäÆöGôúcŒ7ÞØÜ–<+©Abæ˜7°/9µm3!óH‚Uéóû¦6®¶ŠYÖU1—K:@päOª2vw„•y·oÉ‘¢¢ûò:›«.³M4|ö”TIQTkÒEï²¢¿x5žÑC°l†ÑQ2œ^iê,Š]4T†…PkÒ¥¤PjÑÚQ©¦™ª—×´’°åñkêݵÀÅ‹¥£¼cTK]=4Õ¯9fÂ7[9NÝÂ;âwœNNï¯ ˆP¡(Ôêƒ5$ô]B:£ëÍqÕ‚s01wbé@iîY™ïß¾ùœ[±]ÿðe‰‘ݾÒ“°A å¥¨ _vÀã𮘠öµ¼zk¯R.i½¨°p”½’e£{ëßWˆ‘Œöø¥'£‡ÄiÞ‡£éòÉx$BdòÜF tAmfO†9{äMI*ŽË£õÑ CŒåc.Ž ¯Ÿüµ‹ü )ŒPãìouºýË4„¤÷ù–£ü­¿®57a/ Èæþ.¹ò ÿE| ‰Ë²< K €l4 Ÿ[ 1 ú\”ÿ%ÊüÑaÝDÄTÀ’bˆ9¬EBU AOƒ{3¨TD00dchœlä›S,r>ù2ÎdË5äÖN_€«ìø~¶|±ðu>Ü¿~þãâÐññëh|—ŒúÛÛÖ'ËŽh|˜Žýntõ‰çìVÛtšd”ÖL¤ÙVÒ]¶¥k¶:å`6‚¢õi–ƒh1޲ ×{žª‹2Öɧaœöª®ëŸ;ÿò"koÒ·‚¹~±Õаq¯×0î“×ScЏt¿ìjdG¬bßÐïÙ‹ ëðWFB¹Æ­ºÒÑŒ˜×H@1|¤ª $fÀjP:GæÈO.λg´üœ<Š P' ]Ö/‰ †PŽÆ~Ê$ð*@†ö€N=O`}Y€êýLW®;³$cUÕ’] `Ùlƒ¯ž`:‚î RpK­’Ý›ûfmn¾~e÷ë—=bž&^êȔǖpÞ«Àõõ×6È\£ÔÐ~–C$H˜6*ˉ^k~KʧôbQ }Ÿ×X ðJ®c/¿‰~O*õãÏ[ìlv[ZY=ö&þUvccb …fÄ ÏMQzéÑ”·?¿„?¤ú¸¸øåY×¥òãW†Óqqûsõ¤s¦€ÈŸu‹_®RL{_×D»Ç/Gh‘ïåZçèߣ¯"š–l‚M\ãòê]¯û{ûû*} –½þ]áÚiJõšÚ¶¥àBw¬êvÙ#[O­­š÷ìžvÊ_ Ù;r8{7 Ñs*ièƒ1Rè‚ìÆ2x|·±°Ì]ç³ì4[¦#‘oøèçzg8©Jׇ_âö”;¿•¸¥ÏÂ<Áwœù\Àžü Ûf¹œYs`ψ0­oéå…€`VÛQ¶!-˜ºÂ$+2ƒq´1«lߦ‡-ÂÏ¥ zõH¨ÒjÕ*ôÖô™‰¥uÉåb2ù­½Lç¾ÉŠóæe®-Ü«¿6*nyzZ3$R$ eö&˜Ü‹ÍªØ›ãta”ûº»æÅ‡ì`ïá;‘h[€NUü?±–š¨†^) áêf¹ü§à& -ÿ®«Yy °·Ûš·gó#ü$ô¦¿x¦y{\ä^¦Jl,ü”mVˆ#ðÅágû›¾§Ün!¸'ÑU¦Š{Ò­>EÿÓnZñQÇW¸ãÎ9‰0¥¦UÞÏ´í:@£­¡þ"p6W䔬“¥Âñ±|FåIGýO¡B€g†»´ã‹ÒÜâüIc­mÑ£v®µ‘E±FÍþôàßøAu8ØØÆE¶™kaj‚# !ˆÇÁ¡‡=Kõ& ã(FxQâËÄØ‰h¦ŠeÍEZÑ—‹`• % dùõ:s›_>9õ^&9?Éí®`»“ÆØY¡Ç\€;ïUæ&´­Ë&¥4?5§$ÝßÂP ¥9SP\æÿmCPM“QQjb$·( Õ¢TvÑ -S G ':¥¯¬àÕrøðoñi•JDZWuH…!01wbé€QgòZ]¨k²Zót'!.g?yl4öRåÕסážÄ«Rø)'ÅW+›w.C g¥Jz«~²±±§L.Íg£¬’ª,±‡!÷gtžv“ä¦Öï ò(:„Ð/>aŠñû¹©.þq\e±¯B¯rÜ}S‹)£?_HÄK§â@Œ~Ïÿ-9õ9Â[CbF +þ«•Û ;C×|)Ñ>3ά0Þ®B½É/ƒ#ã£Ô?– û‰go}ªcc µûéN>ë&ÿ¿ºR‹­ïÖÏ•œ«ÝÜPÀù‡)<êKó”¡%YÙP"á‘PD00dcxœlä›NÊ9¿$™g2Û5ä×.gà$Å{<à8~Ãàà6ľmú'aÃ<8=¬Ï¯[Cí¼vvàxL9š§vôày N²¥lÒ]É)4’o*í½+%¶«mbE˜×G| æu§Z¡j"²,÷œ çþ{Ç-ðyª¤ç»>|yw ‹Ó£‚‘¯þ²ÿälpñQóÊH<J“¤Ï[Á]z½<»)ñ®ü^¾ýMj“ćðjl@ÎÆÆHHÿÃ^ª‚#2î(ªoq’’Ý7 KNf”M kZ/ÿÞÿsòº­9ÎädUÒÔ‚¼¼V©gÀݵå2 J]SJ™öÿÿvµç§’„JÄÄZ¦¯a®@ìâ»0sÉë«T¶2ZµJFOL犫¾ ôíAνôq¸ï «±|s$êeD‚(zÈx®/ÙîÆ5ÃÜÃc`ørƒÛ’O,d{ù¡ZïbŠH‹÷ƒc`é —…Éᜠ-XË´ šµB¹™ µ¦9xo]©‰i«Ïå9¬MKXª5˜W!K\õ ð{Ö—¶°‚ iiúù+uæ±7í¿Ù¢g¾ZØy(ªt¶4‹ûÚsW™ˆ—\¿¶«Ë OÓÅ«[_.»Mze]BŸ¤`@By~¦4þƒ^3)÷Zñ,k.x‘µ>Zû•®†õ_cÿÆb¾qG}À­ʇ~/Wjb§øþž?• v¾N¼íB^@BJ­ TTÆT?ö Y"0ØãaàÏzF/Â{Æ}ônû6:æ².ŠDîdînÏ55Åj?ºsê©¢ÖX]®«wþ!$>&\UŽ|¯÷u“=5`³½ák9èéÈlç8ÙÀ»ÌÄ ±>=ä9¡=£ !ˆ{ ¶.Ôq€©·ÙŸŽ i XA K`E… ãÏ•ðýõ\©€}Y‘gæv™9æ‘o3c4Õtòº5 Ö/D…ŒhEWOÎfÓˆøþcùöe÷â»pjæò@/l©¹Éæ à|ÖCTîú>j§é:,BÔÄ>ŠÂ`j1)1¬zÌV*Ãa&¬Ç.Õ¯Ç5¥`¸`Ôïä0¬®Fè6<µg 01wbéÀa^>-&ÜìÅûØ"lœZG˜æ¢ØÂu¿þðrJ\6ò1h›TfççDŽ¿AŠi¼¸beÏ¯ßÆåø×awÉ"Ù_+ÉÐAPÇõ8Ž&y­Œ—öy‡ßAü7]Þò‹tŠ{Žå49ñýþÁ ° «ÐÊ <ý³™|†O‹‘RLŽ1ñê,ˆCsΪx#æ l4RâY3‰ý‡ô;Aä>ílPÞ.»\NDþ#KìѲ`Ì/›_„»ÂÆ@GifÍ>gLÛMoˆi¼E µ­ôé`wóómD00dc„œlä›Ç#ÁÌîyI–b2Ù‡“ÉÔåø1^χà8>ârœ!Á÷ |9ôÀì#W³°ïž¦u´>Àøàêß}“—Báïq—á9~Ä’’I$\)tºrZÚé í¶ÕmÛE°pcË­B–%e»î­=²…ÜßV×uì÷UÂ}WÚy7ßTûžÈ!Yt{¡6n ψ*Î]¼ø"C¦âPNœ†ŸˆXºå~Q ¸5³Œ ±îü$$íëbýù"no™n}„«üÀ]áÊ¢'{'Üí‘Ìa‹ªS›8îÉù†8j—Pš·Üaëo[¿pªƒ|€ã‰›ÖÎ;k)[„zcëâú.bOóвküB÷§@)Éõ ?¢kæ r‰Nœ7çãçúPNj*0¢Ä3[ÔJ.‹ït¢–0·•>m[Û©s™áxÏ“É}×íxÚæ»ìW­¬T+."bû› ŒÈ‚óÞr|ŒsšŠªé^䞢ÎÀ]ù=gbkõiñý݈õWŸ^;Ä8ØÆ§Û†&µ?bg¥å'KÙ¶!rQ×ïééwåbFÃìuÕ%r<žÀ/Ä ØâúäEâ¦4O%δ©Í8¿Ãõ„½÷þvŠLe‡>2²²XŸÙ“ö·›í×ëàH–¼î¥ãQ¬jñNöi"mµ³°>¡ºYš3üÍ£5‹²ÓRŸgŠ–*_âñ>zÿSžAÞ¨ –DlòÎàrpÅÑ(ãÒleÃÍ[˜°Ï¼ŽŠØ_c—<@ٞɀ Mžþs¶"Â3ëx8¢_•‰ýˆÛÔ.äe;V)mÏ_¢­ñͽ~ [^ï*ÈáÆãØÈ¢8I“ƒãHEþÙúFÂŽ%]Wi›Ì$Ù ¨òw†ÈÃD:ðÊMŸf!¨}|œ2|fä¡'÷m¶üƒÉ®v`þª €9‘ÏÆôyéu—Øó°lèm#Wæ%Ž?'Õ§aò$þçÔ®Ÿ’À÷ϯÀÜðÄ\”¸áV¨k`H~ú(€Aþ5—: ,`ÿmp¼×Œ©dB|Z²Øîù`{w»'„ÛÉÉÿ—nÀŒ†š,m;Ç>ß¹Üpøƒ{w?#øÆ!U6ÄåcÛ¥¯’ÏâcMã\tÍ õÍ“AŠRn˜ýQý·k¿+IÍþ*foÐ…$ú_cy+¢É£ÿ¢üf3GC½üîþgž²:5N‰ÑåÏEù„¡¸¥{Ü6J™ãÀŸâ7xT¯167\Ì@½þ¹ÛÁÒ§¯RL‹;˜1_,鮣o¤á;úãlD¾½Á¸Djî¬ Œ%óÖ*²¨ÁY¯´EÜ x¼±àù²²—ôJ}7×÷Å&Ž’fNy<ÖÑŸ€×d<<ºX… ­*®/aRúòIê$] /5Üœ]‘ïÇ~™IÐù¯h}“-¼ÍþX^¹¹ÂQ豆Kæ"Ws_,’ÕdÅõj€zø°4z°Ⱦšc¥ò<æbÉ“E«»ÝN»Š¥æP‘Ó °*¤Ôj̇9ÅsŠ 00dcÌœläœgCÁÌîyKlÄ–Ù‡“ÑÔåø1^Ïžžƒƒï¡Èp}“ÏËŽÃßGaß=Mçhpy׬Ÿ_¢òè>Ïrhlúý Ê2÷vÛpo¶Px•üŸªŸª«y§>}›TX)g[aUT–Öy‡}Ç}×=ÇÓmG »7ÃîKÇf¦òÿßn]x'f‰:L…,\W mªgtÈ›{Çaýy4sV7äªþµ¸#ø3k¤q㥉A1ÛÓ½YWr4Ç¢lx€ÖÅ’†úìê=êù8öö¡ªHB@âF^öå‡×ë‚ܨþRæ‹gJ}È£evcú:ºÍ…ª‚v=ž^¡æö-0Ì5Í©:!BÇSƒ2ïïï„_¿’J»®3¾OLq±°ß¿^Pµì° !¦| –·ô,ý±+OAìf·N=DO˜ gé41R¹Š»Ø¼—<#È©2Ñ¡«[ˆ¼µl;Ò3J/2?j¿p —o_²å7¿Fý’«ÔjN\½}=r¦{1Oë)Ø.Óöé>š¾ÿ,ÈSb¼ Q÷ÊJî¯Ø/t XV“U€˜,Œ€çgõû%ñìcè4 ÑaÕVðŽlÁ àâp3c³’‡´kéO®êÓ.t™Ì–µø¸k[Îö›Îcó·ø×ßÛѬlϱì6¥œEçû}2ÖæîX3Û&Ž@Ë?V·ýuÓÒY|°üǯ/6¼‚ྨ³;ߺ$`šh¸ê@ö—ƒØóÙ9ÔG~iÉHÃÀl¼Ã¯ŠvH’·ÿš¨÷¯0fbMÃ?€âŒÉwû ãöÝ dswÅ7*øýš%LÑÊ"Úòä‘E4 ú%tx´÷¢ÓèÊ©8Ì¿Õö4‹Ôï™›žPÚKZ$ýÜ“¡Xì…¸Ü÷wÅË›õiÄ’¡ŸR"løïçšÞÇñÕîn»ÉW‚އ’ù;ƒ=;²8¼Ç©¶.ÙOz½óÿ3µW¡Ž£KyÓ¤ø«ùžûšÆn­d3_ “Z^Å_)pìF*7±ŒüôlEƒã²ç.^±járŠ‹¦YKJ¢qC‰A± ËT°Šä|?~}ûf™¹LŽÍŠiôZÈÚ ]]C‹BÍÕDë¯[Peòh¢ênZ1±–«¤í ¢š9žQ ÿù¯ÍAµkRíMãÐ4'ð•‰Ù:'ÛqìÇ&¢šµºÔÅ µ#*kCC  ×Ê-,ë Õ'2cÂ?AãlGä+³-(‰Z¬7¨ÚAÚ q_!@01wbé@ÓkyЗõ +ÍŒpóÔí†ÅͲy›J˜)ˆp€d3ò˜sÂ-~Ë‹½ù!—çÞ ›U JÕnƒ&.ü{Ëɹ‚sD¿š¤6¯ ¢spcíè®Ú½ýÐâ!ŒööÅ`Õ=gy#ˆY”Ã߈üöŸªƒQH¨®ûVÖj/› ×™éiõ7é—IŠã“ÎAx9±±á6L¸Øh¸}¹l`Ú ‡—’lªC[Ô%›"›WjŒ{¶üÃÛÁ°U7ëõ8&o³YMrÏV†]ÛMaS«ÞñJy$„^£/k×ÓmªÝ¤¿•üZKg&°Q†óûx2fËE…÷Öˆl#¬Øë‰?8ôœäKŠñ¶8åö8Ì]hlAηz»±lfýæW®©z;ÏàØê¢ÏO]Uh nÏÚü×"Ð$ð,®riPy„íë}¶¥‚µ¼€'£±ð_Ø«ïŒpÒ7ÉJÝXåN» â©6ƒ…š©£9P¦ŸsÛïu ¤•%ò3Îhõl‰þ¹ó˜?žä‘ Ÿ²ý£À“××ÜCµu¢!5 ¿|×¥–ï"aÈÁÿ(y2,ÑËiLúKœê—èüÞ݆ÿ'`m^Üœ–™N¬·ŒD;x h9,né³dö=þ¬ªG§¹ ûEÏÇ@Å3šçþg2Ìﳕ1»õÿæ|ÉÐdYÁåºÜûƒqäݧ¿Üõú¤0t9ý{s#¦×FûlS/7l§Õ›'3fý[ y®Ë]ʼng»ôšÄMbÐ3AQ†ƒ±’¼ØƒZBÅQ–”<£>°bð*– AÓ ¸û- £±íÐŒMýûÉ4Uk]|·fþ™9§ÖPj4½h ü àá°Û˜ª´YÊðGÕ]º¼Â/à ¨‡Z5G·gåÔÜ¥ñɹQ>ÉúҦ²EÜO£cF¹þOüÆskª«»=Ë,=7R›}Š­J¦ JŠZ7ß)4í"ÆÄAh††† ”õÞ3syçÑ?eö"Qׂ>DÒ=½kä² W)ûW©Þ«ÊèU`Í›5ÅMÄ01wbé@f®¿ýü]ï ×Ï~1À!üçÖ_–¦Øƒk9ÚÊ‹éGºˆJ\޲d¼2ÒcØ_—}$È3&1ÌäõIªD xþ“Bs`¸xˆdâ¶7Kpåóá"¿³ñªáSäçì)‘7Ùm© Ç&ÔGà̳ñÁix4Éërw3]ÿ³Žèû?ˆ÷éÌW‚ké|˜PÐX4ÜÕïB©Ð$Ê[@üKÁŠªÓR˜ƒüÊçjX @ Ï'¾÷N@=h~“E5š=ˆ‘äI¨\EB-S´H¬‡)¼I/ÇöƒT¼ m»„D00dcXkÂszgƒÊ[ZêVžWN_KÕŒW<‡ƒ°àû'­p6`kçå¾§WŠlœäûÞ\¸¼ % ~)mI>•M¤ª¶ÕRVÛw}²[)WÎWT}‡Û}Tû·Ötäœ}wÞ|$b'«÷…ò_ö~+ÚZxo±ì9…‡UÊgN%ñg<ôäÈ YùÂó&ÂÒݺ“µfÏ-œ´"P¤íIן{ÿvä2ÆÝplp€ 84c¦–¤ý’`ÍOÄÖÉB‡C3µj -'æã6¥µÉbã.˜ªPN®‡(ýxScØîu Ò D)Ÿ–þŸiú«Ëv啹¬' bu–Ÿ$/2=­|•‘7É糫ËvKÁ$¬}°àù»“÷uøŸ*ýõëqž#àj¼|;ã«(Îf4»¯­‹s—0ÙáÏÒà\ Ñ:âö™¤Ú”¼KŽ—ï~VåÐëÏâG2ؽZ’×Tðlv¯g`D…s"^ýÊl`ö3AÂX½d´Òç¦U¾Ä¶*gSY÷._Ítbîz†ÂÇ {ØÖ¦µæe´Û´'0«uúY› ~gšs[öòô„¹Q­üÒlùÖÖR¾ h7:%JG?ãØÔI8©¨ÁÁóÀÍÖÚH)YŒ´®ÀÙÞ#6~kªGwÒHÏ/óîmH¹«§8#ÒÖ=ùßÝhÎOü¼„›zÎIß®z=ÎÑ~+è§ÙÚÇh´¦-WŽ]è"ÃÖЮNMYЭÐâÎ?›Cx{[­û+KÓçíÂÀÏÀÔÿÑ8äeûÿ³¿RÎÍ]¨§°n ö ÎOU] t¾{©þÜé±ì¯ ñ”0˜™\)g{Ð58#^·SÓƒ|íf¬B‰±®o Ÿ7z*gb¼Í\h5HÅ––RÒõ ~Ñþ‰,hÁ¾QƒDkWß©ÒMÍ(eÐ¥ÊÌà™Ÿ³Ó;Ì9nÀÍ5»àC”`æ…§u¸—²c^ܹºªƒ¤%ŒS­šU§Â\·ðýsðyÍt:5ÒÍO'sæ!=ýºlèèÐ_7ÓTè£JÚj¥ò“I`|š–8[²œX®7È®cÍXâ™Ëøä;÷ÿîÈMU*ß@ëdݩآbpÜ500dc@Ÿ{N§C¡Ìù™,ó–kîtåø¯!ÁÞdõ®Ì |ü²&ä ³œŸ`àí.Üu$CBþÛmû ë§\©y‚¿Ëë£Í¾Ëï¼ò"û!O¶}$vªCï?Ò½œ^ÙÒCém4ÎHI±”ƒ¦fwaŠ‘÷Æë±å·:õ¾ÑÙÝJâÖ5`1úM†H¦lŠ'$̶j±dÑ¢¢Ák‡\-=,B XµH#rAÖ‘dsŠÖËíÒhP=Ã!¶ºw íìÄXøì^:yÀU3 dË/À†}Ë)GøAIÕ~s@²T»-†ü£Ó¬³³¾dè<÷°¢ªÑ£çíP°¶¹oBü"j4uÝÃQè{û¼£o³Áð^ßÀ™ëg4©Ê(VõEð·ìÑDŽÉM«¬ÑHL¯cZÏa€9§M?™,Ã[“hÆàOÃf$sPM†€H< ÊÙÙ¸1ùþáóµ-ÏWD¾‘õ+)i+u3ÀœÏž'ÄÎsÑÿÏñóah±_«¿L?Y‰],ùÏì÷m¢’¼Ë„ÄÝø¥áÄo5.©fófh¬¼ãÚ¶ø±IË–….Þ ”çOöfÎf=Ý9P¬U§‰ßÌ?ˆgŸƒ Ò[ØvûPøáüüºßä|ÞL±U×^OÛjë8]\QZÂ8°Ï6Rñã:Â{Îõqê0äòè~;FUðË7œ@áÈ Ì;Ç´Ý¢ Fa­EÕ[«ì+ ×M-NR´‘VØvbz«™ÀõÀ¦Ðò+&~ʬò;4ŸšâåW‚  òak0÷7Évü*+îÄ^Õ\{Õ;[Šˆç=ÜMîi7ËØ)éa@éXÀÔò‰=KNÖúìitÚ]wKƪ^uf^¸Òâ‚É?‡¤?ˆsÃÞ0b +Îø ]<´íå¤ñS·x¯S¶þ²®—MK©ß4O ?Š]ü¥«[wy«YÉÆ'a9Ñ%ýhØ6.½#}“MiÍï‚N ¨ätÝÀ\@«ˆ*JP«R*VH¯ñµ+nìb¯Q:Šùz‹:+Ùzl´¬š¿ƒW×>vˆÙ¨ Ã"ºÞ˜¹^)IV¯Ïä01wbéÀÁ%åƒÁ3+~x”ßð©ù—ÆR“Á5l“áé2 2¾”‰}X¾‚b'ýZº™L^(°ç8ÿqöH)q½YM±þ|¿×gŽøÿ 9Ñ‘ÝD ¢ƒÈStË…‰â™wat ¢]&‹+±š¼ø÷Òˆà- ã~·¤^¿ághCįå׫;22ŸP¶8u6âN9±â÷çþ —ï7jãrXþ/Œœd}þŸÖæ+¢Ù îñït‰yml‡+‡ü&S±1áêyWêš²RQÎÔc)ú¿=ˆ>ó†i,ŠÜ}0 Æ—é¬h§[D00dc¼¡{º‡3æd³ÎY¯½Ó—à"ÃØmðžµÀÙ¯Ÿ–DÞŽ$ç'Ø8;L¡Á÷£QÐw¶À%åtª‚ä½}_vÚôÜ}ÒÕÿ6P†¿AÝÿ ~ßÞ`CÉÿ×ðjÖ}â(²û \ãÈ`)K2OEY€ûÖgðÚ.ãf@ÒQÍ`ÅÑ0úèúNÃj EnpÁï›PpûGÚ×ÑxžË’¯A­„º,E½¹hž-ÏJ PÑéCùƒï®ÙL×ã?ПîyÜæá<¢"Ÿ¥äE›è7¡°ôh |K¬ßn•¸ÎÜ H\ÿŠ¿˜B÷“ê×s¨—{–,3 ¥)9ß'­9H:ã;`w‹§s²”á›üÁrö?ç6ð) ½© \Ñ\%íE?E$gLô©žåûV¨”ÆÒº†úx¨{̾˜(/j4ßp^¦Ú£MKÝÎÂ…2,í3u-gòv§ú# =ÜåIüó™ÄDÞ7õ(Ž“ø¼å>oEïˆøl(IuÎêÞ€5ÇÜÛ^ˆu*z²CFÍøøÊdÀ¨í¿Ï‹´žÖµä‰¹*ÝN~K4'>Ú÷Wøs| µl½Ñ'½MÍt°mõ®@SwWI©Í¢J¤&Özfgí ëžîík}êù~Š @6s¿À ©<Ã'?[yó{]µæÐÓ˜Ý÷&¯c—Ó%Qiˆ&\€òFöfM/(‚¸Q°ÆÜõÁ~-+ôдÀ,ɬœhWë'\äÜ·AMÕí%ëJX­Í>[Û}c?»Ü¡žv–¬3ÊŽâÙÏOÍý}¤¢f"*fܰgáâåeÆçF€ƒcaÝèO ÓüsÂrjâP°î>!ªä.o¤Œ~#ÜI©rЇ¸“{ŠàÜQÔó%ýü¤S‰’) Ÿc ¢$¨U™Cµœ<*H£ n!A;ìùPK@01wbé€RBØr¶Ù@ÁF°·,’ž¼j•0òÇþÌ`ymѽ¨6^HV¹¿§EaÀC±x±_Ï`=13>¶uRìè‰ôÔý°+íÉ„Y-‰7do•¢Ýþ½åHqÁo×#ø^Ú/ÀŠ"7Âz°¶{äo§l&¤¦ñé4z2ÿoì(Š{ÇJóüúŽ£Ms™˜ëà—S|Æf<ªb^_þØ*„iÏ ½ÐþPãÅàÿPš' Ú¨ÊcÓxÏôG†ÉX_,ˆnt#s®‡-–aõJr'm†)Õ!}-nަò›$®SD00dc,£}ÁÐæ}rÏ9f¿N_€“_ŒÁÀÙ¯Ÿ–DØ\â}ƒƒ¾oGÜr"²°ó€BEÞŠý"¤ÿOÄYòÆ÷#ÒkéÞ7 Å©ì„m[¾g¨_=ñRÛ€C´USíTòN Ö‘ M"p©Þd­n§‹½±‚mCC‘UÕDƒ½¢Œ ³U£F”fmený÷'xàø.{à¶$æÌWW2íµ~äÆÑÞþœßÛ]®néi©}Ρ…Î=¬½ÆaQkÖiœ¾õ¤}. åa§Åó¢zÒ †×!»´50¯ŒPøÚk]Ñ·M<Ä¢¿úûíêFë_j",Mæ®h€;WµÇRHÒ‘ÿ.NGâø·eOäiÚC)Üêúëù¹®&„@­÷î?ÎŃæøÑ½ïì ‘pÙg5B-´Ùƒ˜}©MÀ^ÆmdlŽ]¼c¿ÚÇœ‘i:É´tî?Õ®öR_ë=äwO‚#.öÓp‚‡¡º3ZëVwuB—AHs5£Ú"ÑHbhgy»ÎåÖ â²U™¬Ñž6±ë‚^«?^roííMÌÛÚ ˆ“$BN Ñ‘âXí­¸×+XÈÈÞÙ-9È% ÍUQ³•1¢âSrÁpÞ¹Ç{Gâèlƒ—9žÅË;häÊ•„ʃ ¬ 2ª€³&[È[ª2ÚµÝìE,gÎÖ~¡ |²\÷Z£Æ?'ÀØÏXY"IÄx úFéÊerÜ Ž]—n Ø@j±01wbéÀ´ŸÁ¨mzIcvß‹¸ˆ)¶åÓ-£ÿ-9ˆ|~Ê6â;§Ú\vª”:Ÿ9 ™îz‡É,†¦1‰Ò'ä ; YD00dc¤¨}/C™õË=kð rüÜÎp=†¾~Y|œO°éÞqȱ”Æà¨uµK2E.l?þ=|ÇcTZž{s(Aã9(—ÝŒ¬3ƒÔ›2a™s áLµIo{é)¦³]ØÇ8 GäC/øŠx…;2ˆ~.þPݵӠ«òq{)ëx ”gaÃVçU>ŒŽù.@ l·Õ$üÃ+>OK—3tìŽNÑ&HjôºZpÿ0ÛÊBæM¡c9×ô,úS ’x»\^ˆƒ d8e´A´'ýQ¡:{ãw2òAwuX6FG,K N8÷Š{™%_9™‘¥0¦å7ÌvѰk™<Æí¹£ˆ~ByêÆ™u»%Å|1/ôù\} S^̪t‹G‘wê©&ãKl¥Ûœ¢Íç›RYäk¯Ý’ÌŽ@]åïçV–^!ae­Æþ üÀŽÎZw=ôsž¬Œlšmá+Á#w‚)v»âØ{¶8oàŽè1”»:¦´ÎÖ,“³Éß=›—^PQJ6(zRxå34¹™’Jx½qÚˆ¢ú00dc(®~ޝO±gÁ5ø ?T> óåóØm?~K!#ªªªªøkP01wbéTz;לּÌñðñK´:¢òI À^–Y-zØ·Ó 4~â(…9-U}¼+Hn¿MáÐt†¸wÊäüßmò6‘šuþ‡†Äýá Òå$),ê\I*½°ÅÆWtn;5Òùex9\.¦%Ts@¯çµVìÌdÊ Ž¨ ßÄ÷Ñw,¶ÄWaÀ·7PîisøUžXQŠrûïPÛȶ7´q(Ú ºòA92:Äów”ø Ç̲Я®hعÇ|€jËù:˜!Hj§ô†)j_>ÃMãwÌÀ|—\D00dc¯~£©ø>wà¢í×—°yç±cª«áK01wbé@¨5RÃFúqéE6À_Rl̘¦]Žê”fµŠKîPUfǨf6™¤ì@ÛcÁkàg.ÊæÖJñ?Vý¤¬ZJýûÏAóû,©2â—c ᣠCùF›ÄÈ6¥òX&î«ë—ÇC[ ¸×méõÁå±Ò1;ær¿'¬î¥ÞF'‰3çä£ð: º®ø+—ö “n|GEiA@‰'†Ðì —€,¢óŸC^ÁñGüalZšÉ£#-èýEÐóŒ ®šÄ9þJÆ=2@—g¼U>e‡©-èÛý€ËW‡ì¡{ƒXD00dc(®eütðs=Ÿ‚k›Ï<ß«Nœ?‚táçÒMò1_Rlõ _Ÿ£Â¾00dc­~…îô~ªûišøñ±_R{ôýøb01wbéõÚ줎Ri}z1 °‘t|ŦêÒ$Âè…W:°D]˜’}Ÿ.(ZÙ-ƒ›n%Ñð'®ø âeÂ-Ò-¸ƒ›ªÕlçø5 ÁŠ”ÓÈe âs\.P!œ!B'z*dñÞ!ŠÃœâ1|Çg£w¼S–áŇëÂuaóCì'Xžy €A$Ÿ·j‚•Ê8A|æÁlþÂÆ8ÔVd³Ã™01wbé€tÀžÉÞÔáÈGaJÜ’ûr#ˆ èD¼2žÊPS,¨Û'½¢-¨Û©…DVóÄöéþ9:h$x‹`òVåÕ'3Ca2]noŒ1Çêðµ[m2©ë@N¸üVQ7G/{‡.å0`;RÇÌ ì«ßþ  #8žé=†ÿ±qQàòåxYÑ«F×h¢á Žî¢`^¢ ·55—i™¡Ôµ}ª“Â2yè·,[aÈÖƒñºâ˜Ë c%€ã…¿À¡Ãë–À¡1œ?ÅÇ«W"¨MB‡©=è€}c'NÑ¡à‰ú©aD00dc8­}31?Ûï|‚CŸ_›m¼Ûè¯ `ª!௠`ª!º¨UUé’ª OXùM™G3Ã01wbé€tŒÝäÙ½åV&û^à•­Æëp, À¾Ì¢ÉC¶ -ñš¦Ùdƒ§?ZÏ4rr+6F70@—yæÝØböºŒ>xÝ$¶2š:¶ÔÓì@òŽËs}DG ìp¶2‘;øXzÃù³ZŠ 'Ç·‡ dç­BU2qóÌ~–@ùAÎ$õÎîd†„••Qª÷=ãã‘3 XGðú÷ãÙMÍÈet .&h_¥%‘жûÕÁur‘`â•*Ç«#ÄKÛ@°#œˆw…pfXdßؔb‡¹­kÓGj>¢Š^–ÀFXED00dc,­~)/ÜO‚kðJzø_6ó|óy¼üàÄÍxƒ5áʪªªÿù¬$Óœ00dc­~O±ðŸðÛã8˪ªøkP01wbé@ÁcÑïÖ–w¸sX„,é ÙÄЮÉκ¹^ãô ü=¶LŠºœÑf6Œp|“¥["€&—2pG‰MN“K ¦'‘zœ·'‘ŒÌ Éd¥9d¿ayÀøô ÛfþÄÿT1Ýžxs15þ¡‡ëÎ%?†ä³`Ô—‹bÞÍyˆVÍN~õý»Þû CK£úáï¾oáÜ£çDÀÊå-gב À…¼l%˜…ª"âÚNêˆÚ«†– íK;ó·ã  Žî0Ú%œˆðçÓO¨/©Ú"•qѵTªl†)<¨Žè¢ ûÌÌ€HD00dc ­~ ÏÁ[À01wb黜ÉÓ ÏÆi\ÚBJ–ÿ`KÁˆþŽôÈŠi€hŸbãe:0c“' ¥iƒ)’Qíd“—*ñí6¯b˜¸yÖR§®1·h6CdÂwSŽ·Ÿ-ÂDÞ#Ggl7$ú_)«ÕdTÅ_¿Šï¥¸ýE«ª²žnÉð2L_.$*£î õГ?SEc—cc$;ÕÜßÿˆ5~$&@]bûW½“bÆ‘ÑןºÀ‰&ŽÏ BÁÎú(žOÛd¬E‚u¬ª¬ UXŒ´†©=d’øj䨯Ÿß—øUUD00dc­|¯Àqð¼ß‚šß±ðx01wbé€O?# y<=eаC-V#Ù;†1å”ìþu˳4_‰ö§ú5…ܲ* Åßòˆ§«¶}_µ(í°‹©”ÉÑ:æX9wâ‚!‘”(\ JFþб oä¼Há ü%œŒ`3ù[4#Åð/Øÿwœx'À|JþŽÇd±»b°’žLº]%s‰„÷ãŽFWt ÛË¥}xDâ^·…qµí(,1Žäió| ¤O~Dcq$3@x1«-œñ÷@ 8˜ aíM2ÙÁ¯ V^3*å…i<è›ø?ÇauPùXQD00dc­~ÀI𼟂›ÍàøëÀÐ00dc ­~ ÏÁ[À01wbé{ÄXÜ„ Acu9y}Ç-£-3s®œÄ”ñˆV÷åí—ÊÛsÿ#Ù(§È‰vêŒ2INL÷8½x§^¾xLÄ" 7¹_:šPe]#ùÝ'!ÿ"íü¯K€×Ø×îáGõœsuÈï©`Ãè¶»fÃÇ>.ØWÝ×W•ç” vª0™ È_ÿ-Ù€ ÷Ä?ý÷ãRÝ_ôƒ© ‚).V"ù°7‹Ëãg‡3.ã~è =æE ²Þê±'p!±Êˆà’’ô¿Ü𿬿 £†©$êʱ²cb~aD00dc ¿~ ÏÁ[À01wbéW1î„ÐSöFë–7Ï ;,Ǻ­PôÈM‘ln"^øL\U½•¼ËIþ¼íGväÂð¢À)©×ñ ÚØp—„ô¾–+´5“ËŠ`÷+òÿ› äоH_‹½ð–ýx#Ü8À”æÞðÚÕ€ß1PHÃX^…’'»ivY¢ÇQâa ÅëBõcxy;E(TžÅæâfXk£°yþèJU…E¯ô9LiùóÐøŸ9J[8…´Œºÿj d˜YäcÜ@W"fM7ÁË ÿ¬Õ*ãÅ)<È Úiv¢!w$ÈÆTMD00dc00dc01wbéf5~I§¤“ä7TcˆUH#ÏxLÿ Ë’ZŸc·¬™)ÍN—(, à¡ÇÛ=I¬öa0ß cÿ‚p8>´ó0bV˜ýîKÙ+DU³Úl!{ßKî|¬¦rçkYlåINÀÑQ'—À;€Tòr«5¹ÃUxîß6¢É<ºš®ÌÕ•9Xa]NH´< ð¢ç·sÝèßl@bAÁµŒÏ~öÝ_Uǯ§§6ƒe0“‡óì´Ä3o901wbé@õÎîÆs¼¯Ù‡sŒHªÒòuS©R®ÐõÚ'ý°#*¹"vµõ6Q‹2= ³P ÏLR—´Ê»‹ð¬ù•ï-â‘èIòŒùÔ_Ê$Þt¡#Ô+e Kêy]<—óؼ(*ƒ¢t5³·Ñ*D‹àÀ6±”‚JXJÎÛÉâ5Ù(w%Ò© Â#Nž#‚¹/Æî÷©£ï°mSú†É<ÁGÊO²Eü€EMD00dc€¿~S©ð¾ðPvï0ë ºöÕè“K¡Õ¬a‡/«- ¥¸B¼Ô4và¢úñHè^ßÈÖ1ã?C¿¡ÛM é󽽘ýì-Ñ$,ê^å7Cgš‚šL¨,“Zwu“¹]_ôº¾1öëé3Bñ_7»á@ZÍUJ^ñ úr=sýgd ø:zý*s—­ô}8-|X7“ÐÜä*}«ÄÂ]û¤$ÐGqœû³æÒ¤,DB}›‰3þ­Ÿ·\r[OÔ5?"Ǧ¢Š —ÃiöV ð2UÁ†íG¸Õ≖ê;Ç7ÀÿŸÌêNñ|±w¬<þ÷e¿qÁõ¦Ðu¶¥Éw*îcUÇæn€öxêcާ˜Û1Íj< =îã2®ëYÝšµé¸ÒrרùxQ¬ÝX¶ç:6Ž?gÃç6:IçÎcšèw†æí%WÍSùo:$öâ·ÛIï_nôüá<ÀÚ@ÝÆ ü¾1à¾GÍÞ " ÜÕR;w¯á¥$T¥ùîdç` yÎÀVÿ—ñ…ªÎˆÉò³!·‘.9¯¾r~Jñ…c%0ÓƒŸT­{yïiYÿCˆÎ/*¹ûÝ÷ÊöÌ~{³ivŽÍžp&ûT–Í Ùï *“w)æE.œö¬ÞÑ׈Û6FŒöù'ŒÕÕ]™°ô;ªõÐY¯Ê²8üªœsWŒÑð'3+ö(>xyLKDe¬¥eç•L–åÌ^x 0>Î[p01wbé@xÎ÷:K‘—Í¢¼¨Ž² £àËâ1¨èÐ<é÷xÛRe˘¤Ô—7ÿ%z°6ZÙ¶µ1ptˆüx/Út%›–1Rþõ>âîŸð'ºÄ;äŽÄ´¸ #—ÿgc‰oª1gà]ê0:‡ö÷ÒŽ’ɂѬ=#)'Ùxð®Ûï[ÊÆmÍ »{\¦).îÇÆ9H'¦ãàô¬^í¬‚hø§’͈¹²9©ìŸ°æøM>Œ¡tÐ÷#ÄIµá'vG€Ý¯}m ¿»²é®[Q ¸6y_3 £Æ)<ˆækŠ/Q*˜¢MUD00dcÈ¿~©ÛÑF‚k·Ž>câ%&‹¥ÝK®&Ò¥„_•žHˆ#lv"bMÎn‡â@]$³œ!9txšPü8•Œ_~uCº)¾–ª9„|ñƒ ÿÚªGΤ`Ä×%˜÷ñWÙ,ÌZ•ÿE .€9šŠÛY#êªmúI%“Ç|‹&\sÍÑ›'8&D¸À@ ß òç’XÙž_ÒÙ&3üçÄøO˜Q" 0L K¨ë0<ïL‰$O•ðé)»§ŸÆ %¯{¶­O?'ÉâãÊ¡Òâ—®V†Ã¯'JñˆÅÏO½h¦Xÿ#‹®è®õ½qq¸µ¿ð÷ã™(ÆÔ»¿˜¦ý WoÞw£wYgç»°˜:”Šço6aÅ+éÅvéé£y¾<°•Óöý)ÛèL%“å¹ëúŽôC D2!“uìj®aa8œ=ã\t]ð„ñÄÃøŒjÏç~„¬ùZ«þŽTŽwfÄqöˆýÙ(@ױŽGUÐ dßÔ{C[dzc¸=uœì¯g:>ƯڇI— fW2ê°K¯^uü¬ªe 4€G?ƒpèùDZtÿ½¯&xWÜuáƒÊ01wbécqRûn\oy(UUF‹F»p±3Þ‹½K²Öç­ a| Is£j;4Ž‹&GÌpŒh+µK‰>ÀÀÄýÊ¿;S2p1·#[çßÂw@&©îã΋ù^"å!”½wÜNlžvÁö_$N=¥GØ¥˜ÕdóeÓÆíäÔ|Ä{Ê<ä-šHq¾q^¨¦Ëº”#hkŒ ÕÿEŸ9itŠ L#9ù§²€³»`T¨Ýæ<?³v’9™Ø "€òÊ äù¥¤©Øþ“Åqe†(¤ G@Ð(+‡©½‹–%0_…—üÄÜH^D00dc¿~·oF=~ Îþ1;‰Œñ»¾kú,•”}QÖ¯XFï äÇym®öù˜CžnË” ÀÈû+&8¢~!1ø\Mc·Ó½×<|ª]ø¢òļkì,z€ÖTŽî y!ƒºå¬ñ’cÔ¿–d•¶>Oÿ_%7z.ì÷ùÁ·ûfÛ|O´£»úAéĸ%[çù”ö lÉc‚&ÀÒhƒÆ² DøÜPKÞ|°'Bd­?’‹É;@s‡ârìbNÙ{]{6Þ1²ßkmÈX¾›|%C .brQåÿvCf¢é¥{·ù,—¸Ë®vã^wž‹—Ðï}„9L rgÄæ ȼ oì/°;€îš[õ'`tös¾{Èà0ëé½²¡Æo­Ñ¸Âj¥UãçY,{ü*±C8R!åq Óð¨]|7<¿ B…ƈS#—ÿÙöŒ1‡GˆEY  (¿çûq˜¶8‰Gú©p(‹²^òJJ´ªQ¼t 넪ټO' à ?X]Ÿh!Ö´ÂÜ"†œkzÿ‡óÃÂA…¤pÿ…cC9Ü0Ã^Ï?ãüxÔ&Óx_R,Mp8Uµ{¾çÕˆ„®¦xŠ4– Ú†tãóà ÑD”Þ…N€«ó®Í2ñ˜Î ªî‚°¹QD@00dcP¿~Ó©Û·£Œ?Ç7›õ÷¸‘ajr‘.•ÖÙõZ¥pWAž  ,Q<¼®Ø®;˜A0ܯâEÞ`&|¶Bt?dÏÏÍ3XŽ= =¬ñ-²¬í«Ž‡9Ò8‘Kï¥S—d% ¨táârFoI¿—í›ÙÌXvãYâÆdÑÕG”ÖµÙâè#È-Fùò$˜T<Î6k9•Þ)Ûé*¨Žƒ½VŒupö5U;Êž•eTáEÍëÔšë‡6±#¾Þ¹#è³E[wáé&F™ùïfW<²m§é§ë·´¥:5í 7×.•ÿ†<ͬóÉq;j#n½¨fÙ»j÷·æì5ä<ìÃ01wbéÀ©£WDÜ¡•/WKÇ×A‹>Œ]Jbp .½Åèþ_ô¯ÿq#Ki¥¦? Øxé’¶:÷ƒœ+³}8U£l<0ÅXùäªøì©+Þ ŠóxDç¯ÒJn<íë(äP2P§lÓ‘Á«Š ³üààp~”D3‘²þ•aýs÷?¦Œ^%5œ4LZÿx , U¦ýæÌ8h%8üçÜ8"Òƒ²ÿ×ÍÞBå­ û’`qŒÐT®äh·Ñ2x–DÞkiéŠ<÷ˆèÖ#¡Ä#òÆ2©m[Z‡i<©© ³våë§òPD00dcH¿~Ó©Û·£~ ®~?_{ÜH«jñ£jŽ—ÉoŸ}/#8+ Ï Ù¸Yr¥â®žµ&mÐC=Áu º !òõ¦á`ƒô×ã£T%!s!ºWDT^ö[l°žÎ½\QûõP˜)xw²ˆ‚Ð8"K{)DC": a;¿D&.Bt; ^«bVÑç°Òÿ£.¨EAkßôX+9®ÔSäù䀅ÊÀ½ S3"\ëïüL'îñ?·&™ Eý_ š­×—ÁY½1º®\½#ÍLõ1?8FóD#Žôê¬s9Æ?âcŽoP@ü2d|{Ñ3TmÌ ·nò´²ÛqþÿUOñTKqýmç÷™o!pxÅçŸ?%­»»àçGlZëØµ„‚Å㪰öXDqìð]ìÏÜ“rØž®³‘Û@¿dþÎÐwåü„„@& SôX O”öß½¡rÇëïÎ6|ùÍ”›ŸUì‚c6z©…šÏ6Us"Wt¬Èùº£U|ô,—*»qssG@žE*é͆αiOg6£n›}Œ~ÊÉéw½öÚ(LÅñËL®·,8Yv`† 45çÿKñ²5T'‡© ^;Ç ü#}PD00dcÔ¿~“©Ôíð±ŽØ×à”мÎÍøý}ïqÕ8lO l²#–ªª¾ú©ñŸ’ÑZد‹H±‹ˆN-¼u·œ·wö£¡(o•7Ã7nßH9Gž†m…¹Ö…àðGá6“z RÌ€¨Žr¢}Œ#vá½NP<—_êéöÚ1G2pNÞÄÄM†7‹­ÏPm¤²“£ Ie¥ÑÑÊæu)±ßKدÀÌO2rVíþ={±8Š=b€w©;¬–‡kÝ¿|=OиÃÍ&œÛ[Èšª $;劀sì¸C©<À¦Š½MHGýhüºG“ÄÆâ¤ctOá Â8üÀª¢kÍZoS^ß1ÃÓÇxXDd$S”UBYÞ:Û¼$¾þd‡)Š_óák½!„n]6_ÝíƒÂ1ë1}‘p?“FàZ9ìɘrÁÞ.µ£;îÛxïåßC¼€÷s²vbà3°íͱ[î«—ìý ‚…1œ©MI—ò”ùxŽ—¨ïb­íÚ[Vßþó™Õr¢®UÕf3Ôž£4¨*çRºÐU~ù¢æwªÙÕWc³ººþk§E¬ÜY¯4.6íçGï³\Øú]VìØ¢:z˜¢žÍVÍÜwdso¸ºåÚØrüY_¨óÊB²NËeV­÷)ëãIåõÔÅïÛçÃ(¦;î¢èb¶j#c3«j×Þßz²€pK|×̪ÎPGº²5œÎ¡óeT欫*üŠ®ªñ«gÙ‘Î`k”×bóîDeÚîûN_KÓa¨Û©y^4ñ6ÓÖ¾eeY\—~t–sÍZ“í·­ýßHõç][~öÙãŒÂÒÚ~9«Oß6Ð6ž±æ}K¢eÜÄ- ØóAñ01wbéÀ‹¼³p ›×¸ÍÕ{í)Tb•-8.Wræ”lS¾,2´\z|ƒ.ÇÛ,òÎÀC,ä {_Ü%by>‹7†ÿh9î}Kà{„m[våvÌ/+ÉÈóxSqÊsÃ8)®˜CPõ-‹Ø15ZÌÓH¿´°À·Ç/à«?ânJñkD½]L×t]€ÊÇpùâ– Ò‚uKLχ^åÄð3Pq‘ñDB¡DT·c53 ?ú2:®@Qç­e&ê *c¹øÇûƒ_åéâ\FnO„\\"ã†I<ˆ(MBé’¤çf–FLD00dc@¿~“©Ôíð±èÆ¿±O ìßÔ<íéÍá²9»+QÊŸUJµÏ’ñŽøLÀ¬ˆ˜\Ä`„1) I°Ã¹’Cß^QCÒ gÉÌ‚Ñ@=H[ì^lTË4|¦r}Ag²t"ONJN4éCéFôt œhGGňYñ"  œ)j·Dû@o¥îm• — êpç6z·J%+¦pˆãe·N?÷}‘!tzúéÖÎ"‚¶BYJ1ÀâÞˆƒÒ‰ûàHÕ×Ïñ¡Þo:ͳO[¦gvóBaWýòœ¡Äôއ»¿ ¤Ž‡ÛFóòæ °7vŸ’¿ä© —©LG_“¢땟r@‡òDz«³0‡Ý)®,Ý«ž÷ÏÒÀ¦"Â;ˆÜô{oäîœÀüI€by ò«TÈY¿jM?å\;ŒI£y¼t¶9_âÅŠš=ç=eùÊÊÈ4=E€ VzëÑÕãþ‘‚$1#ÌìÙDílÜsQ¿r8³ã[9ÿô=L÷È´g5äÍ Í ´3›¸ûcGXjHM]Ô†oÆBsß#³†×“—*¶Ž}@íI·ÃæZ«ÑÔš[Ü¥$ \ŽÍnßýÅ:†ú6•¼”åF‡Ç»¹ú}Ý¿sáØà¬ÐNî¼Æ@Æ"ôÚ÷=}£s¾ sÇi}þáawX'ÿ^÷s¼Ê¿‰¼¼ø»É.С“rç×.1uÜ@å¹âtœèÛ»™¾ñ‚#ˆ0}ÈYR§}GC˜÷¨åó"ˆDAÒ¤íµ.#ýÞü7¼A |ïóáñÌhÔoÏæÍW-¹By¹‡#YâÇóQýµ6¿jØr¡¼W°i–iñ@;.©‚Ÿ3—*VJ³mÚ©~¼ZNñö© VªV.z©¥O75^ª°yê½Ï@kÎbUuIuSKçŠ>•\Ï|Ê¢ªcXj¬o±›¨º©•\í]]Ú=Åž>TÇå]S޲Éöt×~ýÍ™µRhðøK˜ñ³ûÚÞ™î€ÍÐÖú]|Y«¢vgºM~r÷ó tgé–(ݯ—IRz6z6Î;yš˜ñŸ~MoTzòr´™Îݼ։àÈï¡»ëf5j0îÙã»GÃÃj€ì÷z6G‘>lŠ‚…c°vj(ÑÌp¹Õ š8ÕN‚æ9UTÆê-eYÖ´YNÕS ®Ps¾|¨¨ûå^’oª*˪ÜueÅ®cº°ÝûtÜZ]*#÷š€×ϼñiž%¬‹ÝGÍÓfU/,Ý;;Þ#^òݶ«»–O£úòµÉÙý“å«øåŽ¾tׇk~ûHf¶Îb µõ·ožç;Í5šÝÚÌWi?6|½TkÜÔò1îMÛ¶$×3ZX—OŠ#3 ãßÕ 5º0AÁ·àBptOÕ¾" h8m€00dc(³}7›ÔêvøXÇSü]sËúÓÃ~Aïê>6ôÎa#àòo0hú™õŠKß%ò%áT!‘ À‡-¤²l|a€‡¥J:™_/mòg«Ê%¤b_ˆ´a‡ò6€Åm)%è(S\—\e£¬ËeܱIeq–í ˆò({mÃÄ?Þòr!înao½øá í‚p—‹%âQo°G5šˆŠE^JÐcXRæè•ïõ,jó6ÀÛ(qÕ± õØø=ù,ÁBÿÌ£]Ó¿†äú‘Ø/&Æn箨»}Ö~{ðªÅ´ánë@ƒ.„ m:®­ÂOîöâ'ÇAz´`u0ÀbÖr_<ó+µw’¯.¬Öì`Vë–lÉ=ý`ÒákÓi%®¨¿w×âkÃÌàÝܹ¢}銸߄æÊú?K¡Çf¸hîíwûòöÅp|C4ÎU£btú™§"±þÌ6¹ðÉÎﮢ4(ŒZL¸þÞæv÷sýg‡O„<^Ûx‹óÈ_vTáÎ8Bd^—8Oä¶É ñ•:D€¼ˆFŽbú9< }Æ×(7òš Á«åy2ªUeR·dWDî~/oÉòKr7+)ûÅlÍÓK¥0þ%-Ñ4.>o@Á|þlôÊ]njs1Û£(Ô Üð„Ü¡¡~o{ÔC¬öN€µþ3¨”dJæ‘—?%'·ûø²ÝHìvªðQú«þ'd`šH4gá½_c`I%^ÚB$‚Ô ui1GKì3|$gÌZQnÍ÷,W öws¹kŒ„V¤EJ€.4M·g󵤺ø¥ÃŒÌNésa~Ðg†g32ᙕε¸Û[Wçõvœ6«+Ϋ8zçáêû­“°t}‰4uÕFÅ#UœÜ Ê ?Ì•Ø~d{$cæeMSœÎóñO‹ø>@È(€% XnMÑ…M'lsa;µlˆkUV•)î¾7ÅÓZ5Ž^ggeûë‹S Úa0‰³³„à1qx h+ɨ—-ùAÑb¼KKË/ËV]¾}¬Z½ 01wbé@ÉÄ¿6¡¹µErWíÙíQ \åøˆx.‹ï}÷¿“Ud;ùÞ£tK€sFORK(6šT޶“_š=žºËFâZ gÊϯôYÖé7…‹ÏU3ú((‰,è5AôÇFäÅ44Žœ`Ô-'¿d^jDnp- ƒ‡ÕÐg !÷ÆR7Ê*0ϽÝ8Ö{è@䶨èß•^£à³-ç+Ëh·ËôyÊ=/2EºHñUÝÆJÓ£¨âQÈ£”öï)Nÿ¹<ãPt¡ŽIÎѪ ñ.ÿ!øu鶆©­«â \˜i j¤S¤ÚHD00dc,¬|‡7©Ôíè³Ř×Ðü ا°¡_Ö^›ô÷óA·§O¸éacàÓìºXCÂM©O¾«ª¥Yõî"ùŽ”ùÉL„8Ê Š†€‡xd›‰uÃ¥8ÐÜÍMÏ7ývhï‚Ê[táÇF1j],Éå,’ø†œ(2hh-|1ÙO5G® ¾û=ˆq|Äzkä/Øn(÷]i}âY„ ý® ¡0×jU>ÇŽ„‚]žGEwf1ñ§ª®ÿbô2ŸÓ„Û¯æG-N~˜ŠÂoñMz¬®Šâüµä7t¹8Û^¹Þ~Kµø£Dºké+¢6Áb(hÂR–%o«©Hè8Ÿ‹ÿÙŒ¯¾ïàЪƒÌY6è‡$C—*Ä”^( kU„h3`0¿»Qn°K‰g1á_. )Òæ×…ôcikë_"±†r]cð!4fiÿóÄÃX¿¥É©NFYµ8í‚Ì=äó‡Kz0ìUÄœÙÉìaÔ¾È3E5Ž€| J_X.DŒÌþÏŽÔ²ÚÁχ<Î9n±ÿ™à—=„ıńs·ÀOøqÚCÕ:öÝ’“­tš?'EëßÓŸzÓÿºu…Ø—:ˆfbg^½ZtóSçñæbLs’ÐÁ™¦˜G³\òvZ^þø£Øþ>Îö®[Óã?Ë1ç]¹> x®-‰ºÍ×#•=ÜH¢aøžŽSüJ´´ÿþâ]Ÿ,}4°ÊÖ¦+Þh3¢%}†{9:‘T¥èïò}þÊÇEyw¾µ^“ÎZéï)]ž=â³?+ßÿ¶ZTò§ö?F{ÇИáþˆ°ñ³øp‡hçbMxu(•·`‹ñ³Ô‘{Ž¥¥[ŸÜÎUuXå°œnþ½HæMŠÉ•׉ΊÚC:¦U ,wþ»‡öPOTÕ#üá倗\¦Ê! ».û:%ѹ^÷Ê¿<‰“9hG17‚IÑЛè݆”«¥ñ1þ Û ÑS[ÎþÏG †GÀ=½2—"r¤È½sn¡-{“'Ry4ƒÄ줕,Fù]ãQ‰.™4£oþõ÷ôrsþ•E– ÀT6ÆÉŠt‰øÕ圕AâøÊ™@†ÇæçØy&†·«KÙ/ù·[(èxàܦ¸ß ;æ–âžî¬ÈÞ¾'߃bÿo–búæ@£øc1m‡I<è›P ˆGJU®j–HD00dcا{·S©Ôíç,Æ,³ùß3Co0Ž×¼{gÌ=üããog‡™ö0Œ±ðxyŸ`óxGÑYõS⚨­÷Ù>sæ¾›g6cE6B¤¶2#("¢"á”m8l§ËŠ«Gª_f_/;È:•‹¯•ωP®êtÄKb`”Æ‘´ rYéCÐÐ…dR«çÆ_m¨ô²loCîã¬>:«ÆBhj> Ø¢æŽv<ÇÙ‰ð'Þ'öPWÊuߣ}ÿëÓ|F¾}ßj_¦;ô¥*¼!û ì2²â?6à¤xñ¤Kâ!úˆtDbÉL¿&_ÛÞ~ú=C»×²MxÌÓ¢«¤(Vrä¥]._ì"­]v®ð#Ìd›£?­êÆÁ©÷Tì•´Ø÷0]µPµÊø±Q¹üæÖÿ—gåÏ—é™ÔëŸ6®¥]°?é bÅøÇìhÖÁ}Mα–(¿ b.|A NFAR]¯‹ t‘Έf&,A˜¢X‰×¢•»Oµð:iŽ…ô 娔NÄΖ¡§ÓLÒ-lŒ7'>cMÞÓÀW[jRRSÜ}þ‚­;“µc“ùRŸfnð¦º-ÏÙ-X'‘Só¶ Ýy抖€Aô°M-Þ{˜áµ/ÒÑÁø¾ÏV0vŸ¸fÝ8bÀQ¦ŸëCÿ~ó§oú©)¡“—}XkD~y¢R´/E߀…œ4‰ÉÏ(a<£“œ¸IÃÃöbÉÌÅYÈÅ·$拉r:Jêº#túZtú.ª»R· &©|$¾B:yû«äÑÌEÚö¯z€Ó&pêu@ÕÜɡˋlQ@‹­í–òðÀÕ*v2ÿ£þPº…Û²Ë7.Ýž¥ó »F·«9h÷‰0fž]:´ ·`ô´õ³€lö ñpÙœÁ—V©®"Ìδèà|òLÏØöùZrÎ6ø#,ß&PùK8Fr~Æ…¦Då3¡äòùõ‘äán '·€ˆý~|Ö)(:—æçý¥*‚d^‚ÞCŸ‹ƒ@A¾ -jh‹Ô’«¹f⸉ïÜ7N8µÅ³yÁ¿øf‰'p àçlÎÔ’šÛ×Ôë˜ÊɱۗéÚ?“y°æN½t¾·Ò^]T×ùéRàÌÕqLýŒü—íã¦;ré_}Ž‚«±ËñÇ›Ué)ÊR4ÐT½U(}ãe•¨?þ®üLÍ—ÏF¤í?ÏJÏp ö‡3÷ºøl£9;rþPÇÉ<œ„Ë¿úÌžWܹrîŽÀ\ùòT.gzöˆJhÍÜ›a˜?›½6´€)]öQ™!™^ð‹¨ÝÓ N< Ê•9ª¶Ð)Ïsóz„dÓ‘Á¬2@;úÜòü\»sñËŒðÏÿlX]Ç_øfh Gû Fжýü%ÿäø(⤳s^?Z¶V*Òsÿ¿\›Ó)›ô&æt,Ñä4×8Lj·ýÉBxC‡WŠù§¢Ï§6:-–1iÈþ:†+Q]²xOÀ2K˜6L0£Ëy>Æ‚ ö h6¸3GÕðÄ¹Š æ¨·*Ýü¹7Éÿ#äÌS"Ü™( Á\f£!ØÖ¾ÐK-k`D8;S»5}uË1¥ÒöOɦ^ùÿ̧F>„þín©±Â×½ú­îšÐ_,ÓI²iI0\øØŸ&›¦ ±V#¬´ÁùíøoüЩ=1ªH)×`ë®Üºh«C–æ8³óÕÀ‡ÀH 01wbé@¹Ôç3ŠàíL:“¬ïÛ?ã’WÄ'é!½òòþçèüG$ë)ú»²Èg¶ó²é¨P•`2=ݸðVÑÜ‚¸7g.> Ïm9ÚC™³Ì瀧ÇŠÈÿ®ÀBÈ“©Ú&:¤µÎ*<Ðm‘@¼À9‰ÄycàÉ_N=¶y·ïdïmÁJϘäÇœ7ñGŒ;zŠœâÊû3( #}[éewÏi î1!I•+8Xwˆ ©3^"Ûã6ÙL.SccÙ³o!¶{õ—²™aúï_0ޝ‡y8H §©6!›q#FXD00dc0 qyNçS©òË1Ô³ó~$Ÿ«{jü8yú’xgÏãó‡}3¹xl‹NåüjôáQ÷D}¥ªþŸ*­©µ>Ÿtrç®:¢ @2¢²ª ÑŽɬ–± ”Ðé詈˜†µøªÇ#ú1`ÿ*§J죥\?ª!ä A(ƒSoëÖö7y…éøKÆ®†ŸäÓiÚìÁ€ØÅHߦŸ‘&G~-;ø;° . ½dä·ò *àvì5÷F¦ÀS顺&äš‹Ì9K­^Üý_Ø«& +¬Õçì—« n’cPÓâ%*J«üoóR@˜2HU.‚B:;\¨B•ωIƒ a”·l©#á¶¾üa×KF1K/µä‹ ·¸¿È7¦æ¹ÙuJßtÎ¥ {±ßµ:?AÏ#¢þF(X¬û}€i‡úÊèÖÒZÒ*W4\Y´Ò>4+®ñ«î\$üd·%!õZ’HûNIúVÿuLW‘X†ÊDË•v.ûI¾‚±-æÁ8ߢ]©TØŠhNÁ¸ä‡Öf7sjF9Ô4YGLe;¡ãfL~¿Çô~Þå§hH ÔŒM©cð÷uÄÅŽIZES%øœ’•48¿Å£ŠñÙs¨Jrª©ÝÚù¬7ñ«æö-xšÅÇM¾!µó6‰)âŒa°¦³h‘¥RP(ÿP3"°YËò5§É†}§OÔ°L•moi;.ðœM•c݇áä‘aov `š²O˜g³™lR¶”ÆfOxg‹oCª¢…¼ž¸áS]î¿ß&ä¤Ðù7—FÇ݃0ä³=Ñ£³Òm>FpÀ%4y¶‹±±é›¨µ>“¿<öÑ2Y÷à:0¬ã?̦š±f zÚŸ§-Õ ¯¼·ê_5=Ï‚þ>PSê˜ñ4ZýçŸÏ™XA¬%/{̓è‘ו[ÕD‹ÃX0ζn¿äÁÜëk‡<Žw‡4`³óÐy–ÿJùÅ¿éC#K9ls@¹ßR,3ù²žübû)}ƒƒ† ¿aãýE_ è”Ëú·$æbó'¯Ê˜ûÛ˜§ï—Ú`^û^¯0OŠ”8tɦަ¸øBëüøÓ_„óòÜC-9w (¯Ahòý{1Ë%eÀ±å¤örS†Ï’Ó“w:š7›‹qï®}d¬À–AòÉÆìœ©ò³ƒ8Ùy¯¸²Å[ÞY™£¸NeÌDIÖ/8f!v¢1Ÿ!µåúýýÉ >5¬B䆣K¨û·d>2tÇÅdNx»sé>ƒwè p&EQ`<'ÜœÈ ³iOè}ªÑõ3vÈóÚ3ìv…š®¥06[7@lÈêL½–ãûäÊ—)Êäª‰Š »ØÐåý‹\ìhOrww5ü™bÞã,ÏdµÙ1ø€t€01wbéiL7`Ô…µï>åa_,Á]½Mâèèò/É_/¬»Š}²øÑçë.EóáØU»árìbû“W@_éö‹ò"²„ä#Ëä×ÿ/sðÀj<#Â]{ŠHÙDô!bWëÿC~q„œlü÷R²–‚y„U2Òz'ß0˜xan'Õ¯Äù¨„ ÛÕÐ ó—Ák‹×,0w½*‹SCKÄäˆáðÒØÜôy£Øÿr2–bïØ\ÆŠ™pØ"2¾˜ñŸa?ñÝU‹¶¼;Tv¥Ì}xL HçÆ)<*Ah»iÅ€„pvDD00dcTœi8‡S¹Ôê|Ë1ÈÆ5®€³ÑæîO†O°éó’|ŠøgÏãó‡!âþ|pÙFÎÂOc6½ò«í«ý\Rªúï¿°Å/‘µ(Oe$OmtÝk\öLX¥ÈduTUD$dÄP4DRÑë´s}˘ª[Í‹6 ù&®Ûü!@¿¤0Þ›eò)‰ìÚºÛ7œƒe°%1b Åfn>9û!ØîìNgÙåª!|ôEcïL&í„U±ô÷^ƒ:…è;Í^JεӲ¢¨ F }ÜÆ§¨ø€‰Â=ÃöGoŽ{û˜|Ï0»'™îûN;Íçm_g›€_WÔç.Ò ïÞÌÊ{ô‰ÒØ'W"(T •ÄZ‡k;k,®£PµyeT¸G÷õ;i¾åçaßÜç¿qܾ;5»o†²å;íì­›[5Cë÷•BlÌ 'НDÂ0yœ $4–à)Aà®üÔ ç&˜Fà Ð2„˾åþAé¥\b€êZý9܉©1OÉS, LxrâñÜM4à·š|¼Y©H ñÒ#¿×¬ìòõeªA¢ :›gEIbˆçØJS}ˆÖÝ‹:ÑÁ±rIpGŽZ!Êz¤š•jÒze…í$²s r áD|DS£FsUp00dcðœi8GÜêu>Af9cZâ~oG“y~øs£Cí<žSäWÃ<9ñú†ýèKÑï ÙZô$ìø½=ˆ”÷+!¶L|òðÌ.ïÉüÎÌȵ E§ôîäÜ—=4s–m •)¢Õ!’Y%Q•!PÍ26qÞyàʢq^¾L sX­5õÑáœ*M¼»:š0Ò†sÙY@ ’=Ÿ…ï¾/ËèMrÚÜ©#bŠåeÄtózb•l‘z¡ ûËŽ÷¸À^ ¯yyØñ½“¦µ¸Þ¸…iã%qCY‚"‘qÂ[ÿÕÛfe{'¹°kïš‹@y›ïS¾O äQ8Œ  —èÖæüÞ×;ïjæü:ç›ö+ØØËÒÔ©+Z(°l&8ŒcŸ!W2oÊ»4™ùˆÍúŽÉ“×Ë=|áx}EÈxA6Aã$ì!eU7ÕÐ]°0 •UL›¼dW(§;‹U®ýµ°Ç_©ÕA0Á&Í!?û6í3áÕ,öÜü>L| ª¿i?âI“÷Çÿòߟ™”è*$« ©6ÇpÕ·—.ØÀ=@¦ÃêšœØÒ8Ý}—5ù+ž¾¥È¾Ó™ü‘¡‹‹mR>M¬ˆ‚Øü|?üÅ7žš3˳^HP»LãS=jµµj{”ÉNŒ»ë`@u^«WçÅåk5›QxÒÿxl…™ÞRX_gÑ.ú‚¦GfqŸý¯ÒRÛ¯C­¥1胩¢pë7'Hܰžtõ!.ÚWvõrF8ÖÎE³èO ðõƒÐù†¸ZßU;E¤0MZV[ÿ(•ÿ(5(ù-‘GgTš©(ô Ì8’ÿ) Cî4À‰¤ãCp¶æ£“9¤cŸ±/–mVïù²¬lþ ä£e. Ë‚6Epfò]¹¼Ÿ‰;vä»?ýäýÝÏcQt¢‰í»â5QaAÞæÕkMò«ž_"{ü~dü+ê¢12ž›ÑÁ¹flÎiþÓÿá@l[ßÏßcÂaÝLgïyú—÷Jhãü`ñ’ïEÞå?ÆÛ¬ïþ3n'YÛȼw‘«èH}t[º(ŒF«UÚ)åÑw‚?ŸÓùZêYÇ;v3\{çÐ8E÷“ÂïÕÊãù›¤¯QfÅ 9­õ0ö"9‘õÇ¿„Ïê$·ÅâD {– ,´j^8Õ¼5`|yú¾}‹)+ûl›“C¸K{[Ù—TÞóÒ)¼(žÒˆTû 3QÈ=«®ËÂX ¤Ó¿fõ¬„¡=ÍÍ=ÎöÓÀNë@š™ÞŒíõÕŠÂùpþS^gÕbk}\ï“ö\»Í­‘ò{šBÀJu†Ù»‚H‘ÇöA (801wb适ô½1†%Wu¥»gñJ\Žu&¦<<7¦_{‡ÖL¤ÕèfÇ1òÙqƒKg¢ÒÔ½ .: üœ°lߎÞ¶BÇhH/gèJð£UB3­áBÅž±Åõ×}x` ìmF˜Eç Ô<†»³#ËÇÀþA.9ãXâþo7‹³®ß‡•M ¼óÔîį†xsãõ ËÀYø½ŠqÄ­a9 ?7ØAéðàb÷ùŸcãCðHÞI¶§gÒ¹Åõ?IýSÄ›äÙXô]=RæýŸÖýTínVÑCMA3×-§×ù‰Öåz 5c)2!QÝq‘2fÓÐB­\5mãïwN6Œ‚qEå»2ð 2Ï¿'rò®¤íFØ@©îÝPžkÚ¿?‰Ãú͇£G——Õ¸±qDª{æ5ƒ˜&ŽÓ›d0Ë3œìS÷Z‚ ØÆÉ'µ¥^ì"E“Î-¶*‘³Pý#¤˜’Ék >«Æû:‡9ßbÈ‹04›˜±§ã3ÃaL'CÖÛêñv‚ö˜œ—aÒ+Y>-ûk:ø[$‡ceÆÕË;XðjkÚkØäÕèN5˜¢×ƒÛÇX4'œà¯ÚØÏ Qw» ®1iåG…îÇ¿á Ì®øÉÍlf³tÆmÃñpsšÒî¾ùŒÞ”ÿåßÁË~ËÕS)J^I“Ì¢ýFYæ7³-“š½=Ñ\¶>žÇZça£”ƒô¥/ʇ„ÿ*]ÿ# @z]"(Òt3ˆ5`pì};iv·XŠwyíß[-@xdò¸×IåM{ TòïÄ< Gš3±Íަxi ¤&¸˜sŠ™ƒ°º2,•Ê{0~O 9È->ÔÖÜB«6ZïU°f©Ý걋[MÉY€u+‹×É-µSƒ€³|µLaGi9¢Ã€ó;±ë“\´û4¯è³ÑPææJ¶ÛlK­^_`É$;+.OÇ¡CõB¬ö’o׺CóÄOÏÕýÖMdèx0æd%;z'§‚dbÓ¿üo~‡ìà ¬øØD½ ù›âÃ1,’]ô²vSÃÀ¬ŒEš]³p÷Ò­»ñpè4çˆQXp4¼G3+M »´\ÿïÉk#ÿö^«¡íÜ%cÉGçc è/p÷ ŒÅLÊ xãÊ[þ¼‘‘×ÞJìyûÍÚ÷4Ò½鄾Q[~æ¥+±ù¨§$…©G{C¾3¬${ÃÁëÆ%4,.a‘€›g÷D8ðɺޫFºÛãÜ{>ïî{(S}]þ|G‰¤…¦E"õ$T {ÃW©Á¥ xÿíÌÒ$ÎÇëy7Åý,4 xγ!±§LY,€yÛØ« <Õž“±Výpᑽ>0îû”;±¥„·/æø ü !–2Þ)x½ƒeŒ;ªt  û2ú`;òêfB¯}󫾟W 4Òƒ7Á ôê:m^’»ÌW-D¸¾ÁB†øsëŸ]·urç¾2s„›Ö0¡'Øe¬ 1¦%VÓå´5Tª|‰šÃ™Ö,-Á¬'6lÙ±fÅé‹b¿õMñks¢êasÒ»O´q,c0çù01wbéUI‚Ó9øu8þI‡õÿ]d’ŒŽßr‰1pß8CÌÿsRÚLoƒ6XB]¾#ü^ÙÐ/T³ŸLkŒEí¨ß?’ÝÆ5g0ÃÍ"tu£ãÅÞyÁ£$œâÒXÛR饨)‚? Çq^üÜý¹q õþé%’§uc×"uÅ?˜&#‹}ä¿2ªo¶P¿Lp“±¼ìvlŽ#ù!‡ú Zå/—ýqÄø!ð+ì¥Ý’¦^5âè4Q‰1ú~sæÑCèÿøW\»?‡K!föØÜMä?`‡)¼‹§®zF!ajœID00dc¨œdMV—ÁÔû¬¸æËcn»~Îλ|‡Šx7£CÈdïì ðçǰìøãáëC‘ñ³¶gÇOZCz=‹OÎü܋ϲü 9wÇÚ/$ô=°uH¼ñb¢ ¾Ÿï~ÏíúÜæþ.¬¾B0^!¢1çº :@Ôñ¬”»ïþïŽÀ-Ë”¹jÁ Ë€<ÉŒF ¾?»ñG¯)@ 6opï’äT¶èÇΖ}wXõóá~ãФ©’Q/(r}jòkƉU¼)Ä+»AªQÓgÈØÉ–·vîeqÇ£>FÙ'/rT?pÃÞ¹e­ïqô¤§9ÌÁÊ“Q~4å³YÞƒÝ=ÉCHžÁí’¾OLž1+œn÷þ]žrkÆgN/C% {Dh‘QFˆ±Ž<] ÀFÁu×DëÅäìÉ›ÅýêOÍ>L­Ç‡…úf÷äòÛßåœé~ùck'&o-®fÅ^eù=¶ÿTÎJ„üÈ[€°Nʼ‚80Ç1=ȶsÜ9y@“ÌØ¸Ó|‰”äÍu\ìYr@UXG)‘¢KÙF‘þ况HPäÞÿ(ª7§‹ÌŽrOï§ít.ŸºR,ÅeÎT‚ú[.CÌk`«´Ÿ¶½jð:Câ~¼Ë#d¯43ÌÃò'¥!„Ð¥FûiçOÕÇÏÿ2•`©˜ö ›Öô+–‡„œ̃@¼Ø¸ .¹ìlŠÂÕyÀåõ6d£›–#Ž#ÀÞlGÇ,€aq(ž½á@aèé°ào6DéÙ­Xmê(}Dä ¯Öo±ÆŠü:Õ:û›§%Ë ³™œ®aBZ¤rÍãM”,ÊZñ|„˜lNMƒÁšxWoHÿ\Ú¸xçÙˆ1y׉7ï)œÔ}ßï¿™Ö3トäÿAý$«:/ÈÀêãš!“?ºOR†~Ÿ\}HIÁ@;¦´.üd]çš(›ó¦¸½ê–ìp5àÉþüªÇÉߎ@X£PÝx°<—lQγùð<Ø4½O|2sÚÀþƒ*º?ÃÊ·.˜Ñ)KLúϰ4›öH •w'“³…Kwù„}’šJ'øÁE©0ß·o£>Fïoä£J~Ï$² Ÿ²½WòÐàÕwšUJ€ïM¬ÐJeÒ_ëŸS´ÉÅÿ8ÿÞÀï’Îl O½âAÏ< Á !åÒ‚‘‚\¤ÌW…/4 #]ÃÜÿ”9S~ÎùçjrÌsûr\±ÿ›½±ºB>œ-Éþ‡®Ê5¡_˰Sõ>h[)PñÉ?;}LZï5 4‰ç9ÅŠ››ž«o6%€w™º®Œ€lWƒ5ž" BcÃB 1—[ÑcT|mô &8‡Q¼¤UÅ´ ’ñ`ßlEš·"˜¾*‹ã[õÒSèuÊûBLᅫÄùçkºÎåü çðD<›’¥ˆâ®ÇÄ!Ÿ 9 « 8†GGëªþ/g®‰_߆ÍúÏ`_²Qu9ù®ˆ¼û&€Sˆð—8²jŒÏj>Å3'’ÇwYé’í®,±(PÑa¥¥,URãëb¯—Z7›zËŽ¶ _ι¦>Y¿µv†nk˜Xîîéù ÈPÏT00dcœfä¬K²ºŸlŽ1˜×W'/Àñ»:îƒçsâh||†@çì^yê³Ãž~çØYùÕxGÆÏƒ€ìøp}ÇUà<†ô{…±ë ÷¨óçë»çÑ»¨3½­v~æêzá¤J ¾íî~¿xü.e[«ðÇ)æ ‚`* ©ÌŽik‡.OçíÜÄHsÄñƒ?†|ÿíZ™Š¸ë¾üŸôýK˜é‚×vùO(ÿàa Ù3Ÿ8`A»&ÌÝÿ,;ò+0 ÑRÂg¹„ÄÕè?±ôðÕ™pùÐ?’ëçèÓw†Lw_n¹º(¹ðVqIî–È]³ÉâÏX®gÑ<„œÜÆ”Âw÷ØqŽ?0ý؇¢ø V×b’Ì‹ d·Ä/ïâ'¬ø„®.‹ÔÉ$êg/ê%n)}SzCeû¾[H-«Éx›j,ÍX“°Uåøú»¬éih›vÓ£G£dò®–ý”±zÏ€”ŽÙØr·džÁoÚ?™¢XYÃónáçƒÕXò¶ß1èg%üžonç^œêddÖÀË<'Ìp|xþ–ênÈb[Ø¡ç\…=Òù@y¶<ì L7º)1ˆ©œ øÏÅ)µêu4­ryÚ°ãŽS;–ô ,OÚÎÁØÃ ³c¡ógñZœ½Ûò¯«l'Y0otrvh!­zåoÞƒI%Ðbéà™4æ~ÃcéJƒ=h0ËðóÖÅ)Â_Px _o£ãI€ gšŸ£X`þsOÒhǧ©Æ„`Ë,bñº.x}}»w,ò°-k±©€é–Ï,÷â/ÄÅ0˜Â°¶Ý¯ÀÓø¨?]4éõËÆ1[‡PÛö5ˆóìÄIq89±^g7ÈCOoŠžw§Ÿ‚}6&¯Sòs½7Ñïæ;›ë°À3àÕ%§öÖ¸b#O@b­7%jJÐ1}Ò8û=÷.ψl'}À }žÕ4Nìº)V¹Êi6Я¤9¬xg“UÉ®©¬ÜþT­ì\ü S lž¶ý¾×/ ö&ÓSk0*,¹×¾­»®y–U¼í(˜ž:„"Ádð2³ýHZ½‚Ð'xN¶öâǯ ôô•juZ½_ÈÄù¼l'‘¨†£°»^/1™ûtÖÍ%”ˆ;i²ÿ9ˆ˜f÷Ü×kk†o#Ï¥Ø+…> ÌÜ{gñÒpóÚV“ƒÆ›†_Šž1ndç_àüûÆÄؽÍüàŒ•ûî<°é¬ÌŠ\D7ÁPŠ–=€Ö4 jA#ø3ÄògfÇæ#IÈiQýJš ˆ?€ Ö×cCjÇkóÈî2y\ ÖQqãÓü—y{W£#äå3þG¥qÝ+® »rè ?bnŠþ8:ðʪºmþÞñíu^þsÚÈQFO=1r¥Þø‚±U/CŸÒůÆí„Æ#Š{SMªZfàe^&±–¾ÆD?8Y†°š™·°ØÚœk¸åø]o<3ëÒR»IiÄÎänx%Z‡™–¤§«L¬&OÐ'äcÜç=;—ÈÇýuYø¾D§„,Ã\¹»(.¯mÏÿÝ&GSp*ÓYÿ›ÇÙ‚0 rè<ï9”Ü/ï»ü›W"Eý·{Ï—ïþ{LèÑwKeGÝXÚ±þįߦ€Þ¿"ã!@ø·è^å­\ññÉ+é¸'èí «Ã–œ£=ŽùËÍT ý,ˆP@ñýoÞdØ€9¯£Z¸`Ǫ¾iáZ(DúA¼Æ¼šwÑ÷ѱB„:aRƒ´ÐeÑ¥¬1.a€.ë)¶v*,‚-Z‹é5sùZ9jêÄHCŠ/^{3™!›ãŸ/íR<ˆÑðº›ôæÇ2:Ò)Åê<ÜÜíÿA¼p¾¬"‰ÉÔ&õ>’cßÄ.¬Ö5È5þGE{ èí¡@oíŽRº¾s! ö3È”F«ïë ÔMfpùöLÅÓ_Š·+Úe9±]±î&}¢O´j¾^Š+†ŠqÒùM ¡ò³ÄWÉœuaO“q\XQï-œ ¿å¾Ed¥Uû«Û·C6DŠi?Òšl»|êA‰κÒÖþH´ç"Ð8®`š01wbé€ÝIïYñÞ ¹è_“\š]Ž”Ž+aúX®óÇ0eäiH_ÿÓ/LäßzÛ£B÷¯2ÙþÇvˆëçà1cgš:ò?ôž<ßV™U¦ø!gR—Y†ËýÈ&áõùsåßîÝ(WB9¼ûARÁñ"‚Ä`¼‘ÊÇ äòõ}›àÈ5 Š[·àȼ"/Ÿ @N_ÛÆ^øÔ袬ŸýÔÍŒ/Žªm€Ç¶eÐƒÉ ¶ì)øÓðÏË9ù'|Êûþ¦cc"ê| ‹‡²ºG£ ]%þM#Ø#C0Œ‡I&‡Èºý‰>y> ?SÊ=^λ >_3€á<éð']ß<?™©ä7ðüOc0¡¼†ßÚ¸Þþ ¿?v8Þv`}÷wÿT†Õ÷ߪq½SzPV%Ô@çP]÷¿_¥üWrw/òvèÐÁ$Ù|äLPäß~Ÿb÷÷þ{Æé(Ô‰d¶D0…ô[bëf>{~ƒˆ@„•­ºF¡ •kzm¼_Ässõ,/¥XüA-z­oS)hdü‡ëáÿ»6èÍ”YëãëüœIAöÞÏõ0‚®ÿ«QŒ½{“Àà&íýÛgþ‡—Ê^ ¸†®ÐjŸ–³Ëp“Õæß>È[ø²{ú‹ROÛ˜+ûø˜Ij Q¤¼¢š_/͉öaðöþ$ÔKÁݳ9°¯^`üFf¹ÁØPÞ“ö ß`­‹ôµ`n«â ÏýŒÇZ-zw ÞÙ-çKI´GÖcbQ ahSA,æºa4s½¤…G™Dzï4T~í8('2GáÐÚ>Û833ÑÔ{6wKTL¿cs'ïSŸK7y}~Á².®(ç9xzæË‘Tmœ­¤Udü‹‰ùËc¯-eØ^cº¾+I¤d¼>tSòù¦½¯,Yê,‚~Ûx‘åàk]ÁTJà,߸|Ò$\5&rÍ|¶7ß&Ä¢¯’h´À¢;-gVd³%,’”Ó¦ a~™±W—çýö!žk&y<üÿßà}hÄz×êaÀ£ ”÷›P5Ø"Ÿ¤Ë£‡®[WÀD“TTOú<6[KXŒÞúW)ù;âbÌý}<-O~Ü‘D?‚öã•I¼‰ö̺ýÀz}}ó¢B#ØD?{±—ž6–†3¹Es¿7‡úƒó&¬íÒíIÜÉ'w§É³iT`1rWœç:ާç.ú`æÇÔ=ƒb<ä»Ã×é=Ö±7Ín|—÷±~˜| l^À™¾pqÍÁ³È‚¿ c^uìyˆ1á#>OwÕ;8MÀÜ?V4–Sa\¶¿|Òç?X<düü]8¼t(MÄ­d7 Ÿ±µ߮瑌õ¼ýï\šôš¿Q€»pI9ší{óÆÄø5«Öا€nh)ª–`5ùýi‰ @ƒä”>œ¦¦ƒY°>ǤýêZrK;„a»m¾/æÿ$;öˆIÿõ›|öñ¢!Om1}Vm*Ç/:li éâ” ØWº¦¶%‰Æ=|ØÛÛÎЯ$?/Òtõ…P²ï*:¡ŒÈ¶¬¤—·Àš#½6<÷ÓùLsãþõ_ü´\C:5¼¶óуò„ÿ¡cL²²¦Ñï×kjˆ€LœšòþˆxL\ÔU,ýt Ùo—¸ô1WïS}Ô9ßÀ‹/¨ýÏ|¼ù«â¼ ±Þ`²kÙŽçè,›Ru7(¯î3±€;\.@?¿ó¯ *·“Äpd\Ç‹ãó‘Jq,Œ‚6f`ØÙà=cÔÑBÒÅ/}»÷WŠ;öŽ.?±ï´†nïïæÓ]n~SãiµCHïD¶,ÌEcƪDÁƒ Uô• ÒM1}`ªÀµEAP|‰^tx(Y%Àîpp]°!âÓü™q¿!Ãð}Š´¨ þÇ]÷QÕ¯öû— n;M’8_Ñ. º£"ü4Ž61)\rñg‰5ú Èþ~v{âä–aó|UK~|·]„S¾€·ÿ\øû]º[™ÞD™%yÓ[XìG»ð_z¡ìHâ ¹ªª\tûD/‚©DF€F¤a P4O Ó¨ùûõx‡(ïû÷Ø-ŸŒ²Û9ãÆÅþ'>FÜ_`&ún:ÕÕ>•(|¶”I¨§Ë0nªbiihÑÏ5 䰵ܸÕ7jšÑù.OÙps̸ª§ÐN¨XlÖÇZTÖ‹&îÆ͈Z) 01wbé€ÇUÖ¼ûÁQ¸YÆ-×Íu‹“3øãt«(nž•Q:šD^²xË¥GàÃ3îOù?›Ö²U7ΰ»…6÷—Ao5&o%ïp³#òÿ=bZì0„ÖšK@Ò¶] Çžåɳ“ñ壽Ñ ¿+³È[»ÿ°Ë÷èY|—Åø;çà_œÃ(FõϘMbHÔ€=²Ã‚[Jz–q Qiê—51_ïÓnÏĆǰü¤À?n.èË­$„"âd'¸˜Ëò%;nùUÙ$â Í;¨ÌeÏbµHc‡)<êÅSžéZûóCóyPD00dcüœnd ¶ !#îƒâÌN]Ël#ð|,æÿƒçsôi¡ä2_F‡Ùsã“Ȭû{wâþ» <}Mí<ðwÏ“ôuÚ„°ú›í7£¾|òš^$•³,’FúM1mLâŠM*šI€Ë$Ú©ZídjvÞÍŒ-Ià~Y Á͉]ž×”Ÿ™ù~Qø5Ø}ȧÝU=92™ü÷}ÿõþ]+)’O!gß„ZSUýŸ£ù­¾ úõo˜\Ÿ6I¶È”Lœ íx}îýÝÐKþßïÞd‰¯úûE‚Ô~ãh+I]¶ò¢Ý.xäè¢&ÝuêUÚ08EýÄÍÓŸýýÕhÀK°”Sm ?ÈIbZGøGyà0dÁË×½[Øý„Y´\ø3ð Ù…Ê7õC Ï a€×ÉvkgÎÄΉƒúoOF æ†íÕÅ«‹ËUˆÆ÷5ö§æÓ³™=a5Ä.~ª&¾bèU.Þc@mþX d Oòêíê¼j6lÖ7Zæ÷CïÍi1Ì.é& 55WI¶ž6¾ Ýyd$ºÒM¢½Œ¥œCùáÆ’èóeźeÙ$-ÅÇZbSBS"cÀP¨zÎ!Z¤Æ+Œ»¬Œ‹m¶Ô¼Qëe£V5l«¬þÍæ¿5¥.Œ«Ø•ù5àŠ­pæ8)<‡;JñfqÛÀy0&m§m‚•©†b‘]½A’Ìæäš£Á Ï9®ü¼6XÆ!˜‰ê]Žˆ†«oV¿îÙŸN02¾fz°z”á~pj$¸h®šüë–e¼lƒ‡!æ3žõQ`ºY3ãèÓ~ B@ú]mí›î+ƒ±3pX¬vmÐÔbóȯL}\OuVEëŠÇÙ“ÀCµ’±c¸ÕY†FõúM¿¼Ùö²Jçå÷ò-­ ¢>¯dû1Š”—ŸÿB-ÉÖ_ìMÇÉT›k5 «Â.Š’¾ÍSi‹=”Ûöƽ¢öšcƬø“ ÿ‚vzÂz0 å»NÀ0I0=ÀºÝΚ.ˆl¦ DÙ²Ù.ÔW³QPÞ ‚D G×É@{͇å½$ô»^¤Hßv!Äò¹ä Œ(Á µÏ“jØ„HÀz3±D›& £b]Td—º@5œÕ‘–ýùAOÓPv·Ÿ™Æ'¶À„l°C‚Îüê_¦x!šòΫ~tk°±W.CaõOTÛ çÁ!ˆ¤ÐoS@5]Xæué¬1Œ™EabÉYoTy6µëÂh;|ð~z·«ØM¶ýOcAzÏ„)æ,ùdyRëe¤ÐË{yùÌÉ‚çX 'çѧÓÅñ–9–MÁâ¸Vmêb2VÀ±W袢)s©¹Ÿú•7Ó3¯ÕC%­¶®ë¯²-k[æ %ó_¢Y^öÓ¯+Vt Œ4üÕ¨ëò|Oœ›æÏz¬ý?3˜< ¤¶Œjó• ÛÜ©ØàŸÜ6áœþ2‡ð¥¶/€à<×HÇþéÉðhÍYp~zÿvANª*à·<~Ñb®Œ Ç€ ò2ªü~ï&¡ý©f¶:¡ À¸’K¸.1±Ä??‚å|{ç¿­‹>r¨×;XL2Ú8û\¹·@o›w.qòvŸäí_ƒ’˜æí ’wÿljXmxq»\äRw˜2y;|J(¸ä\^Ê- òŽÖcB|¦ÅpÃÚù&c?lU‰fš.v§?µ=¾ÚUimaV¿ŽmfÝ_,ÆÖÅ—|| D@„¡p8s×,øgŤµ¤R$V³Òf=WЉ\1KÕ<À?w~ðê\ú»M’ñdYñ·'âÎÿ¯™ø»sѼœ˜ìl?Ø™ùwsc‹XÁÛónN˘3ûܺçîýÍ_Ç@Ūóq¹GÏ‚Av›åK}ü6¬›žvž2i„qÃEª¬ÔžÇú‹€èˆú‡ Œ¼Z®iƒ˜¶¯$,d áCÅ„ÍáY¹À.ˆ É›š…®#¦ƒwÖÅù#¨QaÞx†)x¬¦LÄoAÐà­Ýƒbã¢5>éDSµÞÆìhJ«Äs--XkRÞ­âÒóK8C²Ÿ!(é·ïŠø]øê(ûZ‹0lßÖÍ¡xS“x§ç&.®M#ζuÁdœ@é£DÕ\(D*Ê"ô1y)³Å*5‰QeÁwOÓX‘ox–®„@ïÉ]|—ñ@ñUJ{;ªrpãŸx&þ¢ñøÇ?[2÷&Ÿ½îúÕtÃæ_bT°Ù0Ôw%©ªÉ}Yhi-q´V,jJ°p–ÄÅÖ\×4˜œ¹4øò&&ùòú9*œ4.+÷]©ÝË9µM5‡aM‘ðlóZÜö:íRæùÏÎü¾$(01wbé ÓprÇîd8¤çÔ|÷9T^ór˜)à£9~ºÞËW-Ä_†uqOQ²È’“rsVY”œgK[þl¼ ä€Bü[Î&'ÊÀzz¶öÈ«¡XÂܽTåÏ"ˆÎÞc16yÞK=üî<£±llUö8ãØ%€ÏfÊ‹íyÑ[éyyVzøjŽuYó7¬*õù¥¶ŗå`<êëÜZ Ô¢,e¯O\(ö~A±u{r[ øKZÈ:Úßþ®ôísó8ñûüûÑ‚ ¶Í²¸ÕÁÌe²Ë×mû÷þ Hoï ådªË_})Yù4i|‘#h­O³‰/¼â@4 ieVÚá ÿ ì¿ÑƒCœ»í›þ)‘åù~ËÖÿfÍíèÖµ¯]êk`>>$T­WH °ÐFhSÀf_¤¶|å±Cæú‡Ðø½<>_¯šß·‘‚qNÀ=Ê[D6•XÆ.z;”‡ØØÎ …øv#;†‹°PÒ ñò/2}q ÀØØ1@Ö81tØäC´‘?¾CD9íæ"y)eÀ¤ÌÇIbU&'ã#÷bØÍû Ûïë- ÌØ=‡ÉöÇs`a-·­²Lõ‚¶RçsVþª ~Àw–‹>LÈ_îÊÛSQrNزµÊR29;SzòKÎÜÄÞ&"èk†w¡x„ÊüÞ-l–ˆ³’)……êkco_šNKô[©¯t™¹¹VZ™4hÒ¨5jÖgIdM|À—×)¹ùAÁ+Â%vë¡#PÁ;]4žªT°šJúRÄ!ì9Ãn:IÃ×®ô?û\½W-H£˜ÖÊi]­Ì²C Ö'ý›>“Ì9s¿s=x4µ‚É:œ X!b$Ït,ýÝðE"ñ%‘÷‰ ¸Ý õ{Xø–jÝ{ååÈòP¨?Èsë©ø0HàÇaÿ nOÒjúÐø-Œ¼ÖàÑ"ÙèJÐë`/_øþB|·q­+»ü¼ß¼ßÍ$¯Œgì~ÝÌÍû‡ Ⳉ+%åyˆ÷‘yÞ߯O¯löþrw!s—ˆRrtý‘Ôå¯íƒ”ûxäïÈÖ÷žOä¸?î3û žûÉA|žÊ'ü7ç¹ Âúë×iÌdU˜s*Æ—ÒCæ€(e'àRB›¢™¤h¥ ­;7(ï±"ì2[#4 -?÷µ;»XõÓÑûh„½fø£—d.N¬1†úês€ÇÂu€‹K]ç$ È2÷=5øÑÿgûDúÏ.|ˆÃ.AKX1£CÕÒ;~fç'Îöù¹ù·Cÿu¬÷·÷î0eÔz?óº@?~ ýöv»w°Ñ??pQ)±ðÿÓг²í¢6äÓ–-ŸkiÙcÿ"Ûå)”{)¦•Ïñ[«(¦Æ ­9Α›K$îäsæèRÑÏæq <ÉÞv@q+x@«=ÇpèÐ$-Ý`Ý „#˜[µ—Õ¤ˆêXšñ_‚/££bQ½Æ#ÄÀ cKEc P`Ô¼-hÆ1„8cKKE ×"AXÊ!ZËæ¡r¼šb5²ªT q}Å~'>o!ô]šèMý›Ñ2kìþ¯ç3äÈ;G¹#h^¢ˆ}•Tb€.µ´[µbwbì@Ò• ãp ¨OStß³íÞ¾78èp]äuÂò~TËNšê§¯Ë*dƳ“¶Ùýš5­lïg‚Zêb&R[ÔBi©5>[嵦00š+ bœyšQ,jµœì k„Ž$±‹9Kuxü·wˆrá¯ç\ý]ï­VƒtŠ­¢j¾jsñ¦i»ªÌi+ÕÖôÓI­†YÎqXñ\A—00dcìœndª™…pN/ÀrI±P’»¶K/švÖsÁõ:ìMvöpœüjiŸ‘Îoqëœ>§èïžyùt|æ‡ÚgiÂtçK÷œ›Îyñ4>Ö‘:s¥û^@(;“¯âëÎxÿçþS»À¾U·ß¿{ÁUµºº~¯/¶«~ýU÷mЃÚ[‡˜6˜Qƒ˜é{³²p‡¾Înç6Èvü°YRi­ìµèÓzÑ«gÞLŒ×œe«füžúç°Ìý„‚Úf ?o}ˆü0[^Óð¯ÀÀIL°ûˆ§&O¿¸oÛÚõUû5êÖ¿V•WìËW~ûÂÖ>Äõ)ËØu³±±±°u9œ?ü=.Z¶[ÿ&%Ñ•Y]«^N†)ðÛ +ƒÔ‹+pÁyMäÉ)­£ˆÜñ>m:mp¸ÕÜÆ~¬ ûƒ”µÒ¤¥çÃð)&ô¥¥?'!Ê Oñí*,OPôòy<A9Qm}Ê Œÿ0lÍÂOäbXö1‰b<”`}›RQ°ÔôœÛÏ„ñW›Ÿ—žù`ÓËïÉcmØDtGò"ˆ9"q^¹%‡bz³/Áì"òxZškV£è£(w¡£I­)“%: ©ÑÎ)_vrôôôž¡AÈeÿÄsÑ[b8>‘Ç ¾[õù°¾Z¼(¿”)ç"bëÈ&¯»b\ˆ8ÎÀ¨±|`ÿ‘-ä£$ Êû–TblŽã-Š^.ôq‰ofã†+_±×,V¼Pn+ï; JRºLv‡oû½l îniPí æÄîKœMÇP«üiO/Jêõ#ÛZý‘RTwªu·Nü¹ùah=·<«ËšBö׿¥ú¬«Ãè5‘Ã{ên^ìö1V¡ˆ @ Ë KV¿.«Û\®®ˆð8Àù/pÐ-ýo!P„'´µ ‘ BË?|õûÀœÈÛdãÀÄyñdª{%ÕŽËžI¡«ë~I»>ù+o'²¨ ŽHL¯Z›ÉI¬‘Ë⬅ù¥ŒÖI&t”¹¢žÀ(›|zEÝï§ð¬[Écl¥cýS¶ÒÜ÷¤H÷›…¼lž¤ Y½»>$í'ü ûÇà6íôØÁ £ÅãN@àsm'p:'–Ÿ>`xSößãÌÑ´ìP½ ¯×¡~úø¥Ÿ‘‘êœóž/ƒ?õ¡¡z?øyd¹ Ó¼ÎíBÿ® ¯õb®L1î=ýz¡9.ãB^Dœ—PDœŸÈÑÞ§‹­»Û?ÿEæç?''-ßô\ž'™ø3ù9?å³û‚áOÞý±ñòI$޼@©ÛùfeëN!ðR1Ù”½ƒÕ<{F-cŠú'ãgü©_[êãü³ÇE¼å®ÃÿåY"‘ÿ•›ýšü>×KLxZ飽`-YO½IÆv1+2A™KŽ!qs_xåv• òSæºÑèàUÚ«BòáI¬ÌÑ[âsÙ³²ùlo2¾¥ì"-aô,ääKš5¹¾œ7½Ê½ÇTö3¨äè=Œd¯ût=ïøg4LúìÈÜ!ü²ÜoiŒûçoíØ¼÷r®dyÛ&6͇W½À¡€.6ÆŸÙõ¬ZDÇ©hû ’¥£›ªµs¼W]uW}Á!äýB‡;Áá&cŠAœf&&¾òD«Áp¨÷¸5WÓ±x±„‹¸½ І°´6-F ‚9 ôǸ²ë[UŒâª0e¥¥´– F‹¥ÑÜKË)h6H° À––PÁ–܃XŽgÞ°ãõ«°#)_Šuõ¿ DøýuBu8Ý}d¶iîÅ)ôt?R`V~®7%¼•ÑÀ‰^Ÿ¼ä…QìÐ^È굂u0âÖ”=„Ý^”q[ÊÈûº3åÊP¹?Ÿlɹ㈑'¯qÏ<˜p¾NͳJõ0Íûi>sãUìiöÔÍS­ÃeÔ%PíŒvÔÄ«M-50#µD°Ê€+51ã+XØ*ÏqÁÕhƒÏÍô•_#N+äàƒŠÍWNWDÒjùbÒäWLšt]uw®!°ê⫟‹ìæÁ 01wbé@ù”–ñýcIÂÑ!žy+s !ÿqâô0¢Íò¿?^®×ýÒqœ†ÀZ~—Ç·-ß¶_±Ê×-Ï•ãTÿþÌ$Ž<·‡Ž—ÏBw÷Áö"¥ùœƒÅʨÞ[œ?ÿeÄìpsnš‚`;¾,”8/.J´œ¤ßÿ;GMt‘¹ Ežþ)»“¼üqDŒ¥d| ÿº2Cr,tI ³¿ ‡%5ZΉˆQ‘…'¶P9ýsQ.åYËeò·'x*ô˜11]Å2é9Ì}Ö–ƒÝµk{R˜¿/ˆ)<êíuóN6Q)6 $ZD00dc œnd«’!]8'¾É7¨’»´’íáêæk9¿Î©×bà{ºs€ï3ñàí-ðh~G=ù:¾ÎÏ«Ïg ã£ã¯Íà;;›Òqçäiç æúàú<gY<ŠOy§œB¡Ã¿Îxï¿dŸ¾ç|xüsÕW¾ŸŸ¢½¹îZùôïÕÛSõ%VÛÞÕîU¶Ü“hš ¨:ŠÊ–cǬû}¯0¾/â{Ó?#à©ú“˜yšŠe¦bÆ›ûøa¬·Š½1¹Ú¼Yf"o»¢¯¯äÏ>??»s5¨ª›4ïƒøa¿õÆú³{|A6§”HB¤ˆàý8ý³ÿnd"¯ÐMÓš@ÿÍ¡|×¢Œ “¡ž‰irìý³öýEáW¶‹0×£ó Vvž¦,ÒXu{Yq" iÊW n9îy_fí³"ðdˆ@yZì°Ð^Z9†ªsW³`½ ï÷‰¨ SíÄŠ4Uð ÷¿?ÄÍË’¤ Áª§ ƒbª¦¾ÌÁÔh 6¨EþëM ‡©Ds÷ùŒmpËö ` «f1Ð9ñ} Z…¼eÐ5cAÍúü¤šø…úŽâ!šËà\5 6LçÃ@îY x½õcæß›º¥›8ø`,rð÷ž‰Â4ç 0y>ûÝÞ€aH²ób:ãŸ6~«ûyÝ‹>¡Ô ã¼»÷ì8”„Kþr‚‘µÊ2lTw&›öoyÞ"•œû6pš÷3š˜°¾0j{Å­–†a çjîñóàïñð™{fœùÖçßæ`Þ÷5Î I‘,/yN½“”ÊÔÐBRÉeQ7òY·/œsT™=yÏ)†(¾ø9q‚”=‚MÉ#xë—v  V¹û0yAÎ8rá/ª]fbmLO×Á1¯mû•Gñxë©^‚N+Ë®Ý*-"‘¨°þ_'ˆù=^ngŒäõ^>>푌Á-†aØ…˜q%´ù,1|nŠH®ˆ~®ÀÎ]ïuêòE'Sã96ý›òêaâñëªåBð<ØÔúõKÃ}, ê¶Új¨ö mÝSš¼²iùV5kz °¨¥±¶%iØC{ØÉ&€ê-ÿÊFë3,v>ãêäýSì†Qì¬FLºœÙ8§€¸´¨'¦0ïžh…c½WÜÙ·Ÿ¸¿Ó÷ÉÊÇÔ’ m;².B“ÅÑ6¿AC)ëk>pXV6Óø2A¥³A­)cÝ$óœúÃã£ÉƒÿˆŸ¼ø üJ³<[x¥ûz\ýµ÷Pö2`˜¶è ›«ÊoQöí)-NÅÇ´ÒÁ¨å·æja¹¶±ê8À¢^¡Ï©Q­Nò)5?"Àð/=ƒ^žžššÕ©)´€Pê $]ê Ð¥*_òHëÖ²ÒøT¨Ž)D_8Â÷nE Ø-jÊ(œÜ5q¥h¡>û`x(Ä81ƒ3ø÷°l+%(àÁÒò—®¬7w!Š!+ŒU´Ü \\›÷69°,.|Øí–ìŽìAA@¾«VgžûÞXØmnlEíªBx ‹™ZæEkÌÒ¥Äf#]†Iˆ'H£™dR°Ô.Ëõk B@Äóš½¥šÕ¯RÍÒŒWdNT¡ž6»ä>O€û/'žŽ%hw U–òmƒb1>©'Gýâ> Æ/ƒƒç.Â’¾*¶ž2cÏ9y&Èx¿æ—?’V™¥ã;5ænΜ°„ ð€"ÀÃ'ËrìÝK›Mà¸?É=äo û»R­átõù¹•¨™©Þr<ŽóúÚ™‘º=.³['ƒjïî·€hÊWZåîÿ#»žýÊy'–~¥ï}‚D<½ö{Ý'Ì?ù#ˆ‡ȇ' ü¯!ù…ÿ# ÖïÇ›(Çö»J.6’2à˜ÃÂn—·4dDAøgké\›‡vNr}4~jA%Љ*š2í¨¸#cFÞ[¸ ]á­®¼øÑØ^ûIÑù"°ä¤³5Ac bíå?h?½Ê™i4ØøžÝ@§æ Ûm‰¹ñÚbÕMQ<;a‹§ÀÅ-Vž²ç&ŽâNsvãï(wñÅ£(ÝǵÜÚ¬Ø9.È\€è8¹Ìi¯„oH“—¸úqj1Y¬{‹r0w¸âzJ„8-ù F0îÒ„c`ãÇ€´ãâ¨GsX«h!øˆx\*8±q ˜¦$]•„¢Å:ãTƒj ™h’ñ‰ t1. ñð£<ÈT4y+té㹸œ×«¾~¸òKÉ%Ññ f—Ì‚Õù¦O<š“NÎuÏ™dجÝÂfõ®õ úyV!݉ŒP…xÉÅf5ãjß`èZˆñkLX  )] Lê20@V@séûöús¨ý¬xêR‘2€L­¾¥9¹’س—<`¶}÷ùýÎfÞÔ»»mÇ´Ýë¾ë]„dÁ/–ÀX,µïl‚X%òU"l˃‚dLæÊ×–..~ç=ÇV!̦l1åY0Y®£ûÿÚè*TÕUP¯€“½!ý¬ÞÅvdëa6-Œ*W5H001wbéÀÉ‹åï3¤ïÁ101\„«z'‹¸(&{ëÕpùlÊò°²ÊØ/ÍPµ‰ŠJkTü Æ‹'[¡Ù­1ño¿+ÅéñYSK(ì;gqy2exjê‘soWâl´cÐ%£K®*ËÃ#¿,Œ3»~¿B~©Ç£À±LÎlé´Ò}àónyžM±ÖJΩWLâã÷–[⊃­0»¬¡ÜÛò-'L#.D/«øÚ.#Å‹ w¾×¢-É‘€KÅ+ý"qK[Ü.1.@fK¡ .$ä"ˆÉ<ˆCï>óæÒ—†LD00dc œnj¬d‰ŠéÀæöw&Ƥ•áj2íáì鬿ÿƒßbh|NîuÞ_–:—CîpüÎy½V…ÃA7­Ÿ7¾Žæö=~O4óç›ëÃßGY~yìÔóO<‹‚ï¯÷~õ×½Z«_¿wUàú¶ºÕDþíö¯j€Øóí` exC'pGp*ÆpI†)¦|ßeÀ¸ <çèf(e@¬6À(fG AŠš$~ß­ø÷on§ªO)–ƒÍñøÀ›/ê×oÔÍ… ˜eòí©ÓN 9FèÏ'ž/*/¡Z7Ž¡¢MdVâø#%··®hæzõl@³è³Lxq–1Á|ÞãPɇ(qL°/êq™qP}çPZÊvo(rD–gæ[c(µD‰>z:~!ÙÓÔbÌ`• /®Ú~è= ÐJp¸èC:gUp_óÁ%ÇÀ¨†Æèu½|o¸Yöa^ |Û2 òvVîÎ[Ÿ î%¢Yv=ov5xþÜû}î#ïòá¿×·ê€~Ì8Ëq‹ɻâù„æ:õŽýË¡Eõ<¶ù ù ¾ûY¿/ÐüøTÜ*—oyè‚p´ÕZ  XP°ÆÂ‹F{t#H½â# ¬]NçㇷópÓã˜Ô ­ÿö=Z½ ´–È»'æ„ìùÀøÉŠÏ=¦ö‘uüz”Üþk/³‹8ðúõº]!²ÿ]ü™ÌAù°ãvdÿ˜~L¢9íB½[ô½·Å_¿ZœK«Ý|~¢¸œ}'î%q™Eáq"ÁØÓiµ·ušÖÞñ.±t@]ò Üz ~¶PQAè¼aOœÜìú>óÄ…JûQ&–vèZœc¤™Ì ëcç<ó³?º+?]ï= ¶‘ 1¹ ÎP¢ƒŒB,G›{¶œž7 ûþÖèÜIª¾kÓ;ýmê½K~Œ6ª[Ê[ÄU8hwÇ÷ Pϵ^W­ýô1ùØÓµEìxø×ɹb|KAèØ(Þo·ûÐsÞ 6@ôy°‚€4 §5Œr¼ûƒ¸ –Ø¥DÚ€6„ÆF5tŸcbPâWOèØÌ ãå²é¹%D”!qFÞê)»Œ}N‡¸4}8?wî¤àC…‘DÖµÃß—lÇØWRª‹D¥}¾8Â(µ$ üÙhÐjcÉ-¨?Ö’¦“Dnù=»7ï NzŸ—“Øø>ìjÕ¹¶ñ +7õÆ ƒÇõzÓÙóÿyµù§÷ŠÚøï•Ÿý=ÙC‰Ø Š*ÑQ|‹õt¿"ŸÄc¤~^>²(ƒo‘f®ÓiÞæ÷ã:k ·Ô#Ÿâ0huxO.#܉!ðNƯ‡ê?>Ñ=`-ºçQ‰h¾-¸ÊšºsÖ£L’º³£Ô£?æuØE(‰RoV.Ýù, •ŸßÏÔêHfç|¼(r‡¨ƒ¯‹Kï*5¸µ#æóLYœ0 «F3l”¿ ƒùù«ó`+Ÿò2çåÕjÙ þ[ïó³ªÚj0<èÕ?’62‡(~Pû–%¾ödÀM%ù™äÌäU,0Ìîî²~Ó130áu-»<ùwµšEÜ=§vw.¦yý³0’Ìa„o¼WÇo¾…ß›£Ùº_Ôyt\£hZ|ˆU&ë„4qYŸ(n™r¾ÊÕf£—M—-èqáx˜˜0!Á7\Û­ÐÙ}Pr£ÆÑY"Aü)´l/Æ‚hÒNƒZ-™bÔñÆÑü$“ž–s3~˜ž„w´*©×¦™ŠM¢¦(óZêûâL°—­´œÝXëXæa‹”o~Ø‘$Ö<Ç—-®8ܹkœWRøÐh*º¸…Z˜–ø …E*p¹YÑÑÖN9w°ó´¤Ê7… Þ¶•F0»3œ”eDS\¦*&——X½mwþ ¾7Z¼XÕ$ÓRPéµÊ4 ¤­»•åñB%ö ž–”-+¡Zj{Òz¸y¯X“¨‹ä–_ÃÝÄØ’×lKäçòöté‘£>ÖG×ôsI£ßT¬™û°‚£§yw×ÊjsÊ/ÉÂTÔTª¥.s¶q„Ýݸ¥š‡Umr†qĦÎIâæÙöF“I²4€œl’2ÎÕ`ÛÑêOcKyþÖ«îÒ®–lz¼>:9¿/”í«l;2°ÈÜ+y¦Žü'FôÑS@)ú꺮»mˆ¯Òíú"©_•t~¥§Ô*ÔWЇlñÁ‘èµKI ({ÙÄ" ˜”ûK^j–@00dc œnd¬J±‰5^žrlu%wr&MŸ3Íœß÷Ôë±7°ùu—×Üí^Ø}¥ìhëê¯ôú=vw49 ò'ƒ—>b{ç<ø{èêçÀûÎ_˜€gB0©ø­ùø[™»ƒ…|c·*ïíÜ/;~ë¼¾æßz¿Ùûªö÷K\£ÁÙ j©º  ÄpIz&¦<Þ3âº9²x³öšûž¹i¿½â|³ë;§‘–9ƒÃ‚¤N›=¿ëûŸºt“û4…|?†™\!9r Û´Ó‡Ÿ= g8ÍÁfÈbJZt$0œ¿E¼³çb/’œ1 ›Cs¦CÇŶhÛµ|P,Ì÷ä‘Å}pÜ“‰gÃUN–òt•ÄÀ*•#`àiœŠì5æ`Ôjxï­g¡Kòxú7ã<Ïèýó^•  Öx@øeŠYÀt§¤í¾gˆ;—øÛ—‘jq{0o÷Áœ'øˆzø?“ôÿ6ôÅsqá8÷RÀF==N—£<ÂÏÀÊÏ,ÉÃânqWŠ·!\/$oÈ ØA9ŽkÂÿa-÷…¡À|3À *}tsC³á”=Ó`³³`\î*؎ɶ³2–YhÊËœ 1:·ã¯u=²6î‹2>B*kƒMÿÛÇÙÆ™¢³Vé¯Jøe|AØaO¯ݤüæìÆþ>N¸×Ïñ‹§˜]/΄ 1ªþ>)ä(°X5?íôÌ>Ç\I¸FÌèÃÞƒŒPl=ìAòqî›î–ˆ……Wc×~:ÉÆnO¯•¾(Ô+ IÆÓÝyõpЫ­½÷š_%öW'‚”i;2b󃾺ÑUÖ·ì@ ­gwGg¬¡ÎŽøê,,4àkô/“¢€úˆt5!um«ZØOï| ¤»ä{ÆÏô!¤àÞn£z-‡²{9Æ1ýë- ‘,-GŸæ°„Þ==ÝõÞÇ•ÝêChÞsÏEÓp;3Ó‹·Ëμ3ß꫾˜ýäj+Ùœ­Ä%•Íñÿ©ÂîµëQû«'±˜EžÆ¡îpb0ÆE'~_ 2`5·Ùßî¿Í€mø@¶ oS7i1Fx[Àdz¾_@>l5ù¯no~±+hvïY}=¾†|Ú Ïoµ5ˆ.›ƒ¹®4ºÌðHhhó$BŸfû—À$Wú‚†}8ÅìUæ‚ùsúË)5§êpãk½ç3e\ömgÒU4ìT¿E®UŒà»Ùlî¶m&ƒ:â€q ;†PˆÕévýÿ^ƒ{ŽÇ|ï³Ï–öÕåŸe½dâqqn/=Äe»¹áÆv'ï]ÊõßÕmä}dÇåY2†oŒÉ:á8Î÷¯&,ÿkÉ'Q©¥5Øø_6F¼¢ïgäs9½:ó§Ró@yGÌiá*srô¤÷tÝæ…ð{›a¬æøiñƒ¼¼µ´ß‰ï;èÛCš9Mc§ãã;ÅQ5’jîÍy“¾0à}gG‡¤ÂÎwû3ú¡PåI<ˆ»#WÙ¢scCþå´EáAä<Ðm$„ÐDd¿žÖë¸ÔÑK­l¡£!IÛ=0`¬¿Ö&GâM ~ìÈÓ¿°FˆŒ9Ò~Ñêâü¿½x‰LÕë–LcùwÉ‘ïÜú¦‘7ä„Q“ S³E‹wÃk~Ó,ýßu`ó“k©4¥ë( gí3;?™½ öA.Š7<æßWWQÞó‡¿ Ú¬†ÏuˆåIi`N—–)bjT:?K030[°Ÿ1&‘äãJ™X5ãù’ÚG>.ÓÐ$¬¼F¡YxÜ™:rïó$~ÝÙ·ÉËå+wk¾V’ =hHÃå-@€ÄÍ­—†¯Ô–iâxñ¢á¤º2S#žÙXéΔ]~Õæ^°‹¬üŒÔÔë?šÇõ¬¸aâ)ðéÐtá´nPå`ëÁS@üš Ö½ wh4 ŒØvÖäâç O+€¢.丼 ·õ”×FÒ@— †•ÍæQ6Õ5 GGeDg;Êû‹•áQ ¯Ywt…DECKMO‰PéëÓP»ØÚÓm4ôÕ9•µÿU+EçUn7RRé¨hl®æ-5-B¢(h_¶ˆTžM"ØšÒfµna~p¦»ÚõëãyÍ^Õ©¯..ÏKFAÞUg¤öÕJˆ<•«Ðøª•&÷Ž:ƒ—±4³/›ãd¼Wk"ºkÿ42µ &µi6ÝÌÓR»[®†RS5‹dY—E²=®×1WÈ7„fªB¤tdë»"ñRFA,uiùÌ'léí—ßZ=ýZÎÑûl=.ÑçÝæØyÙ­w½tâNú ýN»;xÓƒâêyàÐõÎy㣹ŸiêgÆ ¡ÏʤºJ[’E%ÔIËUD¢¡Ix“°¤ÉEÔÚö—mHÄó¢¦ÖlÖ™¶™) ´öau `© @§ ¸ð)Sæ¹R²xS•d}Õ'‚‘/&ÐÓJÓ~o ;w–·_sÿ†² ðÏßw÷ûwpØ:ÒCC9ÎŽ¿7¶'Э$û°{#I)Ûi(›`óµGºzÒe†Ï΋âhM™8ó}ù4þÀ6a …-έ`û8v&r3…‘I•4~jÍ£XjUÑÂJ Ž ¢‘Â49ÃHÂÏ J…× âÖPÁ„Äšš}B£ÆÐ2M…T²ÛÉB­wP8:¨U;À—ÝyBœùÝ„À–ÓßM®nÃÃ’Á7ôòyÄ.õlÆa"è)ãìy'ãýü™‹²waHÆÜ9Mº)YüÔx5Âk2jQ°VjV*˜rÝ‹›Ð8*q>ððä‚A5öÜÑ龫Ò×—us‹‡~ Ë9£P·âåñø¿¨æ¶‘]AjñT#24~òªëÃýiGÕ;¬R^ÕõåW ¡ê/Ñ Â«øb#Ãw½å¡ôÂë@¤´ ƒ}u¢Àã‹ìËâlù=Hfï˿߲^“CËÖóý†n™MÜ¢ýÛÌ ¾O̧è2з9šî¯´ÝêC¯™¦{÷Q)p¼8©ý†öpBÏ&vüÐÚýï“íMÿ‰ïŽ›““ûù½©GÏ”¥¿ïÊǪ"ŸøÄZþ;˜~VÌÌzEE²gòÇÓLó1²ò¬ÌÝll˜•»O°E5B/ñ¦¬=SbŤÿƒÁùN¶{à…ì^Ç[fª)a8,[{ÅjˆL*cÿÛi6 ¢faœõâõ¯Í·Në¨PËd=–ó@KX–œ¨£uI:*æê¯]ËÔ¸7VKœAäüDÞ#!mË%½G×jw[m¶f§÷£™nÄfÈéHƒ”£t:Ã핪5%厸êõ*Ž£qP:Ô¾Tҭă»kÆË–óvæõì0Dûeëés7“„aC­|Ÿ!†0ÞyM&]1Âpv°º×Ì_ÈÛ¢-ˆ›-AJÚþåëݽ‰lÀ;hA^ÒVvÿÂ[ °ã2b‘»êpÀeÀZç­ûX°œyª´í‚7ÔZU½*^lñ³~Ù\fŠyL‰^«V¢ Ý÷D½•eÝÜÞý9àÞ¹ç´awWžÔþOqŒ(ÃlÞtLàË +Gçc}lâZ…´™Mٽ⨌ÌÖ›Ìܳr2ðZå›õÎó`[óÇ…u¦èœ(SGeh=ú¼ÖÝÎ"mî^¢}¬ŸòÞ³6ýµI4ëÿf° §ù‰•„+VÞì ïxp@&ñz¾€ƒ«Üd/ ™âIUè ï|Sßi ò'Ù hÎHqA WÜòãØŸ€ ãkªíôƒ.ž(g 4”ÓŠmœ6Je Kãù/n•Þõþ+k[Ч:‡ÆBYþŒ‘„œâÖìµ×å=ÃãÁUˆV6çô®kÕýžž™ú½è­ÃðŸÃœž8î½}7ù™nsW#Ü ó—í_‹Ö y{iö´¿%ÏÆ¿0õ¸t±¤ˆßœž1›·~éSÝ0žëªýú™»ëIØÑï3; ·„w¯ž_é¬á<#}âåH/w²ð½p'¥g,W *´À-fYžbU2ô\ê¡<ôWÃÚVP!yïy²UœÍÜÝŽ+ÞüØbJÍ|]Ôû£‰6J²jGçŒþ- þ<äu”ÕÞr½NAý>~Gñ©ÛJåÚÍ´Óþ<´ëMC¿©ôðc¾_X’‰ûké¦E]³þ~—Î7Ïçb£ñ¿_¡‘ˆéþÜÝüæv+˜í©ÇL<öÌÉé’½§Yi5LO|è}zvtÕ;J^þ_Ü öjPqéÙwáûã‡N?õ~áÚ…†0Ä jX P_QÀIý£QÉF“í‡ÂPI©¡{s@À NÏ9l—0ÍæsŠvžmL]·.^Øò¸°¿ù¹™›É‘X0/Y 9›_räá˜[íe3€È´h§}èA>×nòU÷¹GuëV­›Ô:Æ»7Ò`™ÇK‚ô6Â1!üxãü0÷Àçe¿ž?Ûß=v£í¥úÛØ™Ø<Š_.Ö€í=®š‚·?´^MO<6æ¦Ôñ™Y±Ûµg''&`ódw-zk\\à¦[qBŽÔ8YW²'oˆ]u¹f[I[…u^ ™ŒAŒÎ×Çâ¯{aƒì˜ï¾ YbbÎ0Þqœ¨.$Ž ŸSGx:ø8)Kèè'x7’ž¡ðpV”ëÇ[®Téò[I8vDH®ôÿ‡þ¿ý)ïÅ[=g ”½01wbéÀä(½±º;aÎñ™‡‡Î¤KÓ‡ÛlÀ|,ʼn…Öå&¹-r ž“¨ˆÎ‘KBoö5áöÿ•~Í;’àˆ‚;¸5z6r(È:“£ÂkŸXMŒüû?£,^ãL®-ßZ‹Œ›Oâó;ÏÌ~rl ;c›Ï #¡?ùw~}ºˆEë õ°¼ézÖCŠ_ÞÓõ€‘‹#øÍ±4z!x.¾‚¯-¸(8þŽþ¸.’`ŠÛÑxÕöŸ ñ¥Âb?x“™Ýñ•ˆ«µhÉáÓ´ˆ)çò㎯gòèÔ¹õè43Ñ×`øè)ö:ìðp¯äÔóÁŸs’qÑÜϸәðÚëÊâªýU¨ ¯mõÕ©ê÷í÷ý_« ·wŽØóo«€Çj<°¨Íâ| ö¿‰òÞ‰ø–Oì¿ ¨N£àÆ~ÿìÀÛ-ðæfþN!n¯íÅoúÞIB:¾ÿïòÿïêþ.ß ßÊ^®îÏ­ñÛ·? àˆJ|Ãc‹bHæ6õ›A0}fˆ]t”0äAËþ½zE¬€&bJ‹Ý–Â\[Òp¦U©—ý3„s÷Ò*\Ä»Ñ&[V ÛŠ^’¼ˆ> TùèØÃ¶…ºm`p4Ûð}üç90©$ýÿø‡±tØxë”[™“¢‹. Ũås|´/~żSr=”ª—GoY•îžcjhôl´#sÆH)~ÙïÊW«(Ýfp3ÅИ̧õ>µïãE·åV[ËË›Ôús¬vS†ÓE_À;òàñûl8°‰yfUJ²ðÈýOG„<Ÿþ¼‰ôÞ¡âxo`àe*}B&Ü'õ Mßßù½„ý—l¿nàþ¢¥‡RÅþÑ›C*2h|–F€ kܗȹó*¼ˆ =øÒÔÄÁôÝí7ýeºå9£ÙE‹øXzŸ zÈts 97^Ü #*ï² #1·“´Ÿ&MÿN'Ð>˜‚¥amÌ ú [OéÏà ”å‚*ÅoëX>ˆ.òÁfk 2µhßû`÷kÏEµÏUö:«ü_ªogà)˜³è•·-e)C-“ÆLnk!{NqÆujŽJåâÈž`ëZ橘¨–í¾¯0†7«_¶`Æ‘¿·óå·û÷/ßþfoÉó0c9—í­îå?Ih´‚ðÅü)oHÛ‚Ó­xÆÜ%iû&_1tÉL_(f |¹Ôlb¢ä†ZÓ›\E5+Â¥ÚVº]ÍOmiO-ë “¶žäê³L“í1jVò"•^r˜ýã¢ÞËÏR»ë›Æ‹4léX@bÓû…Ͱý«šJc}vj‚Jã3jßÍÊ~Â]ë'SiíÖD4n&ñ*Ñâ‰6€¦~¬çž`PÓTÞEÏi­âÿTÐN—‰„{¢?gªuÂ:[2Üûk³Îiÿ8Ü@4¬~-õ_ tÄÛ %µÈ§ZÊñ~Üp^‚1'›‰¦à‡ø÷£Ð›Úý{?ÙMzø¯!½oÀ“k{øIzò;õ[WŒð^q/œ±8zÚõüZ§ãþ4h>ÿzzù.OƲ¼X°Û/YvRq¬Ûg³Ÿ_±—P¾uÔ1Æ´—RÓ7Û½2\ÄŽ¦¹»3†rÂË÷»ï;+-¼rV§|Ây: Ê„`ÿ ¯ÄÏ a¼>4 6ew#€x€gÉáKËk÷r"…9¹ðáã‹åkÖ?§ÌFýè¾c½_â‚9&ù­úúµ$ˆJ<‰ÈQUø×çhi¤ÝãÀ#ân£î¶Âs·nɆêjÊÒåÎe³ gåNì§ÒæH²×x¯¬÷^=ôƒ8’óÜM_³û¶ ‹Ø=rI&Á`+—S÷>‚¢…db=âÁÊv%‰GùOcpœ™›™žþ_û|TN»žÚm1g1;9´' ʵÆALXTS.±DV`UÈ÷$½KŒÁ†wÄšC·óÙô×~Ÿçñ„¾ÙxžÙžkhÈäí¬»ÆnLs{cYŸ3ÑœGùœš˜˜Œ#kI=˘ž]æúÛ¯7¶³xžó\ÁÜroÄØã>8l±˜o/4î*^–F¾yœ6G׬®#®E*ô»ÑL›‰ú]:K7‚Êè¦ñeJòÍÓRa^½¾Œ ‡[×»01wbé€Î¡¾Þ:üAux`×út¼ ‡_D1 k8_Ç¡S½ÉÒ#Ø‚ÎÀÉ·ö‹Ýmo¥FeÌåDsC)3É’1䙇~•Õméd›–ÁaõÑ…O\ŸÝ“G þ e'Ø8<ò]ø)ðÄÒÇI¿%—Å2^HƒóÃâÄ« ÃÞznMR.Á{‡1 Bön¶'²¿ätxá8¾Õ?€&€ý˜0牌w8:Ôº¡G¬'NBµpÀ`ß;Q¥”YëtzþqNõŒ½:ýB»Â¶5(1BŽ5«EiÑÇ%ªˆi¼Ï ÀgÚfxè;:ìðp«>‡ó¡ëœäœtw3ó‡3öƒÆùÁ~¯6 ¾ÎÛœuúÕö7çÍo½}§½íõÜì··ç. ŽGØMÄ”_[éh‹È|Áœƒ‡÷[ñ¾ŸÎÕ‘Õ-LŸô,+´Ùéêý_X˜\0æ>à Jùß½9àH-n!ú=I?ôN•†aXØF¶ ø&ßH#À1Ã÷¥ìø êÔõá¤]+ßÍHß’ÞlKr‡¸ßä@zHE÷Iâ6Ÿþñ´IзÝÙ;Ž%¨3‘™Qb¡ÿ¹ráÑ/Çz&åi»À›h ýÐ`ö¹hf— Iõ}@J,Cy ÞcÌc­îÖ5"º?ºí¶…Åö~€Ÿ.ó ¬zãðULF^.mFˆF,D#e.ÔfáC71µ>õÓ›?ˆ‹ï8¼4³M}k'cÃuþ »ni G…?âLòŒaŠßƒ“°k"w˜çgxûæç›²¿ý?ãSZ ËH[CHGjÃIßßiû3"W¿ö‚œþéyû™þ=øõ,Åþ†[¼0 \Ô0_Îwí hA| 2§€ÌVPG|W/ÿ7ù´€Ý w¡…úZtÁ>™0ÁråIÿ{aƒœ¤1ƒmÀ}…‚Èè&eÞˆ-¸b÷I+ãìP¼}ÿdE< žbÁÍç~7‡¸Œ®aL¢0`Å┿-ïás ÖJŒŸô 9÷µ‚¡–ùÃÌ0…㜠M‡o—©莅¤Çõ§ëÈÔh…e‘ê›&uÀß²Öß`ÛVK\Í­ÞdÓ2 7‚£_Ê[hÑÉlŒzˆŸÏ2ÖÞ·¥î®Ñ†D£*gºê÷™D‘ÇQP@í…gXu¨ÿŸDÛ'©åõ@‹ºŽ©æF±îÛðGÿ³ðÌSj”ÌÝ ¼¿`Ïß.昿¹¶ŠcH@R(_Æi>Ýú¼—Þ=eµÆ}j—º3«‚{€]³e„6þ~sé [ŸæG½/.${/š›ÜF¾m2È>ïÖMÜÛVû›¶’Ý0pnFšPõY±$¸m$¶§†MWü¥$ò6•M·¯kS|yÄA×;ÀöÀˆš•…Sš¾ÑÛwá·”Œöõ|˜ø±{Ô!9|øø©F»Üý—±¥Épø©…(YÃò'ñkËzѾ¶/ª!Ê|ùíîB²¹SúN]Q PæôÚ/ñÄdùNh T$ s^£Ë…¹q¼„»˜@Xìþ*þ¿©v¾_ãúb=ݯ¹ü z±/øþüµêdãÆ%Ã~{hCˆº] sÇe¢vq!Ƽ dù^ݦŸ»û“².‹]wvçÙ«#²N±ƒï´Ì¨#¿sÚ½û+Ü©'g >3µ? ^‚¯–_s*^Žg¸A…¬ ᕬ+ƒ—tMkpãŠóœ—r¥]ÊçrýsQ*·¿t߃³+•3ˆó˜Ñzþ5_‡Ñ¥æwæû¦ô<þ,€¤ºäÃõÚç~ñpÌ™_Èì%?e;7>áî“=íšØ±–nù‹¹w“}®¹‰¨„q®<¸‰è Ä9qˆ{ÿ³÷e>Þ}~ÁYº%%¦óÉÎ)¹ðO•r;9ŽI.zYFH0À©þ!s»ì_æju‹O©;y€aI©Ù‰ÍfmR¶,-hYÉ'­ÎÍ)Ù™• ÎmŠ×Ü­â‹Í©¡5[t`1¬œ_"jÚa2nÞ»¨q·¬L1ÿñþB;?l§Ó.Þ6æ°¦Z1ƒy¦µcØÌrÍÌLêx¯”f 2ÝŠ;;dÎÙßY sxæbµsº,ïÃÝ4Ì>ÞqþXüìcñt®]Î!æ¾% 3tº¯ }Ñw•ãè„ì…°_à©C[000dcxœmÙ$²2GNœÏÅ­’¯/ ’Ì›xŸÕœßÇÌ볯™À|Æoäà>a®%ϰgA¼†iÊçOqðuÙáÐìÝ(zLÎaÏ's?"MŸMÛiM²áI°i¦’iDë94I)ZJ›-H”¡¤Ã4š Tü •ÒU¹}§¡»û¿½óÞŒ|/QX!¡ßú—òãþ¿øO¥iºŸÔ?Kz»½Š;“ùx§¼ê,M%Ëà€“†ô|¶à…vâ ³£ä.¢ÜÐ&Ú*i hGËÝXõ§æ ÚüÖ•×ÃwÝ­ÚPM·ª–-Ј} ADœñ.€{u*—(ƒ¤›Š-÷V¬Zš°1øv/ä›ÐQºÈ N¯ð˜<ýæ:¶cG°÷Sk™ì†åÅ~|µ\"=ˆ$gvÅÖO×Q­2†øÆx™*÷aú0Äå‰ÐEëW†´R˜ŽÜ„ðÝÁÐk, Ä ‚±a¥ï|4NÚß_!‡(bnPýðkáYFPÂUÃýÆì5¼F¨Ãk¡¼ØþK¢r²‰èCýîÝà>áÇ×G=ýêª=_ñ±ïjT•¦… éÃ\x:ǰl!C%¿^mûf’ŸZ~Ç??>Æ{0ÚÿýÓ³ÿÙî™Çá7˜ÿÿ¼;€ï–±ÒŽþk¨«#ü»¾]ô¾oç}&îÍ€§Ï!1ž¨v:•:ÃVU] Mé9~Þ›me)dá}Ó¸1?-×eöP &´> ­±®çÝÝÌ6w7*°¡f¨n p ×½h~uÅ­&:"#»Ž#1ÂŽaôh¬ÝOo_zÒøS=xñx&èsßDnT*/»¶½0²aFºd*rÁ™§g·oE°rtõãû·wg›Ý'ÛçÒ}=LÜAIU³È¦BØl$¥´šÇd¬qmµÝŽ<Ù#mΛQNÔÍ»m–I†ù·Î:7íÈ꺓1aˆ>>î­Oû£¤¯Çõð~ýœàrëÅíÝ_ÿ²øü_:ØF!ì}Œ ¼-ßþ ËZõÄfY@žï† #ïÿ ÷6Ÿ^AaÍlÐüж¦ýk¨`§`¿ë˜Ì5 ÈPb{và|$s¤Oº®r}Y*ÉœæTq(ÅF^¬O{½ÀwŒe¹Pt§v_Ƭ?%EoضuVWA|‰üš›íUØ+Vw2,ïYÜåÙ¯-Ë˜Ç UE¹Ã7Ü^µ€SÎ:yëßþþ­G³Ýñø-¡’t§ì;ö‘ofpæUçOÜ$þýMu;:B·ÖÉÖÆØaœäOSLUЈ ,H +€®ørˆ…KSSš›uj¸«&‹ûfsÏÏ‹ü01wbé@~â›õÞÍqt:*Æеû _ïÐå7ÃýݱxpÿêËóý\¿³t‘_'¡Øác¹¤2_!]’ ݶ÷åz¡MýèéûwÈåÖsŽôÞp•bŸÇæßzÎuæàò=—Ò·#É%ZSæ^ˆÔÕ&~Dk¼òæ‚ ¢|ذ²8ú7C¾¥©HF$ 8ºRì/'J0F¤ÙGjéÜ0Ú»¼C›&ìy&‡É‡ý2­²‹ÿN6™ãkgü\Tÿgðɸø<ȃÂ9 obûŒåQzÌÜÆSD€²–±”"ˆ)<*èø¡MÊ$T&;SD00dc„œlâFI,Œ‘ÔåÌðŒZÙ*òñ™,É·gÆõg7áÙ×aoÌà>Ó'ó t.~3¡™ðÐÍ9\èè>'ZCÁÀvOÉÀyCÒfhy¤;u>D³FgÀT\ÑÃU·Wnù[uoZ·¹íVúܤÿv]^·íׄPõ~•ÌþѯÞýü-yM×ÙMÖý_ݸßßÖ\ݘžò·„ÁéߟŠ>8ÙÙóA‰°¥gOܤ¾çõ"^#@ûB)‚kñ6`ñX]¿}úÁƒ%·Øx«B€ê0ÜWµè¥äYÔÌÞ¤?¼°¿s˜»úxD#þ“hÖóüf$ÔTh\™è}öÃûð5`rYiñÃlÌ9òMë*O`$ûDȬ×&~=à­ÿ6\ø‚¬âƒ3Ušo€Ó™Z¸±FåÎo«CÅË6Pèúë!~QÔªðÌÿ(¿r}Fc•ŠÃÞã/ÊvüúN×c¤Ã©¶“°>Kà.âyÀLöKý‰îâïÕxsœŸÿtcÒÚ}i»£k!—Htʺƒn=ÖL¿qz£ÜÌ\ÞMcÎÂK…I×øc?©½ Vê–-¨M0.îõ&ÁàáÔ?Ïêô×Þþ© µ€ïÙ,»3V­yÊÚ_Ç·#=_ýå¼lžžümû¨ Ò Søíû§r6Ía½OÇ}š¼÷OµÇ@»r-ý$Lö?ei¹|Yÿyè¬+:ÅŽ½¿ØT›ñ!çÜ~¸­íöAûÿM1Ì£X`3Á¬‚î›Ú‚ Ë@ò€)‰‡Øêýˆ ìÎ8#üáq?žðèn ü¶~õUà/Æ F²ºk#Ý»¨s4ûG˜åê—覎c¾ž9ÏþwŽ7±6°û†ÛƒÍˆÿûL"‡×._œEƧ¿ÿãɾÎ" ŘÏÍc™?õS¬ÇÇü÷ªWœ µK±…bG"9>öì¿UݱÐA– ¡ý«k·ð®Oñ_t²—:©²ŒM Eº˜†GýuéÈø·¼…¤··¶¨: A‡Cßcóò?ï§c¿ ª¤9” 1=+|?dÉ`zÅ,ä„™®ÉƒC_Z·ž?Øöi™žÚæÙelóýý;ý¹ÈÉ“3\þäãq0÷MO¸"7½m ³¸h{æéÞ@ÌI£² ܲÑ4ò]}è;Âg2夽˸ 'ÊñvK  Ñ»q¯àðÏÇ’BÕd½SpL`Û`–YüN*ðWlÏòkx]X~…ÑÀc’Î11L:º¶ƒâ¼UUU Ð.o«°ï EL‹Ø¶Û÷ñ½oåq¸6šeÄÊvTÆì[í+Ø-Ý-?i—ªP¢¥Ä9CE(4ËkM¦ÓP§ŠŠ-6™^ Ó,sV×3¤ÖF¹«TÖD׫K"9°œ¦³ºÑ÷Óhã¦Tåf”V¹¶Ôßð?™Íñ¶P+¾Ý5Ý'õ|æC™Hül‹&-nÎôè—³áËÀŒCp7¥'¢­A>®çW­)óŠ…L¡¤Ìé 01wbé«â0TŒÏ%M—r¥Øo_ÿ²¹&¥Ãd¯ ÎX3Q: ¾‹›ãø$|Ý_ÞӋ1Âø-G"bñÞC 'Ðø 6 ¤2rS—ãí!¶üAý+R‡±†¤¶¸²G b„:~:î€ %,AeA§µ .z¹¢QœƒŒÃ×[šâÿ±Ö‹_É@™ëË \0±œ% sH;º€l?Ž_çùD}…Fôyø9*¾Fü$hìª"äñ­Â2Wj@ñƒ“t?Nl0DŒ˜ ‰i<ê-u#| ŠVgD00dcÄœlâs$–FÄâòðŒ 6J¼¼f²Y¯îÎo3€ì;8(}¥ìà>Ó>Ár?<ãëò™ÿà.}œè\ùôx!ÜÈPú 53sß'‚ }Àš.ü:6—RH¤cvÒR„œ-ÑØ¤šQ;h&Ù,æÛIºÄŸ Ó-2ö¿¬Ê/jø_JüßÏðÖÎd ­~ü"°~ºïêÏ/nÏçþ?îþÏC.+Ç ÏÖŒÄÏ£Ê “Ö$¬:8Oßêw£ä`…h<ÒFx‹kÝM–Ãýl¢ ‰Kv¿¯ÒMÛ<9þû0ø¾Ûj7‹„3ãÉñŒàuŠ1ª35Ñ©M€¶ßt¡Âmkɹ¾û¼å³Ÿ=üª*¦øÃá3”̸FûA.ƒ"ê6N;-ÔŽ¢›Ë?ïÝk”Κ,¼:õ|T*Î;Žûo¥æ˜-¦îÏÃbl.1´\~ o½½}n¹ÿ¸‰>Gn§¡|Õy.8¼Äß¹ûûOê®+¯Œ©ëËö1*ê¢DÛB3,1ÃbÓÿ±ß°€û@AÜÂ]Øc^m†·ÛøPZ-:mÏ4‹\Í¿Q"ÙÙ¸÷ë4 ~‡ŸÍþbwü ¯¯¤@Æ©€³¼Ý ©â‘XTdþ?ŽâÐ)d”ÆóÍÓíâ<ú)ôµÉº8õ'LÿŽ•Šè'¤ÉÇÿ°·åf2j29Ò͙̮XÑ5³M@±cö?¯¹ªâ‘‡cPƒ·õ)që5-&·àX9`¿`Û¦FÉS×iöÎ,ñ>YkÇ5” Æ1Ž£g¹wŒ¥hé4#¥xóâ¾YÇM!º` iüb–Á `€¦ LÞgòÚ Â¨=რ`ï|„0`¤¥ujO˜ÄDc÷:™°ËM HnåÌ0Æ+²éÉz;´´´•Úä'Ó4Z3~¬?{UfIOq–¤£ GŠ­YÕv¬çW¤±>ƒí\3Õü—³6rüÈ_¦~õj^îë}9Ð+ŒÎójÛ¶íÚ…FÝ@¤ ^RO‚xçá0I-È)|¤·ëòD.#)¼µD®¬šI!5Õ]x©´Ô:‚ bøc¯(ùh” ÑXMüq³j0ØÅéZánuÕ(’èù÷ñ¿åá§œK‘ºÆ¯öÀ‚ÕùL9çèTJúÍ+9Ál§ã^Þ=}´¸±n¥½^õ©ß- æõ ã³t1ËÄnÞ–zÃi?Ûï²úeXÓhŇï³+úW²Ÿì¬¶5ÛêdJeIÌÞšà«X¾)UjV›01wb逴½[sœ •lÛ²‡mÙᑊìÊSÿŸÙ¢+i¿b*C *#ÿÏŠe‰$€¨ž[¢\l a(ÿÜ’³éÕ˜Âõžþ±¸W)#‰/ÄLw+Ÿz7cå ò0åó²sivÖ¢ì|°v8‰#ˆòEÄ(HÄ—h伤ý±¥­Ä7ªžq¬YvX¶¦ÏM€ç_ñ*=6—1B,S~o‘ùªÇMoZ»qcþ¡ÜMº(ÇÉ÷ºè‰W&[mÇbÄI¢nfÌOÜð1è’ö·HË*EqqþާŽÃ¹h”âˆi<*ÚÕóç|¯o[¢§^kD00dcœlâ#$–I‰4œÎâ&ÉW—‹fK2kÜ{³~çZ@·æuõùœÚgØ.~f~>S?ž¦'¢Ï!ÂSêuاµò‰á£œŸO§Ü „x÷ɵÛ.Ô›%TÙTÚJMª”v´ZNœjv¥­ÆÙ6Ù±4••ã³û¾)ÃÒ‹· |£\»ZŸºv™†¿Ãô¡ëò—Óóë|A6&±7`Wþ/“eµZ¬+ÝðT)bu‚Õj@(ATüõƒ€%ôXo÷@Ìß”5Vceûéï¦Úxfô³ ˆï ÷!$CöàŸåèHÅˤÒÚpè_UŒy‹«Ôù !®0F‡ºÀƒ‡òÕiÿXjy¸p±ž~º†aá'Q»‰ æœ<—¸Ó&œ8âëü— ?M‹¸kÀFçæ1æ––e¸±èÄG,r]ñj«ÕÊRÕ/Oq­ê4îw÷A« G\pr|—Ç=±ÅV§®©Ýæ,Ç´Ê÷Ï„ÿ{ÿ$-ÔÔÐÆ+é…x¶‹~Ø£B?s2‡srÍ:¼bð¬$'ún”O¸aÊŸÌiìÓÌÐYÌÍB!°q¸ôMDï”Åæ%͆”³£y#ŽÂ:DA eZ‹múÓWÈÜÔ¹Þ¶”··† ƒÌ/÷å(w33ùÖ)KÑ*嬼p÷ñ‚—ï¿SÌn˜`·Ì_¿1°Ãž¦å2æýeÝ9—©­Ÿý}’¶)=ï{ÝKG&ÏÈÍf¯2Õ‡2;m]úZÄ­72×^«ö3qìG‚¯éFØ…ù—›«KYK^iS|4i›0cþýèv­ãcbˆœ‘ß•v»¡Ó°(Ÿ1ü”áK0¡ñoÿ‹ süá0ÆÛ¹—2çï|…þÍé],.^3sð˜C÷KÄ™OŠÙw[è1‹üíäbÓ±¢=¶Þ.\0He È &/”†åËèÁ˜Íï•¡øñ»@S™G)h eÓf ¶Tåªe.lô9µÏÜy—)[[ƒ£œùžñB¸Žw E<]ÂcÂÛ k;wó7ý °Ü(©Nm„{4m¶òÕ¶ì¬Þ¥¦æøîã"~°fªgö¶Ht“'Š©«ê}¶š7ɤe¹¨ž*ý=ñ^x2…1>Ú™µm¢¨ªíMùlO”gJhá­@÷/R„Ô ·5¬Þ8=ET„±w[énÏUêc›[meh^ ‚ 8%«©9är4ˆ=8Ô^Å IHHâÛËÒuDùÇ[-ÚÜÛÝq©üôôM}]§Vø-ú5Ïñðì½Nñik³Øïqˆš'?‰£’gÞ¯ÔËõ âïÇÛ·~Ý—æž½¦úyçfK³+É!yÿ}ØûýŸ¶S®øFáºRßâAD¯Èl®03:Uî¿8ü³Êðº~ó¨ÓÂ#ÜxÕibù45ÏŒîô-5·<œk’EްBSC­©ß³\ÃÕ>Ŷ§÷3ë»ÖŒ:ÉÙÙ{˜Üèïï¿ß|V )Ÿ6‹2vžè~I~Ú y÷V»ˆv}6%ï_º€'þŽ-¦ó²Œ’J¥“›™` f±|’Tái Ϲ â(‹³.~fh×;Z–åw<-fn Ú…¦¦f‹íUß–áKݼPTQ(Ö[÷`ä$$Ž6`žö{ô÷H®vòk æàV±’ÌÎEÜLÌæ]ÙÔO÷è­Õîó~mœG{#Ó²§:['©Ðõ0 À00dcôœk§S‰$æs:v–Y5d¼¼Ü¶d˳‰÷;8ÁožÎí.%Ïѩ笾ú˜ž_{:샧Ìë ðf—°Ð:3¸÷4<ñS$²Ú@ÆÓvšr$•Rµ$¡¦ÔËE&jA¸M&ÑÚ*¶‘RýÏ\´ÏÁ&¿.ÝéýI}-TõoµMºÒÍŸÛü¹¡Mc²Î=¨£''=j^ú«ôXܾ<Ç90óüýfÀbï\„Fµ´^0XôUÿK`¶ßFmçS²#$MG¾ê"òwíet¿ÌÈÙI2Q#I:ø÷kº*R4J)ߦüõ:ªÖ<ƒ©®tª~+ó;ü4(]måëàÛÕ¯Ásñ3iúÖçqþ ó"ûƒ ·&ÁÈûÑXÜï{uýL1G¨¨è€S…ƒuW™hQâ 3çE-¼RŸ6¿?<×Ò:/éè ªCˆ_ƾݥžD:Éõ]O©–²:Ü¿V†Ú/_ÏÇ„Z\8º ³ö™¾óý2öh¯)îU ä¼eûX$Ü”Ë|¼ý™]9žtJÙb` £uúø?? vëY¼«Êf/ï!/4! Žh,ô1ý³pÙÁÇý”¢wthù„5­nýµˆ›‡3\ŠÝÄhkïr”†­{; ~¬™ûöj~p¬«÷ŸëÜ 3¾[5îãñ©¡>Üwv»tÿþûâ 4åŽÑÞ9lÆG6®e»L˜…æÜôTÀPŒ·gÆ@?j Ó˜…¦´®wj1¿à#µOM~4q–f~zvuœ1~ò­^ub{–Å’Þå›…f·ã;ñ^àÒýÁÏæ+ÒóË‘fÙeý›é›^¦³Mjadö·+5Ý)=¯3yÞí“cuÂ01wbéí¹•U^ÛÎ$¿ùM%«rmZËõ—±Æ¢ÓÛ5Ch•ŒÞ–!DÂý†;bT ÷ñ ãLâiÈq€eá+8ÿ‘F$ŒdÄ)>¾’]y¤´x*ƒË®uLZœFÐ-xK~À½ˆ/É<°¨Y6|µT¥˜€+UIq¹ì9½]dèi‡ïpXI "˜0Y…³œàÖ8 `›w4»¸NV‚/a ¹ìŠÛãÄQå¹F´âm˜ å‚%ã@[ô+&p ¤à—ÞçZ¨ ÑN¹_H õˆ)8êSéèhZ#G„ƒ\D00dcàœyÞ!²2IÌætí,«%åð¶d˳‰æwg]…¿3€úüÎën%Ïѩ糀óÔÄòøñ:ä ( út†©ç@Ò€øoäBÕª»ovÚ³kº­îÀµDíÀ"wëîà4¿÷?wçëGÇÿŽ7ggÖwâ ° p¿™ùÕ©CùíYeˆàg¿)¹ëä Ýù»O$¥ŠÖ‹ïyux¥‹<Ë] `¨ÔxiE@·À,©l$$mhú›Äü¶]x‚l²­Ö2”Š‘ƒ0&„И/I³7´c@i‰ùl BÐëú·Èò³è§k¡š?cew8éTô–PòÈ ©Î¿Ü•j\ ®^¾á­ãå=ÔàŸ'Âù”ahë¯UŠ“ÃK².„£}ÀgM3Ö zŸÏ'àÛ·Äí>ý| ôGZ÷­ã¾ý™gîÈ{÷%)»žêkë‘g¨Uù¬ÓMWd{ɆÖ|l‚ŽsëªÄå­z4÷ ˆÆâœæäÞÅ4ܼáhþ—û/1—60—Yy—ó)Ñ;)‡³^—Óeõöÿ~ÿ¾Œø3áMJ¼7 ùµ=’#º37Iž×yõ“Îâ­8CBjãdG^[D•üs7?¥z =,¼@ÌP7k>'Ž¥ð,ÚÃÂa¿7¬.¹›ËUh§¤¨Ê é1e“ºË†‘þ¥ÚbõuY¼¥"‚ÿfÕìȸøÈßÃ*rÕ5.$•$UÝüi˜»*2$Ôís|«H„šÝõäeˆÙ8JD/Mºì†‰öôÜ•XD00dclœ|®dd“QÌøË]Éy|®&MŸ€=œ›}?/™©õì|BÞ{;>']FÇâg@†›ÑÐ|—¶ˆyõÉux”[km&ÖÛ¡«m”ÖêIŠKíýÕõŸÜýoÛ¬ªýøÃAoùüÙŽ>_—@HÆÀ´‹0C^ ‡—gQ[nœ›ú*2–{BÏ6·Xà$$Ëjv9`Ùú*:–’¤‘ !$‰©ÿöäÓ½:ìkÕ½õÔ¤ÂÅó8vs8À:7fÉ@G513Êà8Ëö¬söE¶÷½¬…hÿ½£Mvá›Þùfu¼? =âËàKÄóGýr<{£ÎZ¦1aŠ>láÔ½/¤¡ ÆÇ¿?f‡?mˆø¾vþ|°»y›åוë8‡çÕ»­t*",(@»»»¡ç“Ç=q£3ñË­ô U?d½MÛì[æ1©¿M(tí?‘Í~'ñ¤UÖŒdj×.+¦Ó9ð(º5öÖ2*šg\^ººØkS{®`Ɔèè1&³R\á¹+ÉÕkkµ÷«nòövšê ”‰Óò&‰‘ ©­„•’~=/ïnХ鋻~† SL4;Jb郙¦0Æ—jâÛŸ9”k¥ê L"LñRDa%ãßETFo*5¥H›&C˜ë‚ͯ«}ÄÇ®Uûâr¿ñ»[óö0rqTÄþ"xÁÀØ0·þ;t³>oœ²=äµ8›WTñ_¥ó^Ä£Õ3þî–w÷Lïuy¢* Q׺ªãhŠœBwÔVì–Ä·®cÌiãð‡·øzü=)ò»üYÝü|y%!×PNe¡ lVöi͸Ĺ„rI;½w—vò; v}&ÒN¾ÿ??p®Ü#!©/ˆ(JáÆÞorÏÞõòÃÙ…£ eüíÙ—¹ì»*ŒÕ¸Kffù¬Ì Ü€þ[Å Ý/<¸èyõ¨¾ïh¢T‘Y†ÊA^^ß#ö¾ø×§áû=»—í½#ºÈL ™ÅèŒÈÌ‘sîŽí:eÿ”¸bNÖ¤íÛáj7 0!{AÀ^E#y0¤²à e¸ä%B÷“Æ~juÎNÎMN‹N™™M»Rµ ­¬­^¶Å¹Áîh|ã‹ãpäbû2°ã,Åÿ´.KµSy"eË––ý:Ú¬÷±ëcÎFDz× apå-³3§ 00dc œ|—ˆpW™å`“¹//©ÄÛÃã|NΞoÉà?9ú3ÂÁñ_‡Gž»¹ñ÷óN1Þrü‚< ÀyöÒRRâI1›l²-´umÈ‘´ƒXMH ¬Ž”^0}Ùà Kýþß”¸üex'üPï7ëµè$aè…ÀZ^¢ö£ÿ5Wÿ’«(Šö’s¤îI2\’wC÷£ôøb‘Fì ·zôÁCÿ;bÏææ¨é‚R$¾;4îæïì¥ß©ÝïÞ‚êp(ƒr±¬ŒÀEmÏŽ–¬)œ_Ø©i;&-Â"/Éëénö‘‘úð~ñ'ŸÑج>‰)W?Œx"ûÎPxo#ûqÛ­±aïžúžu ÁÿËæL½ù¾-ú9…FHÊdh2â-Âæ%áì?A®è;þ½²ƒu¦àêôšò±Óš…0bðeØeÌ! ¥ùHVdqýç`¢ wuãp¦þMŒ‚’¦)¦06¾`F8áû‚üçПëÊ;h^€ôšûƒÐ^ ÿl=»ÎgeE‘¬aëã»òÜ› òA²MSüe j“·«6m›TpZ£d»­bÊ*çnŠÄÙQֿшj'ç"€–Šô¶¾v?Á­Ü¡dJ‘Éé›}Œ†VÛ'ÌkÉÓù L!Lb1AQÕŠC1† fT2Ú†{òû»l¿Idé|޾©X•ârÛ%a>rK%]ÔôN•ôtVg *£«‚õqäÆþ'g_rDè%´þå–Û‹²» ~Mß7| C ç¡O9›À§âÉ<â×µYTQŒ¯ÑûÊ¥slŸÍÛ*hIWÃZj0/o±ŠšÜ¥Œë65Ùmd …")êå¾¥Ô¨¬÷¤å*xiOºS QÒËΠzïÁ"=lßQå$Ùq{ã sÈ¥ guwÖŒZ÷˱Aô_·œ—.‘Q¯Øä¹¤9‡8å@ã¸íD¤Œïõ7cÙL»}’λ÷˜Íw60ùŸPoÕ¸lß4žŒß3M5d¢HóoÖb¥éix|¼E‡¾#?:×;ÿ'…£BÓl¶ùrŽoìŠàˆºãpÎó½wv{§ÓÉ31(¿Ìn6xeCEfdfŸ»NïÇýáɾ©¿¯¾@äŽ×ö m»€»v€1°Û•æCéѹÜ3'2ŧ¦E§¦H­ÎΗ˜:ÕØ¦ùÂö½Çmí½„O\z–ÎAäΦ¬¥3yiéõ·ïܺº¥×)è01wbé@q4—)7oã1_z°Ë µ5~ÇÝ¿ÿ2’Mq¿<1ÓÌ}8¦xp̶à ƒÈ~<¡˜seŽÙŠS‹‘²ä߃«.göŸŽO‘§äx^AŽS{þY‘þÃxä-׿*òKÓ uù?õ_ >–Ëòñ¬/Gõücˆ6"6Ì\â8EˆáÜã¶èG¸—^ræ Q›‚1G™t²ˆ,øŸÔˆ²4ºäV´M1ŠÞFï0A‚ðòÖ ÝïˆK´N˜/ówm3D…^ìÚ‰Û7l¹¬éãUˆN³ˆI  Ž¥cVô°–QD00dcœ}¹²;j8VY;’òü¦æÎ€§€üù½…ÏÐT|aðèS”ðuǃÇGx'Šz®„ðz  +©ç«­$Ö’œƒ ¦ÚM¶0… Ûl +cI!A (§ÀьϠŠÍí}ÕÈ×ÏžägÍýþ›Íx¼`Éÿ†ðOùä\Hå’K9,à&wØ•¨Ð\3šDŒ@Ø*ÂðŽ@a:U®àíã÷‹¼çäi Dy¿:¼IôÕéÙ9„A~do¸;é7Ê)!ÞŒüÀ}ÿ½R™E³wûpEw®\} qƒSø*½UºE7ŠRÞ×-¼R—ù™˜\¼_–ñ™„¼bkúvpEäR) ã7,šÑðSl–lË×ðŒÍ™™ŸÌÌÌþ™šá™1O¹lÌ Uÿ‰àèXò…Å`T§¸1úÚsW”\lüQý¾Ø}SGGÍö›-ãœS®!s2ý<óþwdeuÛì–YÔÇÝŒ>lIÂáxK?Ó?Õ'É.câýæù\ÜoWë™ê×íFÆŒ/2†Ýä/Ý4Ë’£dͤ–¯E–ÑÝ•xÁ— ùíïˆ/têÊîЇןAÓ¢i|ÎÂc%™põRär\p‘åâÚ]À§™Ÿ+?{Ôè®ëš"óÓ3¯¶Ôòñ=ÅšÇb­YîÞD÷R6+´gš(¼Ã]f«V;÷nxñï¨àsÇ!¸páký01wbé{P¶R-ÐÉj-7œ9Û/ÿ¯?1‹Ÿs z X‡ÿsߘhÇèR=á7My­ù˜~vbb¼ŒÞEà]x°€BŒ/UqÎ"ò +ÊK]¸¤ÞÈ÷ÿÕ~µÆž¥¢õ8ˆà7#€çò‰2ÖH‰Ä+΃ÿst?Mî)É0ÿ@ôzÎPiäuØÿžþö—c'#¶ ß´ÝxŸ¾H*E$?¹¸ò4eñèNW£ÖãÙXrAÈ–OñümMÐ-IuWT°£Ïˆž×Xþ·£«tŠˆÉzjÞ{…¡“Eà GžO· ‰çÔ5Y±BÍnŠUXЬ)öŸG#ßæóapô¾1h¯®çû£†Ãøù†×ÚÓîaÕÁ/¸=Á®Ÿîæeà4‘¼æ:Ž5ÃÔŽÍbgº'e˜Wªè¬DOÃü‚†6ì^|¿8@¿úÞƒñþ%bħŠVù¯ãë _wÙ m*_suxa b™÷úµDÔuY©·J5 ä­§^øìxìEgcå`YÏ÷àŒKtĬ_Ýœk„!©ÓD«²OùK:HÈ3%+±óhÑõiObÐ÷²¨È@Pµt~HÀ¹f üƒ z½µ|«:ËØI_¶s‡B¹¾g),Ðg‹ ÄÓŠƒO…ÏÈ ( <—Šø±!1¼–-²Dø4[\E¬Ü 2Ò¾UNQÏô{VÁ´¡ÇT¾è©™¡EF7µC»ŒóßÃÁ²ÕÕòˆ·Ô뤓º¥01wbéÀa6kß^`äëùéÞ¬Ôu÷$¯)Mu#ˆ—‹ÿÄiîY抩 º8†U¥è§M•¼9ø3#_åT@›ˆ'Ìc̶8Þká#6WŒK ÆàH5SFõy2†I¬õ‹#{|.Ÿ‚“î‡gÌçWã!5:‡ÈŒ€01wbéÀŠdoKgDNh-c·÷Ü1«ÅFðÊøk#1h_œ#ù öÞ»˜þb2~kÿc;aÜö§±‹Ö‡"‹àª_¡óZ£b¸ŸË^B§Ç+`Õýìt*œûµ[F°g*”­†òXOBô‰ßuÉ®¸–lpÉ%ÇÎäWÂ_—÷bâJ{‚zˆøiìÙ’#8(eæ\ ™:ŒãSí(ÛÈÎ$¤ÔJ޾!WÄVwÐ7‚·*Îy¿}ìÿéAñá?Ö¿]/”%&¢¸´U°bÜ…x½HÜ.„Á ,‰©%Ât¹‚n½›½‘FoD00dc,¯eû߀<áŽ'³ðLvu¤oÉðtÌàÃÉØ? |«ª¯Mž•k-´„_Ù&01wbé½d[ÏôÝ—K ²2 imb1EÉ CDÌQF1 7•,ƒË d”·:‚ÝãÅU+›.©¤ƒ‹Aoòá'û~…!iW_›ôè'%J/ÙÁ1þ\üÇÊùýÿeƒ?\4—1bºp¢‹~f_k”G¶„×&ˆGrew¿€È"éHЕðþõZß9Å!#ˆ#ÌaÎBüZ® «íFSJn˜?'£§ = àðôtS±<€>¯¨l’“–¨)\‰ÉŠHÊ]± 2ÂÏü£ 01wbé@ÁÔö‚ä¦WŸÝƒâ@èzpI"Êb£ß-V—#ÉÀȧHæ¥ ¹‹M¨v¼–¹Ùó„Û?v£óÖÈür’É÷%Ößø.¢€?†SPåÐøÌv‰dß’þ‡‚}wLNšÃKQqH¸rT7Äí)#˜Rbk Å`ªø£dŠLãȨ5’Q±/ e7!.ç쩊°\Ê`Ö#.eÕÿ×Ð Üd:ÃWÌ­É,¦B–é^jê¡ÁGOÛÈ£#4Èw —[#ñDœ6’³8MeÃD– ÃîxN?LF‚Ìuñ²"Ã&?.'w4BÓÒªvMËæAyI¬°~Þ3+p‡ÄÂ.9»‹qHÞ´¬;Z«¬/Î%M³#Ü¿uªfØ7Ég’¢OÔ'™—æäçûlkÔ±Æ|Â+D‚'Å_æB-‚ݲdÉÈðêö!éû³ôF¥‡y8j’(¬!í²” gD00dc$­ß©ø1Û·£ðNaõ0O“O‰äø›Gœ‘Ré5Úÿd˜01wbéÀ©È|rUVðí-d;EСú>•kâÍL.ŠÉcb vudÛ¿ËŸ2øø8Ò&Æ2„ŒÕâ²7ænŠ ûñÝ4¼Þ¦b¿åkr˜þ‚ЧÄ+±ˆØ§X­n™û—±O-B_Š yi€Û/žÊâ“•üAËÈ'm)pÁîùô"(Éþ²ÓµdÎc·”¶'ÖÓïBD ~FÐ6›;.=Út lFGXÈ™ëÆœ6B8W³Fx{Í+ùUdØøË™y’~Óè÷ðbhy°Tâ°á ØügÇxÁ½”Ù‡é=¨úO®©:¸n2T_eD00dc<­dBJü7×=_‚(NmüÛÍ{v¡ÏבÄÒt|E^ß°:)àUç*¨•_ö™‹æÇ®Cƒ­Ì\[ýؘ00dcH­|‹ßÀ7}wÁø!­·›o›ñ¼ÛÍ·ëÍ‚ÜJ)ð0 îp)ð _}+ê«ý™T­çBÝ‚•…ÖBÀÆXñ°ÅôÆ@01wb逧(›V~5 4WWUÐÕ"ÓÈÄcA,<‚årAq¥N2)ç:âÄŒÊDöŸ_áªæ\ (¡Á0Òh”R’È;¹y”Aw8?ôö?~k?Äœoó.>~©J Rì?e—´âql^‡ÛR±’LŽiÍ+,å¶9–†áÏ?ã1B²2õÿÕUÇ ª'¹œÙ~ k‘*j†»Éx ó>ˆ;#%„Ù7:‘b9Ü<'^g;™Â‘®"ôBÐôÆ!Rý¢!ÛÌ‚¼ŇBùøˆ6H ÏíÛ²ó/£žÔó.¯†98îÞ±·­]âÀéYD00dc4­}Ž¥“#ðÃÒ¿7'ýo6óÏ?§è—êð (''‡ƒâ('$ʪ¨¿æ°”Ž‚01wbé€ßmGPQ­ïs•ÝÐÙk,`ƒ½ÀÖ5Ÿó7îü€³’øY¸ÛMðâúîvŽ 8‡—±!&f"F£™öG~^<±" ÅN#"o{0mÈž÷´Í²°â*/™"rÔ]¦JdЫ¸#3’Òa^Ë¢t%3¢ÉþÚ!<ž¦*þ;„¯”B©ÓX/ÿ%¸ó5ÈÆgNøI$œOèQE—2Ú꽸@•]QhmxM99÷ØHBõ£U‘‹_…FæÀGÌ¿ì‹âKˆ_S>ùs_@Ð*2†é=¨Ò›ô÷ƒ2¼¤]D00dc(­~‹+ð‚<Á!æù¾m¶ù¶ð|RùïUUÿ§Ì°p00dc¬2þª ?N>.Šd1Hæ°™A¥€ÈM(Ö<ŠR `p#áèyKX¡æH|\iáLìyØÒ°ørM`QÒò/<°–ƒÌa1®ã_ÊnWVNXo«««X+OGüâ;žzê'ŸéÇKÑÉz;ÄiýrÆ7lqǾgÍ™ówÌNc Í>z9O•C€Ñp`ÍÇÍ™ófÍ›7âÌ~cĨ à¦ÓÄ\øÌ»y³q°-ï"6ÃÕÜbmû2ǹӵýÎÔ¢â=tÁgÎùö×;ðy…ÐIÕ•.a|p'ÑËú8·Ûú9_@>íäÚo!‹c6 ùj޲՘⌰IÆr㋟·‘µí$U©\Š(ìyÃðWäxþN]SˆE@õY*jø?—±&yiñ4£S#þˆ(€€Í)9Ŭôåcqì4> Mø@/^<1B«È¦Êa»z°ÌÁÜ/GÿoåúmG¡h‚ÖX¥þÍíeˆåØgDŽ2Ã,&©à$)5cþ2õËQlÜ!Œç²Rnsh²m­,†i<¤O˜¸‘ºýÀ@heD00dc„®~Ó©ñ¾~ Þw„ä`åd’ÉHã6ƹ6B4¨ëó@|<Ú M]^³ ¶1ƒ0F¸¢«Gjaœ ñZOëk„&Žk…ï Ê/)÷@þxk¼ï'§'­ zÂvû½h¨ŽÊp‹:bi—¿ @§0-²Ðb‡'{ê–Y€01wbé€/ã<êætfÌÆÅª‰Í8ïË'ZÜ¢IæŒ;„_ ͰS·ÇŠó ‚$žÐ#ž‹bÝN 8å> ´½ä÷øÁ¡^×ýcc =ƒ£¤ò6$Y:ñê¿ÎnžÍ-àv…^Ð- [ÂÏnØHÆèŒÏï«\6Ú†öæ=I‹dõuTáwá“DãÈÌ™¯þ@˜±Ã×?âÌ…ªÇÐÓƒï°Jf߉>©Tx#¬“ÙjË‘¿Â~å_è+dÆ„ž“ŸgìpW7ü ̇HŒmìÈa†©=hƒ@ Jí iè¯í:DD00dc¼®~Ó©ñ¾~ ŸX©È”àUMêÕm¶/åpVtsã’@ÔBÈg~''1ØÜA”$»ì^t±NcQ´6SàÉ3#©Ó– 8åÆKwŒÞ–GÏ}Œg¼ñ7Ö¹K "6nfsWº»ˆjǽ¬†èWÊò*|äæòXB‘ã¨õ3 )¼äZ\¤wZ2É;ÏpOç©‚Ëžè'÷ÿ‡=W¦íì>Cáæiù™†¹Œ#¶¶¸¸3°ìbp`01wbéÀ—Ç"[7çaäe?eñ$pÓð޲2ÂóñÆÉcXë²%º)¢Ô1ÁöbŸ®žÜæô#r¹d3à<¿+„]dL±ÃîFäs˜EÐ:¹ÀÿœçϳpVÙVÒz*[E,0HÄϘ¦ÈG_üûÕÕp-FIoçí$‚ÌpÜâ-È¢*Îÿ×TEGaÑ~XÜŽÿDfÍûÈIý…—x(ºg@rø;ž8¥®è-Ô¥1Ba†È‘â>'ÿX²]Ž¿@4þRÊEÝ©uƒ¹h÷ôŽ~6ˆ$ò‚±Í#‡iü«¯©ðJ‘Óf’h]D00dcØ®~“©ó z1‚ky¼Â3ëÎâå·PáÔÀ*ª ù™0â·ß¦¨05vzx±}mB¢€éwÎøb¹ša $@‰€hwBJÚæ¤M8sÞbµ$DœNòÁ²ÏÉ‹+N)ÏR‚“ˆžÞ³ö™Å¼ÿu0 ¾sÄNà9¨„¢1¸XZḠ·ô$xË9–+’®—Gé"b;Þ aºbñ ZiÍ ù/áSÉúbZ4ìf|Là€Ð:@hžã)뮺 »O$¸ÄZ•‹yJ«Ç‘Ôp“º‰ÏF²û½1$[Ûeg~€wÄÀ[ë`Ä‘/$rrrI¹Ø0‚aãŸ|¦O…H$~!ºF¬•ØÐWÁ¼Gw\½èÇÖ{o6…ä¶Å忼‹¬tVãáUÏ–»lòRžàíuãÃûá?a·ä’?eÜcÛ˜¬€ óÀÅé±ÍªÚjoX|?Õi…ªðD5QŒ01wb逽m¿+ÚçólFzYÊ ”ðøªÛ¶"7E›Ÿ‡\'˜†Cÿxüו$øA.­EÎ ÿ\ø… hÍm<0ðC 9}ºˆrÿ㥈S³õ.^èÁ?¼`ÅÛÄíTSŽ.® ͇©=dwÿi ¯)¿²×]ÍeD00dcð¿~S©ø>/Á@GêÅëž“í\ÊTª‹H¤ÍÁ’OžR%¨)Ë+ü–½à•‡¿É`ÀœfñcÜÝM@(ù Šýº?8KÑ[6óÐ Ð zˆñóï1»0a;ÌŸ,ºÁaý©œ:NsŠ#ÛÛ‹ åGÕÆ,~‹…t~ú|5nýÿfÉB®F9|‘ÜHW¶ÐÂÎw²”•ûFótú8A ñá7˜šm).Ú.X|±1²âÇo&E„­ª¦´Ò…Y>FSÎlú¦r›¤¶èO—Gºý}VD=f$…ŸÑ#¯¢EGÚO©Ë»„K/Á±‹=NÃÏUÿû`€†§Ð ÈeÂoÏ—ÓŒŽ0ö×b(?нCË¡42t¹T(nêÈ3)ͪ„¯væý¸9mó“¾ãE‡±Jaaš—õ6Ï2Pƒsäâ É¨ ¿WâDÙAJÂ?çŽyRméõÀדërZ(4í~¢â¨Ñ±MÔÞ¹šË³®ÛÊÎqŸÞh™¯]±.s_6>׆‘–¯Xî¡N£nÆ+ÎXgˆ{»Oà‹9qœ¸G;ÓíÝp®—hXõ}zh[½o`Þƒ[ך^É.¸€01wbé€ýu,1ï%Ü\  ¿7Þj júÞ:òÍÊÈ¿oMëƒM» Ýú–?ˆaó#øÿtåñ 9˜Óëƒglxšžêõ>Â{E±’ WUýUÿŽ2XyÃìcâ~ ‚¾ ÀüšÀÞäV#÷2êžVwh{NêµxÀ#Øû ½tý±\h›U4ÌÊj)¯ÌYS®lÄœÁ^†ƒ£*û˜’;ᣪÀòøÊEžŠfLEÜ&o~˜îv€D—£†D,ÂAgŽP@|³Ìj!鸦±Õ*Mˆ)øÕë£\ [´mÔÉdàz;¤àŸàuÍ·–ÀÊ]—–·†ÉôÞÎÊ^¼u·76î&­•I(ëä« Br¿n”€êMÛªJ#ÕUSj_‹USx›KëÄ=™¨ãÃ)-Í7V’'!Fÿ\{^3+ÏMí3ûÜ£.îû^ }~íRfO®¾›µ´ÁÅò+U“;h­æë’Lÿ°Æ2òJBJ²Ÿ#ªÈ9NõѸ³##ÉÒËss€G‰STVD' Á¥xùæNeEÝžr„"{(òÿsÆLÝç'ùð[ˆ?ýømWй?“ØtñEzý“›±¶Ë•&œ¨ê)î ¼åØ¯°zæpRé.‚>æt«cŸÍÿaïÊ™<õ49;Ä\K`pèW×sü[UH1’” Næ4ô¿OŠâ¹yמj‰9cÅAÐú¸×ãçD|¬~ésPrÿÐEÙ=ÅÍ“˜ÇÒÙó­&o†7Å9ym|éh“­èaûö,}"Õ¯d%¼È\5v"û_À‘ƒÍ{v!«L{©[Pú‡™00dc¿|ÓàŸ€;Œrû§àXļñ³ž}ù_$ò¾CïÕëUç‚ Û…`˜ÖO„6ILטT?FìóÈÆ©÷ýAhDçÝ Yo?c¹I:«òE `2zãZ)>òÚõèèq$Ìù¯B: `z4^´IÀج8´`°øÂŽŸ)]øŎ ÿ·È¯–x ŽÐÏ~a:â8¥8åòÞΰ¨QâJÄí;b‹ 6¤iÝ«¸Ô mT»U®R±8Ság4éšáš.‘‡f´œ;¸c]] 9¨ bÏâ‘fBxpf@.ð°­¢Ê>x‚H׿(„·ø?<ÎʳÐ"퉩¥ …{¦/žÌQ—²†D00dc„¿|Ïà"ø^O™Óð0‹ìøÒ‰(åQ[[¡<‹á~ ­öŠä£Œȧð/% ¹C˜/Qßbíu$§‹GT6ÁÔeˆ¹Ï±ø•-÷ãùðÓ H!®/£ œgo=Ð!†Â"Oc{–Üèún¿GCö¥«µÁ1Ã8N Áš{ù€M\©HÙnrQà—Ò!lܾ­6ìhx¤Ž˜Dý¬Yç¾g¡9ÿþ¼œ˜,ŠE60—šv=¡²ûy,ñÁ¯yÛ|Ü(ÔAˆŠß7Ä_Šq[¨Ê)(~ÈãDQ ª©ßpáê!ÄáêýF{=h?«ÓÌØt/ÒäœÏ¢¦cö6 í÷‡Œ9Jiì3UíŽá¡¬Ø÷ÍVαø‘ ½ƒªsvF{îÇQ{¨¡£ƒÿ2Ëä‘$#¾IÌ™ç“ãê²dB¬‚ÍOþ¶°dîæ¢Ø./×Ï—|’¡@îyJ›Àå6jjiãiÁç™ßßu¥HÔ y© ÿÁ}^xð¹ÇAo w²° h¼CÛ h;ýöý dC(e¹aLÎÞEž2íxÓE©E* …¡§Š\ú²ÒÜÒš·zÄgÀÌwÕ§ü~“{/&2wˆóW{7è ¾é0©„Qw’Ê©úåÍ’x¾ ù·nÅÅR"¥à ׫¢9?ªlˆ;ªšÝXìÓñã,‘6“ „ €D)gnºÞïU{1Û¯cØêãûÅ:s’\åê¬î6ºnìüüÔU̪#ÈÈ•4yëŠ!Ò*¶­K¬ãz[˜Ü%<. çÑ_NØ0c;£@¨9gšŽãX—£ÈÃ!„ª øÛ†¦ioN~Ö—7îô ;wòGèk01wb逢,=76zÕ}l¾J,Z°4 IÀQ[@Æ#—)u°LªL¦Ò0Û²/ÆÒÜajŽ- ™&}LK{ñØGN9Üx,lû£‹4]ÅËŸ{ö,XñÒÛ\ÍUeÌâ™QÏÇjäA +psüRUæþÁã[‰ó®´p†A¥„1×¥ÀÁ.ý¤ ßT¸{®Ö†Ìáâ;Z2B8gþ;÷|UqÃ8¬‡öÉñ$»UñÃ"»ýŸß¸´<)Ä~Ò9þè¡mã8pÍ _µdŒÕÒªR:Œ)&¹ YSMOfmhãÌÒ‹÷ˆ.]N?¼0BÚº€Òze>Ò¡Ú²ºÔ·X»RNr:{ÇŸaJý»¶-þø0E¨¾û@Ýt?0bîÀ‹‰Zjð˜‹öºÿE5+@ û¤mâA½Þ;Z6ÖŠsoø÷Äwy·q ?Ñ òtø»ZZeN’dŠº‚nå©xîŒ^‘µŽÅÕÅse)Ìçt+ˆpìλUn ×ÐÒ 1¯n¦¦§¢ó¾¬s©åÙ±› o`H½jk­‹-œ; P ñ罟5qY?ÑÄQf¨¹5¿ÇàzÖ›Îq›œ×pK7¡Ï ÊýÛšI„¸÷³4gç2è}:Ø$b×ïJøË;ݹ7g9,a.s¨a<œô]óÀÚ¯î¤9(Þ‰ Eùñ¹B‰ šŠ$£‡&¥¡¤4ƒHùAÚ:=õÎ,h_LpŒx (¼@iýðÏç…oªk4ôg»-ûûÙöìQ‘µ(`EËþ9öb¥”Üó×lä~—–µû·“@¢)þüÎòYØbß^5ɤQrNo!¾é°8Å0ØiZ•ðا}¯Uw»ì¡1}VO¾·Ð¡­GŸcÝD“`;Ùf 1Õ(³. 0øa²TÆ*~˜@‹rçôm£} ŸµöéÊ‘Š3_EÛŽu<Úg o;Fç®ë‘f"¦QÉæÕµhþ…³TvH°çÁ€æAå–ùË¢z00dcH½z^Óð cÑ'Å?f%çž¹ƒôW-%Åró]*¤¤@,íMt\Á©ky“1Ã"r¤í„Y¡+>LŽY[m1ˆŸ >k^â¤>A-Yõ›íLÃØîî×rcÕŸ;Af •aª…Eí~aƒ}J^bñ)81IÌF•ÈIîK½q8ˆ¸Ü^'%¬Š\Qª‰ÊXט³$×Õ?‹”Õª÷#7wü½Ùe£¹ÏŠ+ «ÆˆÆýˆ(ãŠ99ÛwS·'\}ÁSÔ”'Yï9jUø…Ç“µ»®ýÁŽn¤„¬]–Ê'Kh|£N3‰“,ù‚\^åÇ´ó hÈVk8jutRÃ>8ž°[ŽäÌÄß›IK9O)ÍÔð#ºÚgæÍœÝ¦‰7mÙD“Ëg;Ã'“UÑ)mÄ 8Ü~wZ£D‚<¦ ʉHQm³)9”\œ zÐQ#°žwpL6Kù]§ôÒÈ i-ùÏ ›¤¯ºËúM4)8ÿµ©™-o°ÇïK÷_¸CCÞÉSÀBX[*L:ï;¦EòÈíÔ§˜jÑuLîŸ#ÖýÞCzòn)[4ײÞÓEJîO¾]9r÷ogÕ§]ÒïixD÷Ç{-”ÞA:!3½×³@dyªg{u AÖ +¸†]þàÆúî_ÊôTœ¸~‡LgæöC«u;àrþWõäP-{ºSÙ>¸ùe1ܲkÝL§Ô½‚›%{º“e5ÏŸ…zê×"Î8¿²- G‘ ,óçé/Ë:“X¥Ï~óg¢01wb逗ô˜ïGܧã05Üeµ ¸Áÿ\]˜ž_Ñâ™Bò¡‡<(Õo“8Æ Ýµí1ºKQÑѹ ”I¥·L»û”³a܈TÅ P®xÑ Ø>‰±»4påI»­œí+¦Ò÷è–d¾Eçãås%ÙˆîÅž'O§$ÿô_õ †¾¬çRLçù´ôÕ¨Ôr_ÝQl®hùíÿK{Zä 4Ê‹^„Œ1Ÿ—k^ÀJŒóyô?§[A}¢h¶Y²q×îKFX,]ð_$ÎΨN’#Ž)8 [2±½¶åU B‘D00dc`¶z^Ìüù±äø§àfļóÑõŠž_7è¯Èuf}UËÍt•J£YUê^c\a‹c)µZr¾Ï2¹_jAº”i€¯ƒÎrÛœWMÓjõ&v³E¸ÊÂ;Í´Ä 4+ª¸=œŽœÇ‹òÐÑ‹‹´‹FéŒ`Àù¥)t,ÄÑØÑ¡€!]¨xÐí *D‘p¾®Mðâñ/kmsœ±q')ÊÍðédìV4ãrŒ·ø<óªÞîsT±Q?þB¦ÂõÍ$‘Ž‹îtAjaCumuš¹œ8CŽ1 LIÁÑþs—Áeª&úã°ƒLÁT¡-…CÖý‹ð¥® üõªËõ,-ëÍ‹„Û"ˆö“Ï5ÌxؼF1®t¶¼~Z«à°ö.bú@1“v{< · \În£ÔR`Á$ã΀)ì“çy2«û¶pㄸã7^¦)ÌÑ®"ÉéžrHº7žsŽ9rL¿S»cõÓ¼;Á÷® !×DD޽ˆê½(‘”H¢E;toöÓf|ë:‡NN ößV B¤fÈ¿·¶úõAGeRòÊBÉ‹ˆ_ÁE©¥{àG üïzºÓþ€¹S½ç‘ö«d¸’W¿0öKØg­2XÈÝ1Äop09m÷¾·Ó¥ˆ™ji§†Ca—•.do R-U8 ^¿vUä©OôI«î„Ûkð¨#®R1? 2D‘и€²߯‚Žu_I Ò‹°îl¨kÕS?‡Î$l²Üƒ¸±tlŸj›UÍu¨q…â!ayFáÖf#èì^Áö]"À01wbé@¹xÓ`œb=ÁܘËÀ·V\¦Ï7¸r\>«5€æ¾æG®DŒñ&™K0¤±ÌÊž³¢zã›BÜeã} åÊçùu¤á%¥­ÒÎâ[à°@+G| ‹ 1К?GÓ®'Žß‘ÒËÓ¾|3–×:‚@«•…§X[yÏï­ôqÌpí½p~¹1ÅF{éáUÎ-®œº£ÍÈö;!ŽÝæ4%¦<™NëîD¼ty°ÞzNðèy4¸¸õ\¨ƒß¯ÊÔ)PX‘k¸˜ §­­&mŽ©=jçûaÞz¨ÒcÜR–D00dcà°z^Åüù±äø§àdļóÑõŠ¿¼çžÜWä:®§É\ÅqÊJ¥ML=¦ù¾ŒíŽ4'Ó:g)ßf žgó–`n‘„0yãáˆç(9v–Ir“IÚ«é‹4ÄÀ\¥z,ÿóA:·ðçá™9t3‹FÑŽÄÖ)òÞ¼¥Hjì•0c‹c_>Â`Ã]×uk¶`úw-FÇ^Ä÷¿g[¥­jÙוçÏ£4flqA³ÇŽw)·õU6ãïצc¥Ð»”‘ϺUlî`*8pNèÄ´ pá¾øÇ×8p·duãýÙ;ͼð¢TçûúQÂb8Ñ+ŠÑJ.£ ^ôñÃÿW6b5'¤AbÖ;Fö¢¬šD¢¤!@¤Ãu8p–<%²˜1|pë·2—¿šº$Ú_e;;;nÈñútH¢D[j$voÌ¢ERØër)79›þå4BÌÇé[(ªéç„|µ 0os_Ì3ÿ‚Â8 2 ÆÝöÌ+"´°[w2èïa׳º>{öº3Ý,ͰחÀ€Ø €ÑïM3½6ÐM@d ÈegŒ4•Û\k7Ö™ eòž'ìh`]3±£s•ƒ>‰áÂò»³\xüDôÏNØ101wbéöÁ_…üu¢ÀÞ6€°>ÂëõÚ.<.ò‰˜Ô ÆñuGù‹Ñ%ƒP+\q”9üüŠ)0e`|:ŠöâãH«KÃå< ¹@`õ£C-#—/Pœþ24¬EºÑ ¹¿_Æ#¶’Ékd*À‚°; QËÞ ôGøápùC.ŸÐä2u<í¬@PX è·²éS´í4j«ú›(µjЇlû/k®o(ð)Óº"Jæ+ê}*•5 ë®ú4ÆXÒv¶¶s}qÊyç}P,ƒ´£æ$Y[åCaPêƒÒ¢úÐñ¤Áþ‹Öùå—µ[.üÆèÐá ‘ôhÛd§/Ñ™¿Éäˆ.†ü¡xÉâ~¿ë ˜„Ûm³³ ]iWrkÕ?ß UAØ5˜ÆÌü W&\·çôÑÚ˜êîH(lÛâKí´ÓW4àǰˆ ¥øÏ_$äý⊠1r±~ßıᵦJîö¤‹=}ô(d‹—¯ _XÅd,œFàI·"ÕÇý/ä«öbr˜Ü¤ÒÅtáÍ„{ño2bií°¸Ívÿ«`œ¼JvP×?«µ}E4öZý}ißf¬êè™POýü²ÀIC‹ê…mf/öŠ!½€jU Âáˆ-»)daÞ àÔ~tfƒNѯUbÜ^<IÉä/™Ô¦ñÈ·’ÆÆñ»côH>l]AÛŠ;¸§#ãßDŽþ³ô(‘Þ6‰‹ŸtÇÝj$Ñ'ðëgÀâí§··NI³[ #zÑßÑý,ØZEêð_¼$--þ© ïéPK…ZO„Aÿ—PB( ÇvMÔWùvGv‚ÃÌ`\'DýÙ¥L=<–QÜIüj—9ʧÓ+wå×á±ÀdGìü&à˜dÀ].T­Ð„„z‚5’³²+³—P2t K4P­“v‡Ã¡—Cð}î7¢00dct­z^Á?µowÅ8~Ïw“BóÏGÖ+>±íÔù+ð_Џ%­öÛ3‰r@IF¼ruœk\ßGÐŽ‘¡ ï~ qÞ{'HÜÖ#û:è› Œ¬Å÷æÜòmݸ­Ÿµå¥Òl]|ª‡ŒŠ*5[ò˜WÈÁŠ0]jxèÂçÚ¦hǵ£ |ü½¨»bP.XsfÉêFç53k%KŠÅb¦Lc%±X¡ÇŒØE8Œ"C;YªÉv¹^;¨Ð)mû,+ñ]Ók–C( ªýp¸??þ ß<Pm§uz­ø•ŽìÇg^6?þ╎•È…Çä_I\¹s^¾£‡4qòèÃwÄÙ¾þ bæpáÊ«úz²R7ƒd ˆæÝ^¯´#ùV«Š” ë(«glÖoæŠ'j¥Þk½X¬ÅýX;´;Ýùè¾ógì?¯D.Om¾í“« m½¥ ÿ„Øôl$‡2»&l~žWD¯â}Êfi§>z 'Ƨ8Ä’žÅ;(¿«3 SzÄØ*Әㄧ;|ø¸ø¼^¬žY'ÌüU@M0û¯mDÓ½}¢E„û¸ù4H¢Bè/t[ÕilàèêíßœÀÐ6s=·@§Õ`¿E@Ä{ž²ûñ?DLÏŒ‡ô ÉôÜC4²…çöÀNtœýöK¥¡rÌ¡‰BÛÓM4Bi÷;¶í­?IkWu$@b œ@gˆL7 „Â4™@TcGu P²VÕJçIq*Ìä˜$þí¦%‡ªl–µSª0Ûã01wbé ßBK§J*|{|JJJj h³‡Òˆ2+!—1ï@ {ðjO04»Üðõ²á±{>âöÍ?½uýø•œr˜Õ16Jþêæ¿›•N毓åUþ÷ëMî!‘—íðÚw¼wtA“‚•üUӥ ÿ/¬<¼7\NÀ·¹×ó%N¢p£ü•Ï<þðqA^ä«fâ-¬æWÌ4ä8øÞ04ðÛ6Â&ÝÛTŒðLŽ›xÕš+’œmîÿ/ô—é³n+‚äúTQB„¸êª{!@´u Í‘©-*‚È8’×àÁ~PòD00dc„©z^Â8¿€‰;j¹|S‰ø½^§YŽ ›Ãšå4À—îH1[ìd±°É5FlÒåÔæÍš)L›¿æ§³2âlÊ×à–4¯€/ãâÁu:7ðª‡aª‹E˜¿ÕZ‡YœJJP9Ôw짉áMêD00dc„¨z¹Gã?ù 8|“‰ø=±úHñöNÕí.~OŒƒ?YÕýÎß3àþ…5*ªª¥+®2¬/ŽpÓ}™ê×ã”ñ«Jã§Žvן®1onÙéjoõÅJ8¥aq³øÿDÂí˜Édø1 NŸ¶@²DB†~@}Ò<¥u„¯Ê]ö8*tIõ1†¿5‘¢Ã•XÀ9†:îZJü`ínî uZAïZY„sÿi]ýŽÙ9×öï“;Ó݈¢‹þÅÏÇñ'&ÕÜë^ª±–%°ÏFÛŽ ¢~vd)y ü•Ï¿­‡mý='cÍŽ3í°Y.fâoãBâÿ ʶeø$Bçc€w)©FMf–†]N¡¬D#kÞK ø$ÚÛnzð´ªäÝbºŸæÍ.KTãzFìA °A ~%ÿ A|çY€ ³™Eú•~à Ùfí׎]cû×ЕÁ¥Ï‰l&… ·B… ×@ÖÆVùÒû+œ½È…šjɽFòaÏÙLœm6Ïg7M…^”·dj7ÚaÛg‹æ¼Ò3›l×Û®#¹ ×nNW¢Ò"›ÑItñÿÕÑ,ÛÓ+©Ç³7ҥĩ¼J h¡Ê›W7zpàWG•E›Çrï/ KFOŸh™]ÉV¦‡{~‘6ªñ!àÜ^Œxí3ÃýïúÓÂŒºp¢½¬â»ìlÂ8AóÁ:Ž¥êyŸi\ä[ú€=É̾Wȼu1nÜbX¥uÍès,r®cþãT¸Ê8IßO¦ö(á6+ÑXGÀX(vØ…ÅfZýòrb Lî°jk4ú£`è_÷Ö>ëñÞ¿’%¿š@k¤ÕƒÀ`00dc°§|°áðù x|®'ÀèéÛŸ~?ˆ|Nï ϸç9úxŸ¬ç>ï©h©UJ”ûé+Œ2&žæ¦`D.D">#"²$¾lf¾UeJU¡Ú\­MÖÔH>ˆ–Ï|Í£®,%(‡<Õ¡ÏÇæD'Åò»#uSç]y¾*â¸*ÎŽí“ ü—Æ’_¡è§NMV:qxGÖÞg3AÅÞúçðöp{wFš±´m Ïÿ¶XùWg;Yó&ç2£„Tã~ñlqìGÀ;¹‚rÖ<2È0ç-¦…Ð[õIJ€Yœ\Øë¯2W<“æOnð›P€lÁ³Tw‹“‡2.œÙ,ŸØ^Ì(ã™æ—çܼnÀÄ÷;ŽXÈã$;œ×~á¶õ‚» <Ë·hçÉš3\¦*ï»T4”wB£;"€û6ùìv/‚×@BQÓ_u½úìla rFîèÐ,&OpYìµsñý”ø{àôî¯ð@ƒ¨èêÔέL÷¢õÍy+—«Ý~ ÛKÜÜÂ…îítÆâȆmà Ë»œš‚cspóKÍ¡bqÙ¼Û°®6ï’¿; jêfÍÍg©8ÒÒAÅåq[ol½sz?ðš Ùœa‘‰;hsû€yRi^a²C*yúËåÞÊ9hYŽýG¿ÐŽo$}2[ÌàäbYàg¡'—çÝ©ÇÈ;E ¼YD­ÝnîË3è ~`è.@Š%TÊfnè§Ôݪ§ì!ÝaÑ:ÏI%s¼çQý@/ûäˆÛ*|`G)Óß"ùñ:qÔwȾA÷Æ–iæêÆÛ’ã‘ôHIÆÈ{e856ð2¨£­àDá Ëúë†ôߨ“^‹iíBƒo%¾Õ 7»·/ô>†¼nƒÇ„®aeb÷ãŒØi&à01wbé,%õ•Te¤XyƒÔùͪ -Ã@×Èkñ¿Šë@Ŭ¥ ¾íþíëÈ:!‚³ S¶Ð¼¢s™ÔÀ¾^¤‹ÆŽí— Š“T«ùÆ¿%˜rÛþJñ78|u_U\þù°Yâ÷°RÇãB–áï!ç·Ç°7,eØ9rÈÖÿ5ªÃO?,ôßÿ/¤,7—z¡ZЩ!y ÔÆÇ%iÑ"‡ž ½MKþàw‡@ì §þˆm4 ‰þä!ì_äúæ¯VFsô\¸D r¨±è¿FñÉ9,m’©mÊŽÕ_ú ëÁD÷D00dc,¤|°á#‹ö |„¼>W‰ø=;8F‡Ÿ¬V|y=óÏgv};WSîñ>ãœây}JÄŠµ4>¥*Yª¨Ç”k%¼YeœÙЍMŠˆ¬šš8ÐHކøô“ SíZÖ§Yñ¶¶OC´ òÛÑÍèH¤]ö&$Ø Rü‹êU@B»¤’ì*r÷¸èÕhZ‡tÉcæçŸ¼.4uÍô‘©jBQÃ9KP›}¼OZ$mTT5immmm˜6ckyj}Z®õ+ZÚÍd7/­~ž†ôúw½´tŠdíØCûqä39õæh™œ¾Ë_ÍöÀ?it¢Jˆi™AAÖÃÊœç;›!v'h5†; j†&;’cú)^æç7ó¸FäÊ–“Iš)ªÔMm&’3Žt…w’ÜÜܹN{è7pqÞtûÒx&´Ð§XÚ`ÏÍ•)rɬg9':U7JzO«-ŒSÙTÀßU‚q1Å©¡ÃA6ê/ ô ç,¼ìÿæŸî` èH*Ô· 4¦J›™0@Ãæ‡›ö>~y÷Äb½Säl°ÂœºZ±Ç°»½ýãú¬*²V{oÌÌù¥š®Ò¶5÷Z…i×ãI‘´S)©ûþÈHOˆQ„ú (0/“ÐnSÃá=ò%:xSÃB4wvQ£•‰œ^¯O-…€¾¤~礘Éû§´{w¬?¹?Ô@$‘WÞÇ: ¥¹‘éÍ7$2Š^¢‹Æ¾-9TÖå¯ ðá‰áð“Ťì"|/cÀYäÞêñ¾6ÿ‚cbjý¼I|Ûý›éB/t‡Ò eO÷÷B;Ä€01wbéüµz—7巴׬ÒÿJWA_Á hð“!¢9ù$Àå{¢ -‘åèI¼ÓäØëÿKüþ`?\¹Øßr2ÏÐßøWBr&:Y:kˆƒG™˜„…ýâD00dcð¢|°á#Œúì¾V^+‰ÄüÝvÏÖ+>•\Õí.~f|Mø‡Äà~ÎùÉö]WWÃúŠÚR©(¡_WÒÙTh(­§Ùëz˜h¦Œ-‡–•†špáÃn ±®­­¥k·}úòoÅÓwIë~–ÊÔ®¢£vÏÓˆN¼§_¥º}Â3ÉÒ€»À 1 `ð²ëùø}JïŸÇÄÞÏZûm¡ô8€ lrë3']m˜ «Y°nöW÷§óŨKŽ#Ç$ëŽúƒw™= û[eÑÚ+¢x,•уÿ Ì]³´7qGœµÛk3ç¨åË(R…ŸG-ÖÄ×úü&$ÆV_x¾ßönÝÅfÁêÌU‹øož×Ä@»•ƒ‡×x¼>×£‡g}_7®þÏ3èuö™ñ7ãëìUWÃúJ«J’•U*‰j¤©CŒáGœYÈÀ¦’ia¢je¨¹Ìœy È ˆ˜ª’ɨ¢ª,¥S™“÷;ñ8ñ¢êY‡ ®Š†,\Ê(B5,U\d0r)§1‡¹è§À&P 9!»ˆW2ñ$'5ËgVLE<@ÇDžÄTèS^FDÎV%‹–¬ÑÛÑi,$ÜFÍ G)$VË©¨·ÆxÈ øNâ2êäò ½½:uDª¹«J%XŠžbR2èñ†µï—ñ×)jˆÃ,oÛ”ôg{Óä<6ós5úùIÖ‰½¿Ûð‹c¢ûÛPLð,Û=õ“á·V$fF3¬]/€€€€a°HØÂÚE”‡M2úB‘sc€@1ÿ×IÀGŽ”XkÌ^zÓ´Þz ±üˆ«sbû6o£lß·lÉÙûÇÜÍM"8ýÉ> iÅV*Ãô<*¿ï®^Š(Ã’ú“^V¢•x—K§ÒP]›‡K¥¯ za¤^êâ “œ¿Ýìö{ûN±1â,€#Æ¢€x3¬ñ¢ˆ5 D#¨¤¿¯æùiNgÑ`]óñ[•äi(Õäqê§t¢óDîs®¿qÇä–Œq+vÇÂ` ¾âúÛöò®Ó÷—777$±¹¹Õ}æÏ£ÚÚù8:ñ¼Xõ„øHLçÐ §°àЏ¸…¸ ð°`0[ÐúnÓ1P¬÷§­((88KHЋ¯¡_”WZÙŽÍÆ¼8¼cÜûî9ú{“‰ˆ;>¼3cKÂ!ÖÎbÃဠ¡W yý©õ,çÊÕÆ…«bvÿêÃ’Ÿž "ÕºÒp¾·[­å·¯×ßÙ7Ù=:w­[ž‘]dVâf|¬|ÁõW¡°kÙ‚u˜ «ÈíOþ÷½Kί•*ùûñe˘Nyq3´šO±?å*þ¿ôÿx®a?ˆ ÂMWb;¯Y;‘ׯ^·¿Y߯~Q.«ñþ. . ?W©ýŠ¢`‚á7†O¥\ÕÕŽòòr|-Håþ—ðÏ‚dÃB=UèÚ}GÓÒ$ᜮ®£w¡žÛ=o ê¾ÃÓƒÇ ˆñ_Æû†£î%\4†X00dc|¹Â±ŒWâ°IÕƒ‡×s2ýO'λæö=3ë?#©Šy¾o“¹Ÿ~>Ãé9{wÎgÄ)Àrû©f“V8êªnꪑV*¯«+ë]BPÃ!‡˜™G¤‹é ˆ¨«Ž¸l&³h&%Rb*"€ª)¦óL³åJ¢¡GœeÂ[ìªÉíF©’YãÀ6ät(­%”,[B6¶WX66Ó·µáÃu":êBJpüuDíÖ‰\Ð ¥A¾ì¾?À¾jÍ=~î–q®›rœö£ºA¨}ÔòÅ…¢g{d·›I¹7sž ø¶îKiÕø[“$aÛ}×L™û<Çí.ÿ¶ùtüÉG×kN‰áà®Dlº¥1¼Ûoßieü:|Ök+p^ ê|8y¢‡c½‡EÈaÑű!’äÊö.|½„µ…Å #¾GÏ_`ÎÆÆÄ,Šþ ÌkaŒioìllJw¶Gqì™Ç¼ü:Öþž_'¢§?Gåù==|º±/@Ë`j&תñNgé>:…í­Ç@U¿ø‘Uï]Q±ý&Áþ“b¨ç8ûØÏ8þpñÓ»‡œç à›D(ÞDDNô±öÓQ¯¥˜îfFÓ1Æ$ƒ‡¥@•ÄCzuí»Rå0¶–¯ ƲÓXJ” }p·“Ý~7“×;OJ–PÐÐ¥õmºZ\žPÐýþÕ§bõª†-¤µkoã¯À:õ@ÙÖ¡Ÿói/þ ÚÇç×ÃàðøûÀ×u(«-β<Î ³C¡–‚RÉht/¡,ØCôyc¾Í¨g³H7www`-ƒëöÈ›R›‚ †pP•Ï舖%prB ç sŸá&¬Ìæ’¨añÈ'3‚^Š@‘%%L…Äâ‰$ÑËÜC¹¹¸wŠ[¾î%ÝÃ9š œ†îæ Ø÷p›´$Ï™`ßf©æ_üËœÃ;ÍĘ—n º°TêæyNô?qôæµ³¶Ÿàøèþϯ9Ì×O©&'ñò’  ýÿê7Ruß»ÀúÁräí)¶ñ-2i£#ýƒæÐf\­ke¿ÿ"§?þg>Žpzáh `Û]/üqnoû[’fnB8í jñãù§™(¨Ìüüå!KÌ¡ææ4¾•/?2T¾ô½¼ÿÒó%gܹ€´}Ý`:“à 'Âñë›wñ'þe—£æŸÐwÿ»ñìfîý¯{]m1æÑANfbæ8ÕHäì;úÓOÚÏô¡tn4½èðØãŽ8ÚˆJÝ¡ÿæîænæù±­–µ­ÜÍnhˆvðD˜Ñ:£ è:ÀH#F:tèÑ£F4éÓê_ ¯‘|‹ä_ ïžo‘½Žù£Ò£FŽ ès.yÞ®RÏàÞ>ÀtQrB.à]¿µÌùÚÖŠW t=Lm_Îësþmü»×û6ÖÓ<ÇJª®ß¯×ê%âñßé7£À$š:<>ŸAð¾:ô“߉zl/O?ÕÀ/½îŸØïiF>0"E"ýA`A‰EB øþú¤ü~/\Èô sâèGã¦ÕÝÝú­ZšhãxÝ'8I%¡ùÆa<{¤§‡OKà@C wF0vãx4*B ˆ(01wbéÀª¾z¬‹íb¹¨$ë_ñbü[ÅÞ"~{Ï'=E*Vd–áù¿ÈÙ¬6=YÞ‘C?á¯óøþŠ]yüs¼@#¼î§Þ趪+µ©H¥žø Ƶ‰¿c}9Ûf!½·4™ÂÄ@—ße <ÀêÇêEv©_dN?¬¿_ã°Ø+ Ç@á°X½ÉÂíÒ–ýFRáZ¥½h Z @­Q‘rž«¦"Îk1T¸öÍ µ&@&z耨&ÅÒZïA?Œ”Õ$b¯Ç§¥iªç‹®w" ?.¢¡ÃYƒС-êY–*z`8hÆ0E$ñóD00dcìœ|±2V1ŠâüB :°pùYs2ýòpêgÿ«Ÿ|ôYõøNyçžzš;„gÏ—œÏ9Ÿ"PSÝRÀ`ÜwÅ H &=¯xæÑB¬KAÅ»Eú0àÓŠýZŽJ³Q‚ª¡ªz©¢üZc[l:8´W‚œªÙß\½³MkÓn—ÛVÙÙŸTݧŠÝ:mÓ¦Ü\5o[çza·‚‚€ä–°&*Š£2ØÃ`ú1êó¢s% (¼éÖV$#FlXˆ[œ—9΋Yª å-Oj3<(94fŒÈê'ƒ€Ñ¹Òs':Ü ;¬ 5«Ò=vèF]%`¾Ê™ÍZ£ÞC(66Dl+F×n“6¯F„¼Üppðp´ Åæå+vZï2SCY „Ö^+!–MNcQq²=D§A…RÆöqhC£0 ’ X&E‰¤ƒï‹yʺ §ö_jßùiÅÜL[•»ŸøÞÕí¸¿CŒåÌ 4yŸpÅ}•£¸G~uÏ´‘0þ´äüÂfÄ{0e0üòtW€4.âÐЊ=hhhv&Ň;0|=ìà ‰z·O@e²gûÿºz^÷±tWýã{Û†GÊ ñœ?OOó¡‘ÌÈc9ÍÍØÇ2åÉ®[Óz:Ó]y¢\^hcv8Ê뙊› ?êgqÊPQpìlÎmùãE6ÙÈ2méaƒ(»œz†Î2 ä?Ø ‚¢‡88ñF)(ÚËÑ 6DÀ`™S2 A;™"HB% 훳ƒwÛm¶ßssübwrƒ)€H¿½ÿÁpsõ7lx¯~"óJæïJê_¿¿ßÛ ‘zpàÙ¦™OÍo=d,£@½}¸×©HÝ”.¡d`ªÿ4h‘õ0pJ¿ÑH|þygWCË«ò_œ™ïàX–ÏÄœæT"gã»»zyËnÛ ®>pPèûˆç÷/lž+ÙçDó!‰æËͳm˜Ìßð ü‹‹‹‚€\\\`Ì#5 ¤©iNe “R ð]³Pš’ì+Ýãv¹:‹ê¥€´ý2ʹ·æïPömë͆˜Æêjf¦¡u55?ŽÝvðj:ýMMMJXÔl.Õ "ýãŸÅÏâ‚ÀÎôuh2–æfkg†DêŒ1²ô×w¸½¤^µaé÷žÿìÔç®ü®]þž ÏyûÒ©QdÄQϘä|\!ªHÿµ¯Ýÿþ¼½úÝëªãë¯Ð­.¡Óˆ•ÄB\ú°šÿ}Mä„õAÁ‡z«#±§|Mš˜ÓfãJ•7ÅcccccccIúülný5:RQS-ÿÁ+vî‘Ø£ÔwvúLðÝ\¿¦;Î]þ.B×Õ>hvzý=Ç3±*Î*/fizi¦ši¦Ÿ7ªêªµ¡KT*XéÞ+ÒùÿóÖý õUUU¢ð€•IððÊWGeãÀŸ)k߇Ãáðø˜Ðéóâ“çÏýó7é+&GݯôÙ?6IéÜG>g+™™—ãGŠ´^Õí^ù¡ï'qYóÅoÐÔü‡ ö¯k7è¯oÓÄZ}*›Î_¦Èxy÷òÃÌæx‚¦âDÒZBI¸±`[@ 2Aåµyˆ©¶Rµ"U=bö4ÒAUq7dïG4 4ÂIp ±ª"“©:´±JTAEìA™C … @á"ä&`:TaÂCÄ{B¬YÇ„èšeº ´»k޹é¶Ù‡/ÉÇE§Ö›ÍõbÚXÖDÖŒ®Ásã§U¾G ×øqóA}D÷ï}<…Z)CQõ‰ÅªÂ£&óX¹@28ýü’ÍÄ|xÆ×ÝâLWŽíbøˆ(„=bx͆Ë6k fkªº`~‘gº„Q‡èyÁCTBkìáfײ¢å€*1ØPZμOº|ã Ÿ«ënõD»ºÜQN ˹o lÁ9D! Ù<ñ¢4VÛf#û‹AÙ¿rÈØTJ¸m·E”Œme/×ù<´m§Ò(Z5xXκö:ý…j[´†²¹³ˆelï0e\FÌwnæk.ýŽ+ˆa×Ásàî±ÕìaŸc®†²ê6¿m›6}ôô~là 7ïß·ömý°÷Øúì'VR÷BÃ_'ñ?ŽnÊ^lSy‡If³ÖBXꓯ"ýnªá¸¾PºuËÓA‹Ð™ê´—#×à+úÇè[÷iᯥì-PÔ”ƒR‚íoiof€ý} hÚznžïi7}Ói•ÔêóD™}¦Î”íÓmзÏw/%öäÀYŠÅ«TÓOÑâŠ(¢¢Ž4œëä®C–½«ž‰îÙÔ(W~¬³Ýîòœ´}.ßlšvû|qiZV—yc]ËM2ç»`»§AˆëßïÁ÷j#©ìƒD1ÀÓùï ¯ÚV*t c-•H;ĦîxY1Çq‰Ñ½$’]xf$€1ûÀOCÍæ…On»¦·lOÚÞ@ŸÅÑ—µ5ܪ‘¹ÅVbMv88'mÇ.ÁûÈ×NôÝBÔ‘.¦þ¤WŠž;•Õ׈kÐI%iäÉ\ÝEÿ޹³gÍ›íï·³fÎo™÷}§€‘bC|ºï™µVmàôƒCúfͼ|–§E®bŠK>qž|÷saœÎ;yÂ÷éφª©~6ñÀ¨ÒTP’tsÁÌ¢ìh…ÇògÙVÙz Eþý±XQyÚ£^8繩ƒ¹G°´yªŸë0;·Ñò!4£KÖIKÔ’ïp¥×³k0"¦# Úûë½n·[HõºÛ1µêÕ«¯»O[­¡åÖëuùÓ¥•I‡²/pq ZóÙ¢¶5V·~¹yÐa‚´Ã9»ÏÞ¯™QìÏ+ ™|Éoó¯ßœ -ue'÷˜Å/ EØ`‘°»ÅëõÅ ìúóòµZN¦Ÿˆ­²?_êiÆâÒŽ…1ØziÖ™¼Áô%y† ±_Õ>ÿ©ÄóÿüñM?æ‘ýÊóËŸ À˺œ¸á›z6˜ÕÔŸOMà¼=]\7†ë§¥ðãÖë ,Øñ¶ošWÝaZ¸6Zôe{PJ\ÁþàìÆÚ¹/"uCCÿÁdf€00dc¸œzNw8Î3yŸ­z9~îÎÔòª=©@ôëò#ó:ü FŸh6¨*ˆРŸ‹P9åò$aÛÉó>$=žÈa@ Ê† {ýÑáçÚ|„"ðG/æ=VïŠ}¾Y/]8ýñŒ?úÇÏã€h0ÑkØ€¦a\¶ÚŸ =ëâ¯ü´‰ÄH}sŽÅ,¥1žRç ‚9ÇQÖ¿üVè X–vk9š)ñZËÎet®Ö7xÕ¨4äÒz¬âÿ®íþ˜3þD!'úï\jµY–Фýz>ZUõ†y'D00dc¡z^7ä\Þ3ÖK-ueáóL~ΞÕíøÀé¯)›YŸš`XaH¿EÏ â>@ €á)9Da&œ#õ#Ûð"€ˆ. PÑ:9:0Ûñ4Å`ñ@Æä¥)¹=K°Ðä¢Ç)á°¦èþ﫲=^²îÄEËÆ¹¯œ7Öí[*í+·§Îk v£]¨64WáñGyóhÞÕ„ÖÚÖñs^™×"ù½Æ…òº‘pÐH)êôÉ4ws銄6e°°;ÐN®Ô .v!£•Q[uHØQÑŠsòS†‹üv´g»tŽW¢:ë¢wòÐã Ûfìÿ¨ \ !Ž–}÷w[aX]æ<ÃÂyÚqÂİâ]RÔ,޵èyÌtí<ÇjáÑÙ;vì0A?­§Žå“ˆZrgÙ®|u—Þk>ÉÊ]qˆŒ”Žõ&ÐJH01wbéÈôGÿªxûèÖåXnpßýz1‡<ôÍ÷æñp2| ÜóºÏô)aoSXàE¢Î Æ4E7ÂØ*&Âq¾XaªÙ~¥˜ì.ÖÐ!Œß+ô›ŽÍä¢(œ)ЬˆŽYuÄ÷•a£ë§gé´ÑýÔDʯcÚƒÙ&¦ò—Å틈¡ ÷n#?z~oÆ €)'{Êt?Çui…£ñ‡ÕymÀà¾ê£7|`›' jÃù Ø©w€VZ` »š­t’¥¥D00dc ¬z^7"终c¦±Ãæ~ŽŸö§Éå¬ ¨!bÊÌ<æ|Ÿ*ýŒ9!äD>1K+0ú˜Ä%ø#ìêòù;g‡ÕÐR(ð Gtây i­ÖNxó®×Bžvòë8:£¨ÐŹQ®ï-FÊ×+wGóæNÿ]ËçnL%ÛÎpÆùòÇçˆBݨë®çw4-]×…Õ»¨mv×¶+—DŽ£Å3{Ô3npÊŽëÍÄkËwwQª÷¢¶cB”OoÑ÷^l—ì0ˆõȾs3W23WË™šÂûš¬b„™ñd3K–"0±0ÄGc Œòq©çÏÐ& B+‚ ~,2jE“K:Á„Ö0•ŠV?È•IE“ÖjA?&•Ú,¤‚G#8YhN ?¤bk5 ’*”NF&´Øû¥~ϯ’á‚ìõ˜]YYäFÏ'a€¹êÁˆÓ6ZF ÀÏÓì PÒ¸»YAh(M€»²”'i âÓgE²;arB`´¬á]«{Mæbø¤bìˆÙeì–âyZ\ªiÛ+2¶+J"1È+µefµ8T~À1âµÄí›*Vê±¾š,TŒ‰àçG‡Ä‘JΦug.ÙÔC<~ÎèðYÔ|ÁÏÁãן'¬ê#Ð{rëHÀÎ3©s§<êr½ùuãשíçõÿ†,z>¬9D$5¢3‹1‡!2X©ÄyÑŽ(ª.ÅJ'Ë@»nÅü?`yvÇ „è†8“þò Èâp˜Ù󹃶5øµô·MÆT)‹Ç¿š^§×iØÝ€Â¸D00dcð«z¹ÜÝã7aø ?Ö·Ï( +øä¯Îp‡yb²™Â(j@5ùÈ'Äñh8|Dý€àç(äHe<-AþIÅG/žÜ=²{\ÄÀ¬_Ã/\ùþWÏ8ιߘȶüþßfa\Û:…rÙñ˜½,8æs•†€Ëµ[Xõ6ð® «@(M‹L$CvHóÝØ¡ŸX½ÙŸYØ;g#xO­ZDŸäYýwâ³ùûÑþ17×é¼Äœ (¤)êôIÚÇŽeÚ-·½v{ Æp|9ðöÎøP8Üùh:000dcP¬zNw8Î3x¿Cé~NÎÕðC¦Ì 4¹ò³žg8üS¯ €b´HEj|J²sa‡™^\>¢\uÝI.è.aÉQ„áÖëw›™=¸ÇZ¦êÚÖª5ݯ„#]ÍÛQ“oÎpyyæ·{QÌ;›šÂ•e¶ž,WEäa‡´Ç5Öî+£y´œ<§Ñ¢Š–@ÖÉMÅ4/LæM¹³È” /öL ˆ,ò""Ð-<ŒÙ8Y„§âÜ9&,g¤Ù¤#Eu둉šÌ  +‡¹'+ZKCCOg²SÈÇ#EÒZt„´®iqq®A]§"+†y²qÂ@"­iØ´|“(<ˆò#ȈY|‰êÍ‚ö;5¦Ç±×ã)òܯkËk’û“rªþ¼xô¿ä)ƒLWS#w[º%Š¶Æ -´·þúSè01wbéCZ׺ÙbÀ²–Ÿe„ŒL®ñ fuJ±8ÍQ2HæKY¹¦|J%Eߑ̘̀ŠÚ©ÆB“.v³´V¡Ú«f- l36eN8œI(˜k0O¡HòŽ»þ&!k#@À@(’RÉYE(i˜l‹ì.ðª+¬üQ.lÀ28šQE1„òßúp@ûÇ_ɦ+ ÛÂN@/Q®rp+Bª@³lŠ(='Z%·0EcÇÀÛDyÅÛÎÕEúæòùç¶'’NµKUÄòô‘¦Mä«ì¨}^ ¶ T/9«÷±–Îß"…vãÁD00dcŒ­z^78Î3w>9/Àåøº{}©ä-ò‚ÝC *Ç%~h\:ˆ±øÅ$¦IJ>MP‚/Î#aÉ„1Š€ iè òû0ì xêa)!ôÐÌ9çÚ[U ȊܬG²Ê–k™ÖùœÎ6Þf-9åx9Ñâ­¯‰ÛWÐùeëó,ÁzüË/–‡µñø1×=„NåTà¹ÿè j_9ˆÙ¯0y#æ®®2BÌÍ39³)]îËÍ©|¯•‚ %9³êaiù±õÈÓÚI$XxјkLÉÐ¥Vyeâ ¥iLÒe‡fŠ®­CäJ€æ¨xF'A••þE´‚±e¡£º„÷_#…Ôp‡Èˆ­gBÂX‡È‹&´‡bYúä{Œ –¿²ßýÔ[Ž†Í­yc[-YáÀÛ³³P™â ê#s©-‹/Ô^7»F9äçs£új¼~ÿf/ÇHwûP;^íÖDÓÙ–‹ ^8Ý9ýUŽ´ªß!*±+÷©¥ô¾€01wbéÀþn_yr‰Ü{ÃÓÿÛô%3¢‘Ф¢ÐÅe¿ÌçBžÀL À1Ú> Ïj{*1õI:µæxÏf´Ðâ|Š(G•ûrF©V«%=9/1^—*æ¸ä‰Aò±«ÐI/KT˸©'ñy¥Ímøô[ÀÑŠŠ1~º l€XL¸D±£~ÅPŽ@¤(¯œáº“þ¶ÇÅlo$Q Ãè·ê÷û*F $=¥@Ê!¡¢õѤ@Q•t´ð”~¸­Šû+e‚4]œÃö@r¶bÀ­èø®Ü݆ªË𒹫"mFתKW²¸D00dcx­z^78Î3x¿—Í“‡àdéðC·àC™YEà"ÊÌ0ô Eì"<|X¨–¡U €t>0ÐÇFbpàèè {<•"ØŸAØ­>G@§ºñšº› z­Œ£;aLuÈ©v<DhÌîFRu9IhÜ7wBò9E[¡`»ËïvÞW ]­~—Šm©†gÞ!1½÷Çõ¹»yËãGŒQQÕQµdÑóFì5—OÊ ³ù‘Ë8x,×âË™Ö:ðæÉDD9 |ÆN Ë Óövjp±'î(Çak†ËÑÌrCȧ#®­+YRã‰ÀmŠÆÇƒ¼>I²N¹+¶Ht²Ž“hµ.u]XµOé`j–„¾GÖÑiá_-\[²WÔq}FSjxxÞ6s66‘%šÚZt\N?_!öu,Âô<-½ßb‰¿C›曨 u ][O>€¥00dcįz^78Î3v—ÍoÀÁÑð{SÈZœaäì#ã“ø7T&‰ ¯È à0@äf!Ѳ0$NØB!ÁÀ_g`x;П1¥î|.'šÞµº÷­§¶£98;E¬[¶ïÈݤ\]v\…¸jã†ËæÞ^˜ºÂÆó»½ìH·p|.\;—Îí¨·»—Ű/wu¤è/^L#›Š3R£ªnç"#ó…¼}:íw8Z8Ãó‘øíÙ ù¹§4̵Ê™d¸ªÀ³¥"H^’QÁ8Ñ?7XÁ‡›9€Àä”A“Ky!qW¤ -Ú•&²ÇlP@°>Ä4I‹SÝ)TvY­œ“ärLÏ#°©i3)PµIJºbÅ™ #Ëš³b$LªKîv,Š8«]ärÆkæ¬ñãhû ½·R8Û:–´×­X3Üp'où^Õ‡«jl:ü†=fèocLáÓ”€—+N]~å_ž+1 œqìóxÕcœºçU³°Ð|Œã"gg 1®Å´òy›Î‹gáA€*@'^éêJ ù 01wbé@cPn)¶º.i/‹šýÌèªÑÈ ”¯ˆ!§R l.ëñ:äý®Ò2œ—™¤²_,üÄ*èGôËéL©KéöÕ‚¤ÀcË;r#¥¶yô–˜ŽšÛ'ÂòHäŠÞg雕¸|W) ÑϰàÝQøw(û¨Â€©ôæ®R 煮äwìP§?ǬkBŽòò½gˆ-ÑE¼ª†xüãϲMP>¯WQåûò^ѦçÀ¼¿0Ä™+êÞ²6A1°’~„ó’õƪ´¼­Æµ’~7Ï«ˆïÇ´‹,pŽp9ëÊ·¶rõÿûà.³ÄD00dcذz^78Î3w>+/œ—‡à\ìì³È\ç.=E”¸yPÆQÀÑ’+ "==´‚Ä8Š >‰ÛÁñöÇ ;8p†óI‡ƒàSÁò¥<Ѐ¨”FÖ£¦@wšñ˜ÈȸyÝu½k¨ìÿ†åF p}nÞj.zϼZß>qk_9Ó 4mxªŽkܺ6åæA0­·:&/”o>^.ç-Õ èáMwkn»¯Æ 6±Å´lñkÄÀá·n·€AÆÏŠÌœÔÁ¦W!ÌäXXúA)ȹeÓ9¬U›êµ§$2›,â8®Bã‹)x¹E’”<>áýgáΣ"â30ÇqÓ&;D c_²ƒP´ÊïeCH8ãÝB(Q¶ŒV2Pm†`.5Ú­`AÕ1taaŠò/ìµdoX–i·k"Ø®³‡"޲^×±8&«3µÖµE(ÖjþÂõ©¡ÏóÿD?v¼¹UÒåßÀöYÒÔMù}‡ì>í×õMÖÏ+žb&þ  §æ­û(› s­—(Î'Á_s¯¸"Á›fC\éŸËàé)ÿeð‹¿§­rûtȉ(n’ëFÀ|ëš_}01wbé@ÙÌñ*üdüë}ÄÇ}Ç /S’·/V”¦_ƒMxzšR±[…~µÌ½=bPrýï"ɃPÈ ã|rÇH(в\-ͤNöÓºx ¨µóõ séè*Kèœ\\?‚Üþn{»,.Kú'ú0ëñ"™¬<ßã*@=ÏS¯aà,ÖKÃÏGÜ ü— `ß\Æå{ë‘uJ0É1/ eÈ@KÒ@¼ߤen¼¤â¾úM2^õMÝL'ÝùϺy2ØqNý~Í!Ô¬:5MQ;{¤°}–{¢°¶¹Kª(¬%B¦gkœ)¶¸D00dc¨°zNw8Î3x¾ÉtÉ/À¹ŠõCÈZš* šbŸ+hÉ]QØ„Å*é Ð ˆ|b†Œx ƒÐ4ÓÁm{tN°}°ø<€€Ĉ‰=Ó$€ Ñ“8‘K©k„Ïl,l7Ö$ hb]®í\†ï:ºïê5à¶Õ» Þ}î{î] šóƒ«o•»T²pû)0Ñ¢ŽnTëyFì¶0rã€;Û­¾ò»L&ÑÔTTv:ÖÀ »‘»gÓB޶ÌsÃôI6¶¶ÍcG¬ écHA¹¢Ñ¶?ò‡‘íCš.œqþ8§’ädËÅ¡Æ.äZ¸“Œ!Ïäu—>nÿäíqRɘqaU %„ò(l§d§‘Žî°×g²É¥”IES¯m]ÒajúóæO ¡cV Ú…¥ìzƱÖó]‡yµf–K XifÁ·,X½É1 ÂcúçP¦K”âvy ~¯¦ÕŽõË.ÜxÙË A€x¶uiãæîÙÜÆàÓŸ°}Û &IS[4gof.‹HÑ‘8ëªF4³%ô§Rñ})@01wbé€c~,±ÁlõÛõt0/XNCÜ5Ã×°. ¤ŸÀD‡Wke2݄ţŒá.ªÌ¿&åüYîÞ¶ôÀ<皸VpªF¥^ñ4âg+ý©Ø{u‹§0ŒC HÀÌö}Â4—(øñm+T¦1åà@âRUtÑ àƒˆ{ä:×+òM¡¤l Ê:å-ãô( ]œž9PžÊÔiG]Ê·[=ÓÆ‡6׃xèÄL¹\LìnCWù5‚¹2 Ô{^,C”{Œö+ WËÐÖ!x_—-p¦õ ¥«V9<ê-šÔ¥„Ö6¸ÀD00dc”°zÎ78Î3w=–k¥²ðü Ø—§à¬jJÐX?˜IhŒ°Þ ?ñû•‹Z.?s8,ù—ù¿ @Èndèpêê jŽDÀG[õý¬÷nÁÂd-U^͉¢u ø²­êÓ‹ :À00dcL°zÎ77xÍÜô"Ûåk—à\éð/€Ç±¤!èL$úKR‰•Šq‡W–N©JÀbrt×ç9"B‡!ÀOÌ^\9>3©àèÓâk_¡‚¯/à5ä“”r*bËœæg …b©Ø¬óQ¨ZgŸ²«öáã- ¿2ùf¢~`ã*Æ\З îVðÉœ¶ÌŽ-0½Ÿ£ŸãÿˆŒÜ#™"ê¤Ñ nò7)y1nCö·{ À,óÆ‡ Ü`;Óò€´]žK…݈y‚G­Ì2†—^‘Ñ–Ÿ¶~JÖ¸e+jÐÄq/ „,Úxµ¦ÚbÏÎP¶gÚJˆ´Ø^¬¶Ìû"¬íÄö?üþ ç–[ÍâIO²GÒÓºv솶·` †q¬Æ5ß ïpMŒÊO#™2í×´(PÜF©%ǯN ÀbÈMzy¦+01wbé|k1QÕÑYnìw¾]»ò!ê–Çë3—h"·æ7_Ù8“2ý ‹=$ÐT»±„FïßÑsÛí–½bæ¨$>•Ⱗð<í ,í· ˆG?Š€šBš£Ðé(GŠ1Ô1‘êWWÚTdÅŽ"¿ëƒRÕ ô103(¼2q«r’Pn¥Å'Oý0±®ä®àUk.éçÉöw0ð!%‡Ô$äð @!èä„=`!€1ë ÷c1¢£#“HµQ“Œ?w\3pë­å“‡×Z(2²ÑÝkÎÛ[‡™uJ81ѵÕȺ¿.¼ÜÚâä!wˆìÇ~|ýy—sy[Ýy|Û0Š®ÑÑgudªk˜ÖÙÛ£Ñ3ícNáÚëæÝ®óðܤ?ÞÔO²\Õ¬U«•¤#CÏ‚RßìÑ;<úJÄÉÆî0"}””žˆÁwaùãßÇÆ/X?µyY¡[Ÿy-A³äZÒʼnâÔµóÙeõ;…›Â%;û€1¨W]£ Ÿd~ÏÝk¿¯Ùr•O²ëW°ÿ˜h]¿dû#8”Ûžzƒÿt[§~óyöm>Íÿölc‘  3E2w€}ER¼6á©#üM2ƒBÌždýéÒ']ƒ®ÒSÓË×Oááï#ªÓkäï}q,P01wbé;xvÒšrqs,V6ÊÌß©Ò%“å þõ¸:,y ß¹+wÆÀMJÌܧy¨.9ƒ>RîKò¼r¡–W ð[òÜå…ËlÑò›ø+eæá.ø×Gÿ3‡Yû\üúWàs?_Ž:ÿ/?§VÉwŠËÕ1¬Íæ#ЛEòáHÊè@ÉI–ò ×}»-N}fðL }`w`-öE ói(òc‰¨L Á(³wJÅ“’Oô‚Ôo0ª… å,_qÁh ðEœC->xfvR³ßVÈa‡µy”Z¿« ưÏéµÖÔÌÅŠf|ýjZƒ,Qbó2Ïs©ç„ÒR“2s,ŸdaŽÀÔ<ÐÒ>#æYä‰VF>—êH ¦¤61µ ÁP°R˜ß¼=£Ö$¬a+Ó¬B©ƒäœ6o/P ”–e$`*A¤à&¢ SæF‚Ë×µ qP鸬É8&ä%Þ~;®ÞD¡Ìºƒ4~ÞÃïO¢IÀ01wbé@lMä”ßÔ20­%@¬ÀÌQù;b•Áêñ›`ÄùŽê/-Á€ÑB5Î=Nì“à$ªÃLŠ3C9ÁE•’ X¦K%²Áœ¶2T°éÛ±¸@.7AtwYèLi~ÅuÅRj¼Œ©mØ"xhb&îH°ä/LDTº‹.E‹<€ £Âå¾í½“•SÍ'<¯Dô5Q<˜0ÄÑÜÔ¢¹ƒ²ø¨Ñ®¡‰Ó7Ñ,â~ˆ#\Ÿ8W!ˆšóòŽéÁ£¥Ä€åUá(ìq€G’[HI-‘¹Ë6Cé°óɰD00dcÔ¯z^78Î3Œß‚䓵µ[Dð¯j{µ dbaÀª|¥À4ø$)"§'È„l0ÅEÃP]æíƒ ¡U€£? •&+ŒYŸ3ò pœ‡G—Tàør"<¼¸ ÞéééÉÉ꼨NåTUi8a1¹ ­mŠ#¹öÆ»EÊãGs–ÇKZŠ „ñFí1ŸîÜÚëµ£n¶Øþ¯ŒÞb‰(æäMål‘·&(…E7\‘3®B{|¢®¼k£Nq:v8ãÚÐ Ü$v7Ôn[ŒtÒÚØõJU5ƒGTí10ÛdĬj7ü¸8ש²ñࣼÙÞ̨MÌ ˜9YŸ^=†ŽÌ`¸Ã˜U†þA÷(Å˾q ‹!…F‚Õ<- ÷;É…¯Õ«Ì ölÑßsš&t]OR³ÒrH-ÛóU¨§ÙVOkìhñ‰¾²ñ¬L‚y#”[þÏ'{¢˜Ì'næ,ÐwÄîûj÷dÓ+<<ì¤û#í'Mïxr4ÙB›Ð-s?{ö—^Öu•{Kµí>¹a8b8®*ü'_3ª“n v†bIUU…mj4ÓèþÝ‹åœ01wbé@ÙÄ2Ã܇GsÃ]Ks„" Æ) EöLÏ^ÁWðU-(íÉ¿³6J0±ë%§±Lñó¡Ä¢»¤ºJ3Àá(é7ަ¨iQÊS Ðî$\ÂáÇ+Äs`%Ñ ™–«òÒ²M´/rÖ•ÿºº§¸øOÓ•Bš‹æ–|$£z¼.ýË¥ú T‡f1äA0òïG!ÐîóÒá×åL¥9²c«÷ŠUœx0ÝÇo?8ÌìêÎB7¤ŠùÙ"C˜œPíè¡cÀãWr£2 J\€Á/^H•T9< ç\t"ÌÜLh¼D00dc˜¯z¹Üã8ÍÜø«<­œ?öŸ¼Æ Ã$ C>Hp?C‚±`ÀP SE‚ ‰TÏ›Þ eaè×Èåö|@ðqÈØ>É. ôœ‘Z§S |àA‹‰í6¢ßTgøbЧázñ£·d|»ZˆS^ë–ÉÃgwÀ-VÞª/rÞs±xÖÅ·Ï—rùç‹ÀËÆ]s¿®Dh»›–,Ž_{p¹Œ˜æù¢··ZºÜ:ºÃ‡ƒGQŠ=*ªsšì‡} Sù†Œ›‘wW»Þ v#dÿ·ZXŸe½u˜qƒü9Ýß²äãÎGüœÜlðwÏ<‹‚` ‚ÄŽírŽžbÌ,jÎ~æ9üÕ>òQ‘½òWÏNަ©Õºf|óÏ|X眘éíSÃJS;R躮)…âê©IâëL*g.‹e±…7ŒóÞ?%Íì$âîmGÿ@Ú)Ó0:{ †\3+†Bn~¡„?Æ @HÔ¨Òèaµ¢ÎÇp_Œž&j³Bê‚p^a3_§ å€01wbé@‰4½›1Ðóü HÔÀ7pˆ©HRΡT$ÙŒ·?¬†ðH5›ÿÙîWg‡]Ã¥ï%6J-ߨ,‹]æT1nJz½¤JãÑQ€ú‚§F¦íäb@ÿ1çWÿaišLlpš4¶‰ Ýₚ]ü–2‘$¯S,ÐŽ)ÃD Ôô‰HÑ*ì$}qRRLÇ»غãò]=¬)M~Æ”Ë Zke£ÌÓc}@ž$žû}*€®ßoE—×bË(™° eøã‚ê‰îã"Óí0ÀùèZ*m9ëë™j'š©v$У¤D00dc¼¯z^78Î3w>—ÊYˆü ZCµ<)îàtØvrVgÅ  |]‘)Kãq°ô¤A6CxøúP¼±#ø ÌâYÅÙ:>(s=MŸ Éää0 ˆJftQ%6ª êf­n!®ço.¼ªÞV;ÜåpÒáùÄ®æ¨Q£—&ã1î<]Îxæç*Q\ êÝu¨d™B9Ž^}ÏœzÚøç9­ã#å×_T¤n­ëbNd ØÆÉc)Ѧ£B§yª‘©«Ò¾,[¾…å…3xãØžû%±—gR#£OÇ×flGå±Õ½’àqFÏÍÙÕùI:‚n‚£œØ’Ukn‘²üÄ7e"ªƒªËR¦) L¡?pe üÒûJ}ã±Ë³œ×vJJK~œý@·‡§h0§t^è“p˲:í|öÿ&â•ã莈¦YÂ}‹ÍŒGg¹‰»` ìp#ÚMÖζ=Úü샚Êüã祆ÇÍyÞÜ!ON„uu;¥Ôº¼¦;‡:hacÜ„¯Š9\èÏmÈäs}¿±r(<è¼0œ÷Ÿ:¡Á˜Ê°a`üà7‡TR€00dcŒ®ÆçÆnç ¶_)oàS³À}ÎÈö|FÄÀ¦ ÉÉXÈ  C …¢q‰òál9; ´ä)>H cr“qe0aÊâiÖuCîC’ú†$ú}@O¼dϲR›Å¶á壆¢c0"îë¼[‘X½ºøÔv·¶¶º)8fŒñ[_ó^]yÏŸ.ѯ—n[T'sôq¼ùAñ@:Ònh¯4O¶×OkoruÄ×Xµ.Ù54Ô¤ª¦zU=²¾þØ„p•¡îßµÕÚm#©&ÜÂkZ+“ÎaíB[Äry$“+3ÅÙžÕ^ÆRÄäšf4zD‰)GHJ‘kvNÿuƒ+Ëá&%>ó´Z^ì᥇Ï]ï—ùûþgbŸö»PsYóüø86Prº¸´.†m<êk9t© ö}òÓç·‹i‚°!sÐÝ`Cli:rwµÎ¦!Ÿ,$h)-xð#qœ5c¯ÌvÒ]ÁÌJh¿MÑuuÜ–“ñ001wbé@i;+ÃÞ,\dóîÃ_áQLÜhCQ8¬T1'A­˜Â“©;2!ÁÀǨX——°€jQ-—λ®ʼnp6JŠjš&ùI€b’2ÛÁkÀ ô7û ÐÂBÿ’‚ú¢dv =äp¯Aqj %Ê‘Ÿ¶‹/;t9¶|î2¯zå±|KÛúÆ'ÄtwÏL.cÜußþaÎ"i, SqÃ:©>¤9ÊHd&„}³ ûìÌsŽ@ž‹÷ª£üXüÖ238MÄz€ý;™š £À—Ôµ¸Mú9<꥙üK’cRB”jŽ´D00dc„®@vãsŒã7sÖË/K,åø)ùA>GÄ3P*`<@Â)ò#ó˜ð  ôÎAo’0M ÁùÅ,g4HtðCƒÐ‹Ë^ZÎ'WðÑ!èù€Ì8<‰ø8!÷á€@ bŽufÛ_Qo,ÅÊþˆø 1zgËÚÖ¨·º§Y8a°óP'Ã:Þåœím®I9­×—e×T訙´yÍr:ÞGQ æ×uÿ—ˆ»àÛj]¹#SžF*8RêFÛ¶e×Fs[Ÿè”ÉëôYçî§Ù?8°ñ§Ùbms¶µ Ö.3¿,Wk²V=“*  ˜}™=‰$#4ñç•ÁÌ7ˆCÊs̬?ö4ç¸ ×=ÎÏ=õbæ8†:VŠSØ´Œ óV©ÀLKœ˜!•…9ró”ò žÝã~%Qña. 3J‰¯²‚©ögìŽ,dŒ¤djÇ ḧVÜÉæV‚/,}7¶§Y+ÙÂØöda•°¨tÚð}&D!7É^½8ÿèt`JÀ01wbégô0ÚŠ’áŽÔ»­L¡H1åQB{X@0¼ErÀ‹“á_Ç0å…ÈÈè«"ܲÂÀó±"Íù€,æ¯ïñ@qàyùW6Ê‹s.6 Z=³(aÅ0~õƱH÷&}_AúË,*Í ÝŸŠÏ4¯¼Ò`ãd³¨ËË0GCÕé3 ð¯ ÅaÇ}Sà×<Ñ«|~àeâËi¼j?Òeú/Å,×½ã;í OÁsð47‰¤¤Ê¥û <Šg‘7J™å2¡²èzŒxÅP”دM«4Ž9ëÄ 1«” ¬D00dc쮵f8Üã8ÍÜô„ úsDíðy¾NÏ!hñLCZ Gäq‡™N=QOœ‚Þ„¢ `a4 ‡Æ#bŠNÞD £Ë^ZóX? ÉõW£“ôñÎ@ Õ5°Áà¦ß«ZµŠ6a®·] sÿx“4¬¬½œ®ÉÂí³e¾8îN¾@‰3­¼…¯/œæ×G­Ôn|Ü·1ãžR”ðËæåÑgk´Qv·-ÚÜŽØTÍ+TçR:ǼïfR„Q@—wZ¨×[®7)ÿ(U|¹å%rar8ó^qE¡$ÿ‘.D³p}ÇEÂávvÛ,•úC°ìGa°"ØH4pÄ¢Âs9¡§3ŽˆJ‰#^'”Ó”1òÔ˜èÙ ,بF”!/ ›,Ú‡²Íitq>ß\¸ÆW)êÞY9³ð²ø,Vcö3 )dÉäQ‹XךÅg£“NO¨<"O0`$‰ñÉ÷C€@8É8è”zHÙ4ÿȱºìçrj}S8……÷Ä?ÔF†ÕZ7¾sõ¿<ñ æê2p»k8ÜÓ—k¢o\ÛšÞ|Úùw"¸wŽw!¨ôx=ºÛy¨ÌVñyÆÜ¦-×ÂPÕëÛT»#]‘®¨FÚ¢áMå}š Éè=~}öú_ó„ÀWs£Á™äYþg…G‚ŒR`$).¿lt]kzÖØtIys¾¾ýáåwv§¿þ¹OFÝQ­‡Pæíô©ØÞàõ¢E÷­wnÿñæü?®t{U®,Ì+ôÜÞ›‡qQ¥‰#ŸpGÃ’~ôtŒtuž}Ús už»NÀÇKÉ9Œ;È.ÑÒxù÷‹á©ì¦Ößaª¯¨‡ ‡¤<$Ò´Ä àas´ïÀŠyu]¿Âøì^zï÷X].ïIåïZ_0àG¯½|wðë–qý` Ò &’:b¥”–-úðåμ;Öw O«9¿Ç´ÝMªI^fºðõ׺îÓÄÁÿŠ”.GâÀqtfÜìhwXPê¹Àm­àÿk€`.\›³n"ç©[þ­xI\¤âÓNã‚Vêî믤Fç!.&õÑC²Äz¤`†»„·‹^;¨ÓÜåÆ0•Î7jíŠ$¸.S¶k½wôÊÌIÈt<\â1ç¨Ç°7]€™ )>ƧSM 2–œóõójo¥¹ÌyÀ–vÆT+«„ÍÉ`v\«˜ÎÒf¥'¯wØÒ¥h+¡·³xbßó›ŠÕûê_ƒìÁÇúëpö?„ºá'-[ ügñ÷§ÊýŒWtX¿x!žr¨ÀˆV-|©›¸€00dc °Þjñ¹†q›¹é2³‰’Þðg„ìîwÌüžˆžD çZRš‚CæQà~'&„Ð|¢€‚’L‚ƒ€'$y—àXá` VcõËàüƒ0ÀyŠÌ~:#çB !Þ¯{Õç <yÝ»`Û¸**>ÍSP#!ëJi=$ó¦µêÍ Æžeã^:s½N–צ’vrÛ¿¹õK#ÙË)a6ÕÈæN>F_Ž,П;‚€YeŸó‹ —³8¸ã/<àøï+ä[RàqýÇÄC0ÀTU=r©žƒªÐUøwÇrÑv@ªxN8¸)‚ðÎhB»ç–¢Þ½ÝigMŸÝ휘c'QóNN}ª7©m yÜ:µµ~~åNyE¬ªÔn¶úD¥)G%IS ƒ..*WÅW "t‡Ý‘æ aÐÂG‡cN/åÞBwà\Ÿ´ç§ât›rG=t@vzíº~}&“ËÏ7L¯nÀxÀæÿ´øôÇyá×G.òé_àÛ÷]€ˆ sÁæÀWþƘ¸ 蜾‘ç ʆ䗨.“éBSÅã¥é¢ß¤ÖüT“$ _¤I2Eî‡ é;Ë®ƒY÷=ÞÁåó0 ñ{üqzÆÿ¨G.ä_‰$0Òøˆf©bLYV&ø Iøè“Aº?¯žœê?tƒ|ߺÆ?}añßë¿ÑÝy9’7‹n~t ç_šBûM¥“âñ IÑp¸ªãÝ áð\¾ÿ¹Ðäø¼#£ÝÝ…{úÞÂ¥Sªvà~U„¸Ç¤\##L6±]6’p áccŸ_ŸºÿݳÖ^XcÚY3¬áªâírëšœƒºg0›¤’á†zÝ´(¹@Ð=Tƒ¯a’i9C%—v]¬u¹°¸­×N`w<Ü5Ñ1E:ôÙv[ô/ÇøãX]Iñ8±^Ná®ùiH_bÝ–è¶2¤êàškGK²|œúwrZw€›“–ïê°µ-Ed(z4>=°˜ì °¶»y„LŸ{—Á .OX[Ücsàrç„ØyÅÄâiI…Ñ’»3McßkàpUÏ ›²g›¼0Û»—ÎÒKv‡EnT®s´Göx§pçx™¸8.ÞÄý+‰ƒ,n]à (‘pNò÷3Û–ÖOnÕÝœZó²îrðDðOüûðâ½×+yö’Ø5rƒ†¾¡™½Ez¡¯8l¤•µ”ÓôŸÞ­]}?ðÖˆmbMƒúc‡x¿7ŸnLÄ7SwãŸJz£ÏIršm}¤2Ÿ¢üqf¾öøC÷uëÍ^äMÔi<·îûÈïF(æ¾6×;gcHgޤ£âª¢ã½û öÏBˆ„¹ì¬qÕÜ¿¥ 40=hUίÝFʯ/2yÖŠóîÐÅ#•Š‚€©¢‹AAVGÇc@ʺ¢»'”F8sXØÜ'–®Å,~jÒ<6/ÃCÕù> !e".aˆ…ßО†F 01wbéÀùu¾KJ%ŠÍõX…‚©È3/ÃAãÁÿO¯skK7_÷ÎÉ)¹¢~Ȱa<ôt`né3ëÌ–ÓzëȾ1jºp¤²ÆLzïy¤ìqcGþzœ0 H=/în —ÂÌþˆÜÔx"ÇæI*¬SÝ´ô(%s¤¥dq{6©pþ¸mh(•Cæ`¿Dxc/¢¼#ð_C-zÆ™ˆ´¬\9 ëR,€Z:¡Î“tŽÎ‡°¢°É\Eù'¬3@;‚ÇÆkÞG—Ví~0åä!²ó ¤pSëªöŽ9«EÔBW0Ñ @Ð3¨D00dc¤«Þjñ8Î3w=&Yx™eáøïŽ9ZNyÐû=«ÛðH˜rÐÈŠZZ¬€°ÇâÅ<¤‹ OÚŸ =´x–uÁÐ&D Cä% x¬ÇéB‚‚'Þ*H;ÕïOuxpàOB§¹u1†h:q¥´åukSIë¿\úó5ǯgWSÛ·Nóï:u-¯}µó®}]{q[m¶¨\W ,-·ü§òÃÙ×6”°Ñ¹`ˆ2® ù¯I*ˆ0#ñ¦Eç?[$ä@€>>&Ö¬.‰:‰äË u¸ãó§Z.uìÏ té6Ú®÷FìsÉIÄò½Üf.||µÄüDƈQgë ëœŒÄu–X ˆŠÑ~UöÑ+­]UËQʺ”à»ä½4ÝwÜ$¥õ/ŒtùBRãú‡Ä=&1Žçë¨|Lô“‰Ž®úKëéð„õÓñùÓ§„—dì)Mšë,6¾©ÿþºû=ïNîzltÞ÷'NF_Q°ÿ‚k×¾¾*_Ÿáøeü- y¨¥Â8ׯ剸_¸¸¨`~9V&*©(bãC.T«Wª/$=äGï^ŸôDýÔˆD­lX%¥šþì® ƒx!?Âcf1œ}ÆzÆ#sŒãäÊÆqZ͹>»n6·Í¦ÄT4ò|U'B‘ÈF¿13µ|ð»±Hw{EÈÂñtwÃ<>:$••¢¡Q±Þ,¹ÏQÚ¡yŽIøúóÆ.X¤°`Y^œÖëS®™D„d_Kœf›Ú°ò•À&úcS–ärby[ø½ŠÞëvM:ÜÓÝv‚ížTvˆ³‹NLòh¢_:ðHUöÿzµ?°õ¼ôJãøcýÂ@·ð"­0º½¡B—]÷Ϩbm¾GX5û÷>=)¥}Á©*Q³m ‹¼Ä{qÌFlÈy*P14‘ Í@¸ ¾±']âD<ñ±ÅÓ?õ0¬qPÒ™·õ : ˜Æ Øãþ ¹q_á°+Ì=«¸æ+5háÛ´#Ç@|®ÖžÌ=`Ëqýÿx #)C;×7¹ªQ¼­ƒççØÚCþf_Ûô«ÂàNçäo[HuÁÉ<1‡½˜ÈV”jVRxh{‘cÀëÿ3(k45¼¡‘¦ ¯YÀMúÂrÙÇÀVÍv7¾o¢ÒÅq7-ñ” 9&f¦×vÊ}'âü6ïÕ’v/ÂâP÷‹Fèù°W/¢e:=ï@ #:×IÜú=@g\¸0¼,7|D#×$Âz²¯Œ¸ˆ@çZ&véN!½„ÿêrì'l^È×ùþ]T=¥È>8œéÒ})ºJD¤»‡]«–¹íZ´ºØBàõK„do߃„kÜäléà*×:ØŒÍmk\tŽÂ°£ÌÅWp˜‡ÅÕOTÇ.ˆã³ˆÎú9‡+ÜNËó&AózŽkÌÖr‹n,ǬÒ}šð¢šµ,&oÈ>²=†ên”IogÙpžA7W¿ñ¼²ÇD¹_ÇïÏW±6$Ÿêsw,8GËH(Oùwµ2{X°01wbé€-úèØ(Êã%÷ÊIÓÁ7ÁâCÀòˆþy®ƒë*ÀíÂ…$”_ŽÆJýi[xÆÓŸKÅŠå‰k•ævª2Û'G€>¿<ãi¼üå²<@¯¼A·ÖL¹YŸ/ЯüM>hÅxâb Oå8­ðÌz4Þ:Ï3¢½Ø{×±Óa+)a _wŸ¹ÝU/γ\¢g(µˆèÖ&"‘jãìENp"žõ3¹k®¹#˜ÈÂR!ì@eCNù‘|yý–šˆ¯Äkúo•µ;MƒT¹=jUœ/²T,’4¶œD00dc§Þls¹8ÍÜô™eâe—‡àL}_œâÎhõ÷=LCìø>È…DÏBNL8#‚Jˆ‰œHâS³†ðF¯-zòl~Ç ú>Ĉ€ãÎ+?sƒÐøƒ” Ê;–(]î–J>¹Z <æš4Ç{Þø×þ8[‹¿Õ~LjU³&œŒºª•ã\MïÝfÚ§Ü_U†JK7ĦÀ¸?ì¥Õø»·ç7;pâxÒµ½{.Ž2]vðävÂÎn*œ3oÙ\xŸ_übÇÚ[9âüO#õã‹ÉVÔKE4£˜rWFT­Åû$1î ¶Úº;e9ÜN4g×}Q>ñ,CHÄœ½gc‚^Mˆ¸%á‘p|þx¹“Þ´;Jƒº1]Þßuîå´O.öî¢K]ÈH’¥¹ÁKÚZ«¼æn޵­I¹¢£qË[ÍÞfä­ÓZ‹c»åù¼¼´áþéëS ½ÎZËW6îšn3Gƒ¹‹öbÜp|Þƒ¢¹¾àB"kr[Ëž$ݸr_G˜}“bÆuæç0bÌïÝCV9h/Õ-Þ.g9öýÐx«mðÌ7FõQ÷"\Á¶±¢2•0I8ír Ãq”öŒ4µ"‚–á g#;V zò‘Ȱ‘¶®§¦&îœÜNö=ÂÕ85Ûpxœ¼°-³CÕµ¦s™Œ®ýÒÙ]Gëx›ídyeVÇÆÀ_úLÁ——ï h —‡ÃM÷obÙˆ*S‡v[ßk’ÉÔ§xUZ*¼2&ð/ÊŒEtb™¦× Ô¢½¨½Õ"*º®³òìË×x9xšõîk‘Ø ÍKp‡8ê°Rhí*^y¨Ôésa`Ø/9ƒ|û§Ém›Ìiw\¨CĽ=þúEÃràl—Æ¢]«¤£µG+6}­cqæfe¹–±è¾c;×löjsG<[¢ÙKòÀï #î…濹Çkì.Ilý½ˆÆË¹ÙÃ\_{=^ÞâXù¬=ýÆÛGæ+«¶/¥ão5žch2Ç–2ÂŒÏO@k{6÷`~´& lPøÿ0çöö— WVjË%ýÄ?y¨é,‚^˜00dcH¡'5xÎ7 ÍÜõ\—‰¬s~Ϥúš‡¸½¦½«ÚŸ Ñ LRaFÌP1×ìÃŽRÅmüHÄÃR”蟡ykˇH<Ÿ@‡£â•<>SÔX¤8]z·¯u®÷åê€Pó<Ê@ˆ!Ìöoe\Äl i¯A³pÿ ð@4|Öò°<Ò3àZ¢Ì.òî@à[[´_økUYûÁoè{µÛóÍúnǤtti ¶aTú évo’L&§2ÏglÉjõÛe»±;+Øg=“_3OgÞ‚k3¶xKö#Eë#èÑêRžD¾•!-JDÀ„xßþ*ñ{|•·¶üÌ!["¯‘¥ì§OÏjìI†µ› ó`¡Íö Æ›A™'óâúzž:q”®&É9¢Sâ´¬ùµ¬»1®÷<Ï»²æšÓ`—·Àfµ>Âï rêÕÂòxê’Éëò«»ùNrÁ‡› / ²ëÑœÚT<¥áÈ¿ZFtЧ`¦‘9Q>ÇÞœþ±;Úþúî·O€¸Í*z¹<*àêL¢!=Äa¨D00dc'Q:Ìã8ÍÜõd™ÄË//ÀóÎâžoH‰ÀUÂA>`b¡"®#áø D@(àà ‘`(Ÿ2¬CHÓ@Ã'V|å¯-z¡ô9œA9  =>04ø ö£Dóª½÷½^«Õ½S,˜ 6À ‰ÅiåŽßbÜ«Jˆ J€¨KªÃh¤µÕ© YB²J`€%?'ʼ^^ì’zå§„rÀ±-Lkk[×yƒµ¨,¥„œ*ßq֜ϷváךÌEч[6§7–ýŽê9`wKB*ý/J/íÑÞüV¼Ù£ôröù½<~9QõÀ] @â?ɘWF³àQ¨ö}DâΛ¶,¡Ï(ƒÑ/aÞôX€¢ñOÚÒHÕãAú hOAÿÎsŒ}=Ìß/ç,uЬÉIÝnTÃ)K@ð%·F]\Ã>æ}— ]nË4;lØ;,ë•+H V)¯rÒaû<6 *q\„ªÕ꯾åµý°ÛȈ€á÷ŽlA€4(dã$·øÅØ A•¥˜õ1´K®Ÿý£b(Ý…Òüç\ÉÞÏéj®+e9Ÿh¾;ƒsÿº¨É ;‘rɦ…ìo 5°Tÿ,GÃa‘ÞÞ/æî†‹1(d´ ‰µŸ RR©³ìn&õfxð1Õ¹oaUšŽ²iÿñáb1ÆÉÃ1óBIoŸv,™ÿöq°^]YkAÊ2C¬¥^g_G:J ïzéeÑpØja²s rz¶s6|M m2å'sˆ~OU$º@ìkldAëäèÝ¥õúP,æ$žæZÑò²„ÎQS#Ó¼û»Ï>W.ïf#åÄ? “‰Ä\Yí¼Qdãc…Lç',º®Ð÷µRTÉN¿7öÃ¥È%81HBà ]=›êa„[xTèéУxkË —Df]UëåET&Æ8 ÎÜTUˆg5 ‘8ã $’ÚÊñb&÷?9'ŠD’OW*¸$bRLæRº]MÝiгÏ:·[SMø­H²g³9Zjæ”aZ¦ƒ)•EׂÒU<ôY×ÕDˆçßvÝû€wÔòtD" +ßÀêÈ+$ujûÅHºÁ.Ôw/áÒìT—­¿ëð @*”ÉÚ›Bd²œ˜ìfºD¯šâpôβ¥”9Ÿ:è "=¾m£À{ƒ'Ãݧàìhž·ÎŽÊ‘S¥ä¶‡XÓܹÒ[{«¢Q߀¸v±QÚaƒIªŸI èNJ°0銲™Y$ýJå‚4£¤Õµ9š½7BiÔT=m¨“˼OÓ 01wbé·î-Gþ·’Îß¾ÖŠ0QüŒó±¢˜4É”üÿT ÓõÈãÂThLÑC]Ç\ð5‰®Pt‘üùœ“ÐÚ:Deêr$¥ÆŒROh ‹ÒP~siïÙ¥(}V‡¦¼`§†}½mÏ&‚Ô÷ˬ¿j™°õû²ÿ?…•¯n† Á²">ï;ßh¯n#„WP鹪šX·îkYuõ¾(‚´D00dcМGdÈÍã Íâú­·‰Œœç3ð}?7©z{WOñÑÀMÈW£ 5èÓV%%@cñbªÕD '@/äLe%$§KJtؘV äör.Œ@ìMmÀ=CÉCâ|ã^«Þª«÷ºõhX€Ð;Œ ~Ê+Ž3^26Ɇv‡Li.ÃÏÎÞÕtl;7†ŸÉ/ºÚûÁ?Îû=½j3ÞÑ.–#v7g9ti÷^š õ÷ ~ÑN\¹søÅ, nbÕÑúåàò~qYvæ,YeZµs£´?C^5ün!B;P§íVß7µ¬Üöv ‚~f°%!#í9%EŠ–œ×®ÛööŠ]9`Ì$²*†}Ìè8Q¬ùýß´ŽÇ’rØØ†%I]<ÂA¸6!œÉ®6%›w˜ŒÖ†fî" >ôb)zEªD¹k==¨'î¿øŸ2)ü;Âi 7.® ½=Œ×àáp#»Ï!%Ž2<1Ïzsž ?uT‘¡´ŸšÇg5¦÷'ðm¡Ùò™¸¢­Ã‚ q*Óeüuþ6§†xíá¢E ñz‹ëñ"ŒHûýè^oŠ~¡·sϺœ%,÷Ì­c^ˆû Ø·áêðg‰[5J¼ÙµÏó° YÿAÛô, O¶môôÑ jF†X[8v¿uêµìú¹½CÌz¬{jÁ$ _H«ƒâzÃÀ´5å>ó^I™ù>ƒW/Î7<…–=ÜÜ>äöO$4f›®X9îÿ¤{ËCV;Czet\ÔË,Ê镜çEØc{1ýü‚þp–fÍÐIüÎÔÓ­æ\èþÿ÷T·°#žƒ°ìÆüfÇG¶Ì“­JÎY=9…5ˆ˜öcÏÆ±‰­çµÇ>­ –<$½äE’¼èYá¨V:™óÒè“™Ä&dG—¼†Å±7É?¯c;õÙÚÖD^ÓœàS0ÿŸŒÝ‡™œþp9G¬Lå„fÆE›` ð ãy¢ï:{ÓÞý'Ö$Ñ•ÂÎ8w¸ž6›Ö¹Ñcÿ»ßUÍ,ªXk‹Ÿ]èWÝ\‚qjÌÝÜLlwsÆÝóH¯î¹wqh(01wbé@>4q]ç×làÜTe»è.®Ã-Bï÷·ó;jz³*ä;²ÖCºÁ¥$R½ð“—5˜êKÏ(:»“[¾÷øp­€f’ èÕñ«¸¾…ûm„· Inkµ_sÆêñfÔ!â†W!EÄxÿŽÈªï¶d3Ûç3îý•ž èò®Ž tÄêGM(ò½#‘l1ôƒìtJþ‰A®= @ÿë¶1zŸXLØ›íãx£Wç^Ù$…¤¨ÝºåÏ'à>ú¢ôTY“¯wØ{fì§gö¨ Ð ‡ÙOóK<ŽT• ]ŠþÇhJéJD˜TÄD00dcМGhÓwsŒÝÏUÉx™eã9Ÿ€3åüÛÓôtì y¤SÉÛó`( C#ûyaP±†Š§D>`'\£ª¡F‘¯-;¹=èL~ÀV…_Õ£¯5J{·Ú¿sè Ç Ï×@NâàŒÝÝêzû Q×¹Ê/Ü_}÷Þä#’B—Ή8(6…ÂêîóeÒ/w#®’/;<»gö‡ú÷G«Ûß’~V©´€ºk½a¹£Ø;þøµ­@AYÀâîR.-ÿ+&Ä5ï þ09•êšñÁÇã“ÞŽUïër¯ú§)x>§9³¡€¢Æ€cl(˜ VÎÞzö.ý°}v,û¬¯ÌÆI¿y®0EÜ×ø ¯==r,&µD—3¹Ã„¤éU ¥Wû%ã\ Œb×vWH°0Œ…™þÕÍD 8U’ØÉ J‚D,Zt"AȉÕ<"RT”;_O?ýô ž¿”u½ÜƤrü÷—£0¯Þ g£rûMõA¹Ëd½x!ø{Ôû®Ô8lÝÞAZÍP/,q4ûøšäI~%¯^¹Üix-?øN?{tßøOÐEÿæéþÊE ÝêžX‚µ›Ž}1Ç_Ùí{GBfdm{ÿR0œŸ%[ƒd×ø,÷øþÛfã6+Þ¸{*`ßöUB óHZÎU7òº §àÿxk]ÝJ’)/–æ”à=kl?*}º •} Ú?ü¬ 'o صvŠa03þ÷†Rîø)U\øKÑ?Zg´Y~0ŠLÿÆ8N8>•øBCúÁNðÔM?‘q áþñf—ÚÄûÍô·h)µªó¶|Ÿ"òýd3õÎÁÑú™w;MÆfOýn'Øér˜hç3Ï ¨æå39“û(Ì̇ñÓÎ9JWð ˆUÓs•\Â[&$æˆGó­éÃÑÞõ·ä:Z9>ÜßyÎôs©cÚ#}>ýÉßT€O¦øçšvJ>‰À‡÷¿&|é,?³ác‹®IÀôS™$Ëx˜9‘·¾r¦>uNXmAeN˜H/*‡ r$ÏbœÛÝ­ ïäÕ­4‰Ñja¾š?i§X˺ËöȤ‚f00dc žIÔ3ÝÎ7sÕr^&Y9Î'à ù¿ {ìßɯ›Ø_©óœÐ@ú˜x!ƒ@R |vrID„@¼œYÑÉ'Ï€vW¡ê‹ØNr§Sêpù<ü C£Ùô)¡8Õ^zªµ}ï]V•V î0å¦ôWZ!ìö¤Z«W+Mï}J¬>ØT5n¼]m…ï¢=ìc3MBŸgˆwbI±ö­WiZ±V¯0ðšéM#yû4DË!±rõkFwª}â÷}ÝêM>…˜}ïÁ[°¾ÕY :ÿñð‰ßTqÂ#jªž8¨c¡–O–¿¾ )ù)/鋯Þé|,´Ý/QȶbƒèTŒO”JXñÉMñ/6Cÿcèpî‡PüÌ·dR$Ε&41D×Ùz^‹n‚wéžóîÓÆˆ;¢í>[L5Ã[:‘ÃÄëG%VlÞÌÞ*¿¦3¤×»Íº«ð(P^Kh«åÃhz:¸·ZþÕìZ¼ÆV+’¥$*Ÿ ïöðž5)Dê+Öx+œßݱ‹ùh‹¡¤ŠJ"¾/'é÷¸ûGý¯4þºû‡ª}K‚~Éç*c“:lïÏL×sf%ù˜ìZÆ"D01wbé€_û!·$™TO.<æ%®°û!YõÍ:˜\Y³2è$)êkò¼ðûOQÆN°¹¬|l0Ûg¾ŽhÈ…å”âEÙs–ŠeŸ´¯•ÛIÖ9º¶D¡_o'ð=æ+hö*ÙgYÈÙhB7ǹZ´ø0î€ÈèX/§ºÏò[¹‹È1£á®@›Î+=¬CûŸ•"sdèñ /¡Ã!VïÏu)²Âô³9F&KÔ¨³ëfîù“+Š©?§h¢€½ø:-6ܬ Òà bœý„0æSJTx24žè¹—jò/§\+Žh1ÔD00dcŒžIÔâ¯7ŒØŸ2ØŽ&±Îq?÷×øcßfüÞù`Ÿàu#¤ä &½‚tÓÙÙÄà S“Çp_7ðz9!屩ô=™«Ô«ÕªªjÚêèÌ9­#ÃFñE!œvºn[2é;]^«þ¬Á§][]JëcŸ²(ª²Ú-a÷%c¸Óh %µ}_~¼•Ô½îË>?×ý9v‘æ¶Ï,§ÄBs)O”ä§)Šð[x§GÞpÑÙ$ÕË4b˽GÍ­õ‚PhÿD¾@râéˆÑ(ò Ò“³wÞAÃÁ;øYÌ-dƒ~ê³"qœg…˜qNÄ,W‰¼‹b ø9÷ÀÄ΀͓V„¿Ï÷*”ÑYAUÄ Ö4ŒÀEöÊߺA›®’nÝ`¹s>˜ï¼ÌîØ¿#į]“ÞK¥8”çW¦³ÒýËFôœz”÷­<«-eôön|b0s‡cÓ!0®psÌdp’P_4œK§ü™³ÑyÐóÐd¶ ežB7ƒÙªÏ"{–:Umåê𚜋¤÷¿¸"å±>qÜ`<Í~èYêÒ°z-}¶gçEpZ³ü¤TÛmÙ{sëÛª+ý“ `³Šúýü-,:îé¦;; !‹ yáî–1¬lQ¾â <î޽…„ák•ìg¼bVgʵé?¸Nïð³s×9ZEýVî»x©»)z×¾º I·€5£}ç÷wÿýÞÁH?8?åKþêÏgÿ¹ãÖl å»ØË¦ö¼¡Ë®eCnOÎ_4’û¾TX)Yo¹šðð›%j.:}á7œ€²šŒÇ £‡ÍXò™Ÿ–{ƒÂÀSkí*'* Ìùß|ך“4(zNÿã*űù‘ƒIoGôÜH´fÏÅ/|XñGæS‚PU µ’nÎðy#Cº´æÒºÖ¾k³Bv[Ô¯€™²tVkÈ"³§&NÛ>® mMvºhõf¡?( ¿äD¡5ƒ4°±K“'^WÓ¥šþVnŽŠDJ0ÅQ÷Bq®üi3»)}”äü2pz'çÎLYÁÔ:YnóFŸúäù%çQ­êƒœ£d­›åNØ£6_í÷¯vbUÕUÑó³ÍØtóé.÷ýu`JŸëQÿÒ4²~»ï¤QÌ©U—:ÚèMÁsg^V X¼ö>/÷{—TÙÞ&YþY€01wbé@ô(¼äÔ„¿òeþH²¬æšŽ´e€r括o$mÕò‡€’#U‘¾ÑW~&†1½µÈÔJð¿»«€¼“L1* O£¥Õ¸°õ¬ýk'3ƒ•# ä[,ä+ÒŠd/3G÷3´âÀÑçÙ)‹üÂË,7‡\m¼ö3ŠÌÌê"ߊlDL¯ÍoIþÛ ò:%M A aÿ{ç SB¿R‹¶ /‘­xÆØÁ¾åëØC~F"?"dTÃŽi¾¦_•Ì:þ]óýXÐGÅpþϵMÔYšŠBùIïë#ŠGôD00dc¤žIÖg"ÚRз½ê«ÿñÚîíw¤®mð¿[áp}l¤9ú%±“;U³s£¸ˆ§4ªÇÐ Õ›Çbî=v.?Ì N”¹TdtØj‘î¨ÁB€ÔØrž1|Ï|§ò©Ôg.9ÐuÁ‘ø_¨¦2v%äóŠ{ÙÊÑÌâ'd˜j˜G‹ØôÉð„œ¦mÓÒ ßò>+âø¤$à'¼YÚËÃ%“/u¢ægŽ|†ZÑÐT>5bí«öU*ÌÔ ´áâjú¶s>°2ùH¤ü@FòóŽúËp°÷ã±¹ÎUV…óÆr=W–vJ¨ yYð+v­ø™$¹´s¾ðg‡__ûð±Ú`açÄ ã“X•)xrM€È¥Æ 3 1 ¤ 4N q¾ˆÿ…ÒÌ‹…™Ti«;˜¸W‹J½Ã+¦>ApE¼Ç±imuû¯ÿݽ`f_?.S;NZñðÞ¨ò•§´n¤vïÿÅý¦¹1߯ÆËFÒÒ®ÒíÄ¿,_GJ>Û«sÃnŠL•TwEÏÝ(Ü>¨¾!$bõ‡À_¹>+AXEdÒ>`ÑŒÝ^>°¯<[UÖÜ×.r­?‰¢¶kÑØX÷ãÌU˜¸Ä²¦“«…\ÖÄ*ï!˜š™žùõ|±½$ýHõø¿Ê;ÝÒÈôºØÓü¨úlçó2C!Ì™Ï19Êj ?Øì&)ÿöWG©;Ш€00dcPGeµxÎ3Œáî·ÊkË9Ÿ€[îüÌììø?|ñž¯ÐÃøcÈÀXC²Æ(†Î[…b¢}ß—\¾oÄöÌ0‰á‡½^×½uW¯=XJ1‚€wã¼Ï é.<Õ¥fã—’Mñz‚ž9qÈI-M|<«êJ£ºbéxšôaðqŠ8…æHtº’FAàñ>Kîw}³¥¾Ž´ì4á­vÖÍØX2Þ[Îi©³~šmºáT^™ä’AxMbC÷ÛÀ®qå®ò„åFñY“ RYÿæÜ]é¬m2Q]­xÞÄäÙÈ¢fKó+*Å]½Úø&3'ÎÔ½X{·°ÛQ¶Ö‘³Tužö«5™ÑU'•}F]5:¹Ö0.ð\yZH3JÞ`¹ü—g1±ï?—=qÈXÀN”jÌöoaMkÜ)ÕÖr"„uˆÇI$v»““ÂxnFó˜9ÓðØ ÈØ’®ewVC5®ôéÑ…Â|`Æ€lMy°%éë±§Ë™…áç4®¶a¢ÔÃŽSl %Ç`/„»-¹D5b§åØÆ…ýÜÆË§X@±/Kr¿EkÂÿ:tÄæÛv•™&4µúƒ"Ü?ؼý«§â_qøÙ™ óàý*e¹æ¯¯ßoùm ‹tÊã÷v _Â:¢@†cï0cȵ‘˜rµÁ!ÇY”1Ÿa&ËÕÎ-Ìú4n±ÀÍüþ.ß"€#qžØ£Þ”ü/çÒJ¬}Ïò~/0ßñî®ø3Ûo·q“í žåšŒáÇYbäW¹# üRÏ‹?‰f¤Ç­s8€ü$,Ï'ü~nÝ›¨Ð}G…eOñ+|ÜÑKùÏØ:j—¨NIü3­ßTÕöýéÂIÉK„‘—ÑÊÈdÍvT)òYM`pž4‚ lŽ ïŸm>¢Bˆkñgü¥<Ùfép]x´=¢Õ`ReNi3˜[U1“M>nõü÷’3wø¬Òþ2TàÙç°×€÷‚±…ârÞßEÎ3 [ßä’1p¸ÐPår|Ñ¿dY»¥KJ7]ïN¯M–réò²´ÌÝg»î‘Èw´l‰Z¦œ$001wbé€bÂE¬y·."ek9-;&˜v<Ú>"öÜ;Âz°q@S®ÂÚùS¯‹ëDU¹ši d+_Ž»äZók\Q'Ì/ålk?ûieaÙ„ï6ÆP1U²âŠŒ\HVôº©¿ÓKYýh{kÜ.²0Š.ÀW`ì¬Ã>!"‚èæWº°4T I&y`ehc†M`ó%¨(C7SUCpà hH×ÓIßñËyè-ŒëÝp¥(«xY·cÀà0!RÀ2+ųcÊ5ô m¡DÝy#¦¡ÕE¥6l§9Œ*OÈoJÌûã ÂèD00dc8G%,^7wwæV;šòÎ_€Sïü > 8üŸ}§o$¼úad5Vû‰¦d …Až©Ýr‘Ɖ®O/¡ÇµöyÕï^ÕíÕZ·+€Ù›lhÃÎ'?òèõ.ÎÕ»fϳ ËÖe2üµ–ax´»l­.PùC8Q22¡ª‚¢²Ík0Cj[fÕ}P”Jý0ìóHÒw/è”ô8ÓœØéÎï) O´™Þj„ûßàãÔT˜­=iÒ½%åß›t€¶Ó›RÞ7‹;ÎÕ:snt¢ÿâw¤ìº»\†‘ÇT[>UÕóñC¦àšŒ’Í~£bDZãõþùž}T¡jºÕG_¨Í$øFLj¤¡ø9÷;«ucøšÀåúÇxÐ_¹¸,}–=!ÂbQÅ5Ǽ×ßôHt62œ:VY'Í̤ƒÍ’–->v&µS,ð¶äƒ'Ãz—©Z͟ꤜ­î¶3ïõ&u*p`¶òõXëÚä.YmÜBckÃí~Éö¯œäЂ$Ž]c\èVÄOœÁìÚÿ g£t 3صûvŸsUÊÔ7É[¦`Ž7Y¹S('"÷þ·ýëž_•›´P$"а%­ fïÅ»Ÿq{ŸKx7ìC•q,Q$RëºáÅXQ ±ëv3Î`PpŒÎáf¼Ä÷Ì´y¨q»¡¥9–JJ褨Tª¤½DüD00dcPG$âIÆïœ=Õé5圿Çàø}Mþhv‚€STø ÊT5OøŠ špB²«F`¤âað¹<¤Q0¡äñª¯kÞõT§«U'7 øõœwÊTÖÞ–Ú#{¨tõº×ÅðZ·!w i`l¥ùVµfŠê&“í¥‡ÕÝ>ñ@$¨$o2­Ed 9D…>•)úò‡éÓGMÍì÷´á ¶é½6²ÚwtÑË:á[¥¶Â¸vÍÔWMÐ)1ÑÄ>åÔAx$?”ï6…‹ÄÖ’59ZØ!)þl÷£E¹ÑÐoá9Îį1¶Ôåu|I$±)åå® œ³WŸb,ÈjÒñUM¥ôŽYà: õ_\Üî v®Þ§™ôñêÒO6‘êñ1Pâ»+àÁ?ã¼°Ø<²'Ør fÆ^x6=”¾e*¤ÍΆèßAëùH\båé/{ˆôX^Å™Éö‹ïæ^EÅÙ¨{«—T¡zžã“›:ð¥ò¥…±=…êQþ>Jro¶ç”V®žÿÓØ@¯HŠd¶NÙuV¥ëØRâïdM¯”fèO«!úŸ@JõᛕE[|Cµ+¸"äVÉVHVû•õú¹ˆJcäeáJ´0½}£XŒ3}Ÿü~†ÐvxUßPý ^`><ý´™#i2£° Qý¹ÿ;Mõ >R’)aû\C1íhÇÿò¨#òáp=—»÷ýó/èVç‡þ¸°¾qåËA ch’14ÎÈs>Ã,~ú4Ž h®x¹ÁUßÀüLÔ9–nWR'«ñ÷9 d 1déÔOøñtñm˜^ŒŒeZºWÞ³…—Žö0Ћ,`îQõN_·-w²Ž´»dö‡^ñ–ÿ³LàÀ&¿4/å× .9²_Îôs™?ÒÉ¡óùü{FܺN/ëºÑ—%‘™ã­£‡åN5„F£RÓÒ˜#ýÝ“ûòÙ¢G+Ê ™âJPÀ Sõ-¦Ë¯P’ìÍŸJy˜HT.x[Å-Ý®÷»×¹S9@”rpü¢5€¯Oxdù†aÃãYW¶«©P-”š1¯^–†ãÿ.ÒúqµpSs¹k?£°5Þ´9žJ-@aƒ©cÍEvD00dcxžGj¼ñœnçÙgœø3™ø?ÀéÎÏ—=ßÃàSæe¡e™NM ”ò }ÍŠ¢M|óÑæ|c„49ÕWµouV¹Þ¼«t@ws1€o[2ÌÝ5Ãíüç:¬@:Q—ѱ "ãЯh{R|gVyÎÙÇï›>®’&[fÕšþ·£_íööld¢º?[q¯ªYò]µJñY8´ që$ÈΕèYH‹ÛúÑ[ì–ÕþXº6]÷Ñx°‡åŒ«­Ù.=“¯ðÒ•Wÿ¯¯üϹD´¥¿¾}.[XtŸ“†“µ®þËÓà¸ÞN±j$¨Å i>™¥S3Øìu@nsªkñúÛ¦Ì ±BU¾þó~¯› ã]Ó ð Ð6!:å‡rÌDoúObþ)hmDI´¿àA·sÌ}p Dßç}×wx¾4.´‚Žw( Ó%öNî[¥F%9ÕW./ _+œTĤ×ÈÇþï®;ŠØÛH(ô]Veb "”… *šöÔ7¦o}Kõ•ªJö  Aj Éù&Yô¢pÂ)i¬“²XæS‚§ŸçÌrâéž NÆÖtøCÂYV‡ÔFóèÓt‚FÁ„a#cˆí³ yŒï¶–Ë_GÄ&"r­Ð~ ·æX_ii€‚W‡Êv½ò¨E¬Oñ759àj;Ò|u(¨µ^Ý7æÙÈ ùûu¬Õÿïw 4øÉÔ§d!ø€yòQÈܬ€qNè&Š»È¸\Uš“¼_ÅføÅªâ®”/¤$,Ò´qïÖ >#b; ‰xrØÅ‡Þ*Ñ,+âòõy»Ãß]°ù÷Éöº/î¡dTÝäJý^kßû´Ó"Û© ‰g£±äø­ÒCÈ£í}Eq ×ïÓi ó_R”±ò'ùˆþK›æ}X˜yK‘ä²å9"!gçÍ'(ìÃó >ˆû¤00dcPŽG<îîîñ}%žs^W/À§‡ésægÞïà§eyCèv"8™éúL ¢ÅF@(Ÿr”¯i4JS·à{<éóèó>-Ó ì†j¨¯{ª^{ÞõÈ@ðâ€Mæ69Á9n¼ÈÖ9ˆÖzg2Nó{¦Ü’GFÄHÚ£‘u”§,è;Æúè-c‹]ÎsËW\ÞuÚù8lR°øÇEOD1—Ó‹ÎÃe9é« q”í:sûiÌpáÞžIâÈ}q¦(ÅŽmÓ3 6ðÑy“ ¨RÄ·1qÛ#WŒ‰.ÍS5|tþ ÂÚÅê»þ„©¬ö×äë ÕñÃ9å¸øÙ•óã©r_O6:ç$fk½bÍsTWMqH×bFá1¿8ýª¹Ï®| JZé#×|qáîfa6'©Mƒ«H$]&Rû½-QNzÇóùÂÖ.õJîÛË9ÖOA‹0vƒzÌì÷6ƒöPe§%årÈqI##c2½ð-p©¼‚. ì*bƒ`ßó%¬:áánL“ñdßþ‹p†ÚT•+’—8ZSRB_ñ?ìzá€lã'/€è ‘@÷=¡±iáÚ5¿¬Üm¤*yœÛhxÅЊ´€·ÞfЀÜ01µXí€ÿøóΘ¢Av¥uBú ±ÅŸÿÓààa_£ÿb‹oZäbã”ÕÆþÕœ‰É¤Ã8xþ8ñ±ýúq¾¼¶´õ–Wî¸X¨Çñ2í>ˆÜñIj¸|¬\?f¬8;XŸù¿hDn}=Ï·÷Ã%hÜÅ W­_Á®QÝ ›3r?Ÿñõ-3û¢Ù™×a$®aÕ%œù­°ÿ—é~— Ë]s뽚Þ²ìÓ'Dà³ÿÓè5Ç©è@"=(¾æm„Åã5òßò‡\üO<°áßýk¼;C?‡)€¹)¹zŽ»MÍÉ×ʪµÀÅôó$Ndë½K2muÎG4(Ù´=c@²ßë'u€Í7À*â-Ï£û3ÎLöÎf“N¯ÂœÖ2‚‚Ik눡ҙD1ìá@ùË‚»Æßñþoi\¢;ïúÞf.ö7UÏG¡Ôô½·è§Y‘Å›lšç„"~ÆÄŽ N‘A"¯€01wbéÀã½&ûï Y+Â:¿p°âúKÙmƒ¼-Ðj3Å)ÝäBºë÷…vò”}¶73 ìù/õKKœ«œ,Ò¨$JšvínWðU‰¤Ç}ôx;÷‹ý¨QÚ­iÖu†EÝLþjèm¹?EËíD0å{à!bB/Héӡ´£¥n|/ ‡²·phÇa³!w0ëlåëa¸ø½ì2Ã_÷2ÀU#?AìHËYP¡%!]O¢¨W8e·¡Rù.šàëùÑ!ó{ý~öü!f`\¯¬5^:9šŠjýH:Õññ€$pøD00dcpž£‚sÇÆné=%•Üñqœ?¡Nëöøð½ÏÑà³³•8€Œ4§³¶Zc é"E6Óúypó@ùÒ>'Äø4‹×£½W§«{Ü—žîõRp#À`Æ8ìP8ÔÓVâoLÌÓQض\ª; få<Ÿ&` Ñ€(Íp¶³1>Ä_Ás&oR!ž¢¼ 5yà¼ÉÒîYˆÂɆ[fVßL³¢õfÏõ¿ô‹ý›>löhQäUý}3^²ZÛ½mmÑïœáøÁ’n¼ËèÌ$vs_ŽÞωÙ,Úÿüæ• ó߉œg8ÿÇÝ?›ŽkÉÿf¨³À ,M¹žº;»›];:¹së³ûdÑ„H¡3Ù"ÓgËqÍÆ"m¢­c4#c2ƒïÜÐÃ÷y®+‚þÖbâ}H©½zñáÐhä#é3åh?¼å¿K:kVpøaBk[½}ÜÉ#% ‰ƒèˆ=×ëPq ¥É x ˆ¯~iÿÈIR@ÿ»¾Õ­€ŽØf³›’a¦k„·ôŠcDb܉§q£%W<{óÔgN×o$yÞ$D÷Hp[ƒ¼ï;k.— „ðÆ ¿B’¼c·ÂÕ²Žlt#»Xõ¢ü `¼šîÐ¥Žæ(Á»=œ:_ÐØFP+Þ 9=»áåx.‰ú2,|.Þc=iÄЂ¤ÔTÖÖLHÜ0Ôîdsôö¨YÌá¹ÉÌK$Îä~z¿:Ït,ã ‰²$žª÷;1$»qð w¼¾¢÷†¼t= ¢UîYÁ,«šm$•YÂò*®|Š’“}®ƒŒ( ±2Ï$“–gÓ'œí-Ó)îYI ©}ÒƒS«ªê¹€€…ø0I}‡ƒ”ǧÓ^ØVwÜ^©ܨBJ¼•¬¥[[x¹¨ÏÆp °yrµD´­ZÿB;»VµP˜[Ÿ'Ï_-$´Ö¼¤ÚXìI,u«ͦQá„Ñ ÍB:GF‰Mú–œ|î±ÇÐuØ¡î—{lYÁ‘ÚÐö ð òfË“À9™©ÜTz}LGzŽì‡lé¢ZA· s›yBÍ¶ÍæÔ)íß)µï£Rõ’ ›¬bŠ\¯ÌL­X¹z>#n‘¤ëˆF2µM©ƒ¥ÓÀ01wbéÀjÆ<@{áJ¸®Cûž8*2åëbpV¬YCðŠÂïÈâ ».>'ˆãºÈq®…ÛH¶ÀŬ µb?}­#~ÌA¤XŠå‘¢ÉüBC‚²*p‰ýî*VÌÕšBuÂëb¨ý|ŠÑÿâ¾nÃR㨘‰„u²ôXøRl¡"f†d~8Ñ'Í…|%âÐäw¢A?kÜãx´D¾ß#dNå`Ø‹#È>ð³Æ1„#ueLñ¬íÉÒXAU’!hÚóÅö;^Bî¾ÖÅVqlÙI(*a9ž ¾í¤¤‚¡â ôD00dc|ž£„s¼oœæzZóœÎs³x©»ÇÊ9KÛn䉦µ^ÿXÃÊV%ÝÃwRQŽÞ·+¼:¶¯‡-°éç\µÝá×}>¡¼53$!¬;eC<÷Ýò±Îsdô&_Ä ¯ï¨Ô³ x?ÿørÃ#v§€âµcvvÐg´ƒÃ²áÿÄàÓá>¸ægn-l•²K^D:d”»Ee瓨F[|ˆllçš"ð»R¤oÅ‘°L}7!ò@ÛE™8ÃÃ$‰šµ{ÙŽ5i?ð½÷íÔˆ‹ùGùHýo—é”÷~;-Oõé>y-ø–&¦ïâÌöñÑ?ïKø¼ç޵-Ê•o·Þz´uiz"éãÙ^°×ø²n9"r3”@ÜòZ#s¸ó 2lcWv`#¬ÆŒ^&?æD/ÜqZøÇ×öUí÷ÁþÅFÈbã@ÿc¨Åp|ß‹~m’ë—?ú¼µÖdÑò´ ö•ô{>Ãøå³ì%¬ÚædÅÌb¼É7òŸ˜Î)úXŸ•ÕïÿÄFcÿ?ÉåÕ)¼¦sy?!b±y˜¸9—ùr×ñÒ00dc\£„s¼ç»Ìô²pâcÏ8ŸZ‡‡:48_Œü€ÓÈ@ŒÀˆDÓJ‡ƒè`š"¤`ò:>$§Ö)ýŸ#íóøj¢½½½¯”õï{uЃ€¬1ÀCCe­ ŠÍéó:wÕŠÜ,ak̯2ÉPÝO¹‰#„%¶€†Æb0Ò¦"CŒÁšßsEÝÝg¬ž˜V-Ùî”íe¢!!ÔG!Ók,èùo’Ó$àúrœò–œ‡GßCÎÌQǶà…F5R…IÅ•Ÿ7¶w¢~ñÙº°:mM€ äP*rRý˜¬õ–¥Hÿ¸‚ß÷³MR&Äù@¨O,^ÂêË–züª«èªÉg•UCFqÄ[’yu:ý“f•™âG¸Ȳõ Ír¾ÌƒAÄÂW±†ýÖÞcŸ+kŠn^¡ýȳŒ6X¾ï9y±œÓà¹û©­†ç7l¼¿k¹®ù ×±²V6x;Ó)‹âõOBpÉ»Ÿ²î(0¿k?s„XÆÄÿÅ‘7@»a/#%Ø6Läb…Y«Ðp'¤Çéi~°*"rkôv>ÃTJçÏù;lÂýw?t”Œ×ñýÑóäHƒÙñŒõø ö^›©?…^?ÇÕnÒ°Ùxßx=HD†v¹€zñ“úÇQ¹Ò1p09po¼ÖW56Š¢{ ÝòÛºß`y*J)äͨ£úƒv„Oa5yAnI¡WE˜uÕ8¾”+§ŽUÎ}ñ7£š¯’°.úïñÓºòåÖÊÖ‡Ólu“]xÝ"ÖNÖJµQ4“rõq%sä¹+éß9¾ñp–¾Ý$!­#Н€01wbé@ž¬7QÜF)˜y£ázZ.¯JÈÀŠ®kk::.î’’Ë¿ÑB°Îz·™)Štóª°‚®”!T¸º¾ ¼&ùê/ˆ+"¢¬D¦Hf¦€KºÎ‹Ó÷ø½Ã9¯³~½ pÄΦ_TE…îÕUõPUAü‘âµ8)<"ñSùsB£b&*Ù¯…Ž]f…i2û_Ûi,ŒÜÑ!0²–Rš ÀiØ’°È&Ûg€yð¢!m•ÁTˆÉkÄ“ƒHÉ·ë±È.š¾Ò$—‡tG0^ç9–jì¶³±5aU1+#­W«)Év¥Õ8â^ŽT©ÄLÿ¢Ðh NüxY/wé—ù¡1ya޼²ã ¶a#~­þgÉ„·LiVhQnñÕ¿gÕëæo_³ÕŠj›Ä¸I©D=ÞaÏ¢•¿EUmY2F2A6ÍvM’$.Í…ÓkØo­ªårûccÕËÊ–Ù‹ `µy6 `̸ öØÁ'™ëò¯µ|gµu.¬#=Ì4¯p¨£ˆ°Ž$Ýæ~Èò ˜UƒYVÂõ€¿o!ååÜdz^ìf)Fš JŠØ,¤è|\:GvU‚&’ȆÀ—e²ÜåI¯EÄdÖrÿ©¬œ”Q.YàôÈ'InWúAVRkQ¥°;6;õÉkéŠ"v=5ìüù(=â7wÏ9`56škçZÔ\ >nGvå~ÖÞ5ëë4âÓ;¹ëö1Ü´¦¯PÁw nNÞ ™X Ýæg€<ãàócØž±fätî7#Æ7@†yËhñáÀ\vƒm±¼Ÿ»V¦2àö†=¿‡]ûÔÇ ¼ïíÁžÆTÀlfÎè "ŽóÀ^ö?zà>¶2”9•ëU"]©`Òýö?úÒû%víJì4pÇUÙU‘MS X˜2 L¥¬m³!ÿ½ŸõZR¶Ÿ¹$?¨¿¿§øÊ€±¡–‘¤9cßÓaH.\ÑûµÚz¶NcÚw¸¢Rõk÷€?ËÅèï?·s\{m_꾩¸`4~‹ùŒGÕ(ÿöDeaaôx8Éà,þæ–˜bóü )¿ÅÀš ›=_“*nÊZo£¾3?îC§{C%Še?ÉØ êWQ*QÊ# ÚGÁ'Æ.øÇG£–+¯îÊBr dœìwû÷ÿO<üpÌÞõœgôôLÞpÙa¶ÐÊ<ÜÀVPWUÖ ÷ ›‚‡7Ð ·‰ˆ;Ä=qò„Rî`é>sÚO^&ë&1/²2x—5®»«öé§u©™)tc}úo hyó{³–àñ–ùp"ª«€­9¾Â´V{ªä 01wbé@OFŠk‡¼"î¥8úWã[:O¶*nÈ?÷þ×Ü ¶.žr뢧ˆ(®I+Áº¸‚ò‡‹¢´0˜EÄ}Þ:¬Ü9¯þ~;bRÓ[†1QÍÛ® ¡ëx#‡â7ªÅ¡»B¾ø„Š£Þs#Æ`Œ™´QÆ2Sà÷îÓ™èc(.Äcå­þ”é=¨V0öâß¿&„ÅŒM˜sg5ù±=¶>¢#þ\vÜ?ç!¤I&=Ž+-Vhnº6ÂÇ+ÒõÀ8 *Ïý¡¨Ã‘².an1c­m+ú9žª"¤Þ5LĬD00dcl£„»âóyž²Ï9ðgð/sŠo/>NÞÈ}8ìHðÖèà †$Š€|Ê`š-B€¢Ìûšz@ú—ØOÅ,F&¨¼[ÕóE2$ °§á#XwÕz–½ÓµP|áõ26+ÓWl˜·çQƒ¥rô4†¦%‹òAÑ÷f„ÕhÛ'°ë+xá‹§fc›-¹ëÅë‡&?@ˆbŠLT¿¼Vº Hž¦J½ý<ƒë¼×¹ÌЪ"ÍÀîZ«ÏÇÏÁŒhÈâ çܼcLyÝÊdwˆ¤$ˆÊp~ö7=çó⫪üðàrœfŸuÍÌ÷"šñ@„‰‚=šW3sAù6)ÀƒrEZç?å){ÐÿÀf°O~Ùá¬Ï–sXä_rЦ»ñmïôˆQ2´«{«Èxñh– °úblNfv_TèwW<é´î?^¢{$Ü` ,µµà¶ÑJk>ûƒ*â¢0½×íóønKI'h¡'Œº×ü1äX0=£õ™Æ¼0‘õм phœMˆ>áú€,çåqYÙ–sƒðÁúÏГûWài0³Þn}Õ&ßjjªÉé î{H) ±k6,á£4eüW‡j6B‰åcšXÌJÕ˜¸rýW=HG&½c',EE"9§dÄ™æìЇAc¦‹ûúïz¿=gòoÇ·½+³òºήpsü­ã‡å¹Æ`¾w[&˜ôÉ’«¤¨SwȯŸOëx sÕÑt9ÓÉ^ŽõföM‰®Šßö¥¯g˜¿¶u$»³¾ºëtîŸ$ë*ûå/‘ã&YƒA}?ùPë_±b» ,3~·ö01wbéÀN³Š+Ȫ°.® ©Bpú*H « 0‰ C¤‚”À9.¬ù&ŠUv«Â ¾#íê‘¢-ׯq»ä»ÒsR梦ŬæÏ ¢˜¢Ú:k±\³É;æâ­o/;=Zt°åÏ/@T̓„±‚AèKsçi=·õŒÆ¯»(#=ª—êO¤D—¯"#QÕ3‹òt)ä$®HäB\4h?ËÏyc¨ž…÷d>4ê ‹§,ä‰1{Q}Q4=&…ìš K{auEvõ çuÅа!«€L°Þô9–j‰ë4óÅj¯òüD00dc@œ6œçÅåí,®æ5Èáø}¾i@ùãàùñÙÙåééá€@‘>'@ãˆIñq&©ÊèëƒÁ~3ÉÑò¦”?e‹Þô§«zó´0 î5œ©g Vo~³©aG[ϺÍþP?ï( $–Gâ €’#ë WHxãP¡YÀ[ƒ´z>´BRšriB€,=0›„›7to¯Fœ³…e¼NEoMÒÏp­j!Y.ç ßàÀ»òšOè ÛÑWb=Zm$¤¯ÄçÅâóÙ—v6ÃÊl¯%õLõ:º !¼›\÷ ó^ÆÇ¶d¸õÊœ¿*ëUU+º*¾U…jq€Ç·ìÒLÒ#’Γ3V¿E¯‹»Ú¤D`ŸRömK×Ó>8Λ©­–Uèj¬:çßóµˆ3 Úå+ç(¥ d:ØõD©ÄRT½ÆfsþT?t¤.vÀ©,7Ü™µê×jezµêyvæÖSížþÞlÏ6Cµ®¸§:IÏ Ì\ìLxùïœÄu-O¿ÛG4”×/ýäÕæW¨e÷h×”Œð2ŸØa«ànžRæÙ5 ³ Ê~-ª8Ó$¹HædÙ%ç¬f.'Ð…$ȱâ_Rä\Xð¼2»?1F‚¸a'{Gþ€žÅÁɬݴÝà ;‹²!É ŸÛ ipþÅ¿ -cÿ%{‘Qæ³#{w!þx}hïB";\²>'-NµHvÆ n=¡œ/"•!A*G¸(õÜ÷=ígþgwÕHÚ£^tn{Hú²A¯nìZ(3oõ1Ž h²Šw?÷Çán†ð`—^™7'ÇCßÝt9˜¹F1‘`úÿ¡SËÏ7w¹ôÔ~7g46§lȱÆ÷þWÞGkKÕ÷¼è؈™§G£H™€7³ÒyªêLÞ³ gÝó‹¥ý\=¬»ßϵßÁ˜U³²ëMH®¾7|»ÕÞ˜ª]ÒUaZÍZ9ÇxX7ŠBaý#«û¡H0Vh 00dc´žÃˆÌÞ7Œâò=œ8žn€Síve~Éí4úYÙð=œ=ñÜéÁ OG&´hœ)ðy!Xa$thìÊD°ò|…½p}ï““ê0J_%ÔQ^÷JjÚ½ÛUC0B`¶îØ!•_7t#¸í~:Ù*~Ykô…µäV©–ÍkS1QU¦óÆ´Þ>Y Ëñ=¯lxÑo%è,§¢&¶¬²º©õI^&‡«´Ï×…áî@ãŽï{µ§»BŒ-‹Öݬ„ Ý“ÅÜwuïvûÎ=Bt~ܧ•+É&°³CU†DÄ­ÿàÛ…âîíÄÝXÁz ×®úP Y± o1ä½=üþ™VjC—áËéï÷3 †è5ÊgœÇåÃ?£&³ñA“€nÐ >¸:ìo]_Ø~~1 ›kŠ’¯¢v<Ëlú4¼ ö}“jæF®Þ­AˆóI¢?ý’îýú뮲‡\£—Ï,f¦¾äìGî 5fÀŸEŸÇ½®{ ëöùóþ¹fQmhå$×ÒW‚%Ûj•êØ>µ¨Þ»õçç”Õ;=Ÿ ¸mzæ=ó^U»ëv’Ebˆ:|$¼ôàVù.käÚ’òÉÁí +A6×ï%ªô’Ü‘Àní4ðrBÙeñîÚïý«­ »ªú¿¯×5¶ŠùúÞ¿Ç29ŠI<Ûgàÿhw5ÏíûZ?÷˜(›Ë™_µdÑ)‰'ùD™n-†ó¯ÝrCw 0¸5µWõðÀaØHOÊõÚwŸ#=KbÈÙ÷zc[maëS•ú*4KL{ò¤†SØ`Ïî~¦gãÖ t3œŠ·éÈ@H9öÁþå†ý§W‚xoðð¢(C™;ª}Ì®y熱×=Õ\ÿ:™ŽüOàñž 2:wí=éc@s®ÑD<øÙÑÓ„¿<+}sÉ­ÁQ˜\ùÏbØ hãw&™º]&î€Ð–}ÉßíÏ€x?Eà×ú7¿‰…9”kƒg–̇º{ØÍ.#pè:{ò.IôîÂð@Dß½Ï6ó©±Ë¼ÚWìWg“pzbB}<>*É¿ôOšÅ‚8@`°+¢å¼c8Þ÷úÙÎGâ6‹˜oegeÔÄNñ…®3'ð0+¤ó·X`PoHúBöMÆ®”> ±W‰Ç ñ¤ £3Õ\äÝfãgÝß}1÷£NÒ.öÖìi‘.öꥊæÙ¥KF\3®]î4žé;`ýd†ë»»¾n‡¥Msõp…i €@01wbéìM}èä µ¨M­.QÚbjadI™¯„+ ­½‚üôr¸ì‚¬®Úb°¨Ûq@ŸB¶¸.f&ýbVf/.…ÎJÆà h\¹éµôy ¡‹ô›­ "Ð3 Ãí°]pšù r¹ÈIz)Áƒøó=j«Œéî…)@SÜî²Qò6mT(S„£ãö‘V(ˆ\6ïo‰i?òDÉ»¥ˆ=p/†š}aÑS VΕômÆ >ý»ô£Ù+‰€uwPÞÿ:âñJa¶›sP§ì¡8ñÜCþ“‚¡ÕÞö9ž Íí¦z½?½D00dc0œÃˆ¼g»ÃÙ“Îx¸¸~o½Ù•û‡À ŸVéö ë)Кx!ñp‚X€äìgLUƒÙ§'Ð'“ ‘_“ì¡ÇÂy<Ì3ƒEïzQ^õyulư…ñUò¬|8ém¤\Àz‡ÁR‚ôrBc7¤ï &ô¶ïÃî¬r©´!×@åÄ‚ÃN•˜¯SßÓ»¦tϦŽ4›|+špRô$Y¡›µ×]ÒÛ¥½5Þ¼}J@ ã‹|… Âua£oHÒEZeësM웸 0‡bú.Æ,PKô…]šÂ’+< €áTó^Âñð¿á¡T ª³èª€Œšø Œ¾È ûâÏ‘Iý-Í·H¹Éx:µâ¢7s÷®ãëNe^Äì.{ Vjî7¡pÌqb+*Àÿkå2ó%g32 d¶$÷OáïµßOgÖÃþð/'xp~Ïð[Fö Æ~Ø;V¹‡-A×ÃÔÚ¤ž+Û"¯^?5Át‘0Š¡³RÙÆðš%bì7)+R¥?oÜaÕ7’ƯNByòŸ Ñ\¾RIIÿ´ çæ^bŽàÏ•f {ü,g¾ð´Ã¢×¥À;žÿ‡\«‘|@í€ýnèö½j8î?Áé7Ïÿßwu£T Œ†ã^ ?Oç„_Û«Y੟ÛËM_ØÉ‚úz«0¨ŸMC˜-ŠŽƒ@aZYÑÝc MjÇâe­céÿ´Á*]©_Š %¯Åª1ûåœFe®3O\ÿÃ||8y ß²IåøªPÐææÕý-«½»AèCbðZàP$HÞ¦m>ŒðQ·ÂKØuÿ‘ _ú°=Ôø&]Mˆ÷[þŽgÔuÎAÉ­…SÐ,cŽ]þyÆÆ/…£'hk C¥ÚŒ5¦˜å&40Æ?rJ‰^Ž|ø§y%“ɾLǶSÊD‰÷¯(±“þGgšO³OÉÓy=}›%)‰³«X™£Yboê6iWhÁ¡fÊnðƒè‚â ­Õ¹†<ò¤÷¹Æ úN–ûü‰Ç7³X”:cK,WÕôb˱Êi¸peó…ªøzÝu„101wbé@L’Ô7Ì\F2!?ÔX­¸µTdrÏ&DâºrŒ¬öa¯ G@4”¶ ¯ /ô¿½(êUŪ)^AþBšøä§~¸ø¿›M½¨Ø­À©˜9¡Ù®¯Êýú2 £š&˜zeŠ ºnp‘t|ÞËÀn(B…²˜N9‚ös™‹ÈÑÃ…Æ6€HÉýA#ðs KÙmHªÅL‹pLùû†Ò³…Stg,Ñ?‚0N çPE(øbhôôO¨wˆßýq{¯©X©¡@ü*á9–JmÇ>Ë¢©wìî»4D00dcœ Á8ço»¯q ߇àú…?ZwoÌßàPñ9x ì†>˜”¸ÄøŸ)F‰‡Ü„4¨…P„¦ù9Áîy!O©ó<CÔ~g:(§½äõî×ZÎaA¼vÛ†¹ã¿Ÿ­ä™›-´ÙÐ(VQÙ- rŠÞ‚MîA“®˜>{Œ>™ÁmÕéø”ënâC ¬%×1Ô.<ßRQ¢Š~¦ÎšÁY³dãfvnËmíšÛ0ž¬ïëvDËfb·ãO-Q’šÞ´f~—«4Öеþ1àë„d""fŠ¿W€–†gÚµzÕ7ÊÇå’åÞ)»##•¶ß¬üº•!e ã§.r<<#²2 ÆÛƒˆr´.}6/Ã/ц©¬B?ª:Œ—ôN惨À@¹ªLYxH<ÔÒgí"Gë1ð‹»›RÔ5äúœ¿‰žtôfs3ÀnbÔ£ž 0’ª~ã(ºnÖ>wþû¥g¶ÀäéL7gW’A¿‚ÿú¢}ýj +÷Yþ\#…ÙªYŽ%p;òfµÎ)ÐÜóÚ’ö=¢•‘ Œoa~ ÓmJÊ›S¦h¸¦öf!öõĬãhð7RTâÍgW¤¥® Ý—ƒn^%b B ×2pøï¹žgh¨Ïÿ¨É¾¡ìò—›ÜKuÖÑ?!`` ¥ÊN¼ÖƆæà'—ëV,z¼5c>&Bw¯f-X;aËm~зýÆÕ¼e­zÿtŽ0Î Æ«=ѵvUJÁA0,B  r¼cwèÛÒ<ÆðÞ/~ mr%J®–3ûwZžóð_œ.w-5x wüZÿ„I™Û5±Îù¶ÃÞëKT°@Ï‚«¸þ@mT3ýh¦Ð!ÊöíSðb#à5¨SƇÜÕì=UÒnS èÜü¯Ç=Ç3`¬9¶a¯æÓâ4nÏèYÉÿ(ct±¡ËY\½$á´v†¹‰ÌC±Pù áà[ÜQšæHÍ;_YÍcÓM jfJÉ_‚Ò‰ølkÜd„f±ô5ºÃÖ^€ÍéAFqOÞÕ͵݋ړí íꊮ¸õxì˜ —7ò'?IÀ7Ö¶b'òàc‡¹úÛÉÇÌϙʎk#Cý1ôÊ5|²T÷ǪôwÎ5ùD@2“N[1§ZüöóN]U‡¦V;£MÄcf–¡Q†î-ܧu}º_D\»$zø†T00dclœÁ9Þ3wwQè$ôžäáø>ñ ¯ƒ~f¯‹Í˜ñ<à E‹Z'äLkÀ™!LSêpÒ H0¾@_ذùÁ“õ<˜øÑOV÷¼ž­^½¬€Ü̺¬ãDVwà¹_SÂBGÓÄ^_cf™vg›Hñtý E´»¡úÿ¡uç'J?;§õ±HN×È£B*©é(,•zƒ•ºÊ±S†”qxÈëÜ  ù8|H0á=µ÷xØ|ãg³/ªù®ƒTUsÈ¡$Ý”iDÝe©’ø•q¡`M¿þáøa¹aFÛíÉ~A)dï£Bñ?ÀH³uÎÈæ«_‘W &\±^ø=ªC%"*Ë—Z^Þn TÍš@¿L‡3'5ë’×I¯ÞÌŒXIà;QÂLéñ0ñbË5ëP†R Ú<Àw„l\AÊ)šÎaš½ucrôüsá<_´ï\Ö£ôÚ⌯óT'+~ åÒõΉ&HÈ•öÃy8/²¾]ÁÌöÖ®ò)’°,³^â;µ–8>_È/Ó-4ûr“k‰V>uð¦CE¾àÕÄ©N{bL”X2‚ï†+ïÙÃX÷ ÌôPfWTßÝöxüËJ»ÀR!›*HEf&«Pg3Ÿþç±–Õww†X (¬Z±&•´ÿŒìεŒžj>×߬üÿǤA虥½å'¼W}º]ˆ`S!ÐF°iRzÍÃKá‰ØÙ>@A¢¬eõQ3.×@JÓ‡öµ¥òiºÛ©¢`®ÍMR`ïìHÝ´ñåë W÷šáÐTI Õ401wb逦›nP×Ô ¤qE¡-M·æx =οz®«k¤„øÕ‡Ëª´GG+ZÚ­ ql».æ +%m®†¶®sPË@c§¼¦÷¡¤p²î šy¼ÒI…w‚¬Mܨ'~ RÎIý¥a †é “d¿fÁR4C­® gÿp¯v£™c¶Æ”að_)j¯ëzT™õ§äqÂP™e „Ê&s§®…”›ÍXVp"çè.;E" @™‰=SÐaTñ.Lhß(=\=ˆäsö¸CsœH0^ç 9žÊb¡?Dhi-d`ŠÈD00dcxœÂ9‡7œÝæz óµæN'àû‰ÃŸ8QñyвÉñ ˆx4M!NNO‰€pª,´»OÇ íòù9#;=”S×¼7½ïWªœÄ€ìh ÁÝpìóHñè¾RÏ·©N2öfŠž3€ IÖýÂI =cƒ0¨.YÔw²‡ÝEh®{`IÚä$¿ø)Ðë…â —¥_L£œ¾Jq‡ØsùŽž%†8úb¥ƒÅðQËæ9üý×Mb ÊVª*Ú¢¬,dæW0·ºÄxÆH™ºõûÌ?"b Ä(¯g²œµ¯ÀU±óFW‡‰ÔºäÛ›|\ó/a³!˜ç3²2&¬Uhì†zŒ®•äì:¥¢AbÃìT“ͤ"êYÝχ×\µÜÖ¿¢jbûÇ9P&1¸õúY€Ë8¦"MTÞTÒÄk¹Hˆª–{bÇ%¯]©^³ò·!g½.9ÙX2”YvËðzNxt‚©ÜYÝØv¡f|'9†eÜÚõõ̞ؔp‰½œ°3Õ­wÐo:Ýß¾+t§‰» ]+RšýU—×ø~\]éº{²Xˆþ2.†½½dútnµ, g$8úM$;`;ƒ\>ÁcÞAÀCÞ‰˜#àü-ßžBÜJHý!ÿÂ.8¢cžÿÿíƒ=•ãîÆþæÏ‚à 8ApfzÁ·ÿÃÌ‚âã<ÚÁù•Ô¼.Ùã=ºKª§`Àj@gî…ýƒ Î?@ýià%00)•ª3û<¥ÐV/{ŸãÇ©SiÖãÙ¼©îz§€“a#µ¢¯ãƧ¼ BØÀÄ”~|Á_p-&{?{}ÈÜÐ$ó¹ò Ëç¹ñÕŽçÆÐð¹Iæ(aHÿ%ÔûÏ‘‘ànW5J>7ù5ÏŸ˜ŠcIíœl¼ÃŸÉ¦Mètw¤÷hóÛ ·U` g@†ÇLT¹6«¤æÆsò²Zoz 1_æ‹8Ý ¢8#/¡¡fG/ø~Ú!›…Ï•Ëf£‚ ¿dI³hOS“ ­ÆÂfö<1¬Øß]çyýjœs¼¼:YšôÀÿ¹ø#49+ÝøŸ%°ÑS ³ué‡öý™ªˆ|.¹îíÉ|bãË åïѤ´õ½¸Ýit(õK«+-`Œcþ÷öíÊ‚¶]|Z¯Z¸‚01wbéÀj¾î¬Õa§(¿‚æýHå·“‚ëî°˜)¬¯¢K¥°)®.P ^(®‹)H&°) ‘âK¸‚È -Îj9­®«ùúµHù¢ÏâC8¬æ¥‚ϱõGæå¼NP[äë7U°6Ðþ«‘h÷Æ ¦"¬¾Hç²7MÌbŽmÄ3-ˆ3T‘ô>ªe6â°ïïD?S`zð+G(ÿRæ”Pe~*Šò cGá:œËâ!%T!jþÍá7w~?öסdîæD@å ™û*l”Õ X^Pm|سM ñ¡•*á9–Šr馫o¬ Ÿ0øD00dcLœÂ9Þ3ww—¨¯I^dâ~o½ÊkÉ´ç“Ðofôrrq*­± úœº B@ô}Œ°(&©àÃôybPèò‰Ø³òE{ÞïH·½[ÕPpÞ!±±9Î9·`¤«ÇŒy¤¯¤jÚHEPö/qv3f=bU5re+e=V¨ÔÚI.˜Ì&¸ðî¤/ þ¶,×b¹bÍçY54,”L{–Ͷ?‡xõ0õ¥ô…ÓÏü¤\{(7›Hy¿N~þøÕϺÅIÝàÉfÂEf‡ØuçW~õö¨Ìû°&m7þ¥dRðÇH¬³²PÆâÃë—Ç㼨oÆeÈÖ©]®G„ÙôRöõr¨J¯•Blš¾U¤ÿñûTƒ¢míWÀ=ùÒeI=dwü–  #Ú¤µÙ>·4P™O`ûª(i<Õ)·‘Kެ׺.´dè—ñˆ%x¿kÙ w`ž–¼ _ÏÛ²Õs™þÀW¶lI_8dÕI87š|Ä.  Z×­]’šõÆÜò) ƒ°2î°¹)K5SÂŒXTfyexyþrïÀ­“m™þ¹ÙË='ÒÔAȺ¸8ƒp ÈNkê ÜßÂV¸Þ‰Ì3Ü•c™ãðýÏ*#ýyŸcÂõž4›·~¨Š+§£µ—ð8ØítUÕ¿^ð®åçßÏÏ?Û´ä½eÁ=ýÍÖ¡!>A±±¿wyªjÐ#êZü!FÏÿÈäÿu®nÑî¥9r×ÿ z´·½ ÜžâŸxůàe.›“œƒ­2NÀ =Ì6t¼ájãpVgržçæ‹»ÌXgÓ•ÏxIF=Ù“\––5ß6ù‰?­Û-ÏòR)‘ci€ê|‘h¸T®55þs ‹†¦wô9?–žòºkwîòà™‘üŽÌŒÍÁÚ«¯þ0Ö0w àw‚A? n–.åcâ3ãºÊ¶íG¹ ‰ÛåDÙB–T\ƒ7AçLǽ|J¶âü]”úãC§û&˜ÞàoÓÙ¿à¾tø:UO[¤ŽW¡¢)µ¤š™\N…ÉùDwœ>55NÏS{X°;á^ÝÑzßl]n¬ûc8–ðùé†áíÅúèvz¾uR B€01wbé€3—ß‘ÍjX™¯·«Ë:º.»£áZ$›„Õº¨°ÈÔˆnF‡ ë·³¬‹+Áª@+zgPßê·ÐÓÚ¹’W)¶U›]{öO­|rˆÂûŒ!½]O{BWÈÛõžkÄðÝ^( 4"rz !T‚¿Sÿf¾ËßÈÙ<åè€0ú![(õg„ƒ&ûr–xŠK{že›•%ÅjWhë@úàÖW†!ÙóÒÜDˆ7Qy‡¾ÈH{'ï†GC6bÆcÅSèèµæûþE卨c|âA4^! 9žªÓôêéå+ žøÂD00dclÄ9Î7w‹ÓÔW¤¯2pü_{øû Sê‹è7TI=ò4äœh” #©ÑƒUNe:99q(ðØò”:< h”?(õíuè§«w=Nl0M€6Ûf>²²¢1”F£Ÿe8. ²Þ²²Ã„õEWÇB¶kXI{uà>¼-*#ùŠÊ8ãòM2/‰‰‚Þ€…Û£Þ*û?O‰µ>wŽn²ß6?«|*x-l¦Òy<°D5;éÄ>\~+¸l>œC–z?ÀšÛl!— jë9“eu'vœ±Žœ›C^©Ð~Û‘ä= K÷ØØœKˆå´×·¬ãgMøÉ™K&M¿kQ×éŸ9g?5@ª´•HªªJ8gñ«ÅPv´ƒÍ¤I<ìâ7Iµ¨íïåòù±È$HÏ1«'as>êù¥«MÂ(²ªlë Õé æM£=`ižÞÏŠhgû˜QB¹5‡¹‰‘¯P_£^™³þõŽÔNÂQƒÏîF„æµz4Зc7iÑ \¦àϹÛR’Óª^Dœ ~^š¤d„µ“qŸï?,Mëð÷6.ý…`œBjWAŠð(xÐ7Y5’Àý¡hlV¸Ê¼-wéŸ&ج1ÍŒÏÿÂEHaöz¿6ή4áþ}Œ*!±ùùû+¢ ám)”Y…õèn¥ ¿žêüÄ.\ý_ÕÆýÏÍŠ6þ½A(¯¦Gç¬1s×:oy=ìõ'¤c_g²©øhê “$'à{þzÂpÿû­VŸïx0r×Rš º!Šë_ÜÌ^_¯F߆ԿUЀ`‹KMzÈÿ Ú~·GLßIR”žV x×™-¯î÷íÚ^sƒÉ•é6´êrÀñ%*óÞªcÿ‹2CëÅÖPrpA™²dþ#øÎH¸7ô§ÁÆŠ6鮫åÅ' ¬‰~Œ}й:®â¯Ê»ùó5\Mjh­rnM9zçïã0 ÒjiÂ4u¾žTëXx˜8{‘”>ø.ÃdýNÍÞæo`cÁ÷{Ö~¦«ø9;ÁãÂèpýë;ÐåçÕ1¸œ@þ?¼6{hž|?BÜE1;ztí‹£N®^µ¯h°¶â¦¢ëK¼ö‘ó¥q‰aì‹É|~½¼!0„ôØVÀ00dcDœÄN!ÍæóœOQgœ÷'À=÷»òƒ‰õÉѯ»È  )ü xð(A Ħ”ù€ðž€øFä9Ê(«Úh¯uå8î{!|£øÞ†Ä!J9€³‡9Þó«¹XaF9#"•%8ü‹§rêÁ/Ë1žºªŽæIñèD00dc,œ!Ä9ÎsŒâó}-zOqÃð/vxO·`ÁúKïQ§ÄéÚ¢}Î…«Aiàø`†ˆ$…Ó‡èòl>\OaÎå}ïE={ÖzŽÌc<÷¡Ç¸¬e•1ùy³üÙ”Æ.(!Ì Ë6›ZhíU£¼ kìÞ´êÝ¥Kž bÉRñ:áÖãYðl«¬–`ÝìÉt†³4Ù²ŠÜÅž–L;g¤[³öÏn£¦YízI8¯ka˜/[‚)HÌjªÛ ½Í‘ô÷ uÎp‘dubþ{ÉÁ)ê×劽¹k>Ìî%¬S.ò R5S£M¡½¦O•1«¯¢íkõö”“ÎüL»üíçõ…x$©›µbZKáÖsû÷2× ‡Ô.%M„`¯cKO¨ øå‰O–yù5Íù§-¯t®¸q4/þƒöÅõqÃS[ÜeRpŸ¢«847ÞEŸ)„¿íäø•Œ¯s‡ƒ€ÂO& ‹ Ã*bÕ/¤µÊVLqý|X'»]2ž,çœr®e„Ô÷Z±cCðVá—ËHšvâ´÷‡ÀÏM\.'ŒäÉ~DÝoðÐ@÷—±–Üt°R{Õ&°Ý0ØK±f³í34êeßò؃ñ؆ïP0× qáqðÖgä6£÷Õ©#ÂsfõûÖMЙoƒÒý2ïéãûÏš"cž(ó7øø=ûBæ|>ä înäÈ8?‹'ùÑвgŒmˤi®v~ßð|¤÷'\Ãïýe3"Mð±e»Ïbs7d훣¼ˆþq³ß5Þ¦õÐïë'oððUÅ\ÈOyø67×J¯¦ ãË¡f⼟;÷áÍŠþ)§›¢üçmK»×úvKÚ©\û`Ömâ¸k>–920 î5¿ˆ¯•Ï@01wb驸*Ññ$5â1+çnBH‹(„¡˜9™…Í­Ââ/¸¢ÅÂ*afÑ@ëÃ*ïʯu›KÈqN!¹1™f+D÷´ÂJ]d#÷¥=à˜ÞgÜ©IîÛÈbû¸´Ñô°ë±¢øtþÌOY;Pˆ'ä“îTu fi`b:ç …Ã§ö” =Sù:ÖpÏnüM"`¶VöËúSXKù‡GÅDÝg ˆ.pN,”ìóÇ#‚òtK‰•Š jŤ…†® %MhJé*8 2EM„¢-Рp ¨5^§YžÊ­6ªÑ/Àçm99öòD00dcdœ"pNoÆqŸ5³Îc\sÁl¾žÃƒÉ¿–FA>@ð%0‰@>„V¶A§£¡Ha€yd~´ù?ëâŸOUïuçx!Ð@ O &¥Q2£Y#­&ÞÄÝv 7’„À*è…LzÆ,µñÔëú´ðPí|Ý.¢¥H‘ÊÀÀÝo*oˤ£C…kf·ÿšñZ.ñöœžáÍDHš‹„Û6èÛ°Ü+zSڌĸj-1Q’¿A/R½h­¡/‘¶Í¾UŠTгÓ"¼‘žÁØœüú6[¦MNåŸÞ‘àa{CT§LÏXZl¸åW]ÿg…jûh ‘¸¾-*~ˆ’d¢s×5ËÊ•\BS˜ÉÈõCÍ…ì{_fNwbJ=ãÖ};‘k 1A;#'`ÁIÖ¦Ô[,ØîÏNtq>ü`2úV¾ê²VGTؤ`j—pY/ŠáwšíC~“jAKíçßñw› s%±©gÈ)°\z€{—í³ÒR;^ ä~‚Êù' þ‚âÕžÀpò Ì%Ϥo}r-Gøðäÿ{¿Á\×i0Geßf±À*ýx€! Ø‹8 yÿ $̆ì_µw2(«¢w'9=S§—àfnRÑŒ‡À¼”?Âú¤aíÛÅMÑܳ*ïÄ"àÁKË„Ò×Áõuý ,¾Ÿ´»ÿ¿[G¬xvºÁv_V³/\ò,<²ïØ$<RÃÏ a ‡žšýñöýÿ•p>Å»À$h²Xeäƒ$û´?å½GÇ7ÁF¥§û‘Ü) ]Êfo‰BËÖ×Î×3?@ïêHã‹j´nD$4©É•—1¡“µ›‰ÑÐkÀï;Nx¹LOÌÆùÁ`žj¬Fñaãoç“&k½HÍÁ éäx3$ø¾ŽæÖ…—…wKˆ9¨)çèšùC¼ïÏ'®`l†¥âá!r$O>ŽS`¼™;;yο¬ÈÁÎ÷®Žfsƒˆ4)>P¼Œaã%¨WaÈäCÍÆWcADˆxô·l&¸êûëSIûÝ]œZq°X»í¡Øjýöú»Fªºh‰²–.Ø!Ý]oS&]}’ùó±aIëZ½|C´00dcˆDpŽ3Œã8Î!ë,óžq?ÌGšø^…?:€$H`Ÿ3ð„*?Cƒ‚lÄNZ !Wµ$!'À‡èaö§Æ|M¢uMÚ2iO¥ï$†Ld“`ìñV' œ=%!ÇT·ší²ýk­pÑÉÿo„wí½²Ú[f×­Ò'±dÖ¯êõ’³Û;?úsolDйì×ëI& SÄÐ)X›‘§­tO`Ãì”Û#™AW×±y2;—9O¤®õûÉjŸ€¨ÞUóá› ‡çGÂ}j^Ç ^fÇ·°~UI³Öj]S¢zïʯŸþiócØ@r ;¶'i6yŸÀ5ÄA»€bý=˜™·ìß°~jt6ªùŠõƒnij£ê×£±û飀Œ»t¬ðóœêfÅ= µ›Ë½Yw:ü/Â)_ú¶'Ùd°œê/QêˆÊJ´#„nÏ!Ç-HA,â§­¶‹Sõ®ZcªÛS\‰Xx½‰…ά–ÔsŠ ç2PÇØ¯r[Ï"ánfïô6y šüžP,=¸8¿`¤Uéþ'•!ýÛG‡Çþ6:áíú°pxÖG–vÃÌ®døq`‡)l'#2ª¿ƒ±ðîS¹.—Ç–;iÁmø1ïy*(I}ÌÚy2:‘´^«±•èT%aϧÆoÕ¢/?~ž(_ê·èeÍx9á§ÿ§WÇF0ÁWmR6ú=`µÏiú½ú¶~å‚eiÌ—¿Õîg×ÁÀçä¡zuaÏ_¸¹ÀðòN„Ÿ•7Ê«Ÿ XM³•|®$­s ÌÆ|îaWèVPøA[à=ÀÐk©*„³]‡ø!¾8õÿµžÖPy€â¦›ìƒü—ÐÖwº°[ðfÏ:ãsUãºÚmôKå"=|åh8+7€°¨%•à|ÙO:-# _ãL›Üš¿ƒÎÆ"‡,ñ‘”G÷†¦Ðñáã§ž)>õ1ú2“ÒïƒÖS”AÇ>–&šÍ\—¬wðÓÞ®®²M™ëvDòÌnöi‡A×dK !ÎüÒäÆ+±k—Ô{"ßYtvuÀAŒÀï³Ú%`ñJ=ÿ|¸ðvž´¶tsŠ½ÖˆÇªÌ'nX•FpëG‹ÿ`˜8Šü“¡ "01wbé@t¯øùn«­¸X½ó¶£ì¥p(äÁ¸Ïl&B»š½íjÎ/¬»Ê𪰭\¡â °ª´‹kÕ^#Šˆ »ÜJP`¾âúåÜ!‹^w.p.¬ ëA7µ.úu£®*DÀ«a¡ 1@õbîŸÄŽ>ü+WxwÀƒr(2G:\ß»,ê× þc6¼ëÞúBÀ‹Š((0ÔÆ¯~˜TÚÞ§7‘(’Ú[”bùZ Èé6L‡c§Ì@¾ÛF‰¤:»AH™í”MP ÄjHôæšú®€ÃìPý§—œ@:Ä*a9–Š=S¤ÎLý?±êÍàD00dcˆ$q3œã79²Ís1äNc³ƒeøq!óý@Òb–§@7DF âu"H{!úS@‚""p Ä~ÑO7äzrO1‡c’ŠõïzŠz×»ª;`Œ0›`ß—^<© æÙ`†©©”Ng}ž$£eŒ™*šVÓ‘ˆuúÝ-/¦¦®HÆ¿FiCæ$Ø)êtæ³Ïœ…½BT;C´­*JÅiæíô+Ç/Œ>ÿøÃáÆû"Øî6¬ïQÝ—ßqÁÑ^ç”w°…7h„Jt¤ mã}â—«¢¢o’Õëy·J³þ@ÀN«‹ëŒY‚ýõÎ/Ætg´rzü—÷ ªíZÇ'1ÛöÆ'a¹|¼ª¿Mÿ³•Pª¹T Ñtà` €Øk‰:H_ß§ÑJ͆¥6/Æåõù>'¯qÁðmJÖgIÍE‚ðb‡hYI ±ÄÑ‹FÕÐÊÌg=â$?ø'(:4v/ܪʱ{J¦<òxüÆ&6UõöÌ~r&SÖʪàúO> ƒ?È«·5r7wHSqǾ¨–]­Ì®&ËÚ¾Ôˆ·¬ÚIó¦Ò‘çù´|©ãÛ]¸—€éf`ÿúl-j©n ñ?xf)ņEPøAu¿áåèq¹º¯i ¯w‘£uŽ—ÑÝÃs7À{5yDAÐū׺½Ê¸Áu*Ãü ¶;Œ?¸ŸJ·ÙY ?Î~,óú(‘Á܇ˆÓ?_ÞΆµÀìF¨ÿk½(ÔVžþ5¤µº¾÷%ÂÓ~ù[ˆúêCôjã¡dŸáNž(Ÿ]=?ˆTg[ò)‹öWš×‹ì²ÌMñ:F&2o*'??”Ç| ”!Œè­rNoÄ[™º3s¯|»¹äìÈM‘[%p~AÖVG,Ì{“äO¡¾^¯®ôžÖSªç{^Ç}R+qg»®Iîž· :Nš¶”À+ï 8=ðàÅryÊž‰MsíT 01wbéÀ{/-ìɤðî©ìû6rR‹°ŽŽÛº]œžùùKœ@ÑÅɧ™Ðª*V´Äáªô¸ôkH‹î- 9ñ¸Xÿ‚h;1üø¾Àúž£P}(´´&ñSS.ë#CÖx#%óŽBõM¾W˜{SûËÄæó* ;Q,áÙPìG•pØ®iYk¡5^çYžêÌO¨Áj<¦ÓD00dc„2$½#³˜î†3χ¾Ì–#÷÷­öÚ«$‰t›%й`%ÚhOHónÇ.™’„ŠI„#2óÙ& €/ŸÁ’Ùß[–í–³¢}x4F83,8ncSçœ/Æl4Éy&ñ(Æ´kE·+y2ð¬“:ˆèû*$É@ž€SÀ]Áù6ò½è»Žƒ2\ÙþÄ™håè;ÊW„\¸7þOQ;È—™þòmä;‡7o-ÞÜn ÞiŸÁ1Ά¯EŽóæî¼Áy¶Xu»¡Îƒ­µu»k»¶¡ÖRÛ]û…ÆKŒ—–o,ÞX¸Çq¦ð¤qÚã­5pã9{Íׄ†²Å‘&+Ž×ã ¸ÅpBãUç?¸§p:âEékÑ—\½ yçâë‘÷.\•!°ü©€¸„Äp¬ÿxšð= Âòq[ÇkxŒÍä'¯\+¸ƒx à2ò•æÙ`ƒ¸nÍmÆK‡w‚¯&^X¸ÅqŽòÍÁ™zàÜÓ9O÷‰®Ü 9,øˆ «€÷®x²:öþÔmÚÜ{–8ûaG…ž”Íp~LÆ¢÷‚¡‚oW¼¹x×Yàýà‹Ê¸oÞdzˆ¶X!vÎFC/ Ümžîœ¼bÓוog×=Å«‹÷„/Þx¼õqZⱆ´Áš´ÅÅ[Š·žï>Þ¼÷q~ⱆÄ?y`•g»€WŒeëÉ×ˆŠ€læñ¹ –²õ…,׫×óÝÝYãPÅô` rùc zþ ü>­˜C€8RôݽU眒εòÄΛ1ÏYLP«EXðß(·̕þ"üÉ#uˆBƒ'w Ÿáÿð:~ÓÄ?1>‰Wef´åeò¨ÀUVŸ7éñ)ÔCêåð–]žÌÆ?6ß«¿ˆ6ü&Z¡TA¨È|T£òÿKL¤;—VŸ”Ëõi¥úŽÚ*/¢‹c¢˜Ùqb¬šÍU‘'–d©ÁâÚ_Lq½ý®ºGöQ¯p $^6 èR™~J7§Ï‰§„ˆ yE—ÉGÛù|…@6æäÁ}É"svÂz ›Ë§5mçÛ«ÿŒœc]?Ižš|åü/¯`íCr4¼¶GkíÍer’{dZ…Å¢LýîÔ^”›£Ÿ ™¼÷Aõ—Ëhƃ¡ºËíÐj{£ÎöÁÇ×¹±†q§$½.Kåì¨PÑ&–x7ï ôÑYŸwÇŽF™›äúÆœf † ô%èèKDt 0žW¶¬²Ë/V%j pœ‹Ž|â,Zx‘…\e¶ôt.·£££=ÑÑЋz:®èèèèèè$GŒ0ÃÔ +ÁÎÔfx2‘ˆÆ*6=”¨)D^ų̀é@©îéNÜÏŸÞr¡¼¨ºƒ6d‹m¶ÛU*Á{J Cúi-´—b×¥P" 9QŠ£Eø,Êë``DßT·¢e…ìPv¨,PTuG‚… eê”E—½bYþõó—Êâq8œÑìa~* T÷ºåBÎÂP\ ÒÇPj¨+T¨mP¢ÍX'%AØ=JW(0ðš:zäÃ4P¨µQÊ1F® f?#b€Üiûêŧʀ£ARƒõ@*‹ëPz¢>¾‘9ú¨Ñ@¹‰‰Êå1 ‡ôo?vÇ ¦dOÏû»¬±ú::,XïбgGElX²Ç÷ÕE¶xJýì v> ú^ØÏ#3úg‚LÐRÍЗ££¡èèèèèKÑЗ£££££ ;::ÈËÖÃ>Íh½°0g¢¾:5/™çÚ'G2ëû»ÐePè§ !¬•ô"~k_3V¥q »ôHèЬ|*•ó££££¢Í-®xCwOó­/KÖkX}û9<«H–¨Êê ¶¬lèÞt•I·ªC¹³T‹»-çùâ?t0Eé{Ö÷gá™Þ„øE“o[΃Q«::5¥¶¾Ývø"7†ÖÇÚ ¨ÙPA-sþkÿüŽçÊ% ·o¿ß—û{óPüVùÎg9þxT{‡fyÝÕ É³ñP‡Îӣ譯ž_™òĪ =ƒ ƒ³ß¼þÕ‡/Ê üŽÀëÂÊhá5N @ ”¨óÒ!¤0eçY¡“Ãjð8Ùû·!pc7P2}*BT‚©Uª?TE•j 0ŸÿÊ…r'†üAꨥQR¢¶µAúƒª ZÕEŠ‹ª+kT¨*PP ¨•U |ªÝBƒoó³÷$khäãºËgLñ6k$  ð4ë’ɪGØ e¦¿Tkêz1@CM¾¯}_¹,^(‰@€-'Ê€cØÿ•Îü)¿ÉÉÕÕÕÔ]]]]]WÝö]]]Iúººº“—]]]LÈàpP ã¾ã«©þOE¨i@ ]Qî àj¡¬‚3†&G«2|d ÄÏ>aªP„M_‡1±¨Ã¾úº† 3ªgMÕÔêµbe3jŠT !P¡ß ” €…#F1@R€¥fˆä•ŠuPoà|ŒhT«ÌÄÀùÓªP+!€f™ÊŒ•ióôTf¨ÌÎ3ŒÓ5Q¢£OOOIU*43qÜb”0¶GBh„‚Œ[¢BåmªßJãUEY¨Ñ#¡ªmjç•´q5û”JV/éܶEà“vͽûç–ÈÞÑå……’Å„–@Bz¡é«ªÈïsÆ•‹Cí£e­.é«V¸h:¼È5f¡צŒñ颤 NíÛÒ+Óêê” mXÝî[Íæèn!è–ÉhßM`ya)WÙhƒ^£H)_¸gì>£/x·ãOÈ‹U=t´woð??#Ëh²{%|W9zVh§8L`ƒÕ…7'Åbq8ˆÄbpúovÑ¥<ö¢A‹óÀäײT¿Ÿ©)OL6 J~#óõ/í)†Ãað±: ÔÒÝ:óÚcuŠœÉ·ÀgóZú9ÀãÃí“Ï^ïE "Ú[ÅÉ—D€ŸGÿÍîg'–žŒy͘\©Ä]{«Ñ0#ç?J:l ££]˜B~šgðaóŸ˜ÿ-à÷Æ>Ì8:<%Õ½uhÊQG ŽÙ–ÀÚ¾œÅë/•½Üöy.{>ˆKm—¹Ÿ8çÿ™*oœÕë;¥‚*ŒØA¦Ÿ~@<²ŒòôôÊå¸Ñ£)•ôôôôÈäôéÓäyd¼üY'æì¾Œ«k=wæìœHc—òÞnO"óàºD‡ÖKý–:~½÷™QOq¯úk™<Þù{¼ ?ƒÌüÔ‚$xü^ÄuC‡k>H¢à»82f¿9ËÃc„8l*²ªÄކÀàcWóù½aèÁ†D,µ® LÓï(:«]ÞM{°[²voᇠaöo×ì÷óýIãà'[ÄIÍ4àûmYã!bÖtæÎ9²:¡gge;-È} Æ'!˜öŒr¡,¡s³³³³²‘ÙÙÙÙÙÙÙÙÙÙÙÙØ÷‘f_{wå‰@nkñ@vFi2Øê0½sgO€7cG˜ý­äÍŸl˜ f±Ý„pduvjýÃvq–/à6\¶Ž0Ú%ÊèbÏ®vbrcOL©„smÆœØo‹&$d`eiÙÂ×÷ÿ^+>Cuä6|ôî‚Èvvvv#³²<0œoבòðÁ}eü2ÿê²Üâ±ÜÍÙÙÙìììììììììììììã>‘ÙÇ,¶0úð‡~`ziÓ6IÉ–’>6i”ôát—<‡KMöKˆììæ³¢læÎ—{ñÑÑÃc÷õWõxòŽXÂ6Ìq|twüÍý\ßÑ…Ññññú?.îEshŠkÎÿO—å±?æOŸf…>ǧfü_µ(¸g`'Ñó9w~Í€(ß³*>8– ÔòóÈ…˜püàt ˆÐWÙ?É—ÆØ}µ³mKŒÀ} |}ÿ•tA²O­;µZÙ×R¤ÒG7øk=°ž½¯, ÍåwåÿM2K—>^°ùï|Òsó寎>f-úð ùäâÚི9\—˱’j×­Q¢/ooeDJ„}õœg¹B9Žd÷f#‘Ââ&ßæŒžWÓuc°[è›OÞS-ºOÏOomŽx3íó£ƒÃ–ñÁ×!.^©úà=}Uª"ögöâ霕j"–ì§ahÉ…¦C³šÇ§â/Û»ôzn£¿ô·TI¸ƒ¤ÉaÖ±§¹;MÓôÒ{b/´6÷A;×·»OPyY“h1#›…$eE“à(§q%*uÜ 0°&C…CL#ýÅXÐ;öu NÆê)¾ÙƒîÇ×m‰¡Ý‹XÍ®¥û†#ö©©Ô´oLð¹r]ÿÊ?"öo}¾»ê0@ üŸmµY뛂óQʾ—äù6Màß‘œ]Æ:yJµ5åìÿ³¥-fÿ …ÞT8¾ÃníÆ–Ÿø† XEŒÌ¼BRÑë5®ëàÄ8Ýóß}è Æë­01œäùš!${onI…‰&ˆF8^ÍË­+gÆ'ç1 aðC&Z¾ý«Ž7Nh{oÙó¥Õ‡3+)±'J+5úyY„$HñoœÆqËâä/`øp72Í“uí˜òö„ ›€íAi‰òJäSpý’q[ôyؼÛ7zàm Ø-¬ž_¯Þ )}ˆÞŒWOpן×mu”˜]kkËÿ<ÈKa… 4ÅYŠ=¾ ÉÅügÍäëSÁ ©!S{袜âc÷ÛM7˜ý›W^õèù¢å˜„ÈKÚ‚Ã._þÌiGåe*eE£ºhýÚ‹YÂ1tÞÉbîk×ËOË43=ž÷fèHXÊK,X"X°D"ÑbÅ‹T-h(,X"æ!t÷‹,X±a±%ÛW‹-î²f†«vK4Më¼n!ÿ¶!rØé¦´€à5‰bÎÔÓùŒ°F㡌yª{Ÿ:\“Ô8»ÇÏz±©møpH‹›L¾û£nÏ͆k?œ/ãïx§Ý’O¤8ûÆÇkíÈ]|uX¹3öôñctÒd™OU´Ào#ß?h,mÝÃàÙÉ…Ós;‰ ßÄužU/—Díf’t!²/åúá}aRA¡¢Ÿ£} ¤ÕîT›çB¹wëQõ~Ûi©²Á3Å¿_L‚~Ïæ®ÔYj!kÿòD#Ì)èmÎÌ{ŒZ³%~?q8JجKC1]É?M ”ˤDZ`´–²Ó5ZpãÛ_°Ùµ]‹çb¤Q”ï³}¿P&œ¶ž˜|m@2Ž}ÞÖ"5É‚3¹§tKïa‡I}ؤŸÛÓœŽw)þI5Ýÿt¤›Ó¸ø u'Í:Í5(ˆ… F†—ÐÕÍ+ÛÇ®w} F?ƒcŒðw¹ˆïÓ8”q–¶•ÝiÔ=šŠŽ/÷F«:™ðSŽ›nú°‡l‘Òmm-- ~µIvŒÒYôh,íÄbÍ«Q íÛˆµjݦN3KëÑÝgÓþ9¤¼Ó ޶Ÿ„ ƒ1//Òúó䕼hZžåÜJÞƒ¬Î-Æ#'þl2{'‡Hñ •‰!Êï!îì°“Jï¿L{Ãx»j»>yÕqª †÷yå:† Í ûÙU‘þcrU«!V@]g …ÂêÕd*ÈU«!X_m¶òä?‹Ù ä$†'|d$ƒÌz)ñáN}´6Ч ê²1”6Ðy‚åïË¥b…“Ù‘u>÷¿\L~»—U«!VB¬…Y ²dt‡ÌÐC—W#ÿŽÑ…a=²\Ëyhw ò¤zÇÿÍÙ#ÙѰh”köPÔ.û kõPš7#ƒùçÄzÓ3ÃÌÇ5tèYöÎ]$hÊvë÷&OÔ{Fã¦uùùî?ô‰éÒ²A4åãK§áòû¡õ4îõ„¸çÄ=y æ}¯ÝŽŠìÛ›©“>&D:¢» zÊ^åêQ‚ç1ç0š=O;KŸ¯b#S&ì¹Bq<²íV)lEƒ¤½‡C3òËqïÔÏPhÜËøQïš¾Zor1öŸB‚ò#syö"&QKi3]Ëb”1™š ÇÊ”(þ]%T$¡Q¬ ó•Ø-¶Îé&듨óH÷úÍ(ŸÊ+ ÍË‚yÞ‡Íî9‹Fž¦Góö£*"3äûauôßÍì›ÛõÃÎ $Ö˯ÐùPê`Œ´øþÊ—­™—R›“ƒ%ÜSÓ W#ûùMYýKSSSS»½‹9/Q±éK¾úI.ºÎøóÃÕV.o@Ù™c–ôÒó6š1òK3¼òˮŌï{°MMJ`¦6gäÉÍLÙ}tÝ>ßÈÁûAÿñç_ù™}‚Üh9ö;Ð?¨:ÈÛ  òøÁ?ûbh?‚?„!ð‹ÐôÏ` ý¬ÉüçýÁøm' –õÄáïqçnÎïDø`äÛ9ÿƒ'ýíl…Hwü©oW|ý ç£ÿ7œ8E—8Æ,…O²Æ_d+Àü/Â?=ÆpsŠç:33{’}CöAÄÛjÙ œx6 QAÌ*P\È©_L©[$ @‘$IHŠ"|©eK J”T£$*VÊÍëˆö\ٲȒ&žÞÃ_ZúDsƒ7øòÔŸoUÏCßùSðØìÇy8ùñIZ™Ô<Âåó<\º‚|hÞh|åïÚñî4ÑûŸß©0ˆü»×Æù{¦÷%s÷‡¼.\½÷ùÿîܤs˜÷ÛŠo ×hð*F·UÐä¡«qç;Ér— š›æÔóãµÒåà€ü—¶¨ÒóÏÍç³n ì¡8þݶÊRÚˆÊ=Î=Ÿ›oÓß§¨MîBXw!š‡;zÑrž%w6»üÆv|ŠªK5´¾¢›ýËá­;íŒÍ¾7.í1GM Ä}d0ïò¾ ¯YâÓ¹í·Bª;è×¼ž ô—zwàç–5—ÚG¹h31!¼|ŠñëŽðOà<`ÒHi„#ß\5uqîK–³O4¼jD{t†É/ða}Œrz‹ý=O:RÃ3[Ÿ…>ê ¯š­"s’zÿ±ä£ÜÝûý`šø9À+yéþ×)mÙà}Ûœ6㔥¶ÛerÝúÈÕß}ó}÷ßrÌ×ó­^¹|þ.É4e§Ô5Oºe„‹ÿý}!ÿì¬>_½H»)RˆªèËý£ Ø7ß}÷ßvßÞÁkdý„ð ²9ácãÿ¦·¸çúî—Z>Í„z5¡Z°dˆB×°=å³33tÿÿÎÿÿÿÿñr+W?89ň…‹„Å‘ç+šî]ÝÝÜ«ü\D½uÎ=cZ¸{b׌ºëÁƒ‚¼9‡ÿqEŒƒ È2 ~‰ MžhŠÀXbÏœ,ooIßêÎÿÀ:,g½ÿ°î gÿ÷âxx}¿~8LH¢KÆWâE߯ï²l‚ñÕ°3ðë×—ÅoŸ¼ªŠ, ‘ Ú¾s•ܹه—òèÔô섾¹Ù_pP<½ÈÏÈ¥üˆ¶E«XånJxïÌðkÁå뿨?åúåâ¶*2d§C¾N ŸÈáæ^ƒóN¨I° Ô AóZÉlÞõº¬‰þŽJôŽð?Ò‡‰—ÇÍ4dÃMåÖ€ñaÑúƒÓ;´eôËyá:˜ ëzÏ[dV—ÇHƒ"ÜðdYpzý??-ß$åIì'ûi.>{ýx õÿÿ˜'ƒ9v;\f.½–­Œ¬=ñ‹+¤Öä߆þ³zҤܚÿ·«2ÏN"ÝÞŒÛ|“–­¬a7Ú… CòÐüÄ»{IK™Ú‚fb;ÝS¡¼ƒ‡ó-Ý~šÎ‹ùàPµñ“ {}¯ú¶´ãÀ¿ê.``~jË¥§­~?Ëòü¿¿âÿŸáe‡ƒÍövÙšÛƒÞÈv^&Ü —ä›adØÀ߆·0w²Jë_á/…n#! QN«ƒOíjïëüŠ ï>´7ª>L}¦R–ý­íyeÉkÑËÄ ²ëß*yaß›Ûmmçˆ.Y_¥ª¶øŠÓp)Ëù’Ÿ{Îì{½Nÿ[5/A ËÖv ~bA7|¿“‚=–pZ–FŸ(Rœ÷ïýï$OI¢à›ƒÓ$)ë{éiÅ)XëÒ‚0­^ gñËC1ù0øµàHç01wbéÀªà„9SiÁ ði<Ú ¿ÊéÔÞã ¯6oú2û8gë¢ýºw¯ÕBºh0ʑⶸ*œçm´8ØGãë#p£(Ó«¿m¾¢)(ëò¾¹.> ö±°Ù‰ ô¡DŠÇõ¢tЧ§æ©Ãq²ÜPJa€·GÊÑ"ú ‰l…]¿ÒãÖŠÑn(ÙU÷2•Œ¤èu#YU°rb®T0FïùÙY¡@f™çÁÌÛ!Çßð-oð9ÄZ’§fþ8íIY±â–Ë“Ð÷„Qæ4˜y,Ë“Öǰ.{WZª´þŸÀUÀ,µ‘³J±ÀcȽÔW™j³0»E%ùɺzN¤ ’Û;Ìô S ˆ + K€c¸hFò-yÜØ‹`TÌQ™Ã€ælmå$3¿–rö.Gcc%äŒA¦¥”À˜P˜ ^©ºÅ•îl/VÂÇ- «‹ð×µÍZ¸ÀäÔè‘åµKHú°O¡?Ì+`x±~Rœ¹ŒlíR°@°ïµ®mÊ/e>}{´Qáñ®Ù Ǿv„GdZ<,*T_® JQƒ+Ó_f· Kêsâo¿úÁz ÈëëžóóÂŽîíW+±qp2ñ^× 4ÿÄ@å“3K;¡D_Q…ú»e“|"a7o@ýØ¡B«¤æ·l"ÂÎLŽvV ÐköØæ~2Rá– ×þ°ý囬ÀD©°ÿ \#_ÝJ{Ìx{á³gÁXesM£ÓðƯVyˆØÜQˆ4€õ\ÖSb%ŸB™÷ת€|ÙøÇçÃÖó4êÌÁ˜YîAøº d—œþ;úèüƒ¯‡7èt{ÎéÐÜ@p“§làW¶ü šM!ñº ²XÔ‘¦˜Ú¯j'£B ÐF.¹Êtž““X¾*G#@hÖÎ[ÄCŸÚ˜; Ô“©›÷„w­žn·œgf»(½Uœ•‹Pîƒú0Hã‹e{ …€r†3© Ýl@yhè®æEoç1s²g‰ÏU쯟~ÎWfk¸탬:»ªÙŽîµ(èK:j ¥:¨ì´jóp_#¯'Yó|õfþzõÞõÑJ ¿ÚaÀ00dcˆŸDpŽgPâu>‰gœ÷IÄü Þ~!òîÏhvB ô'£¡0àáåD8} øùì§:‚AG( ,²Š-Z· ŸsŒtî¨{µ`¾”¿a¡êvqÖhÓ“Û(Úw:ýùŠQ1;~¸¯µ‰Q öÁçg‚±ÑB¢I)ˆ£Gtú»õÒß×Q_h¤®Ö26”ÖÓ°tSUþ…cöÇXVñuD“±—·H-Æø2÷%›w¥ŒŠü †8ŒD†ï9ýC寳s­†ôÅ9´dT[FIJÿ`Oïys|SÚÐ'É6G^À CíY×ëþØŠÄgÏkhƒVWÆÃQO*€M+§þ•òçáVldÔª#»]ÑÖ'Ó:]=óþÙû­üö`Œ l ç8Ȱ:5¦Ýï&Îiíøé ¢Y¿Ï$Oš-"ˆé¡¢êÍßÁR=»¾¸¬ë‚ï³Ð1›vgÿE6îõˆ-khŒ¯ˆ­{®à³œò^æLUÎûEUˆ1 ‚ÖbItÙœ6=¡nEiVÐJàæqþ†; œ'¡N¡¦M>1çÈH ¼ø…ñ2=ë*x“ÝK¢Í¾AyH5˜µ[]3õW”·è:dÊè0<&Æ¥%ŠX«ˆÑ}/Uö <Ë5j=(N³²•®3#1ôUe`I ½®"P¬çõÎÂ8êæ‡)qt|:§(¤å1x¬˜L‰‡ÉE-_ɤÜÜ™:*|ggœ'J…Ùì$œ+j`s“ %`"W+Û»„t&øl#Ôn „nÕçE{5o¶§+,°P² ksªtrxÎ[¦N0(çVÛ1¹xÍ.´¹ÂÌ~59v…R“¬áFfQKåVmu‘M_5˜" ±ÔX ¿¸p¤ê!C#Ô´À®²X9š;­ÍNºÆPCÏ Ë}öª>ë:ñiÒ¬Þôö'Dª[ºóƒì½lò®(~ÑD’•;)_àG²;º â»óøO™Þa=œR9žh<° ²Ÿu+%¡°~ÅÔo±ÔÝQ¥Z.³ûìyZqºEû¦]! {ï8yX÷Â>ƒ×H~ ë&m`Õ;ÛµŒæÖÁfÙ,³gAF1YÌDpÆ–ÐÖÞC¡ÏV=³}4†0œê7«#Tõ¨ÕzB/·fËÔVØNÆ‹lºhÙ€01wbé€ÿA6îsyo¯‡ŽºW8²ÞÁ™«Ë (.®ºm4Àx…‹„`¤à+‚¯¦à^6®¬òâËU”Ý…>Þ²³“S m²\Ë$}nÆ-­ òâă‘S:P¼8ïûŽÂz()fÎÄ/©¯Äïöjmú g-ËÈëý^Ìã|0x¸2­ýòatà|®.ÓŽÌTöÚ‚8Þ>ºÂF¦Q6ë4EU™*reµEó[®ŽY¦C%QI´²( ëõ+žT´+Þ¼ )¨µ‡ýÛGª3Pý&Š¡YžŠè¤Ð„×ÑGÔD00dcDDœsˆns~q^o'ÀEì÷y'àìCêï&½„û¢"§Ö{)dR¯ì­ ÛÔ<¾O`o¾Ÿ}í÷ß½é÷=½ïžð¡HJˆl Üã8ñ¡#̼ßZ1ˆÃGÊlÒµUöÆ" ±:éßÒÎ%·“¿[ïÇÎåšÔŠó !ÕjÔ¸¤¬«.Õ½êÙðàçÄû„ŠW[%”B1GzÉèañ‡¬°èè£ÞãóTÿG 'ÃÀ»‰U¹­Ø½·­mõ³b*Kº;Æ›¿.ž`ÇÂ÷tPc) Y²Ð~êÃÝ=Œn–Ä3Ÿ„ ⣎æ0ùAW!¿[Æe®šìk¶¼s¢isoG삈ž/ÆÊm½áf¶¼ÞÌÒ)˜’+Ä^J^d¸P#•‘éŠü㿺P=?âCŒÙóÜæs™ùÇ7-Š4ööÃé \`K‰"9Ù;Ì9 ¢ú{x ÿ±'ÿÛY<ðoBWÿÖ°î\iî)‰°È1ý‰biP)\f+KlÀ$bÇÛ8dј–!"°ÜDZ^¹!xý@؉ /ŽÐÌ€ß.Ó>pRÉIð.LÀWËA?Ùóã1x¡GqóÁ9šœÏƒP{»”ÕúZèÛÊ*êíQÍè ÙBh½ÇGÙÂ^+x01wbéÀÛ7Û¡À{ïê _c!í—x*ásš1äšêç”ÛyÜ'É<ðYÄj¼Æ¯è¦âR$° ˜Mc/d[RSÆ·«GÄÁBPP…î±à*fƒ.ôŒá*µšaM+í&­û‡¡bd/*ʽÎknæ )Ý|‹ÂTÀM©Ü(0T縰ï|WqU!"€Fÿ_Œƒü2BZ`Ò‡€È±PZ ¹ž$ÍÈ· b®;¿ŠfRôh4Dö€ÙdÍûoŠ4†ž•ý¾ÂB¯3 Õ`¦¨8Óý1Ê!XJá†w¬^g9–ªŠï6ª+ºâ*yÌD00dc<œlàœgÅæüâO;쳇à û }nþˆàÀ(ÄN"ph˜x>(#Zvs À¢‡ßˆþç“Ð× €°ïÓ¹»m³¾7í§g¹^¨B«‰âÏ¿Þ3©œ«]Èy„xó"ˆÁ2Ë)ö«)ŽtŠv/glç¼­J£ J;¡ àÁ³H┟åÑRó˜©xax®§§ÇsÞ86AÛ…>ð0" Ï*Ö’Ù=p|ƒñòš=1Éç ­ô2>l6ô*Ú/ú« ¸GÀBkíÁÅþÖhŸNÔSuQ®õ¾»ì®Îbø±;•Ê ‰ [F_J¬‰IÑs÷R¶.ÆÆÆ0¼ ª 0¹OáPî0<[tÞ¼=ù•¿›øÁþr[ÉÝ÷XõÖÒš›S„”0÷öYåV½eJϘFI:«0=YEº=B¨t؜̥™žËÈ;õ˜¢Ír_2[ Á½…ÞÇæ Eˆ?ÌA—(ŒÏ“ßX7†„1rö2ñM©g<Å&q€@;6©ìn`“á‚4û5äÔ{xeƒÁ‘ôŽùa¯ ±sH¿Í¼.bZÑkäã Îk£D{dö‡þ¦[ùΠùÚÎ ¦ÙñCØU {3¢E¸~á¨ò–=ùÚ€ð®ö ×$¿qŸV*¸ 6ALôZ ^¸Ýàö×éxÉóÛû)VƒÙK‘çþ¨\a ‰ð«Qiñ—¹–˜ßóý劤]MsðÑ'¨… òc|ó}ì *ÕŸåžáOaôtùˆz÷CÄ}•¾æmAKò¥ÕÝ"H3<+3ÞÍ023u1{ü›î{X;Ÿj$løÆæ±µ} é4]¤ûþ„€ÉQÓ w4ÿIïè­ÈpÇsE1ÚI9‡“ù#¿¥ë_ÏÑY3æc§—ÁÞï&L‚ÁaísJä²–Ù ç[,;ÃßÄf5ù¦è*àYC‚g'$¶~?èdô4°ï˜Oô  ¹Ó;xÉæüÎììûûߌÛàaü7†#·bžÔ»øñj!3„ˆG¿oæÇwÕ8”OD9Ö5ßa}xêx lmtnšiÿhÃÝKó^¾È>r=4Éú†`01wb逩ø)ŧ»÷Û‰Ñ# ïjÌßc¹äÂj:z•am¥ë QJçÂG°*¬äë¢ù7£_ºÔº¸Ó®‹9ÀiXåÖ£ž¢¤¸;†þ« §` ÄKOß;‘ß–¡/:/ÖlAš¨¸4À¹b'ÖO´¯Ø×3Rk,ü¶N“I xòƒÎëη–G4߯qH5Z>p°!=çjJ‘ó+l¼ÏÕ,9›x–%ý4^Ÿƒ“Õ³ ðæB‡ù‘M”ÙûeCá4" u ¨¬ô{¼Áf‰8@ì¤á´C!\°vYž àQ¤VµF9YÈD00dcTœRpŽ/9ÆqŸ0“Îû+‰ø¾ÜÄúÛñØÕ¦„‡¨„Âø "C6%px9iF‚ÐgTŒýäøÀ¯óï¾÷½ÞûãÏj½3¶’%´ |1³ö¹éγØFº‘„`“¼ï°ä8Ó²­ÄÊ…ä“OÒ@À—éË™%7í/•krò+Õ¸ï7ïrÏõNeŒ6‘µ8F"M{Ÿ7Cièž‘^U¦(åòú'’Qôî;%œ:"a3P«l¦^³&dd}^Ñq'ÃáñCQë‚5³"JmŸÃŠDò.ZMIWcarZÖ1µ,9qr¨ÒöË£BòBÎÂܪÕw- Õ’Œ Œ®<ò v„±Ú:¶ I™’n¤ƒØîdYko[wªp{SòkÿigvÁlúdeR>š¼? £1âšK=!²‹ù+äþlñqÉJ‹³ <<ÉëñSmZ¹øTH—Y=âÀ#Y@O âÉ韬å,lpÈ+\¦«_ËÆ¼>ÚÈì!¢4\âàË.à™*Ô©^µÈX_nÂ`ý®9µ)›î@éÏ×”Zø—ön©M@7ö•¦{Æ`êƒø6»€ÞùŽ3âµç?ëÇæÄø8ˆˆ¡ãÃÅhÀ¯oøŠ§W[‡Ô9øÌyïË`àa£k0yI(‡ÑûwqÁù"kÎÿ·øÁdØŸ :Óäè q«ý¾1µÆ ž3Çùeñ׸ÝûLØÄÒÒžt(!N?àÞÿx±Bm(ù_ª~Óu™wð›þ~3t=ãÞà;CÛ‹p÷4¸7 à•÷ž\×pàdM_ûŽE®ûõ£Ç¨Ã©út`Ga¢^¢è;ã´½v¨~×@Wس{`ãgáI}‘ÇùÜ…ÅÁÇÕ:³IçgoxÆ›îb …oÐHŸìÜïyÙ¬½ùlÝÔ÷!ãÙÚ€NPÜíeHdiKãOûÏ]›¼™Âç',ÈJ¨ñs‘M@uÈó)|‰÷â‹òšøËcù'ÏŸKëûæs'?ª‘; è²ÄÍn4èï¸ð›‘ -¦4ÿ†¤ÖDÂú:à¸[H{u:½·¯h7[_óm“½E¦™—ås5b*åÁ‡)à{ºU^¬ße00dc¬žTpŽ/»¹ËÜW¯%œOÀ1ö¹ægÄ õy¡ø;‰@|:ú~Š¢y1ÂÏg` !EM>瘬íò|pL#?!Ÿ|}ó×½ñûÍúÞð±(Zb%Ø}°ŒgÇ™ Bù¬+s{šIëO CÃÜíЖýO’à~=׋ù· ޼ÀñÈqdÝ¡¯“w¤ªr?~¤¾ KÙ ËF!˜QAà©æhçݸ r-š<ò%»‰Ón·MôÛ;£R›Ú2¹£ /U-Îe ƒ¤ [qÄCQ\7{a¯™Ü §–©´'û¨ãU©h/‰Š£îê¿ú✌#öJA¨ÂŒUT.RùÉbjO«zvÓÍåÁ%GSîP …Ì“HlŸïv]}ÞÖe¸ÚR$ k"­þõ«h)µ£]h]´†Ú¹'ÚxªjëÞ­‰c@ x*·¡r¸³Š±sÇŽ%~Àù©CÜ鿆‚P߬A+'·z›þ)2«+¾Þ—)Ë‘œ)þGj û+xÀì©Áùb^V‹ó7µaÙ+=œ‰AZ|fÕè$õ…€|îG«ŒA΋D6fÇ]5Ö, Ϙ²EÍ Â „÷›AºðèæÞxyÌYÄGð±¬ÞÞÚŒô†xä¹j –£i"(@JU†A¢[?£*¤;|ÐÔßR'žè‡¨eÁ4'g ^¸¿f¯Þø ñJÊ%)qäw…è~k^:÷†%Çä§Çæ·UÚÛ ßßzÆ~¹ÏCóHÕ¦ö£ï½Tw¢II#ÿÓùÓ-ä²XŠ»U¼/;ç˜]™Y6CÈöÈØoßeqÝ !Ñ Zz‘K4ð…õò#ˆðö=üt£Å ˆ¶í/ÕßO‡‘ñ~·,™¸Í{äŠCîÏ"Ö«ÕßN;ÿ©3¯söïH±‰‘ì’nê•\>AUüÌNîXÖÊ)VƸ¥.®¬Æ¾ vŠ7õø£³éòÌÿ"¨ŒÿŸ¨LI$ýÉiê¨ôfÉ’dFlƒ5bþÒ9«ÖOÌ ''ø“Éû49ñ=01wbé@ys Ã‹Ê{oˆ)`ü±BË·Æ­tÐ<ÆÆ#¡†tV ™ÌþjµºI‘¢r†0ösU°b•!ñ±;ÜÞÑþ⪀¨W5´Í»\š¯iœâz,-Qä+BÈ…ÌlåÄ®¿Øv¬ÕkµØQpo9ýâm~ÎÊÎâ"Ôg/Â8l ŸëØØëä íÏÑð¡âäµáªÈ-Ò"ÈE)µGO¡B¨¶dMtecÂñºd¸§Â5L×ÔHÔVtø;bßB tðøÏ ±]”b˜yø1Dà¡·Þv9– Fï¤ÖŠÈ“ÈD00dcdœXqg9»Æq=…zOepü_{°åðh{CØi€Ä¡ìˆP¹èà'.ú8B^Á0ììå¯Þ)C£È:9Ͼ>ýí{Ûà{×zñJRª’(G‡ß¸1Œ¬o;•F½ià›®µ7W¶*—PèŽUŒ>fuÄBf•È-‰¡i[]Û*?Ýr´¡÷%¡„d X#¾<“‚`sLLXø½ TVÐþÞ#×§…ž' d ©‘FqÜàyì!ÝæñE·ÓÑGa©Å§aç{7:úçbÖ5^¤B3-Mu7Ýó”÷Râž/šõ ×MÈÅ.ô1u‚áôú½.|×7`whCW[ü×)Ô–µQf}C=ûP n­koÔ©ßì.††:œ,+Œ¥5:kWMX]Òè—TÝ´¤ÅªtŠSÑÓ*×$7ç)m|¤bÆ”Rî%»`w+ß_,z™w­ÇkZMò(ARþuÕʼn•Oç_Šk19*}Å…*Ë`„OsVDYs1.*T‹ Üâë‚”ÕP )0@o¥ í¹AžgâG£ü¿ñÄaã)LÐúfø‡É/!#ÀÙU–QšB&ß&!˜7—€ã+’ŽU¥z`Ü"@l3ÖÔ„ÂŒ 7ÖÍÁ¬Ç©[$–¿Ëå†àëü[ø}Éþ |T«_ÄôLγ}ÍT…»Žñ*‘e@ r7uì•*ƒðõà>ÒßÂýAŒˆ<fîVX‘¬>+;Q]âÿW ÉC±&<Èsþßöˆ½C÷ïVx©ol‰ÝS;)¾AY‘|éØ &6~•mH¢>Íå‘(O·7lEã¬UèÖ rÿþm’VEâ—€ß-ÇæQoäÿGïüÆbneÿÍ̾¾ &=Y¿|+†/ ÑiÓ-z×ùýãÄK+­³¼*Ô†ÆK¡Ï‚‰,-ë«)WLF?P7H ‹ Ës?kïÇúÑgÉ»/G¡ïÞOX‚‡9÷Ï}÷½{½ï]®òQ(%U¥÷g]8ÊYÅòŒ+g‚0×¢K/™¥[-²ÙµunŽßCÑ™g`æ«>ÌL&TtaŸ·f”¥6ÔntÎÿn}Õ,ÚÁqDQx‡Þ®/.S©ï‘SÑøEéµ¾ ž˜q«YW¾rÆÚl“FHi"JôÓúñÝžw­²ë£¯Qx]Gkì5 F.S±äTè HŒk Þ·ßñÔeݯƄ§Š­åPu®…áßé>ó´ùR™ISfÐõ@ãÙ±ëöJÇØ­\A¦u5R?Üý ¥‘ ïüq*}JHerèO)®h€ZÙíiÐÏ܃sT¼Hòa•,J] |VàhÅű¬íŠ¥‹Xd¿rOgÓ „Gb}F³õÓ®w™MÒ¯pNF¾øôÉ“ Çpu)ÉIpÝ­»Š`Á”‹À¥],QBÖŽxÞ,S¶Õ–‡ò¥¶-M¨dÉÄUVœ;µ¤*>˜…yà7ðRGúeY™o…jŸö“=Ÿ&`رðÿ­×¼µ9'‹ÞGDq&$òÀ8XÜÆ“AD‘€xF>…P'Ö”pùlE#Ë™S°Œ"R¹X­«Þ®Ãf¾¬;› ?gßåò~¨¼ã7— Y‘ª”î¬yRø^ìEP~O˜}mã@ü`ÂR\¥Y7žC§ëQ‚(4E[ èN.NsŒÅð»xÁL@^{²GlpXÿvº¤äÇ€FA¸ ´‘½¤D%ø$º~&ϼ°‰}ém"Qþf¿žAWÌÇþ'êYüÇ õ&ÇC@ÛÿÙœlkÄÿe¢b¬V(ŸÖ–·Ûÿ®ÕÇrü© Ç×W“Ep˜LšÇ‡å~«Äÿ(ý'› }i.ôGÿ׫1fxú²¿cìß4H娉ä7)UÏD†8ã T]‰ÄQþÖ`ñ0À®,-,#ã-X‹ ²X1õTs94W‡%Îß±‡M¾s~™Yž|PÀŠ¨È«ô˜© (_y—å ÁÐ%ÞîXÝÖ”¸Ø|e¹ØÇßú}ãèÏñžÒäÊ”&ó½+Ð’´ŸL°÷00dctœXq3Šnîhö¶yÏepü ÞP ?PöEûY¢x,4%§  Ÿ¶Ÿš‡¢=ÊIà€Ó §Ä^•>½Ÿ‰ NC÷Çßž­èáúÝ=¨J¥H#¥*p|•­ô pÌËlàŸZÊ$-fÍš'y(ÉNé¥Á¸®hño­bÚô¬YG´n³ 0©ˆ‘¸úB}’\ŠŠtÁmúþ£V[}تû­#RÎÈb:³rZµ }Ìõ ì"B1vÐñp_CvA >|F¡¨ÞRGSnÈaq«b œ…mû…¾µ;oeäÉ€‘š¹È$LÚïÃkÁÎ(úx PYåSÔdñd»n1À@ qQö)n¼3¢çŸæ/$¹,]©^FƒÄÿF†µ(•š‹z€ô›F“)UÑiQ!—Ó-ÐK <<â»<Á#«³êT×í,\ÃW[TøÙš_µÌ8Ur×<Ç%¸³O¼p4°ƒn*m!Òx8¹Xš Ã~͹Ž9\’Ť¿¿„táràøêDLÄtûZòA–8;8°Z…å7½’¿nlj9¥W½ Œ`S€p¿Ç®‡‡åMß@#øÝí ý?Ç¿ÐË¿lÞåà|Ä y„ÁŒs‡KØ÷û7i 2W6=Å‚Á ÇŸÖÂö¯Ýz!À̲õ(¼‹é£²×û`}ĺ¨uæ^¿n #²C6 „³ÅzÄÿlÜý»ôÏËL"qü„r¹2Ÿð¹ šÎ×:L3›öº½±=eÑÒù»tÝ¡9ütôs13!6f2Ó΀¾ÐÍCðïA®öþ)Âù“8bžOÄæ1ªùˆ%-7í:†–Ÿ¿HKkùùs©øw‡0þAѱº8ÑÏêà,G¿†‹cw#yÞu½¬”ç.wÁ¾1v݀Λ zùõqÁð: 𦅽¢‚üNi^¹kµ÷Ö·Ökœãw·q.úÅUît+ÿ¸>͆yû°„wOÆš01wbé¼pÔ¾Jœ÷Í(õÁäRÖsW}kŒwŸšSŠR¾»´‚øióÎñ&®MHwEˆœA|L׿b¬‹¡­ˆ¸eÊÀ¢³òù„!è ›ÙÔY¹Xš.0ˆ¶¶°š…ÞáÇŠþLÏèÙˆ n¤gÎY–" æ’$+T¿>\oËœ‡¯áÉÀà/Ê5’pêå=Œ‹æ;@´UÿÌ„fo0`ùF¿”Ï®s+UeVïŠy°IB‹âƒôåÂ)u~OÌ•#w÷ 8Ç•ÉPærtò°þ^!9–ê[¨j¾þªY!øÅD00dc„œa8&çÅ6=­žsÙŽ`gëO&ÂgäèÐä+<(ŽÎ\@ j Áú 'HÀA8?g—Ñkô¢zŸŒ9;ãï={½ïééï*¨$š‰*äç^âk¾6po¿@ûZÎŒ#QU±7³Æb0Ã…’”PKtèÐG²%àœ‚†i#F-çv}A%´pÛsRwíÏ"ˆËs’ÐȆ§d§NÞž…>«é±°üp8„S­èŠÜa§¯‚¾“¤œ•©êy5génØ;¥’›g1 *ƒ$¦£ŠÉˆ^Äüþ+6 ã@}¤?ý=&s°šð߇$ÚýÎ@Mµ Q—ÊÈÂ|¤‰ÖnÍX€÷öi¼ƒþ:ÉŒìÝö1uì.cÉv°ë ƒFÝ%ž•F¬ô§Ó'íçÄ™8ýÄ(r²…™û½¹4aÁ)l5ì—§ä¡Ø+û˜™CÃÓ5J€ ᔋ,“0o«©úÏU5X1ˆ‚¼-ãµl -=»#øÐNPOoÌÛ Ø"H8:Ý–éˆÁt,ß*Cȶ’µ]ÅÐýZ8Ð5*"וÎײPªLü³èS€{F’Gǽ^°–>ú„xt9ÿ›ü/ªrË8`P…,÷63Ÿ$Ýðœ/h ²Ïù*65(£ÜÝIø'x䢾 R+ÆZ£ômê•p9'#ÉOgðnÿÿã#>œ@ð¥}”|ávóÓ„{aRNŸ— –•ßÿH¼0N-ª”ùôË`µþ R²IÅ §þ7çÁ—©PSRR¼e¦gùþDbGâþæôvÄUÈñ?±‰ìxp;'Äù"}ÿÃ÷k;ùøÏ°‚æèpÏY¸,'Œºîû{î~|LŠ’“î *l Wž$ÆžçúÖ  ½LÌž¶âçyÛ ž†årÑæfõœÓ¿úÅâÇã $0pgÓÿþ¦cÃ$¶mNì×c±O¥X|³óœíòº§:éüïÈ“_Oé. ?¹¨¡®l“w×­)0{ö`Ï£ð‘=0£p—94GYÜÜ™¹•$ß;Ð&c¾@*Ç;‘µ»ôt/”[” Ïõ‚#qÛþdü¶á Qq}ÎNC«¡½WKÈlèPªŠ0x·$²^'Yžª÷KÚ*ê­&;EÌD00dc€œa8Fæîñ¹Ä÷–yÏf8ŸHsñ“Ê}ž@_¨Ÿ0¦É5Pä¤4 S°;>@}ÀP‡a៥§ÖŸ>,@÷G|ûç«gŸM]Bª‘""n î1®pÍmœʉŠÞ¸BqÇÞȑ‰¾PîQ®d·—fOƒ½Q­°œF¥®cÙ0QÌáïý׺¸¢Œ}½ßÏAs×Þ¡YœÇ5o‘%#e˜)ÇYèjÙujÐÙòÞµË+`œ%jy(‚ dGØe›æFßWG^¦ÙÀ/Ëïû:¬È幫Õx—¬£õ9«‹Îì‰lZ§Üñ·@a‚ºñ™[Z¼5}.R*šõÑœWæB@1E ‰35$šF#÷EݨH<_‘^.»BÓŽ“.IVr 4¯OAA•D÷źÝ—†¹RÀÄJDþž5ƒ›3™[smavùð)žé9!!œ×k%}Áz¥*´¨JÙWØzó‰ŸìÊ}R»Ë¶ÏŽÍúv<ºß¯ºîæW€|NɳwųtJ¹³Ÿ‡²çmŒò §Â3(‘y‚.lKT‹˜=PÑ^=>@Y;¸e×Õk±ð ¾ŠD|n¼ZÖ‰®t1E ¥NÖbfyÃÔ)õ$õ¼ìMààd[GæÝûÕx 1´æƒµ%`DçéÏ öNæoÑyªÝ‰€ýWqzlÝø0©YÛ\Óè(ã2è¨Ñ¾¸„ rSédg »®­}HóSÊй˜´•÷z€´ï©bXL}?ŸúçS9õÉóëu7G‚W¼$•¹ªnkþiÛÞö2ñ¯=õÚo½SÁ"öìœ-ýý,¨<Ü’1ñ;¥K1—Œ¾(]tR¯Ð Ÿ¸7~–éÏÏçØ7ûO(gÿÞ/³42Ɉªîmfeí¦Kådç5?Î}F_¿Ô¤p¢ËïðŽß4·)ø/ ¯ïsÝ ‚ ñ™ Ä9PïC–A ùߢOƒ½ê¨B%M› ŸnÀûl&»S4}©Ï>=Ùø.Où&_ù`Bf…#þÍX3ÏÎÜÚƒqó²(«¬:žut:{^Ó¾À —½uß_N á$M'ØZÆÌ/½ î¼QÝvwº]põ³Q“qŠé\Kd¢i"Ž²ã»«Ú|œž?¼Í"•íˆW\D01wbé ZsJ[TÃpü†«²˜Û¬‹#¡F¹­‹«ÐZN¦—DâÞ{ãT„¡âº»ÎÕz"Ù¬¦ò¢H1®ëQБÉDdÐv%¶ ^@Ö´V•Àbtø'ÉÞïb¨¸#_ ±!·!&YçA3=†Õ%ùºÏ2•QèÊkm ˜ùH‰oë(òjAéÅ’Ƙ¥ýWY¤ãî)}XHÐÔ†üË^ñLý‹HóméLèЪ¸ù«B%J´_†Z™(@¸¤L‹—@¡ë¹¿.î«€ByXUìFŒ*a9– ãí¦õêÝÈ  ÌD00dcˆœb8Fînñ›Å÷Y]ÏfN'à ûCœÌò)T~ç&È`^ Sìtr`±|‘ìää 4 ö­8>l¼ êCêaOѧžãð¾Ï™Œ§7Ïb¼»ßÓÕïbJDŠè4¾n”‡sÿÇîs¿óHã(â0LÅqxùV‹­b•¥2"I¡Iƹìé@F™P4Ç=Z§hÿUcTœ)ľ'ãqƒ3@§/ÇN°ÙÉhøËYšÅ˜ì9db©©ØLIä"ù7Bc5¸Î¾¾4¨s*i 53tóÕXÆj9]‹c…Ðò6Û[žt‘AdzsØ0U5mwjÉmgˆÌlm¯elluxm.ß`yÁ1Û•ý8›Ÿ<’vÙNÒP{€þ ¨õH r«ÉÜïÑ¡-¨ƒ?w¡v¬ØËÿ—¦«iا=„«ªŸQHüÒ ‹ô¸\¿ý^aJÇÍÁãýÊýSfÉ®g›ØÊТ€D”“£Ý^1­fœÇN”$VÆdÁ½yÇðu ÑÌY¦K¹•~Â=w€9ùð–=îp•‘nD¸þÒ£þ-t¥?õX`«oº³Œñ™·äb¸5µÍ<ί+‚Ôõ¯^,ñªÐ‹ðö<÷Ü |…ûùì•¡ä8àöþSDÿ£f,z߯ý#=Lœf_‚n Ýý`ÇtÆ{90X?GRC žà½ò<’õÂPðѱæ±\)Ï‡ÆøüõØFU# ˆ1cLJ1Å`fëdþ· ¯ïÍL+Ý1›øOE]º?ɾ‹ÃÙïKŒL†ÈwõÆwt޹t"ÛÀ"÷ƒ:$ÙeðõÌŠ´à~-ÇGËùÙüvQzx‹áઠRlŸú~[Ç(MÆ.µõdúÕ˜!7ÿ²Õ¹ÛÞÂËV2UtœÂ«ëdz#2fï^;ÚäɃ€ èSKe©¦#§-ari¸Æ ¾ªì¶~ÖŽœ-W>Â\äU«Ý#µÃ ìy¦,Z¦äÍâeÕ;ãN 'c´00dcˆœb8F“xÜÝà{K<ç³'ð*h¸”œry,…>oG¡¨ éÑx~!¢iø>¢p´ÐAý¾M=/Ø¿~ð*ãïžõÞž÷Ãôõm¥Ê‰t¯ Ë÷䬫ÜFǾ´‚e^ö!€1‹/îÑxÅ.ô$‚AšéÝÇ ž ¬rã–Q¤¼oujCH ÜH,™Õ·l Gsý%–0OŠÙ|AÐÊaòS ÄB:´Åž‰XåñŽ×™[ñUËs"©"¾!˜«Q"·ïV¨¨„¶m›û•uÞ­Szn/¾~•çH`KWäŠ H¶ “ ¨CÞ‚Fâ2h¿ „ß‘»ò«Ðggê =nUZ&yZ®½nóú­~ ÀXàÑ÷€ 8m>êI½ëÒç§Ö&=Úoa¥‰xÞÂOÏó6F°chò#«Á°/_©•½¡Ëå }=ÙQ0-^‘û\\ÌçÃM{5„+¸|óWÜ~rúÙšºKØnvÜóXd¸zNíØ([zn♂G À5Œöxk•ç>YWsbðë£3kÝ^(|û‹t àhWP$9~"Z­yíÖŸ£~Éi¹g€tC®ïA‰ÑYQ÷W‚•èáϽE¡˜¯q/I-Ï¥&·(Àãuà7ñ´ÉŠmHq+ž?x6´8Àô'éw‘Â…~£-=æe™‘OoÍÿß*²=0z.%Vpý øö1yìŒ?%úÊûLýÉÈÚÌgkÈ’?µùLž5y;œLñ?† 4­{Ëé°^<_ºãÐÊuüÍ÷ý÷œÇØf>,$ž{¹*úhÊÌž•XÈ }†êŒnl15ò\îâ·€Ïu+èÃß¢ÃØ¾Á›ë÷(k;][˜#ÚäצŒ(cÀlKÿÙæ~ÿëWÿÍ|ÌÕÌø`óƒ‡=~:ÚMðÆ<' Èñ˜ïép³—ÓÛÀèo9Á߀§ Í 9FN~ÝÑÏŒ¤Ì³¸ŽBbw†gm§ŒÐŠ*î!á¾¾ƒòiaÎÚ<ùô‚Ù|ÓˆÓSÎ×*!?Ïì¤p “/>LßÇîyþqvw::|7yhä¸`ªrUÎäïdAwÈœfNÒ1jx¹b%;ÂÌ ñü?lå¯vuÐιÕïñóþ»½*öKò:1sèÓ9ó^Ç8îXLSàò8>ÞO» ¡401wbéÀÊñEV›Íî±eo——¬7*)~¼+_Ì ß­‹2™^ØŸNŠÇòjNĽ¡û"©´–ïüsµ£¯×K@™&›bt°ZG%ÅmÄ(V×⊧8`Lþbú[}Apñ"|ü¯F èC Ââ"lRz»^%Î[Í%‚0RÝZÈÝÇUÌË¿K+hð>¡ xЙ•Öãº@ù¸ ™ b()„’/¡>ôp#œˆeÓÓOH|²`ÍV!Y'½>Ñá‚e™_ÛEÌ>±!„êµ®)º ‰¯¼5ÞöYžªÓá]**KØÑÐD00dctœd8†ç3xδ²»˜ñc‡àR≧ƒžJŽCäðv{¥©À¡Z-9ƒp~ð y˜rû”Aò 'g¦¾‘>…øìO¸ú(|1÷Å{W½÷Âz·¶WWJ¨¨6we¬çŸµ\£_,1'É`çÑ €(’{‘„lœÙ5å»?¾Ò›oÇ:ŽãË2ÉEÕ«V£wÀüìÿ“àqzãŒ6[[”QˆiS—BGÚ̼k1&›YN9-8}µç„:aÛ}‰ Ìr@"ý9GÊ/ÅjÌÍßÍUÿ$a'%D$Ó~×›­Zµɦû¯Yçfñ¶©ÿ䩉±íæ» 7éȤa€ŒÎv­ðü‘’ßýÇ̬fÅá4óà¾È¤O}ZõËÂ1‰\ºlŒÌ„åµ~ ¶mU@žKwä1°O@ÓsõâŒüäz&rÇJβlá‘NIÆš3ô—)5UþDüøï/s눃›Y–Á°ÝÏa}fו›ØçÿDVÞlzO1­vçà‰éa€”èôlß5B4‹É…)AFH~íÒßz³if½X|ûš½w ¼ ¹I˜¸»E;™`Ül|ÿ.à¶½ºm•¨Ç•÷©¢*øê6œ2×Q¾ã„¿ÖÆv‚§ØY¤md&Žì¼ø®-Ê»Ðd3ÇèÝmX·,¡ÚXªwLr-È¡rºw²»ý ZÎÈüy×ûf(~æ`ö·73íõI›¬9#[8jѯë“ãó—öázNvƛߊp-žg–[¡€óng4®*z cƒÀXÿø®†àÉè¿Q‘T|â±'¼b2ßspeOÆEE òw^yBh)ß#»6'þÏ *T"ÿ•ø?&.y: úÀG{ÃÐ:'A×F³~žûó8 3dÌÌÕZè3Õþ×.Bõ€eçàбÔ,š J~Ð Œc^s\œ½9cBÎÐh£¬r¿yfbt§ r B;9øgÚ8IÇ'˜æ­ û<ÿ`OòiâÂtfdÁç?£G¨¨{“ï¹t0œš™kÞ!š¦«þX<§ç*'… _ o‰®Ž À¡c8ýt3Ùkê¢ÖªCw¸õ¡US]J5ÜwQÄ•ÉñɄܸ0|чÆñ,•ïÆéþ01wbéÀ¤)fòþ:Ç™÷¥ám,³j¯²ë‘5z®k‡¨°‰(W[ÝΧ߮–ÑêÀÑOþ«›|Ç®áÁêÅ8@gë‚LFÍCm¡p*𔫳šGíÐZu÷_U>¡)ÜʯԗüJ?šÜ«‘Y ‡®À ¶¨6+FKÈ™Eg>gè ý&ë©gY&T¶‘d¨øhݬ”¯)•-BXu¿ì·í¼¦€Üþµ™ І!}9ýZjš¡ŸâsCá*Nü° òŸ©©*sO˜¼ò^¹ a¦Nª°9– ¼&ЦLVu2ÈD00dc„œb;q™Æo°ö–yÌx²s?rtžÐÉPú§öaD …!O„ÓÁøð”O£!¯‚ˆô4äÃÓ¿3>ÉÛj‰ï}÷Å={½çè¥yRŠ¢*Ù"!Ç í×ü0Ë"VÙÁ,Lk{6r/)à+}h-BqÄ* È–"ãÌ3çoMwô°¿–3—¸ø$m M 56¬·V‡hXšÚb‘0ihª~§+ƒ ©\†§f·v¢¥ŠKWÔVó©Ò‹ý–0…H¬ë#³"© Õ¿½LÛV‹h>È–níù!pYßdÛZþÃ|Lø|€¾úÑ×¹›MwôìNÃ&ÄÔ$gˆÇùN™të˜w»2îÆõ>­ «X×LÒnÓû‹ï:#þÖÖÞØFm‚¿Ôgg¿ÁŒ ¼¨ vŨ™6öãrNu @•k”1õë—Ú;÷ûr€ŠW¸?ÆJ9BþÓ¾2ƶ^t”…¥ÍÜûTW"b4Ù5×öߪ €3ÝpkVÑ#é–‚œÌÀñòlƒLKé»–Òby‘õï¬öä »œør.v­)]°‡\æâ c™–ZÙÈ)DW@ù^«5³LV™¯9Óe곃Oå'?ÛÊ%"¤(”PV˜8*ßá–N9˜ntÎõ’ +kttò®ÆrPT–b6–a: ÅXO `·™ex£ìT %¿ä‡Ô"d8©‹‰TÉ1¼žQÀ`:$\UæQÒÜ Ä”ÕÔ½©"¾œ0/Žf9µž¬›îOk‘Ì)“̸̅gDN‚³RRrש‚;ÁÉàÛ`} Á 0ä€á‡³¢Ó^L•€žÍëÒGmöÿÛ:„ûxGTŒYÍဠy×ìî»Úþ8øAüÙBÀ.ÍÂí@5:dAç†qÓä™EyyÔYó‰ÄݧnQµÙ©Ò+«q_ç×p9œU¼è ?Öu®HЋÒôƒöC(ÅJn„)µ;EÆ0³s.ó:}˃]s±,ôÖ}‹o~³Ç޲9ÏÞÊ©/ÓTý €ìcöýáª9TqŸêžU"­FUgã"¯¿“×»˜P‡aq'!/£x”‘Nû–¥¨Íy?.¢U-¥+úA%“˜5-Yíž)I®[a”Ùw9ÕñÞûÃÈûûXÌç¡S]×.U¬eÉ{¼²mr,“X¬>UPÿвeØ;Í+Q¿ùØ×mLREÉË_§¶£KÄ1l©ejÕw€ÚíÐ@hsƒù|D„8­RÑr_Ù-Šüžã§så,Ïh^PWzrBØÕÄãïûKÞAÍ(ž¡( ?ƒâǽšfÊ£}žTΙù³pÛÔlåâ,†…) Â¾—âÌgù~½üãÆ¿‘~Þ~& TòOüö²8 •7BbŸØ›rtxnœÓ£ß‰qƈ`ņëI̦á M…pâTqîa·ÊÓÿ¢ãAâ‘W?;{Úhæ÷J³ C ÖƒwwÅ6š˜rȨªOÕO—’‚–EåìçÎyZ?¿ÁSÖcý_+¶‘æGñCã=ºTäyƒ šgÿ_ɱ_ú£m¡WïÚ5Xç줤\õ” QŸÝ"›§P3e†µÍêN}ž£Ý°ã„OÐiÝyyºå÷¶ÁÓÞ’ÀZ»&K¾DÖ{ühçჟ®¨üêçzÅÌÎó„JøgáLze·Ë}5ϨMàPMŸLe©@QC¦úÏ“®TÈñ*ˆ1f'ó)ê‹Ð×E¿hòàj˜ñÞMÜÜsë~}žxx€¿“É„6†BÉ™A‚ĵ‡÷Šé¬çlJ7Ï']Ôu;«Ìú¿РTà h˜NMvwíøùq¯}¸Ð\ÙW:Ø™ëq8nG»ØojïÿÁæ=‘A ¸D01wbé€RbÞ¯6¤"%65cÓ×éÿçÚ×’+N‹gEãFƒ®= žrì*Îÿë7£Ð.ösʪm9Ê~¢ÒÓpý¦H;À¹äRYÏ’7)–RéíTNr‰sx WM÷®Õ15œïU¯®ÏwI? 4@Oï½R…®å0ÐOO¡¦(ääìäj{0E„P–Ÿ=À aä3àcäøŸ‚‘ñ¾)êÞ½ò+Ú÷ÞbA!¢‘¹‚ZÎY'ƒŸ~äQ$}—õªÀ‰ª3X ‘J—ŒwAE“Öpx‚àç—äa2ÅÍo(¡\›FySÎsŠa_¶€ÀPÆ;çQ*ЇLŠrdÖË 5È |ìo:Ÿ:ÞSâõ¡¥‡Ãü.w2÷ ]gAæX*%kÄí¬ì-<Ù×LÛ¥\'È€'ËڠرI™IHµì^¯+eC¬©Ã13 ÿàTä¥8¤}†ÑE‚ÕU~ÏRªUÄdWFOwWÝüîÔv@#îV=¤ÝæÍÿŽÀ*žºkœš {7­wÚ[퀜“Kñg+ø=ZD•=@yÊ¡° \éº]Ca!»+Øí'á¨)&~pô ‘5“öv6.DæQA*†¨îyÈ"±5dò3°&¥l5maO"›ÃÀ/QØ&>˜úß»Ul T@`F¬üï;w9ûftËjwdjóÁ“’[ìíµK}z¦ßˆÔÓéàñSXÓ¥qHF W7ûÂÛÞòfãУ|ü‰ÌýåßiÔ‹x 9ÐýŒåì$ hÃ;AãJBŒckÜ2tÞŽ*æ*€ÏÖº‹üÞ‡¼ÄË ¨ heýÿÀ®×®ë]íhªxú4w¥´ l=áø±}J?;‡·ózç× œ“$\—ëð©H=ýÇ $˜ìož¼^F¨ôëNû‹ èè“SÆóá°¡åoÏK‹ ­Ä¢«ßîÿΞJ–°ãŽPàÂüÁHxŠR‹›®øcVÌFýØûþÄð/2VlÍåóǧÂ~!Âh;y@Dý™âòq„ßû‰kEi¨ÿ9×u¡šn¦³Œã„T§ãlà8Ø ˜îôX1«ÁñÎó¤Qg+·kW½eÁú„ÅÃÀXx JÄÐ×;<›Ùñ»%7è‰}dG÷ý×ÞO“ïÞ·twd49aÌ™.úÊ»º|hWr…p„P,o?bw%ælÄ~qávcÌÝšmàzÓš«EÓ¬C²¾ÜÙ=ŸW.Ž÷£¢(u–þ£HSMÎD01wbéü*®È&b›?xMµ¢Ÿør¾ «Â²à¬_« ]î€Î¢ÒA+l™âv´ï±â*Ú(»y %†3dæË3\4#r í‹ÁÂÖàï¬ß¿‘ü"+p `¿à/¬u&ÍDØ 7;”¾Í†ÅàY6þ­giB7(È…DGX­5{1s—Gg!P!ñ!4¨ B=‘év&Qîë žGº/bè”ýìù ½H)ùi¥€sÐ;zIÛtt-do( µB"frÎ&Pkדß?Á]<¦p9–ª“ZkÄK\ä[{ÐD00dc°œj6&nîq›£ÜT½_VÍ~ϨIK3êS~gõ<‹èNˆk‡S¬0àé C³è€¬I |ÎϱDA&€ѳàæœ3À=>gÕ¾ âóÕ½o|Šï^{6± D„ª D…;ळ¡vìyÊ»O‰ Í ÁË=Þ¯|ÎñÂûo{ÇÀxoÕ'á$Í:—óíFÉöÕê(Pö7ŒLRð 'J@v‚K>"tàç´"Âmq0üE’Û·æZDk&I1íõºlÑm]ÝɽÁ—›úÒQaç§2 é"i,TFp¶=; Èâïø|Ò ðR 6Ï~#½ÃŸFnå 6%9ìg—ÞqãÏðxÉázÓ‚„sŸø ƒÈS!¢N¦Õæô;^›Eý_*‘Uö¨AU~ŒŽ³¼–¬Ë‘£7À#°týÞÿq Ý^mÚB$'ÎæÛfrÔÜïdŒç?–‰¶Ìµ 4©Þ4’ê‹Ñ½³¬Ob&6z`õÌ&€u6à‘•ÞÛx`è?gîOòW˜#Ì–g®ÑT•\R·rªKnc#ÚÿP ™„£ä²ypÛev5{T • –^.×±ª""Ƨ²Z«bw6êÆõϺgüô»Ân~ÑK6pŸo{Ðò“H5pÄÒ ¥NÕè¥x5>Ç©¸»j¬òS¡¡ë•†2A¬ V2+Û<7oM¨÷†B¤‡Ò¦G•;z²­XÑ@Áæ1ÝÝ®/ÜÝbBM|XV¤fìèÍ)ÿ«å°Fçè»’££ç»Lõ±€‰†•#y± “Î.+Áçïñý§«iû»ÏX`×ׯ#Áø-yN•ÚG˜“f<„®AxhT4R-‚nXA#Ù$ê\Å'ܪÝJòðm=^ÞvYžêì•9&(”F'b_¼D00dc€œl6Fnç¹ÃàYÕ¯¶~O¤¸‰§‡>¦ßÈòaàL Þg·‡°81‡ÀOàáÃÁBYч/%0÷¤gê'J|Ϲ$ðÏÈo”Wµï|¢½½w±:ªÊ!K,\˜á ×_,•mœò_ÄÄG˜ •™è'$ƒ²zëÀ<çÃÝfªÚ>»6Ee1‰¶Ê&‘A ³ßDAœ\ɵ’Q'bùArçÙ%¨8Ý[¶"ŠÙ/0ËÙ4HÁêV Èµ}˜æ‰?×!7SjèDqq¨ 1(Ò[IiÁâÇÑGÏ*³Û.Öï,Â%¹kÀ¶n [}oV¦õrX){°'IûåE7}oý55!VøòÁí=EㄲÝ0ìY’½™y0ìr ðë¾vî"«15êØÍxX3ôÇcÙ3˜‹eMfjöSĨf–AýÞgH·øL.?/£I‰¿®=UA»ûôDØn) ‡£©åh0r‹Ð{?"àòt`k"m£³ÚZ3å`t“¤Çâ©ãÁ}k|Þï5aÁk'Šåí/˜r’¹…и00dcœœj8Fnq•6ýJî׋gð }N}iÈiПIå/G™2|Eì«” Ó̧`tD:ûX=O@~L„)ƒ"‰íE=zîó•0A f4RŒé”X¯=ã´Â!§‘h_®,\´ÂÛ‹0HÞl²Ê_ÖÛÅŠDŒ!1’#e¨n|ØqÛ¯M…4Ë…4DØÍ!ký¶hN¬Í´DÂ"RßC8ù9¥+ Ylú¢Ío[»;Ã`€¯H®KÞ‰Ž89¡ê,,òýÓ°¬Ûß»dÝ9ïv.e{Øn מíêð㉓ýç;)Tr=¸; ÏͯȼÖäuÓI«¬YM}ÁÎÀI@€^Ñ©$ßOé\c_D¤×=sžur7Çÿ½÷œ+Ã<> CÄÛ¢’TìÔŸŸW Ðk¦à6rÎὟ¹¦OÝ­fmÝìddw¦¼–¹ç?Í$” QH«`Ϊßä mJÔRî öÜ#¶½½ªRÉE‚?Mr9zîd;P°¼ìkœüØÒÈ8 €ïÝ´©‘}o ý€Lë‚vEÿÑ6ð8©lôìsP±u°ÛZü?ù.êƒr˜Ø® Wå’nE£ÛãO,¿þnÕ8È~‘úŒ·âk^ˆKdVš—Êõƒ³ ,Œ õï1‚ÃAÍVµ,û§þÆá™ìœè”M?pÉ‘ÞuÌüÈýÎØisØÕÐ?ójW÷®ìÕ^ùû»pSr卨Þ7™Áã¾ç ¸óôOöxgƒÉú Ò¬½x2-vh/kËfØå¥…0æU©šßå£u‘æg»úõÞB‚+ýáñð4fµæZ=¨ÕâœÏ£ãŽsòÞÝ•õ–ËØýÅÁ¿"Àœ'‹=‡ªdIT'óƬ/gÚqi¿Äáãùó7žpðtrÿ=€Yi 3äâ._¯‰ÓèígÍùã{ú ™.²QD >êŽõÛ‚o]&¼–Bçt?œPÀï4zps9@®f? ¶Ò–>WÐý#ŽÎh §çQNL"ó祇uç§\û)*§v¬Ü“\ëóûSx ùXÌÑ|Ô:ÎPûF,.ôšbê¥]œÆãp!1­íA‘“6çDðÀ‰øê7„.KZs+­”¤¥ÎúétôÑ.ÞËrê:ÚÑÛfÇ*iSˆcQ9üÖŠŒÿ:ÂÕ¯‰Ø ¤ 01wbé\+)*»$0µR‘ÕõéºÄ|m袵Näî0§æ¢¥°‡am¸.^ç9\¤ vçM+ĪP-n`Ñ(²(›oËŸý,‡’< ùî·ÝõɘQ¥¹¿”ü™ø¶ŠÊöx®ÓÏfEÌèºÙ¯)è;˹†ŠS³h~8Gãs1d]kåÇþx HÏ +Iñè †«K(4{†8|åNÏT}/ˆ)ìËfЍfËÝe~È éçÆÓù2€yí‘§žjöRZÑ•²]1''9–ª ¦”iøSŒÂÆÀD00dcxœl8†nÄÊ™ºøEYܬp×À%õ<ŽŽøcõÉÔèäðdà/z‰];4Ù÷H’!ø=Hò}O±Ü‰C—Êc–y(~yÔWµîõÚ¶¼âT@€ ˜Df쫳%æ¿È#9 Ïœ¡"ûŽ’ù¹@«º Š­ôA¨uÇiøÙòam¦ÚTÛD-v-Å›®…¸JÀëÕÆ¤å;qÕ³élC«lÑW6—ûéÑí²J–[j„¬¦ØŒZ?FëVsÒ¦Û pñq€½F•ªÉøˆY°2&E1Ôé·˜1¡qSwc;𬩫fÇ—Ü.¯DÍÁwvW äDÓE~h:8pJ¯œ~3Ú§êÕEjüzÕO^ÏâAbp :¢wQ„͘ɴü¤r϶5[Z¯€ý†RŠaÇZ†œÍ¨·"xÑ×s·€{Áf8­Ü{_±aHT:–¨¢¦—{˜a¿Í¯5,ÐaÐH´2ü¹”øxŒ­çfŒ=mý’'>'6g¤š¿N€ƒ[—œ*úd{ x¦£ñ®~ÏØ˜}jJØäªðëÛ¤á _¶_òØ–«›Ù ’]›~ùÎßÎA÷-Œ˜9ä=h·<§Æû4Á”U\mxÉ=0_™äN•Zàmªâ¾µ}ôøH^þ. ÀÝò¨ÝWqüû€f€ïµÍÌq`ƒGsþçøÿ«Ž5€èa ±±?ïø"ÝÏiGx¯)úùçO¼ëíÞ5Êädµë?–3ÀilJùé©#PÌuž½î4Çà¶ýQ½¶žŒÕë6'tìûý8Ÿ«MÍõxLYoàØÃ‘tm!æ:|~f7üw„õ¹Ÿ0íÃÓIû[ùà …ËnB Ø™´ôUñTP(ž¢qü]'[·¼N” zØ9Ö«Ðß Y¦½%YqÎjá““}týhžõ.¨y?ޏèsˆNxÀδ7çYømút­ð’nËÍj×GþÍ.Î 7_¼äýhnÈÑŸ˜Ü#½œs³†d+™|ïvŸgV«®ôíïµuÿºM]4ŸEusw혔žb¬ß7]Ÿu]S×Ùu@01wbéŒ/ÕJ·ð5#¸¡§¿¤<hCë î³e##ôL½¬îS´"•„«™y¶šK±=Ó B*jŸã L­‚ë ®S.¿‹/…TácBº4 fð쬎- Ñ™EÀ«Ë:'T“´)V_Â"æ¹âÂT¿fç}¹à+–Õ‘‚ÄøÖ*†ÑÚŸx‹_Ø1 .†=ÌBv~¥§bàL' á¬CØ;ðâ›U¸ná@ÏùÒ<  QieSýŸÿ¥ð´Ç½Â7êBŽ€Št÷(B _8Yžª“š¨è$qdLšTÔD00dc¸œl8†íãsw‰î'rO¸~ïätû;>¹0ÃÙ’ âþÚp"G؇£|Pi§G°k„;1sÀöÞèz5ó>  =/±©ÓÁ¨§©ïQOz÷½Æ©pŠ"HnÄ”MfØ΢1·N¦t»¬¡Y‘ ?ônEŸwÜÜÈ—9hwÕÀ`O*Ÿ­ž³g¬¬"W”á¾8£Ï36‚ͧ_FŸuá+êÌ"][z96‘ÃòM‚wfe”~k±q5¢¡‡”ÄUT-vû¥³ñLrµV`º§³<±ƒIÍu÷øAðm!lŠ7†ý"mù‹µ‘ÉôÖ¶²*÷뉶ͷ8Ÿæº•*ãŸå…Ü>šÆÇIÉN¨þ¨,Ö¬*ÐÔçã„duž¿lÏRŸÁõ t;´ÐîîíÝÖ›eCûH´ôœ ®Çy>\›þjÙ÷²ºrð+2›«™”˜¹ûz{5ñ%¿ÅQ­ €° tµÙ¤ÎŽRRYUÞ4Ds`æA©BÉkÐsL- ²Ö³ßÃw¤ªK;ééì:xÎÍ›‰R ßùþÛn<-k^ ¬½‰8Ié¾ØËÆæ­jnq-—(À@k† ^/<ˆ “Ïɲߴ¦¥Ñk« ³Û–I©p‘r} G˜ã7Šbá©1~¸ÜÝ ûÉoìNƒH£ðäZ?~JŒúž3ŸÛÿ$DÚéöw7swq`^88-ÏË3X ')Á3°2QFÕa.$ƒ kÙ¾æ0}]¨uë Gò~NFWæ¦2QÇÆÖFdòøèË_amC¥AžõpåÊò$¬-º{¢#5ûMÓŒH ¶á]ñ) a¾ÂN$9⯊Ҁ˜ü}“Ä/@××Þ›¥€ðÁüõ×X:Ë#XåÉ$Öõû½®f¬T™§æc›-f¯%e¶ôP=ÏlµœìÁ¼À“bÝ‹§ÞÊzi=|»r¾ýÙW ŸâkèN+†ë§7 éúÿ±C“è?¦“d›¿¶ÍÎWT«µ‚K¼â: QæAΣWqA½}W97TÞf!}w #¿ÔUêSrÄÁDçz_®ýà}˜ún²©+ïÚíë¤/u:~–·Þ»s"é£ï7,ºÌP!{¾pdÁùÏ•Ýé UÕPd00dcœœl8†››Æpø,²w=Záø¼’¿®­8ÃĽ? ϑ“J“ƒÌé}DðIXr i§•^Šv i‡'¦cóòa§™ðaä£ðçQ{Ú·½"ÞÕîJ¨êˆ%p7vÌøÂ½hÈòª+ÑûÛ~=u·C`ÇÌN ˆ„^9SòV¹|Œ±F>@þêbØA~°Qâ…ü¨=O)®ÜW£éÐöËjÙHlð<Ðh-háæé¯:bnœ-:vš(ïd…}ŠŒ8²0nà8@k‡ïžÛeN²ïºhÓ@çyÖï°/Ôµ{ìAS2žÄ޲GYå`od8çy±w±ézçåØç2¶g¯š¨åP_þ¹zïYë—!ùTŠ£•ô%ô×ð{”3m9o½ #[:GmÝÇ™þ‚ìLEÌÉ´&g±’õ9æ“Ͻ¼&5x­£ëèÔšÎëÔ§5_þ¶(ÆPóMGöÀtÿ ]䨓CØç—@ß‘µÌ.s=¨T'ô’Ks4žtNøÁŠªñ}@;ÀV—Cþs$â´öüpoäžÇº0H} °è¯»Ú…ê®ØWoŒÿÒ0ÜfÚ“i!ñçó+²õs¦GôC[W ‹Dtä(þPj›õÝqw¥Qþ²ì²@þÎÐ"ÃHiÖøÌ˜ÅLùÆ÷å˵ϥ31ã5äÈpüˆ±’˜ÍØ”!dš*0L'1jc7&`ã¯&Ý(·õ;'Mü|sìAøü7$øâ.÷³tå+¤Ü‡&aþ²yÞ\<¿Æ>ˆ€ŒÁKŒiéž5ÊéÿpŸŽ¹3Ìë®ûÿù¥]û7Ö¡c«zšVlðUÇQh%V XZ gû ‹œA¦õ¶i 01wbéÀª«øE(ù}žLîØ¯²*”rŒ¿l´+­¸¹RìKm"7³ÄÕ,GÑ·ì“ÍŠ­B<¾º×½…â*-Œ2ïùâCm7ùèuÎ[±®®®â-Yæ ¯ÕÏ×v §·P×ýÚéœÀŠŒ"ó-À´Ê=R7kö>ÝX‹e['£xà‡Êãâ­[,´ëfŸiÌË™g¦‹4®&ÕW†Q‘ äJ(Ò¸¢=„kRtP­r¸‡à àHqÀ ËÀS…$S׆ H „-0þŽà 6€†œšÊCÁ8­¾^©9–ª›VÛ‰üMe ué¸D00dcŒœp‰bæq»›> %w=\M~º'8}Ï3Sæ@8~‡­ü 1DÓà>F¤V”¡Bˆc™_E¯ÒžM=?â`veSר¥u”ªù 0ƒgxï¶èÙŒMÆ8 žJ‚òj·›Ý 1/…1Ç>£h è`·Ó«h†!{[¾åW½3ÔV¸HÉû¹þßCÓ[ á‹M[Ï’Aëä>±†ŠPeä¢éÌç“ÑM«)Ó~óSÜqœ#´±N­¡cëÌlûo.“î Û=Q‹»9‰Ü‚gú™Â”šlNŽ˜ôã›ÈÀf2£Ñd¤®s3q¬œ `o.¯M—n7{·Ý8÷[€ãœ É› \ç‘‘ÇíQÎu—¯ ­æ„Gåtu¥[e„Öœ0¬ì3ÿ $ À¦s‰™¥ŠôªÝ-É–¬U½zàúz÷Ú `ŸxíÍù#§DG[(žïh'ôoÖ*VCïœHùÿ1¥;‚ä¶!ü󽪷ó³o쀊l};$bj‚#ë]Ó¼+—†M¢.¸V1ÎF8T°u`\H·¤E3ª÷;o(7âvêpsi"êÙB›ˆA…5§È‚f"c\ ¹Ê0‚'aYž*ªî¤VÕúƒ°D00dcМp‰›xÍÝÙðVG„¬pâkð„ƒ~Ç|ÉÃñ9‰³­ü:%$Éè‰tû°„)A¦¼•†EÓ±i¹Áa÷ƒá0ñ?ç8x¯Ä¯z"½W®Š÷^î¬v¡ðm˜l¹Ük .=HƒÄˆ˜jÜ¢û“Æ—§1bº3_¯‰Ñ»JY-“`(Œ%= g@_lãs™è8Q+‘Jž‡iW“ÿý÷v;%ôu>c88È?ËmO±O°òaó3Ð9£Ô§ãCƒü˜çX`rÉ{Q¨êB@¹WÜŸ>&û—w °“ä ¯Å­NWʯ¨W¯TžU5ãùîj:ëÉÖ ØGh7ê„õi&i¿·´ºÍvTbköi¦6üžmbïú E[$tËÑv¦îF¥/Ž©‹¶ §ú¬Z^ʳtªë·¢úcÚýÑ­jiÖ‰X\±‘= Û­mU89»¹¹rWww'ƒwò±ö¾4Ó@01wbéÀzÁ Œv*‹0zJËÒ <*® ¡ÂØÄ· kaX².b æâ“oã±Á~Óº¸­ ØîºøœHãÊY*ÄÈãj»'¯S]¾îD39Y†q%›»ãÊQ».ÚT%öH°>@þ¢ÄÃd`J­B)ø‰`ºø7ø!›y.ìrGxÈâH°zìU!²ðA §´ˆ62 å£!"ôÖE®¸f ø5h}G\óÁ´&o5ÓÿOWñ²SˆA\Ñ¿óùÍGfd8FZ‡®ésÈJ°Í^x9–ª“bsH›>Ùøè;ÌD00dcÜœp‘x»Æq=ãÂF¸q6~N;yÓî ã—·¥}Ÿêàâ"ƒžN€‚"Ep‚àS—ƒ¼Cäƒ1ø‚|Ëàù7þx|ü‹ä§Ãõ{]{¢·ª÷¼n€Z(ŒõæÇWxVKm:Š÷àksï!hÞÀ0jŽÀ³—A™AƒÔFJ/’Ï·–Ù³JÓmà•˜º1…’œØˆ€{µŠôœ—AÙ¶½-*À‘k\׬LvcI&ÀÎ^7ÓWM™­‚ åñ¸% \hpL~3`4$Ö°E¯˜gd>A¶Ù{˱~cÕ•«¾ø ÏÍÚôü䔊:‡©›ìÄ ÇLL¸8Ó^ƒƒS|œù{½‰OÃé±vSƒÈ»ÆÊŸžúj:¡+—Bó€ø;XcÑ·pýÀÌk~WçÖ|{§ö'â1ëû ­)´"9ÅÄ„…ñXæ}‡ÇâôægýKM1[À¬ý=cŸŒÌciÕ#ç¹û*m Åsk’ý1íÌü½œÄîS\Ÿs=»O` Ó[Š GÚƒÉ*~s}´[]ÍŽ,>HB=sdnScc„áÓÑþˆ¼SW?ÕØîöÿŒÌÌJAHL‹ÒÿÍÿÀ¼Ü—‚X&ed,];rèn74)}Y(‚]ØðتBAiò³Tþ)MÌy£ÕF·ð•á_•PBR³ggÂ*7WWu†«M•|ñíðÐâÐ!Î8J œú9Ð97&¦OœÉ¡OˆM aøX—é1X2ò¸‡ûô"2eõ›û¤Iåpö²o ÷ðÄ_Ö …«œÈ9‚r;ÉQôUZMEòsá˜ò!SM÷–ä^– ah6)Õ<Ð]£ÚsQÄ>¿Ýe¹^$Áh™ö_ç?œl2>•)sýay9öjçÐP®±ŸÄËôHˆ1 & 4W2béT\âÏÃeßÞfž¬L¬9`xlhÓßÛ­']e^ÝÿLC¸iñ¯mR¬z&ªŽ]ß;ékë5h…Ü•ƒ#›M^Ã4‹G…wð00dcäœqbæq»œ>*xI|8Ÿ0“É߇!“—Áñ:BžN'ä*p*%}‚rx0³£ä…8Õ~¥§ÎþφÓÉ|Ÿ9ðÅï^ÞŠzõ^r­ BA€‚yJ“ÖU·è퉺ìÃo6Z„=÷ôk”³Œö9IF¯VùµëÌuƒÔ$¨,Á;(fš†^rsÊõ¥ %»¥ô蜙ïU~±Å…fô‚xªÐzÝØ´zÐÖS!p¢àKho‰7 M Õ}Ç:z'Ý’ŒÍê"•_Vg›ï_°V ²û‹hO<±Y±¨*,Ø÷öô1ÎÙK€¿x'ÙX¸ÁúJ€^Ê×϶ï~cTÉ*ë:OÇÑqÔ’‰0¢–ªÁ Ï0¹÷•O ?û|‡‡Ö{63­/³»[Z¤Òçü`Ðð/T¶0 ‡›^­j…¿Wë+ÑÅÀ#†;!~ÿÞž‚¨}›šÈ‘^lj×²×¿ÙøÑ€jåõê ×#+ÕéV`I Z 19ÕN醶-A½kUú/bô~?NûÌfºyA_–»hù‘‘‚p8iU­dpJyÜ' éþNmK(V%k²C}–MmDàbüYÆÜÚ×<•ßv*âîiSsNËüõ›®F#{„|X^u]÷²¶»NÿUã8[‘HÑè Cœ™غ—Ã|nhÑeOÅ YºøQ`zÿ÷E9ñk¹Úäé7ÛîìÿŒÎ ð ïˆ3.øÖ V•¡¦œSšhÏ/ôj±…·™]¹\wëö”Ìœ|CøÓ‘îžëµ8ÈX4êû”hÀ«´jžÝÔÊrÜ@æ;ÁÐÒ}~ y>†ô9šàŸÑóŸ.ë·:6O]ܹӑìi?Í&Q¥ê« ‚ÅYÇI¡Šú̓5Íñ¯7Iïw«®¼ýâÿ´„01wbéU@nÏ@+TbݰX~ª@)­kñ<ο’ôŠn G‹kÎJ0ƒ·féê¨^°'ꎴK Ñ+%ü.Œª¶Iq–3Ûܪ°öøá¿Âq…˜úÿÿ’+øö‚o ÀqoæN~T­¢ëùÛ÷¤äÀmìKÀ+å#úÕ{ò;óƵ‘0S°û¯•âšGSOý7›üê ‰ BÍ-̄ДDâp7˜÷án .ÛäÉÈMq¿ÄtÇ0F® F¡kjŠ÷ƒz3BO‘kº^ðëÂ[HøË3.÷ß¶Yžj²î¦ÉµçK˜¾ÐD00dcôœq׌ͩ»Ãà–G„«8pæ~dçÉõ›tò}AèÂï•4“Ð=ð9¤ .ˆžÏ,!ggaP(O“æ_¡ê~Œ8g“)öi§:QëÚÕå:9ÙÂSŒ0à‰Z\v4Ö•šIÆF—­ú¹Œ88Pt¯Eyn¡YL~ƒ3Òº›w6Ýa£%ýþxMv häÞ©>VsOBsÞFÅÛ»¦Ô[\(î{¨åî–‘‚ÒGÎ(´Ýg|XWßY±šš¢0KÁZ$–€8¾SÁNÂÊÇ)Y‘«ÖJ?Rõ6ý¿´‰E“ž¶¥àÏFï¸%pkÔ.+9¥påÅäÊìB`˜Éf¥˜3`ãªWåÁT9þª¯V\Ug¼Ù¢à[t{wlBÆ-4;«çd›¿·´ÇâÅÝË2Z¼¼’ûÕß·•°ý<‘Ø3‹–q©µžÞž ÃéáÆ™êOû·!9ù²zÚðϵ«`³yì v6»]“†Z¹Æ­¨Êp\?D©Œ÷±™ã3ò=ß„â+ÿÝó%¶=hàÜ´ã3`l…\¿i ¹Ð°õà sòÁY­½ zÓÞ«ûhíHÝŽ7†ë±H@}œža)ÜsBÌù^v*ø» ¶g ú07[N ÔV ®ýåøÖûM?ñ¯·ê3ØÀ¤ÀHX~±YUñàÏô W˜OYf-¾²’¾Açý™ïЪkf@€àÞÃ7i´±Ì§Z(óÅ™ªßÆ7cDFÆ›b'"÷<„˜H?ÿws-ì¬ÁROx78f¿(æ—›ÆÿwÈýˆ‡p˜Š®ž2' Ñò=oúê~º%¿äÏÏÀéŸû_oöˆâg;Ã:ÂÁNâëÛó¯—JúUÂH±ë23 Íßg_@®;x9l²,~3¹:¯zì¹ tpßGÝÖÔh’MRgŠ5' ÅØ0KšŒÇŸžö$¨gÉ nfD,9gŸ# Žäõ ÌÚº… gogk­ùú{ýúúŽ8.Ë 2¯‚aÃÛ0a†P¢y/ô.rŒ7…ÊÐò{x#¯ëµWã³dÈß圾v‰2uzëµÆG/z¹ãòðºa:ôŸµÛWN0VÝëÓŽ‰À«Û±rs~ï.§c‚ár6~sa;¥ëà01wb逿Ó*‹»û /½Fp­(&o¯0ÊËÍTþÝñv°ðÇî3á¬">¼RÚã7…&Á˜€€¢¿Håá"PýŪ½[0ò`PîPCg~òy<ãO4û—IOUQOWV‹*éÂØœ80K%X®ËoLx‘géá؜뎚 ¸RbÉøÚcy<{\*_B üm_t$g ¦¤{Ú¼lØ/‡}Û…Q8ÞO¸÷»àÁ‡aš)Pe/_‡òçÅ#]5qãµ>àqƒC,s3Þ‘ #>Q]és¼Úí=awÄïtu•¥+×&eâ~ÊÿT&ø½.Ù7OX/ø{Ÿ.™ß"‚5E1‚ð_En#4—Éy;>R%0ŸJï ®Õ¶Ûߨ«§$Ü4>Ÿœž^UëkI5öÅto˜ÐþÏL¯éØÍÉ›üq߬Ÿ°È®–Ös›A¶oÿ_ŒÑ¦îFßó§5•¯4ž|Å.²Áx()ÁÖθ]çu¥ÿªé/¿¼©Â”®î¯‘"jvìšî¸u6IZzfëKäX;Ù¸QÆ{¸—ÔÇâ®ô(!¨00dc„œq!c&îîý ‘á,®8~œžªC^vr|@M0ÎzÏÑn@O›E‡@i‡býNŠ}P0¢qχƒ÷<ŸaâÐNµõTQ^½¨Ñb _ýV¯ÔdiþÀýâGßåAMÇ×ÀÕ‡BïaK]ì dôŠ.õó¥Xdf¢§jV²â¨Gw‘ÔÓkjƒw#´–rÎ\3îIXc]‘ÿç×8§¹jЇ•° kaœ~U¬Có艴'üXº+œ”3ŽÏFñ†w…b-ŽÏ£õ²#«ÌÈÉI®<õEQ :  \Üç’±ø%ZÄü z/—8bÃ</¥ˆKÑVÉÃϪ>AGÊ•ƒÛžþæ¯.3ãw}¼H4ÝŸvAþ~pF÷Y,Þð4‚>ƒH¢’È?ÇYñ¤üò~‡j¼m°´ôƒ=Œý‘²B¤ß m Yüø˜Æ6GÆ=ù¡@©ÿ+7À¸—AÝ~xði—ò†æý¿Y­2л€ó·þ^·À3ñ~‡‹á\¿À‘ìHe,ILŽÙÌßÓ"¿Dg§¿B†—’ÌY{Þz÷g<œ°Í>¿šªøŒÿxûRS=LJ>È~x™ÿî,2’+ ò}í.ÞkðeþÔ|Ìîî€Íé)Ü”8ÎxzC©¿ÃÚ'ŒL“©´ €E÷£–ßÕ0Ç`Ì̃®·œ…‰Ùs«ðÃåŽ÷ ÇG©ƒAÞÃÝ8ȃåUQ6Œg÷–çb†±wÂ*˜“pvÉÅ71úGÞòDY3@!ĸ â›Â㫊{Ö!½Lîn³ôÆE¹7Î"܃­¤Ã“k0â{ÉÞw°¦ì#G01wbéÀ:Ly|Åä¯Qø‚lê®±oßB2´žåŽÇW -H!å °ûŠú0of·âX£(¾ŠùI·&NÀ¥Áš7½·Â%¡\-l†íY¸ppd'ªQÍç#ô߸Ð'=ä¦6Aˆ)å Bzý˜D„Ñ*7V­ Š(ZVˆÈÏL)®*‘г@Kµ@äZ% ‹za§µóŽHÜòy[iÈ i&„é»êÐØí€»?Hw6ÇQYÊ?áxè^[žQ, íÍ£ “èGG¨Ž)í :Þ¶YžJ‘w¦Aœ·ïÀD00dc0œrí¼ÝÎ3~„Èð–x9œÏÀôަhh›|?`Þ°=<ªhžh àìထø„B3 ìC@‡À‚.))¼žO‰Ìòv|KXvù U^ªeP ­°ÎÇP4×dˆnP,ÑÙÁ‰³(Áãy¹À5õ:Ûë¡Ö™÷©hE(ó€æ_8¾¹PhGù5™›>dxìöÛmƨ«l'_ÔÛa®Ë+ä¶­÷?VB}#Ç+ꄾô‚„ÜÖanàÃ/ö×öK±vÄ—¨ÖhFƒÔðÐ?Ù¿©CŸ“4‚;7°ˆ œÛ_‡cZ‹=fM› øßgí6Ù³'mÌ?jÓdÿTV¬É%ÖEÑ‘tWðñªšYP`=ý”“·VšI]Ú¬`ˆ¸eÕ²‘3•ü™>—Ip…cS k5êËÔ'£÷wlIGÐèÙÏcNšydšÊOþY¼»œ¿±#`Ï'˜(3PxúO¹2vnêš’µÇž)tSR/§/[²’ârdA+ËúwEÞ'jgP([òe—Ñ5¶nÆ#­Ÿ¸¢k3¥v&ÿßVÙ/J%ŽžÍtR¡ûdÎï4 ?~À‹û ’yË÷¿Ç½ôW1Ì©vH§aSùþ€ßkÖàW*ÓcêÑý2ß5ÁþÃÃ#ó±ÃönžmÙ#D½%ëκ?d¼{)ñâÖÇ=^^1Ÿä{¸LØ3ù Pª|Z+ý]žG]ÂXu€õÃpÁ+½§ûâ<Édá‘´®í‰Aã±)X rO|º#pNtËÔ9¹Ä|ÿÞÝæÒÓyHÊ,?«ïÀv6Œƒ$\ ©\Èᙣf"÷nÓ_Èâ*%Té6ÍÂÑë:°èó‘úÕ7ÆÀÚ›Ipc’S´àÍ·:~neCM—ñÈ p*8î@ ë³à$A÷½€%ÁŲ‚¢~ÎáUÑØ…¥åŽÎ×(c6c­áèjw ŠäR#ìt٨˼€îð;†¡ ¨å×hð€6zšöÆÂ JÃHÐG·X©ÛÐçm7ª€fŸ«¤C›Ãt7XÔÒŠ¾Ð* U611®¬ûdbµ)  ]ÑÐÅìNar@Á™µá?3hX R)Zqs&“ô¨Q’މŸÿsÍzÑð,l!È ç°ûòU3±h"´WÈ¡!ç|Dó1‡žc‘ˆyÇÏ.>¤Ãùp’ûY"}颥&]Aø‰™\­æ=J×ý-„¾dƒh«D¿«RÿQ%b®~¨Õn¯¥ä%ûÝ;ALÊ[v2½¾`d;å/…â~5ÂA%‰ðþîÁêê½­@×ȵ­ï]â[Ö‹Þ]_˜·v€FÀò‡0=ùÐñ³°8õGp~HÉP‡Íä­¿#¢g .¿‘S‚#ÉäýO/Á‡ˆ§?J*ô)T P@W=Ýôèx¥ øð§‹EÅØÅ.c" “’b¿~Ász•î¥ß“}Un-b&þê™ÙÊß¿þåMçIÜ9Ú@ò‘åõ㟤{Çó äiÒç{.¥€™ÃŒã¬ÌMŽ …õÁ§ƒ€{¼+0:‰q*»Ýýûˆaº£¿¨¡Ü§Ç² î÷á–ñî++]ÞýWSKE§ÚrÊŠuy«c÷n4&ÊÐw 0›Ê—‘@RA³]A,ÕNùÊ XóÈ$~Œ²€>›S”Œ{íͺ- @MU)å^u`šk«Z‘×oS®ÒtÜ…ÅT+»rZ&náüù¾úšQ‘EÈøÖø@*4…“ŸºÜ=Š”;7ùÅ&å †Á4O0!õfÒ´dP“]cæB’š’–|A3+h ’­5j ÈY§9RÒ|'¿â Öm.9÷ù|XóïìæüègC•ò’švÔ)q PÔGÜUTÊXIrˆû­®îÂûw5~_­ £–V×Êð‹sýS–ÓÚ šŠ;úŸsth;Í{<ŒÇ€(…D¥ñnð=:¿Ë"ÚÞý<ùþ·Ó¹º Ÿ¥£óçêg1ÐÈmŒÁµjQêïó¯uˆ Í¡F+±pLø ž`Y’UÑWæÃ‰`Û`úyÞÈ¢°ÓGƒË1\¹d’\ñ@“9 ú,jæu‰FF ”‡¹?<Ø –œÊ|H¤a˜êЫƒüè0#ê‚S®Ÿ†g±á:8ir•ÖòÖ$x"yY_·ƒè ]èý½«/ƒûX²ßÄUÿ£û®¥Ù½Ü?~Š?u:ä.õzÚ®à–ÉK蹩zWräý%X(¿ï¶¡1e01wbé€ùý.¼ƒ /µ°Öøß»BŒpÀF^=Óú¸*¸»µb»\É*é¨Ä¸R#·«òúæ0ñ¶vP,E›Ê‹­=ãòðØ_kª\åˇŠ³ÀDC¼A—±vèýà͸Ò^Ó=É*Ê‹+A缑`ʃs.(ºU¶)ÌËMì^Šx8?QÄ2a%0"‹ñ´.·ÀYJ»ÎCXž!a•« ³Žntk„¬ã.¢kJí*r:´Uôn2²£\ Ñ:Nøû>ÂË_vóVFÊ‹GÆoá§çn}`ŸðD 4Þv9–Êñ¯ "ª:ñˆ ùfÌD00dcð¡fçÌãw7ŒöZ½ÀŽ˜¯À ó1ú2 P)}ƒìÀðÌ:ðr'Ôä§`ýo·Áª„>D5 8;1Aí' ’3£‡’”(‚’>ßgÄÔOFG&œžO˜5½öx^)U0h|L`fŸÜòÙø0éþtðàÚ`™ fá‘·ôR7ÃL¤ŸÙW!’÷³Ïó™BÈ'Џ“ï/²–ĦdBâ­Ú}GßšÈñ_,‘]mÛvúÒÿxñêÚãjØù1‡ïýùøæ·ã*bæ0:`^?ógG§¼ã1 V 3˜h´Úif›QRÅ{„Î]G Û³IµrØf^- ÍW1ݬlÕT´êA͵€H®E‹åà ¢ÅpŸäÈèPýz|ð€ƒ,;³cæðò.üÀõàÔÛXd—èò~tµ¢àg8¼3©ŸNCy,œËïóš~ÁbÈa›a8IŒŸgAÓ÷]ê[íaâ±i×ä_4:e© ¡@ tû•_$÷hÏú‚ØÔ¾¼xÜ8Äÿò•À°ê7Kùʸހȓ1àÒÁ¤Ÿ’¢/¡A#H'Ô`rÍeNÏ‘äÓ“£Cƒ£ÑäÒœ0ðç:þ («ÔJU@2 ßQ ¾. ‡Ÿ ÷Íå`fO ¯ïþ­E µvËë½kžt¥nNð°³ ïˆ¼Ú …7øWD@ËÊ E¾†3;‡Q¤­œ¶p1°¨Ú†\ õb‚ß²eÚzëÛÝÞuãïÔyHÊà%ÖæãpI»›ID;^êi]Fì…*Þz ¾ŽÓªÒ 2°ž^žÎÚ®Ôm˜Ìm¨¬­2öE,¨Ô¼Ÿˆõî±È´®¬Ùm&£—"õ׃dÃV$ˆbW—í)e ‹0pk£‡#nÁ\·$ùxûÃÒk /§ÈÈ\ë°0‡Ìñ<åñ;r%DÁùjSN†FÁHÁ;D#Рò% 4ù ìøšÌžù>@Ä'‡ðy>½J€¥P €€µN¼bJë"Sq)#Ǻá\H‚k‰@¶$Ü‘‰ùÃþÙD¼v+ Œ¥ËßD5˜˜À¬$Ú.S4w¯§ŽÀö£kíÁ÷3äV­©wË÷.櫨Ìýú³Ñ¾+íö¯é?è矻pè}ª~³¶à8°RŒÇ*õmÓÐQ&ulÖiBrêBÕ_"¯ßh~Ž¢SËr%GÈ™ÀÛLÙm†‰‡GKO X™Z1á< ,Ù:äYÍW;"\öDÂmB>ì­cxAÔZ¨ä¹ñžDëovÛ/FQÆÐ°[µu`À‘¯·þȸV'[t_Õ©þEXdùÚÖ'‘=C[Hk³±»ˆÎDÜ „oz—*¢gñ>ÕÛž›IÖi…QçGª =g|⮂Â8YØoÓ™ûzœÓ潿êªÏ˜v$@žBßTì`wZ@¤ÀNªØ~ú00dc§NsŒÒqœdMG¦±|“„Wà4èð3´ÀÐÞø|<Àà»æt(r7™Ð!Htr¨‡êt%¦à@ê@´à„.@B ‰HÑeCäÂ1‘FR`?ÐiJӣ̾Aè§Sòw<Qù`z=šyÐET‰T D±•åéò(7‰Ö-äØ]©ÀwÇžzP°·='ÑÞ†k—aÞ#Šy0¤ûaL1A€@‘ŠÂËã·ÒÞ¼ZÃ6Ïož5þ9D˹Ÿ4oÞGmi¡ì;Þ×£P¹ö¢ÑÞÉ@ª5ElŒá3“‰FœKUåþIBE ŒËC}™áB[ àyàŽ±À.`]j5‹'Ä-ØxºÌ‘»Š‡nVïô¡ÌÍ×Äök|N„ .Ö“IõyH)O²ÛcBš( Åû#u§gä¡pÃØâlw¤ÂÕ®ÝÞw†pÜŸc4%kc²BÒ¿ó¬Å¶>IÕTÕ}/šxz¯¬î›8³Q6ÆM Ä!gŒÉÜéõ—ã§oâN£¨[4÷¿UY!ÚW Éa¸| ¡YïcÈ£g0ÆNJ°™P;iY¾Ó.ž"”ôy¯iµì·ê?ÍòÐà01wbéf/:[¥¾HëQ(§lªø£Ø=ôÒ®ß ÐêO!šPˆl»°ÖXfÁBDP®tkM¥˜Cã„¶«hÎ÷6­¹²*EbkávΞhë‘¢YâI")£F)¾g°¹W®)ÀÇ|3â½®Þº:âü_s‘B8"g&f÷ï'G@þD¾híŒðÈA6<ò†¶kÙÞ[¿÷A˜«£ÈLpá° TTô/¡ !Ò*!B‹Pȇ[­ †#¾IœU"À}c_ {Õƒ‹.\åÑGÉ5øÞ½p5ÕÉO_áPÌo)ë¤ÒñÓ)åCÈ#LJ“ ëè]‘LÄž\ò•8þ Ýb¬‹Ð&ão;¶8µny˜ÔÉÇ BÀ£[†Øò×Ío&y£ÏÛ^2Ýu¨a7¾h#¦.º.8~Òùãœq&4ÅáÛÞº®‘ÿ‘P%dƒȽCo ÇÔ!Ð[ÌW•71Ñýá_Ä<Ä §V*@äDÃU™NÍØäb……âR¸×PÑ-6xúá›É$3jm˜É]’j¦CÍ„Èiyò#d!‹ÙäZÙ¥6mtÑäe higE-5G=i¨YJÓBä`çI<ˆ¦×"z–W5²,{7‘ú.j,‘l5ÍXðίvw#o Ú¸ìm›-F‚ªuÈŽÝm^(^®–š!­Ô¿F­ò9j"òý®ŠÁjª»?(CYºÞgN¸>%¸Þ´Þa>q„& Æ+<üÿþÎøÀ|ØfÏ>8ÜXkX3ˆ:·û…uÒ`-l«`}òýÿ©@01wbé@D“ 0Åoõ WÂöÖ¼‹n´°J­G y¦fÞS’ë·^XŽn6­ÂßñˆtÎã(”L¼²‚[ÇGr9’ñ‹‹Ý^¸–ˆkS¦*ž·|ÀùK¢1·*¼”[Ó?¶Ÿ0_ö@ØaTݼ(¸X¹z·“R¶n¥ÐÙ¹oFûÉ︒?4—HLÅ̴˦aþi6\™†®QL òa"3Ê7 "|8¥WÂÕ…_,€DgÁyOVaŠSÁ($pºEÐ|·Oàk(\¾ôö9–ŠÄ¤_˜*Á5Ǿ´D00dct«;wt›¼fëßX¾³‡à8èî/iz„çžayŒë^Aø^´2;× Nàô^ô iÁND Äz?DHNf%£ˆ>ÈP C²k +>“,˜Ã „¿įãâõÙð:'¦î'Ôôvz=)ÞPU@UÀ"V}lp­à ½‡^øzëç˜]ëÇ<è1â F y{ˆÏ#z‰Þú½,žbâ˜ø+ä(õ³ ÆiŽt /O‘øx…ˆX<Á’kÞaPåá•»°­ ðµ ¸dl^.Ö $ËÞÂÒåËâÛ <]£Ô^6E­{·a]* ­hîZøû1^8† ·ü D+™}3'öXîQ£{»Ä\ ç-óÉãòaT à ¡iéöú>GrcãO‡ç§¸„ÌoK› ûÛ\Ì,ÅyN_ØÎ¸DÒò2 ˆùŸºK6CÈù!h-rÈ–<_%(fËÒ\ÊlZXC‚«¨péªRº¯#–jÑ)JÃ\dò>µª²À|ŠY˦\(¹6E—È"šÌ,Ò1ÙȪÝlç°…ckÜwK?K¶Ì>FÃÕöIÇ[žÝ=åÍgI•›ý0ü6y†u¨|')ï9½ >šÙÄâx„ËΗ{Ćâ{beÞÏbugWòå5賫ÄÙüNÔçWبH3£0˜ö™Nìpfg0ÐDd¨€úÍŸ„.µ>wöþ6$úñа¹ÍT]ˆI ôìæšÿ‰^v¶¯)®‰U‰ÍëWõ'ôÒ_¥hÕ‘Ô¦”¶00dcܬ;u››¼fëßd—ÑgÀ‰¯Éð9€<ÆrÈÀöz½„LÏÐ<ñààÓîxÊÇë2G›H* ì¢pôA8*%pTäàŠ@<P"ð<taÙ@àÉÅÃà|Îg©GÌèõT @×_"ïxy>GÔv0T,€¹ð Ä‚¼‚ÌC@)ìd ô·¡ ×èý°$ÃÜ\…>‚³/¸ó ^ ‘@°ª ‚"è `RÕ¨©˜XFz‹j Ñs\  j׸o¬)¿åjFõÔ^øGXSºîÞ4+údÄop®Š+ê‡o>jàëçµ ÀÔyá^ó±t2`ÀUò­šðö<ˆØU²5`ÄíÈÊÂÌ`š; ÐÙ…®Ñ§€®8ÆiÈÃv‚û'…fÌG#|‹~À¢ý€9cRìs…©9ezÛ%k›?Vc¬,Ý–ì§í–¯.Õ¥ožE-Ń[,» bÉv4XñüçS:íÏ”2Å{tÃøt×3¾±lg£]Kp„@Ÿ4˃cU÷ë<7ïòl~”S“#r†i~Û­îP ,ñcjÓZÚ©öÕòÒš+kï 01wbéÀšv+–PÑÌ¡@àÞk!±$­)ññZ¦ˆ8Šá-¿ê µDÓ.°‚FCUÅ+¾>켌¢„¬D™Û6‹›3S4Óû¤ˆôC,w¾)I«äÅ‹ô¨ºzÊ’ðµWe SÅýßC!G$$ÄHð- 0yÒù]®àÅ·‹Ã´"TŒAĉ öÈÙrtÃË/´¢ñL„ê—Û R¬ÃÇS” ~€T œa)¤¢)÷ÈOOõ•y—ÆËOï§ÃÐyÕ֠׎@`Žy³püT\ ý^:YžŠG,¯„ÄÊZ­jVœD00dcÜ­;u›œg»MK}/À…Éèö3¨NøëŽRxW¡,NÂ{|L2ê…M ê‡`pdraöš°ƒŽˆ B &¸|,4Xh‘ d :¢y>Bð%ø ûç-iNŽÞ€èøžˆÃàÌëT €ÄBþ°´dËËàôûÝ 0£Þ=óxóß&v¼}Õ2i Ü }x….¾#TF÷«ò¨Ö(S{…"žá^-€Qèa+Q·]Ê{ºëÎ# 4v®9avåÊ6èT…Dä_s›YT>^TQ©»k€; Öæ«¨ê7/†ÕñàSã<ùä0:ÿ+íϱnÎóŽÃŒlI‰YÁï8K öE«Û½h4[Ê;þh·q9í-‹DYSrü-Ýù[ä4~è³ý‘‹áNØý‘˜Õçe‰ð'°GŽùÕ„öœñ0's9lôö-}«Â,iÚ4ZÙß¶<àWuíçë/ܹâDѱ&“pDj£ˆÿ® ™Nñâ ^ŒÌq˜zÀ¡`=±j¸™L ÊÜ-UGk™‹8ù“¹”¸‹0ƒpRN&^¬¨ƒ¨_ƒAY¨(ÓÇ)ùÝÀбÃÇÞR‘úŒ>k¸ hƒ—!д01wbé)(Š+Œ¸hDöËÉûÿ)Ä)8]N°Žï!š¸Ø÷­»ãi—+ï ¥¼Ôû4þÒZ ú/ö ¢àÏkï£),Ð]JáÄb Q‰£Ã+ v«ˆ|§ŸÝ¹üܽ.:ä»¶&çdWT K ‘ …TõTrüš†ˆi ÒXk8]3“·àWhå8ÒÅØ£Xótí;OˆÞVÆ"¡-ÔQîú6QÉ*ĵ}$»Ïp>õ{4’‰È”Ÿˆö°Pk*­îïí q­K?â?Lo !^4B! 9–Š©$jÒªúÌ%}D00dcp­^]fçÆoÓV_)“‡à@Å{YÖ÷¨^·ä¢>g€¼‡€CÁìN‰ò9Læ†O•µƒÁˆA R@º~X˜aD)’ `#\>ƒP¢µ?g³NM>Üäù¿p4ìÁ§'£“Öu¾g羿"0Æ}¨ðÞl+¿r08Ûê"BÖ|ëÛ×tpËå:30£¼Ã*(òëú¯_.ì)1t(¿a¼vîÜ4zÖõG6׆â·]n|kZâ6Ö£Q U4o¯.¯vã¨@6DÇ@^r°uZÝßמGc´»>RZ/ª"#ÿ/Ðÿ?—dˆƒŽ@ññ2‰8»áb»ü’ê¸â‹‹t{?ëË×aÿf‹óñØœË WÅ…¤´´´Siç{Ý–øyí.ƒ‡>KÛøí{/ÇÕ;5΢ƒs©øêo¬ÇÙÕøðx#€áŽÑ—Jxoëô<÷Äsà01wbéÀ9¿ÈåÌ}F­|¦4ºç‹)J…- ºÖ‡Ãâv)¶;éwK5Šd«Â²ÛÚKÿÎW¤˜*ÿÚ€‘À¥ýsü²†4 }ÝLq{ª¿©=^q Yž* ™¸GŸO…~9ÔlD00dcL®:fçÆn£ÓV_+gÀyÓÛÖuÏ=qÏ<ó‡›äÐïYÙçCt¤:89)X§Ì ‡Ld°@\AI>BRм‚ycã0 á<‚%gÄô{1áÆ”ìè¡ÑFrýÀàÇòy!Áõ9=`@Œ>.½ïy´iDo»w¾tx1=ïyÍØb3ÌÍQOŸ0³LFeF»š0QQç]vrùŸc€õðœ ÔJŽ!“ ê;Üûß)1£ˆÇbìT …-Ãn­Ï6ó qãaÀ[ót /#1åÝí Ä\„µBÒZݹʵnïšœ„D„ç<ó²`ÉŸR´äiç|ñ¡i+koJsŽ}BVϳŠÊ¬ ÉŪÕàö[ìöbzû'm(Z¤:ÒO+„§¦zžûÊb'Ù=Òæ"̳qÇÙŽ9û#0°0JÇÚ醆wßo»À8ûžñ™SpQð½F¶æG¨ÝèØM™ª72`zuÀb*ë>¸ÿ.’¶ œ±Þ¹žÌ¥Ìµ>*||½€¿³ÕppËB†e*Œ°CC犊ˆ£¤§x9Q׿W#>÷â^„¾ŸÂŸç˜¼Œ0³­k5Ÿ]00dc¤®:fæï»i|årü X¯8¤ê/@u½Rvèô™ÉHùIÖz9t@ùž(!+ 4 +¤ŽœŠ4KЬ@ÃêáÉÉÉN£…‚|/À¦ßð;91öiÙõ7#S’zE;Sƒ¼¾ ×ÎîOcò æÔçw£žj#s¨Þ_.Øž_i„w†czFÜó¸öòùª|åŒ<èêgo5»’ŠMwdžå¬\4iŽeÙûjóËçÂP)Ê)vŠo{¸Ž¾õ ®w†_ÔoŸ.JoŽâ±f¶/‡½í`#ÖWùã‰å{ý™• ìºÂiöMÿX“Þ4<~ø~L. iÌiICöGÏ'cûçZš}žZš‡+>ûÅS±‰öWìš[\ ˜ñÑÅyÀ0D[üIÇì°°KE¿û²NZ>5Ú¼ñm‚}‘LfMPs#P" Aãéyì7 ]ÄVQs1.Q™ózðæG¤ÌàšàrÁ—P›6NÄ"˜¢˜pûÐÓO=ûËx’µ€01wb進X-HP¤dûäqÁéÁÐ+Ú L®Å‹Œt^$·EÙØ.2„'¨X‹ý òY¦ð‹«XйR1ºËÂZȸ€âÚÿ+ˆåF°~¯‹·‚Rï˜ßP$¼R)²bP/™ýM~_è¸~ûźØß¯%på·¥‰$`œ*–¢»Í üº\ö=í¤–c¤¾4m®uAs12.žLQƒPW‡$ž½æ~´M O+Ù ?>zýA^pO†o7tN…ñG¹ÀǬÑÐñýáZüÆ6 9Š ƒW<è*_Z¹;%aD00dcÔ¯:fçÆDÜõ±—ÑgÀƒ;ãžyçšNi9Ðæ“7Íï½ë<çyäànà_•øZ€³— x• "Ùàå…E)œ€9@¢}ÁÂи/ÀôW£à|Jttx~¢!O™ò)O†€˜ƒ­ÛXÁ[^÷=>v™|Úäk¡jì|Éçƒ/(Û=]Û°Ü<óç°¦cGsãà0 ×?Š:0åX$D  `‚|të1 ð=~f?ðp;>g'À÷€@€1êeànðŒ » h7¦5NÚß;]¸Ÿη¨˜x|Iˆ÷Œ®îB¸6$dõ—#Ÿáaç”A÷G¼ª5ì/¾ä=]»oƒw­h¨ÄšÂÛW¯8ay÷šŠëF=ž.…Þ°„×VŠê=E¯TZy¹St-§:žÈ°pV±kɯkû€Ešð H-b:YYˆ‹vKÇa*‡ñŠ"~^Ô§Öœn…ÉZU~×½yvÁ?‡õçd ?]˜YvbØ>ŸÁËö'´ìX0V^=¬æ'jZå^²Ò-„ ––¡qe-e¢ËIÚ_tøÁ_Ï­î¿yAïô&à@Žcýûo Çz¹×ây ú´‡EãP00dc\°:fæï»ž¶Y|…œ?£Ð#×<ÒsÏ<óƒÏ8xÏ ÷¼;ÞƒyIååÔ~‚r Rú6¡xš ÐÈQó91ÁI¡Ó¥(añˆºáá´ äQ‡ƒøC“tÂ>/Bø~G&œO‘Ñó)_tx&#GÎmn1ö(QN¹ó]û]uç;¯sÊbS³¹¬x ò>_#g½ >LÇ ºã/½}{KÈ1_á|籃L>°žíÑçžWДx…``8ÃÐó—Z7<Ñ@&%ï‡ß6Å“ƒîT£Grö/r§¡Mòº×ó@X÷A^-ΦÐF¾«=T׈޲²½hW~|ˆ ÀËk@´™s*á¹+Ö&1Ç‘]µxŠãd§‘UÜJãÃbâàˆ‹"Æ_|Š²Åœœq‹,ð®™0éÃ/ú¤®¬½‚^+ÛZì•ü™ZDÕmábÆ‘M“É=„l¶—=›N4^ Ê< °æ°mNEZÈ{v.YgÚXÑÉ`Uìt±yì]¹…›8l—µ.‰äqqvÃXä5iag1¼§=–'éÔàsªÙt¨Ó÷Qü_ÙÓž&á}ÅÙÝáf}›…¥€ÎùÐÔ]<ýcǸ4õ±¸"é»gv)˜6-ƒNpÿ ¾Í{ºBΔѱ·ñû«¦yÎÅÿzHVaéô”Cw]%H~›H¢´à*ͨÿñ¼˜¶sÚM=ËÖ•X¢€TÜD¯'‹°Uî?‡­; œ¤5㉿tÿOþä*OëÊYýpbSª]š‡÷»&Ö'-x„=ÙiËý8Z‰U¨r®Ž¢ ù’™e!laöÇ/vb¾—fop˜^°I"/_SáϬÌL§­Î[qŠ`2ýí|×Xÿ ŽÌgG3‡QÈ5(=iá€8¹/ƒï ¯á<É01wbé@¨¸G¬[J†F} îQ–Ûai’9,¦1ÿ g… ÛŠñÄË·á0:#ÅíQÔø”eö™xÈí*¡»]Þ«#­’Ëcœm•/éX÷BzƒäòÜU±™9oèâç]VÀÝs”ûPr˜ûv{Úë÷ûså…°N£IÎÔónå ÷Ê¢Ö†“Aª15Ü‘÷}×”ˆÖxd(I?iTicàò[±›Ž~-ÂFiS%Õï_UUcÝÂyÈCö0Ea$P-Kp°ÙFšMS\ –t£0Ïÿîô!9(ºMüÿÈ+¶øQ¹às}©”DD00dcø°:aswŒÝ‡¦K/Mc‡àDĽ"Âô—žyÁè3žmäóÁäÂ?D2AP{Dä+ȃ (Bh c CähârcÈŸ <žÝ¾°ÉGØ×¨¿â|pb3ËÖFñÔÔÝÝA\Ñòá½Úç­y²C.…=¼‹Æ îs-o^NOî²ùOãìNv+bD™øÀ«~ŒŠ@í‘ÆÅ'hŸ‚"š8]pŽ_ö'úÿýÆ'à÷É%åvÄ ¶@¶?°*ѱá"wš½>_ñÎ øë:à>hë+Gm l¯k^ òÙc4Xw‹›£íΖ]œiQ ?»þq1RèÕp^m^WdÅ“˜ZÞç‡kàžSžwG_ñß"ó:aKùB¶•rÕÃ}BADñgµ/lìëF,Ð¥d; ?BDûŽö9ŠŠžÏ&œbÏ (<D00dcT¯:fofqˆõ˜·ápü wµœÂózÞ´:W4;G¨>hw<Ýòéð=tBž x"!Ä$þM!dÃòö8Ã[3þ/>GGȆ=‡ƒÞFŽ>W22ã“Û\´33ê©Ã,Ã%™îä\³@üÂé—&<òÞ8¨Y£Ofhç1ÃûÇÄz“ …øªÈ…ÃæGå$6 ?:áËã«Kà#žQ ¸÷mïˆRº÷mŸ»”ÊoåNþ'*fêÂG&V©’›¢øCÍ’H,@í®\:-Ù-ÑeÇw Ý‘0öø—æ|>ä:QÑÂv覒"}ïØ¾ú‚ÌKIÿ$˜¯_?uÄ'±#‰}U~Ìè—Œ°ìø>L´Å”íAC˜ÁaÀõos­CLuž¡7Þ 0P¨lß岆ڃám' NÕÍ00dcÀ°:f绚i%½1äü ÚT<%ëŽyæPhYâùÆp]9ØAñ·@ðh˜™Í ÃìhD‡ÄoÅE‡×‚žˆ ‘•ìH&œ00¡ÀЄ+_°RÉõ~F`@v|OŽ¾Ý¯z Û_8öL{š7Ín~ì{S;Xöóµó®MÚ½ÂÎ3v2ÿ H©}€8Þð#š;á9ï•ó[…uŒš= Ëì*ss\6ïA3™ú+º×,„ð…{o-ûr9½Áho5Ø…>¶%v< ñµ‹Åç0(æ¼Ø&ܹÔep“yÀ H\×i8Gç°¥aslr& C²t 䇓#ˆÒêäh"‹v.ÌW9:Á¥®Ø6@:ÂÀ¯#š3S²ŒËö Ö)e-ì@š9äKXíàF¿¥Ô±Ä RdVˆ ÍrÕÕ.J5®FËÙ/‘2Ói Õž×8x,ö’‡@¹+pË1’/@þÅGSb—ÙÓ¯?>¸+”4YÔoëµüX§2ç9¿øæ4óuP®Ñ²„ì'æ5ìxÎ2Οa¹žta Œ„m& ZA4ñß!¦”01wbé€_¸æïÑ¢TèÇMKËh&ïçc”Q†»qµÒWYXõ<дÅüæ×7å´TˆóÊ˘‘ëe"º È"Ië@sÏiŒóøÓ~(¥ \ Kˆ ã%o¶ß¹2êÀyײFDÚ=&@~Ùè›IúC(V›*ÌÙæ¸½–¯‚žt†fhÜ-»n–§ùz?æ{÷¶*q; µ¯LB‘ý_Ë•±úÞ:úB±$bJšÞR@ψL够8öüs7Ì>¸UâFqýˆvU¢VH f5uŒO…Ì6¨A©Pdw¾¨ýœh?ɉ®<¢hÉ£‹v@D00dcȰ:fçÆn£ÚF^™<_*Âô“ªNyåuÇ,AÓ°¾o{Ás°žsÅôrðr¦©ØšÂ#Èà¶kG4èIÀTð r Aü šC™¡ÙË> Ðöx:ÀÄw<¾s&Å·#ЧywÈ&½ë¯vóuÉÖ1Æ5¨Æ9¶|y×]uÆt)Ð&¾P‡¿\ó!KC¿ó\ôb3&b…«HôÊ𣮽ç„D¸ÅÓ+»®]¼‘¬/25¶ê±w.·›—#&¼ë©ŽÂ¶j7rëà×QGjÖ÷$Ãø 7k¯wAãÆ[Ù쫞'npû;ÏŸf}Âo çÜìÎ;b{wÓG7¸ÁjÅ+µß9&ðˆðÕ¿ €ÎVÈg¡Gp##C±âÓϰGÿÉÏ´ýþÌùâ-JÝ‚Ù6Ñn¸Åhi۔ظÞ-¢2øÿœ(î''|À\-‹~ ä»bqp­ø×ZÉ¿³IŒ—«†U™œÈÇûUÒæVõò¬ â®2¢ÖŽórëqJ&–>XˆÌ¤Ö{ˆeš3=ÃñŠQÛ"&¡Æ%ÁáªH‰!Ôzö§yÅ׎”`01wbé@¹/L„3.HoÖÿÛÔè·^­‡ÏZP1ÆÊþ3Ÿ†Ý ï4¶‚VAÕq3B¾æbee'*Ž8«Ö:ΉÇUCFN‡JѼT½Âÿ }Fèì•¥‡†8òÕ"I¦EºXÄ@´Wé‘Õžj@C+À´ßsAôá)¦”@”= uw9‘u€”@+°·­îƒ–ÊgÒÒK ⥹!(LÖ\xˆ×Ù@’OàxÞ÷™™‘´iu;M?\'‡·xHþ?¥˜‡Ä¢ Zà ñ,#Œb@>GD1ð)„G>£ÃÉú4ø>|n0 àrŒ‹¡v¸ø§ ¾¡íªcÔ.Úw–ðªzÞeTüÌ»Î{,+œ«ìÊè(,ùû§)ƒ@ì»•Š¢rj•í®~h‹—3Ê®æÃÒéE=Á4-ËÉ×ç\ùŸ2J©ln…ÌgýLâüC: ¥ánqáǘӀKÿZsß|>@ÌkÍk^Ý–Æ;asÁo^ :­¬œîfRw+[q;#ÓØWc£³û0¦B×+=óßiûJJ˜|CDzùs73_‹þÎ/‹H˜r½…hL+¦.D´o‡óÝÍÁXaOâ鿌ɫ‚‚Q¤zu€s'Ö3+}™mÌœÀ˯«ä ,WæXšy˜õë!–6õ*iã¯y„00dcL¯:ÝÍãs{z!,ñTœ¿f<ÂóÔ')œÆu½so!|¾PøgwÍ <Þ}‰ð<”ôtÌà¤Ó@Òb N@p :$pú¸‡ìMå(?#æÀô|@HrwžO‘ôÀªÊÌ~^}Î ·+¡ø|Ê¡ÊÁtÎéXü>‡Ë!YôZõ3Ÿ\gfgª]-Å]sJ„×ê3Ðü‘zÐ+œº|ø×Ú\‚Ì¿ó>P³q0½ŸŸõf2qŠËõq|I£.5÷ß¶*òÚ¶ó»¬Z¯Ÿ×~áÊÅãŠÔg}’Bµ@°ô– Ý™1UWì0NƒÝ‘¬á8~ØJú Rv‚sý;WjÁJ¹:ùûŠÒùz'ƒú (uÇg¼¬ÌYñ~}Ç*ý®ñÇ dùð0£æºÇñ ¾u1ygx×8áÃ>•@#ó01wbé€Ô„iúî"'×°ÆA¸ñÞU†0`^u÷4¥âh”¿Æ¼^#®5c×gÁ>üš-Š«<‹A2Œ4}ÛµDzø9'†_ð[¹Fbë’<ÁlÞ¼@/s¥Px”‘?øøòÀH0É£ì ‹iŸ˜x¨µòV2õëXñ;U¥¦×ˆ*Ì|Ï…4l,1$=\\ÃúM°wìUAËø’1<æW O鹋Œ‚!¼O¡hôV<Ô†–ðQÍTÚ•H“ÓÊšP˜=c¨}:gü:I?çèèŽm¾pd¢ý7D00dcX¯:fîoœÏŠ[ðNSs¸N–s Ö‡8sÎÀõçë; å'G·Á/(“Éx%  …Ç“x (™-! )Å`O‰è_ôSä~€‡šàb.¸SqŒb¾dù¦08Œþî¹;x÷Í1Ë´W›ËÎ0‹µNBçG¼%âzŽóÍÆül˜‘P‹uÙGÓf8·-M•ç‘"펓ƒÕn©¶'z<£¡k ~)žk·—2G^Ûs©Dz¾Ößjžà¶$Gg°îþ¯wÛÍÙîÉ»?+ü¦¶Uí¨cF÷Ž\wxâTBek¨ Ò{{’”áÐD6ÊO¥iUÝå|›ý¼>ˆÀ ë)•°~ÏŽÊçý›áÔ"Y`á-˜ šƒ0¿1,¼,íÙ¤)¡ñŠÀà |Lã~§×0Ú Oq=01wbéÀ†µ¬Òèj2üCmÚø/-¼‹}zøe7Š«´|½/qp0 ûåÂê/jî°á¿~Ř½C­©åG.#—K93ùéõ9ųÙ#›>Y´@ZÝ^/œYºÔ.U;üµP‰â\j@Ê5“ø2÷¢O[L&+L =MÅúÚPbžÊ!¡½~œãiÑÆ 8W»×Õ …U@£ÃˆßôξmÝ+‰]aå!™§¼*wú6$ ˜Éå–ÉsƒÂÐbPËF/°žššŽ¿$»‡Ea9ž …Ú@ªBIúÉ/Ï&D00dcä¯:gÜÞg«1|ìrüšª=¤ëži9祜ó^Âù½…õ#ØPîù{˜…À•à —žoÀÕ+ÓLHÀØq@ø>HA1:(dA‰ÉÉñ51§2ù~x~P)A‡"'Øò''ƒ‹DOë}@x`»2£nUœ…k+ÕÑÄWàæï3·F+¡m§d¸]»Vº ù£.æTopgeVßm…¡•PùÝ2Rø—þÍhkíßÝÑ"ëâw|°õ]*{ûRèÇŒ×æHör&±ëŒVœíAçüžGf›ºRØ…ÓMªô!Ì(ÌP4<½1B‰ÿàrñ1ô‰O Aƒâœe2 ÌT”7QÚ ‰æŠÆõáÈ< .£Vî´ß^qÍä„ênN.ú¢vãåE{N¯¯:ïZU0D00dc”¯:m‰Ænî“âÏl“‡àJÑî˜ÎyëzLëÀoyÉ`õžhv—ÙÌîÓán’,׃“¢ŽŸ"œ¸ppˆP9:<Ü  ñ<Ÿ1ë?&íÁÁÉNð(ŠFæÔÏ—ˆù¬z4îxÀ]û\`v¦6êy¹|nǹ‘æë®î}FŽ4^1r5ˆ°ÞBŠ(ê5òMì(øk¶À¥å·7‹öÜ8oÏ—¢®Ú1TëúŶxÚŠ ÛuñàomânA ¸·µ¨Ø¨çz7B£Ö¢‘“ÍqÝøg¸$?ü·Iàq^Ocç‹·Ìxï\0[’£™\Éë])Y²žNô)ö”­IÏàˆÏöFài¼éD§tFgÄXbÀÞ¬Ë/¼Ç¤¯¦z÷}Z„÷†üÒ£-Ñc‚£ªoÙèýþÉyùŒ†Ý£Wÿ)¯ `Vó.§ þeÅ4iÿV³3Ô̤(\½Ç¼„¹“ _(ïf¸,}#åùÔÿ££ž…¬00dc´¯:ngÆo/,ž©9~ë ÏÂwRsÏPzã/wÌðÎ÷{çòÃäüCä•N,:Q¹ Cˆ‚°å€’J‡ÌÇ$!iò°<š}O'ÁgÄø<ì̈ñž5a¼î¦5Ûy¾wöàg,|ÚíYünÞuïQ—Íu3Ä>÷^§ ©˜R×¹£šÇ‘­ÕÝãh’޾yMž]qABœmÊÅÎùg.xçvðž¼Öåó¶¾£ªŽÕ)霾µ”ŠR£Fê4nîñ„óÆÕ§8ö<ºÜï'5© Ì\0D®ãq©ˆ5ŠÕa „‘/Šå…Œ[f§‘& ÅQ¯Ò æÀà—£¥ç »c\xã#™HqeoØÍÙ$4B\ÛdX°‡Z9E+F%ηV-î–*b¿eÂÆ&—¬pÒ\ŵP9T8v25¶M¢Vö±±‘g²é€‡ƒÂʇ'R¼ùø·‹ÔÁá[wC$Ó /±~½>¼›-÷³¨îx ®Rû‚8bÞÁíü@±¯‰ÊP01wb醥°2<·ý|½5N†×L<;’]ˆL#½ÐަÝmæÅ|ùÉÕ=ÌWä³0»‰\·4-~.À4 Á™q+:A;˳ÿc©ZËEßYî× É'¯j%ÚBáÉfIV9rP˜Ýé峩ØûDK×`xл¦Žƒ‹ZÚ¼f£v[k75G†b6§y£mÀ»álÓ"2èrbb ·|¤ÛùßÖåMÝÏ€­”2¾eTé–š èi8B‹Ð^e¸g[ô@– C¹aá,-Úw¢¥4Ì49žÈiS´©’pUzÃB$D00dcЯ:fçÆoOu’ú%áø´^÷®yçžyçšNwç¾o{ç ¬ÅõC³;1õ:!èù8 aNlP¥ Ãøù+Bò„àëžHö°°@ôtr|O‰Ì뛀|B˜G‘0@10µ®¼Û]ãÆï]Ú§Ç{ŒG·75×TëŸ5NÑÆ`Â6ºèõFÆnŒÂ5ÕcÃ…ós¶=pÑY†FÖ£ çë† ]Ë€žlW;S uóËjmåeÀλ½êü]kõN·Ä^kÇ)‹&‹¢æ­níãµ4xêµÔÅð1Õßà`c/x¦üÿ©š÷‹³I Åš§F+[v´. ‚¬;5díÇmœW(1ªDVy,ÆMbœWÙ,Ùv›1á—Fdò3Ñ£W8C\/”Æ?äE‰—IÔ@(Iÿ Q`3 £X£]EŠŒÚ‹J5NF4‡`¦Ù=žÍNÛsk x˜qÏs‚ ql]kvíÂ¥@ZÃ]bÄäWiv,jt—†Ž-gE„Xé¢ýÈ–Ësú{ÿΌ¾÷±ºvγ6\“þI2 ž‹´ÎŸ6ï{q³æP[ÂtTÜlU`ØÑ¯ˆ$q¼/ékâufm¬JºÒ¸É01wbé’Fê¢UžbÚ˜iDHÓŽXHÊÇd+G0­Ò"àbž‚˜FQk6)'¢” »Øgt EÏEƒá± ¥’  v^ò» §?„÷“ä¥8¢ ÂíUàðâ~£ß÷é&ÚÀ¤Ù3Ù¹G¨0 zKHÔ…n9ƒ)Âí~l# ˆ8"Šd}lŸˆìã·íZIf)-±]bròø •Dˆ4?"‰l 9->ßCàð{‰n$÷™‚:zä•‘eÉïQßÇô`É2B'r!oT S+¶ÙpŽ1r¤‰D00dc”¯:nnq›Sê#,zX¯™ø³{„瞸çCšNyæ“‚ù½ó¸[ç{¾ZiÈé§'…à…x²ÞC $ëg2 ¥g`q%æÛ§…0ùžOÐq£@úA ¬*9yÜ>@9äñ[¹Q»R ÆyÝõÎV3®åsŽ=¼E–g¢NrÊ¿9“âk?g2åß\¨YcšîOÖJÌ>'Çs첨të¬þXÿ™Oö ß Ìsç[æh*†‡ÑÂë/þVõúâëâÛí_³jˆ§ YÃî•û¬ãI¿ •óka=¢1+bJö ‘52v”šFÑ(Æb g‘‡2jÔMƒŽ¨]–ŒÖue¬Ã3LqÑ%›e—<B+âÉTh„G¢@\E”ãœBv!X@j¤pC°4Õ•iîVÊL¹±gSfC C8ެ[ÈÄËØO^Ú0QžA)³šv;AßtZkOÚ… ÕKZ|Înœáâ›ís¦ÙÒ€aG!ó1·8î<,$L3Nòú’Æš00dc¬®:nni™»¿ É/½?W7˜Îay…çži:K×ñžoyëzG°¡ÊO"rtP9‰L=„ œP`ÀŸs4aådDú8†R”œÜ fÄäìÅäòz>‡ `m¡Ø(Ô¼E Èå$áÜ\ µi\ª¤g˜ÂЯÊÖŽ*…ÂÇ2r9ºw•"Ëm5O[ðÌËØ]»ë{ÖÝ<è ‰¬Ð]gWÇ?æsòÏÝÌqÿ&2??Öœèùƒ‘ óÿ,éüpëX>(¬úÃÃXcœ²ÊaÅÖšùuíüq½‹úA^„hô0öÔ¯“öõYÿwð¯&Äñ¹7ï¤9å9ú¡ÿEù?úS•‰Z¹XèlVœMðüŽ_°GkU–ýŠ$ú5‰VQ¸ø?k üsN{Kï±yJwiL‹²4EEµÅ¤*õQ8Ãbe¡ñb!‡‹OžìºZÚRnȾïÖ{šþVkðöPÍßÅ´æ¾[—3ûuoÜ6½?¿oUçN†ß:x9:{ôçGŽ÷õvq[×JK}`0ù%Ì!¿y¤~01wbéâÀ`héag™‰#KZ,sËÖ¼f{nóxZ•¹a115ä)ùMÿã€Üø\žâOà cßPC&LgWÕ'üQ#BЖ^K¨ŠÿsPøøÑw0ÈÈ/ÖEY ·ç!H¨¤õ]‘_ÏýÛ(Sbß+Ÿ(¡ÀJæ]‚—ã"·ì-’Æ÷˜— Š"‡1íWH94¹Î,]]ÂË#ÂÆ9EýÏUþÿ·¾ mzQ=AÎTá-„/~RúghoÈÙòjãÇùèûƒói›Naïj“±U.‚dží¤ôÿ»dоÄWD00dc¼¯ä³­ÌÝã ÓÓcï®~®m¦x}ò=»Ø_7½ä˜œgC°|›ç¤)H|€AÈDxåôvX*2H|Ÿ¡W›°­ñž3Æ}O'³Åì7®9ç΢øûãï¾(¢ˆêc‡ÈiK¤o­ZÛ}zcœ®S<»Àiÿÿ<Îéƒ'ž˜´ÌõŠ`Ê·»Vi£¾ƒ»•Ó‡¯\üÌîK¥ÞZ®W¤u5þP¹Î¥ñg>_?¹=cõeªÑøýsìÄwÅ þ| w<ÈÇ2‰…’ê}Å?C•×óïÿÿÏòR÷­ ôý6½CE»ŒS÷„w3Æ÷X¼­çµ¹ï•~õç0jy¿¯ÇÙ6•iÆ;Õ¹â4ya£N#:ÀhÐýš¤´ËDî9çºa§3ßãFN.3Æ„™ÆÙÂJDžGÅj•¾LòLŒ×±Qø¥èGúÿ6ÙœnÛ]b¸b,Úùœmø%Ó¼Û‘·z!rž?@ôzBcSqŒ‘-è`ùÃ-JV„ ú’ ÑÿAÊ·9ž™çùC~Švæy¬:°¬ð䆋ƒcݦf£«µ„iTegŒ&>ç©£Uæ‘D00dcü®>Ìã8ÍééEƒ‰GOÀy¢xW¨^a:…ê½æVß?¿y&÷c½×—}šÙÅh ?cŠv:% Ê!#óB,Â4YÁ Ò‡Ðû@PFI'È‚ž iàyÔ>E!öÜé  ìÀ(>ø)mDË>]+gí §ÒG¹*¡v£t:àáÆTá\ôÇÍÆn•lîRéùfsû¥@ÎÐÿXrÑXh"«Z˜»cO—戳û-,Ï™¸¬ã:õ´YÏe¿Fèß”süýåsXZzÖóÔ+Vç™ÿ õˆ°^Þc%Å‘ÇeÌ=\9ƒtߎaóè»0\÷+ÑY’Œ1aÅÕ|ãfWpÝÔ'‘1²¶6J)Œï⵬Dò&KŠ˜[.'å•¢K‡W÷Dò&¼·-/qbð^ ÄȰ®š%‡-<)ˆüN8BÂC"¿,̇KKì»)íiK°šÃK4tk} W¶kì`b°±ÚãU¶t–]¸†,,¹Âu,ˆ ÈÙŒ.YÚÇBÛ||{9: …ÂÊõŽËÄ®h1lN7 ×Κø{áôø;^PŸOc×:UgO„?ìq|!‹gJ…P ¼ßÕßþã_ há îÉ“L¦–e'Ð7ˆ¶±µ01wbé€VÛuÒævóÏ¢ÏÙIíæW€êk¢ü=õäÒ+ŠŽ#=w”Ôú¿\#b¿‹óÓ>Õ‹‹-aòñïÓ†L÷«pF-±'8)\å•ÞÛl¯@:]¼:ÁI—œÒ ÿD0™w ^þV]|¯É|×?[ÎþPd´Y1[Ç/€£² 'Ú} ñuëUýãËS‡ún˜mË\ý_¢œÈ#˜â]s$QBøQÖ},N5õï8rhuyÛÎPs®™üåœ$Ÿˆ>¸‚Q&æú)2)ø­n“=h."'¾ï´¶Í †HYD00dc¯³­ÌÝã8ÍóÉe•IEütO"C’žÇ¸…ó|#Át8ÎÁ'wÔ{ƒÛ‡|€ÕiÀPäörUZ"òB'<ÂÀÑè&K͵<¿-áñ|…ó|ß'G—Ûò8Š DÁ2›æù¾@@A¢""‡Ì‡z/¾>øû⊠*¹­-²©”)töÖ눦9˜|P.ˆí?þ±¡“šc"ÞÍPõ¹X¹^Â-q£JÙæ/Ê,ªâB|ûâ6V2÷-í»âeïˆÖÍñ÷ËÛkŽŒhü[óË<Ë‹-~>&{îqEltåÊ?Í΄¯ÊÕœÓóªe‘‘ÿÈ¿.­·¯Ô|ZrØ:÷ÿ‡FniÂæ€ã@if߃gm¼}kpû±”vdá0^ÆtcÜÛÁÏ.cŽhKÖà«ÐyQöH•¢®V7Ÿf\ùàZý5ˆÁ §6·[·0—¿N¥ÖV¸ïi|ŒY`4di Ÿ9f|IN9X¾Ëùîgš¦¼;Ü[ýøžû=§þÞÙHáo²È´¬´ò¾N?7LY¥ž9FAOoàB±Ò ÄYÖØÂö$ :U5§3XëÖà‰"TQ‚ Ä܇Òô FÌ“xbûHI»\:ÌŽfÅ#¸‹ÕD©öåiý&­ÛÞÂå–O?Ë=úÝgX00dc¼®9xÒîçÆ#Ò"Ë'(ü¨žô—šNxÌ;·ë§F~Ìóä9΢<Ûó^Ž@ä‚z ¨:hT)ò „0@€”Ò mô%z S’[ð¶üPâû~˜¡O†‘x9y }¿K§ÈÃî@:ÀT ûàP€)˨äLøUýs#ù?ð= ÒÐî i‡!mŽ ©Ì˜9us–Òéöf9ÑD¹ÑY•t·:…Ž, pÊí§=Gš@ú¡ÑñÑóp¾9c‹½+rj_]gø/üËû,€ 3ëîð‡ôÆV˜ÿÙú¶ï=Ë´Æ}À1ÄAŠ‹ª2S¹¼ì1B𥤠›ì.ô¹Ø®tÚž-oø\ë^ï¹€«cœÑ‚þ| 01wbé@AåT)ö¤T3)háuãIïnÿá‡wa›!1/•Wùlÿýñö"šØ÷O~è8g[büCæAi†&<ÿÑ¿\_ÿÎýCÿ'n‡F²œPf‘’öÛ"y~•)Ùı3TA|˱¿<Ó#“J$z€†nJ¼ÿ,ß•7À+»‰Sq»$R‰ÜË¢NÒö^’?ÑúšÜHc¿ö s©GcO%µÎ¼è:ýNCÀ~"ìåÞñàïåü®‡‡ðë#õxû‚¦~Ÿ[ô01wbéÀzƒìïdql1äÀ}×'±’\ùœ'Ì–nì úx&Š]"^þû°ŠØù°Æãú¦ÉŠ(ð_‹Ž<ž•#>Gå×[—Æ’°þç9Ãícºî³µÄÁ®«é½±¿ B† _¢qs'ùz·<|¥cNl˜;Skµ ù½F°¹þ]û)–!ò%ÍŽ}7õV5þÁñLJÇÅÌ-§ñ[͉ÙÃo¡‰ºá«fp_T5áÜ”½œ;”´¼éž%ØÀŸÈQœœyB4­;MRU@'žóULS%;ܪëCD00dcÀ®(®òîé˜^ž›ÅãzpOÀ‹àú 94öe¼ÛÙ›‡%õ¬†„óÎü ”ùQàË@*B ؘP‡‰P[éÁF@Dlôl„Œ©À_5!NΑÑè²—Íót§²œ§rÆÆÆÅQH€šààÒ—Hß–wnóÓjáêS ´SšÇiÿávèSrç ´Á¹ bÒáìʘν–4Ë!]Ë&•[®lÎ[òåžï- çpW4U.rÞø§±ñ]Ê¡¢¡t!d³ý̳Yc;¢ÈËŸŸèž¬ùsÙ—… 8»âáóãBª¬h÷ü[}ÊÁtü¢ÝO¾Û¯¼v3' JßÀ3c§¼ëp,nÏ_'+ åS¼€i\JÖ6œ{0ýiõ»Qc…l= ÃV1û5ö0£>¢pzìe3ßzÖ†½bàZ–$kžÿCr³Ç¡1ãGNyoÌ ÜLU¿KwS “4"í[ü;ØiネÈL(ÓÄ 2*Ï™I&æ\LOP™T(ïšä*áÝÃØ]°¸û<&p`.p½>Žà0ƒœ01wbéô§Õr–ÔªÜ=a™_ZõE!æŒûºòj‹$Ôÿwü÷÷_¯×M4Ü÷õ@ûݳ€)]É[ÝB~•s~#N5>ýõü?rË$Wœi÷„ï~…“bÓ|œƒ›‰ HùEIÆ2#YÔûײ{ƵòÐûGz‹ðL\ÕTƒçÙþiãヰØŠ‡4*"IÛö?1â…Ü6*¿íÐÍñ2—O/%J]Ds+Ϥ.¦O÷<$TmÇ_ýñ$/ÍIN!3'œieæ¡×p(ìüo0wën-¹XúÏlG–V¶-cB«þED00dcÔ®0Gw8Íãs§¦Å¼oN ø±!äNO¡ð<[z—×ßœ‚›ÁiÐÆýo<àÒtCp@z'†¡¾GI!¢`˜Ä+Ë ‘ÁVàž€ì³†TѼ2éLæQòz,á—L¼2éN Êw,lllQEƒ`B4¸äÉ¥.‘¼*<¯L„ºS…ܧÿð´¯—¦m@»LeT*¶–Ui€»t¦C´³¸¶ÁÍÕ-ò³Žmº¹ .YeÌ­?å¥oLrî~¡“M¢ã¯õ†°èÿ­a2u^º®eJÿQÑ'ü€ ²þ¾w>4Aÿ?Ï×ès¢}HЇi¡î俵ÿ‹WQ}SàúñcoÁ§ˆßnÎÝ,.zÝ™+át¥õÜ Z/'ŠóCvWÉÈáHæÚS„ãu`œõÙ? æÕ+ÚcGTˆã´‹²Sþ+ ^ÐD£ñvb©>"SXá^’Èv—LfGž9Eƒ°qÏ?`ùûÉ~Õ>tÚЮƒ-…¥%¦-!ÅÙ(a>{tUìî’Ò/lÆç8DõÄüE–H"v9ÌyÁÄ/`½ :ñôQÌMs¢g:Žý‚ó©¾<ëN¶rë'ÿ yúÙìË*ˆ†Sÿ¾F΀00dcœ°:fä“*dÏR%îž3?Œëz[Ï<óÏ<óÎðvÍïxf*¹CyãÁÀdò×–´†ü¬ÃÙàYñb³ðz;ŒRÏ¡Ÿx•¤eâù4öý_ÌŒ>çxŒ€hB"ÚfÞy^L-·GÊŽ_Z‰ŠaµÛ0ùÚ„[ fmìÅH/÷ÎÙÌ Ë¯mäç<驆F»µf¶ËßþA;ÍéË‹¨¡NT *¹“”Q0£1E)¢Vn,X…øÊ»*2¦²µ]®ÃFбU·Å³‹G\7ó/ÅýR6Œæ×e×¶þý|Ü»[Â|å×ýˇ·ÊÅYŠ6ö÷¯uWfZ¢¬£»”»‰n.¿­VŸ¹ªØXø¬¹lÂëêuÖŠèmÕ\m`•{]k¶­m­hÖÈ¢ëY§5¿ž9uºìØ'TÂq¬áXªdìX#vH]lÖ›2e\…É'.E”ÉÍภ켟äJr[€}c§þ÷ ¿Zƒepâ5ûÜÚLêFb¼¾¬ÞæÆòïÿþk´kå†hÒîH¥à=Bü‡Ílk6¦x¤9—9³p-1™kÂCÈrdŒ³“,É÷âL q­C•š.È 3Ôõ—ïr0‚¼ È÷ÃÀÙét?LvPšlgå®àPŒÁ.kjÆ.Ê?÷eŒl#`H'Ï P,“o™ðaià6H*@¬LS‘€&Ÿj`1dBË Jå¥qØîÇ\cd\‡È¶€%¤–Ipº–)ƒ.ÍŠ»WV-“°²Ë$µÂÏËLžDô\q`DS`À“6rû¢h6Rvpr$ÿ¶ÏÃÛvØÅÕ’ö‹? m$GÛ®5õí Rц†”>ÈŒ(¹@…ÐyµhµÄ5ÀÒ .§‘ zq!\ˆvþò ;+:Q tŸ“ذòU0ö¯ÏðLZ¸ÿjO <*é›ÑSàÏãÛçú€ÀGfÓ[>a0ü [„Òqd£$–}ÅΦ,"ŸÔp™ÓÂ>M„ÛãŽsŽJ+ÒqˆÑœÍ' 8¼qœÌaôâΘaNfRœUqÎïLx²3XçqX¦œ0Jñ„øºçKõ˜Äï¦p'xЊu¸ñ€¬f–:Wz1§Ššó˜Íçf´G4N@˜köjþªÇŸ¶‚8ÀC{{oJEuîx êdž8lÌ·¨i)^/ 01wbé€"«¹ï¾½®ð»+iÛ×.åDòøÿa”ãÊÖÇEt1–'äõQ‹½×5!wýßpï›"¢E¼âÿÑ'ÀДá5rÉ!b?ò]OÑ+¾Ž¬÷G´l@à‰4p5N“óšµb9ÒÌð=Û‡ô(Ú’Oß9<;Ÿ°~¬3_ûV%ÕE¦/ùuLÔŒù›" L†·Q–}åòØxt¾ œöêæýÅÝ©~èõÁ¡YçÓåÅdõËyy]õï®COå/˜™ XƒÉú´ª›% Wšïaă°õa\u@'ž6¸Q4»í$`Ÿè2D00dc„ª:f䬒d“3â²ùYxxÜ™?Æ…çžayçžyç®9Þ‚ù¾2‹1VX¬¡Ýòp<µå¯G>90ùüY}ŽÃáT³ç3ø:¬5]"ÙÝ«Î!óŽ? ú#Dü8vw€#͘ØÀ µ±By­ðÕ©•—L5ÆälíMVæÅ{®Í›^jÚòÓ/÷u·Nqu<å¶îòéf6m¦6éÚ½×5ræZÄf[R6=ð‡,µ¹Zs-ڑؤ—©s¦8¼Å#-fÎÏ­ò²Ebfk‡ÓKÖßxJ×·ƒ–­ßóf½éuè ¹®¼Àùœ¸+CímÆ©‘7»Ê½Ì‘V[¹oˆ[Ç:µã¾k­jîS”©çMÙu˜*Dó\©-¹ŠUÖyd­­´Ê˺»[HJîÉr½Åóf§¶¶«ÞUÈ^Çc‚ûê7ÎýqBèçýO|¬c¾$<4ˆ‚»%r%w£H7D$(cHÚ*ª,-+F€ª´hœñÿ ¡KG&•¼ˆÕÛ¶¶#H­" jA©œ ÉùQ¶£I˜[xÖ§L\ jà  Äx'9îÌ]JÌ¿Mq§Ghuø¬)¢LÅI“œ’ÖšC¨Ù\í"Eô‘TDÊ­ôY#eXˆèŠ­ªŽ6r\_!ÿç_~a: h’i*0A‡ñQ>ó7ÔÚB”ÿŽ1Ç›Ìù¢>üháGƸüŠÞG÷—Éri…‡aî³íl¤¯Î+(Ø ÛìñZË *—´$àN|“‚aˆK‚ž ›Ÿ|'&% u‡ÈÑñ«G.F6›¦é©¾oq½éÃàï›ñÀð`„½zj[àÍ`¹o/,ßšËGšÌ]lîò01wbéÀÛ«-®ç¨h{'] V D/ðÿØß6wi<ÐweÒ&Ù¸ÈÜ™b-`;8!xõ´¾­ð¶ø;$Žäw–Uãæ±ß/˜zÈÁö! ü"hò&JFf÷ïF$ §gÚºCq)ü¼ÍU.õÃð’%ÛA–èLÿÔñ>µÈÏÖQßjýÞ_ùÑ8»}Sïâç—QÚ%=†  ™}@ý9&3éÊÁ‘K¿åxÏœ´5Õòç[zy>YÞ"â¡ÿ =Ƈ$ÎÒ;ühŸ‹ãÅãÏmÈoÓSg–vÃòŠ;Gc¢6é²õD00dc”§:f䬒dßI2+/“'ÀÇÄÝçžazãžyçžyã÷Íñ”YŠ®E-'–¼µ „7㓟MèØ¦ÇÌú7ÈA‹%VJ—>äñ ÷ÍüMøü~01ψr"œà @U@÷°…²‘[~øWpÿwN¯±öÂõ·¸ô-…ªöx˓LJ¡þÝÂ;Ž  #q`€÷HòQö¤_‡È¿8ñ³êÂ```g¬Ÿ† {¼DgdK¡»»vÈ÷¥Þ6“VÕ«)‘:ZçzÙ,s Þ°:¢7Ò§?~‘¡/ÏîìÖ&Á˜Ñ­EúÊ+ÏS^Rlûĵ÷§Õ,mÙ ­¿‡Æ»¼#ºR„gkÌ}NçÚ†ÿÖûÓ‚=èc><¢ßTW6ô¡vÛîâ‘­Ž>ÇÛ³çfþØtn@èiiÙ§1=Sв$a÷Μpyqç°ü ÿ0ÒóÐç=|}¢ÿ?_}ù;âa‰m¼Ÿ” E)ÕHRÀÐ»Š½~VÈЪ´ DQ¶?F’ƒätiaÀSø ­dfòI4Ògè¾êÛÀÔÈ‹Lƒ ò!"wd]x0çH`Ts?A†ÑL 4&šBalèêëå}(=+EhÑUb"À¤ #8èYÏB ¶yJýÍ©ü?`ÿ’`É9> €“•óyûÿçb”\ü¿¯2“çÿ±yv¯È.?$N0a{Íæ  iÂU@%]Q\V,ƒÍ„°õðJì?½¦à{Ö*¹‹“ 0nqà"$EWãL$ð´ÀÅÂz`Z"ú>Ç­ìG“±6õ¢çÁ–<ýüœhgcläy…PÍI´00dcü§:fä“%d“3Ó…u`áã2äøžn—žyçžyçšNyçŒó{ÞŠ®ª½g—C'¢½àçÇ&ϧNS_||ÏœÏàlY*²T͸aj]!<õÜ>r÷Íö½ƒ¾qúto8€€€3ù­¼çꦭÝmËc»òÞUÓuÕ¹Ýf XÚýØÕÖíßçÍ83wÌ^ñ1tƺf&&6Öþ¨ÏÃÞÕ´ºêÒŠù‹YnœœœÕišÖVW­0»k]7V Y"ñÊFÙŠo.©¤Ì•ã6[æZ½zzq³f!›¦ª\¶óœ ¼ýRå|×>g¡T"É[:k-$ß uÙzììɱ3µªÄ.9µl]Ÿ…àU›¯!Å~þÅ+lÄe͓ľþï-ºÏiêÝUWN;n­ØŽ^¹iÏtÁ-sžša*Ûf¦fŸCѰÓÓ0tÓðñ=|÷ôÎQCOO<çŽOž`@ñ‚çׯdô{¥üØ‘dbp³¥ý剨9iÚ BÒ³ää¢îâ(^ È ¥V;š4ŠD*¡Ut‰ 4—íF‘³HŽÑ[6hè…² 9ÐSò•Ôh¿+oOÏ&,úŠ…AœæçI5!'ZÔÉ®~œ}5¨?‹(£Œ’di?:…³´L6ö¸ @Ñ ¤DU©hª¥#½ËK-»Ü[­pº ~ÁäÑÐÊP~@Ëü &•ŸÍOÄO¾í]¯±NÈ;WŽ?þv'úó>Ž'ß`è?NyRGün„O÷â™ÌÊO¦ÉqLð|æµÝ‘ßÙæ|½ýÕûáµ$žO"cÊOqäœݦÛ'¨q£2 ×DF Ý4?òf@õKâTs—ÀŒ¶"›/2râ0ã_TiÖCLÄ9•uyrÍ þaÂðŽ°ŸðEm´Á…HstPÆ~Pn-Ñߊ!1ˆÓ“Ÿo@¡e~ãg„+’…bñ-±ùCCN6NÔúüëf!qï#)r…@5û1é¥yU½âüݵ'3QŒ™Ïüýó¿úw8×(}‹!¸–½d'žVçâá•é°±Q3D00dc¦:fãÆI3|ûd¼ÙxxæfOÀyçžyçžyçžyç›yÐîøÊ,ÑW" o!|›Ìòû0ÀBñÉÈp]ÞrØ3¾Á9—24#™Ÿ’\ƒ˜'ga«Ë'8×.~ƒ“òœ8Í4“ß‚kFc¹ x,ضۻ7*€º×î"ѸÃ#.$ÎiÊY¬=8qœßãté3i¸ú°ló~Ëíô±Á§›â_KÿÆty… ŠB)™fuD‡ùÈX$>­K³®oíÜ.®býÉN»Ñ¸ïçu~»&?Áÿy3ÛÓ_Ç<Š7s÷:s}~k³Tu&Bƒž5õÔ.ë;;_µ·T³YïaÔXÅÂö,ÕÂ`í*³ ™ 8‚êqÔ±3™æY“’d¸É9r *‘%’L e{‹FyͬºÊàhxš|I7¸>¯Ù:éüãuÇ?µ}ý:¦ÜÙ±ôd^ðÌÈ i ü8f_°Ýÿ÷0å¸\ÀŠ3ÞéÑ€> DƒáãpgçùOôOÉÿ¨³p@ÐÏ'’ZAs—&¢frdšê2Jd„õÇ%|þBDæÇØå ‰«%%%þk%({=ïxóБÓ×D‘Ñ+ôË‹iÁ¬Û,ZEœêÙØtGþ8i“˜yím$èè0Ñ<v-Û·n¶íÛ­»Y˜X¢Øk:\Xáj1if¸.ƒQú”‘KGêIhN…HiB„‚á#ÆÝ¨.—ópèÃ÷V&®ÝÀ;ÉÐö©¤Rlêv'² vÀ0åAÿ9¸€–-ÖF(à<[®u—9ÓãÆ›Ø·9þçG1²y‚s¤ëÈ–_êË 0âdbq8œ}0{¿;™Ê©’«¶ n÷¹‰þß¿²cö åÒÙ QªdÍ3ŒlqÕU&¤'ú01wbé€v›’ oÃT¾o‘¿àövNEJ{P óÿñÙ“õOJõüݹ8þ—™Éï0Möʪ~™ÄÓ.Ê|¿VÄKû‚‚â¹Ë ²âÿò§±†“†äžÆu„WnFÞI%¥‚utÜ ÉÿpÄ(""…XQ°ú2·z2SžýJV©Ü䣃^î=:‘9×?ÝÚÂŒ`þÿz9Nä}g&éí*Œ!`G+‘¢cŒvÈ FC½’¥3¹TÇxwzç~(´{žM(©õž ,¾†œƒî+yÿݱO€y‹Vôš8éN* _$D00dc¢:f䬒dßN™]Ë8xÜ™>=™Ç<ó ×óÏ<óÏ÷¾s¼¢ÌU–*õžN'—ÙŽ¡ ö8áô¯=³°éÏOÐÏ#‘aªÃS3ärx²²>^ù° B"ÁYG‹ú 2 '“‚ä(è HWÇßï…­€Ð3øý²( Iç¨'¨ÉÍ<ÒC€æœQ"…* D‡Ph  <€RøšFò¢N¤ØŽ¡AÅ3Ô~¤×*Nsk ãlçùÊÌ~:•;÷áMöý(ÑM,Sç1üLãÓ92ü /‰Î0vK̶ËZ·–·¦gù³òJš—ŠT㊠âd˜Ðî;™~,8>Ÿ8¶Û1ÆÔ¶ ÏùsóXÉõ†;žL/79Ìëq“†ÉãÈHÜÙÆ¸ùrwKÛö™›²üÞÜ2bå3‡÷óç¾Ý,ÇÎòù±³ðF—àS%ÙÓ„•+)&?™Á*Güú¹ë¿·|?(ýou…Þ ‹A³%å~ú%Dêð×?pçD(ŸÜÈêbÑÐâ…ùbv©å~ÅßÂpl n‰É":#¢`‰iU*«Ul TE*Ñ£¬]üª®ÐÃy—í]³l5uhí>POÎs4(bƽ#SÖª|tÖ@×Ò g:ÐÍ Ö `$«^¬ã= k¤Dvºš™ ’ƒ]8 3$A“ð} Á$Í6Zm›6W (3! ƉYDŠªÑ¢¢*ƒòûž÷cnFÍñà >0à4zŸÍ ž¹Qï7œŽyH‰8û^o3ï¥Ù‡û±þ³>溭b$| ‡eæ}˜7:*ûvÕö< ÇŽß‹µQ?´ÉÀ9‹WXPMik¨‡îI‚+ÏûÁ1R#‹GDÀ:0¹;°K“€N p¨Äú8ІÇ{ÙyâK˜&ñ½÷ù; Sàøçóã™ñòg½1v¿´8Q$hìa±¯±v) pý¯û^É>±xb²;ùTÝ01wbé@Xà vŒ¼á1=ñ÷vSxogôÇî8òûógÏ…Øûý±·ß·äûÿŠ\ßùÇüîþæ¬ã›1ÈáÜÐÄÝBâuúÇù¿dvóý¬›Dû‹ Ì 9³Þ Ê•c/¯ö;?A)ùÿþ“®ëÌ‚¯ÉYñ*òò/DöÆwõ}Þñ íýAAx<]ò&;ò‘X)Eì]]ý_‘[ïü£dRô=|¿cV[uALÈlÖ¹ŸOÕ:ó‡ÄûAãž.Õ£©2…ý.#cô×~ðü1#‡ï½Ö1xÇž–NÇo énZ™V´$D00dcp¢:dL•’LY™èIY]Yj9eÉ—ðgóÏ<óÏ<óÏ<óo;æ÷´YŠ®Ee³ËœÏE0†‡×ŸdôýÏ8C>†ÿ Xj¶D·“§Ù‹<  ˆ@‰[¥u‚‡Ãì'–£øp1 šx ªª@Hå ,‚ª*•÷ÀEÊ}÷È› ð@ü4fþð×ûUͰ…¾ßÉ|[Eø-²ßîØÞVbô½ä–7Å·ºEfõ«}¬hÐ÷^!¸y„oȬ–„~žÿü1÷M žÛÛÞüãÎÆz÷¿àdzÝùßWÚ"3Åëèík>{ÓÌf·^¾°)‰ZËχխ–‰û–ˆÓÔóÍwÝ»Î5Û‹ö‹»á2Iî߯Ö6#?•š1î\Þê‘C;±ÿxk3矄¦ÙÙ»îò5C}±äñßµç3µEýº¢þù´ú$Ä6’‹—[}¨þO+[]¡WçYü1±'ú´ êžÃÿµ5½õŸ†TVŒÜȉ~¾ÀÁ»ÎÏ{<8øÂ°F÷†ÉcLÓ=Ó>wKÂE/`G!Òªa‡Ñß×`5×<´êúÇ÷”ãí‘Ò U¾BÚø›å[}Z¶ÜkPµ¬BmSQBº«F£ýÍQ?,1I†"­0pÑÒ*£€[Q 9Öo" n…¤gño…èkï¸] ±ÃFßí s ~uÌÖ¡é#>®Ìäk]0Ó§9éB$& šÓ§jŸ–ð~µü4ÖtÔºêçʮų¨ðŽ‚øh±£L$V‘"u8kz½-ñ’èf£år\@ €¿Ðž‚ñ¬’ i8¡€Tä’€}÷ßÿ;ÏŸ?ÿ}yûèã‰÷ÝŒšŸ¿ûðu¸8äÎ>ãÓ༸ÏTӊņ¨¥«ñUlœ)iÚéä¹W0Þ\EæÂÀ "˜¤m¤ˆë(M`É+ Q(!T Z Çi•2’¥÷’\“k ”;ÞÒÆÓИ:g£ƒëvë Þ»pÆ÷Þ YiåDíŽD>Hß¿|.Èu)o)YGµvÐ1ivKÁì0üO’[áû·ñ¦øšîq§=ïïáC ^¤¨Ñ;—? ´E„µ  ÃÎ UüÖÌ{ª, 8ÚÁñskj%Jã×>ÙÿF ú0Ñ00dcР:fâÌ•’7|ì„Ye¨ñ¹r|H÷góÏ<óÏBõÇ<×½ó|puUȨ;¾] S¦¼µàçÇ%4óÓž_ˆvOsç/ƒ8¯i—áÉÙÉÐ{æ’ºuàû.'r‡f°HyèÜí@?€þ¯§ÂØBCîèɇÛÅX{ì!l-rŸ Ÿ}¨[aRaqWSLJ]Æ=_#o‡  #„ pø BõÛßw§…0Ô5º°D‘ød^<·ßáá‹¶â+/ô7ö¨j"ü;§á­†<2¦í÷¿;+¨N¾ñ=Ÿ&¶LŽa÷¥Ñ™MÉÚ²Rcô¾¯sRQ™¶Ó†^õna÷Óìt©ÑÓwdáÁU3F}¯É/=4mþ;£lù’zxjS.òʦ$Sy ö÷§½³"¹.þúž5gÔçô”ýá—Ø%2bß²„-Q½òó;êwˆÉ=±;¥¥Ý#ÇIÙ„ôƒ”ßÉwcÁ÷B{a<:"z.}²MƒOÛÛ‘0ûï÷Ä0¢Fœ"{X³ùÚÕ'XEŠÚB±Z(U°áH]Rò<¶UÂ;Eléçúë7’[z³¯Å¿ƒ­drL†¦pª’'w=:C՜굨).‡èÖ§‰òðb¡à@s¬’:5]jÍO…ô®¾R,EU ­Z4•UD­j'ÏDày5™ÈæÐºìü€µC ?ìF¤H›ÉÌóÌûìÏçbs¯?ÿÚ¯?KÍï”ÿÿŸ¿ÿ\þ„ÑÍGÿSø%A{Íæþs¨Î¢y¤TóWT”\q€èäAám¬evõ­UИ£âTø Ì=E\’I/YG0¨6‡& Û3º`Šö›©ãyð7íÛó ˜ã›‹tYެR\cÅ!ZPD)íò»_>Ý»gº%³ãþ÷TcäÕ}dDàoÿ ×\ßáý¥»€`׉)¬•v‹R¶”Û•‡N Ê´#D00dcT¢:arI’²I›çŒ‚N¬²eÉñ<˜Î9çžyçžyçžyæÞt;¡Î‚,ÅWQ îùw†<µ „7ã“gÓ¦z>½0(•ú›ü1iŠÖ¥Ï‡ƒà{<ιš'¹½ñø‘àï3ÆçÇ£z;˜E¨O³¡‡Pµþœ> üu®˜B'³¹0y€ aªõ5.ØÌD@€²|ÀEŽwüG¨åš}™hÜJ™Æ1(g”Ä8˜bb¯-.ÇçÌH± 'f~Ð-§k\Âî¬×@1fÿº Dㆽï~ŠùâÇ8˜©TÆ÷ÉV0ÿµ„:ÅpܨÝâ<šòÖ‚ߎNz3£úr<¿I|„±Åbg!ŠCh%¨*SÇ!)äô1ÁKõø æ}™æñðàö NhÂ"B ‚”PR¡@UB¡T…sÓŠ…‘Y¡­óÿý#dl-»öÃýÛ{» 8…œ K™Zµ'úÌiC}÷l@@¸´a³E3jÑ®}öwküÕäÙº·¸«P°`øµ} vH¤Ä5ÞU d6õûKÊááÀ:šÆÜq÷%N#)Ÿƒ«o]þÎ-ëFÈѵåÚ”¥·Ù›C3ö³ljKè‹íñé7|‘V§Š}¶k£}/Ñ“¶v¼Š$Ín×Õ‰k¶#·¸=°H3ü­ÜýþïëêwÝÿÕ¼yx¯É©Â$¬åŒ{37õò½Åü^3™ÜìvøqÿsõíKÇ ÛGo”uý¼ÁBöŒÇŒ") ÄAÉ]SoÁ”,á×øç{”wá81 ˆé?Ñ,-$ùnìÐÆ%G`8½s†@”00dc„2'½+³„¤PZaªlâ˜q×ùýœ G6Î2w‚=‹pÇwwEJBq¦3ßðÅW´Ó‹Ã¼¶ϸƒkŒ8:¦/-Lƒƒ;8Îggý³¬qM§Þƒ2ÀoU¡ÑîåL‘pKaÈfŒÀ[8à9èNC1»là¼}ÃNP©µÑƒE’˜¨%˜EÌ/ˆÙ”ƒ8®a "%ãàùcµ /ˆWAw>’—ìbÙç[ þ·AÛ8Ú¶uÝvΡRƒÉ·$RÀòÕäIbàa²’qm䦛ÆqmRËDëSV÷/ÆÚ¸|Aáñ*ˆI“Ùæá¾á1˲pØÔ3û,¿og]ýwÁÛpmÃwtð\–¤+wË¥|׋.e %1ÌMÜ l¸dëÁ99ï;²~#ð…ogG-’n@mUÎûwk3Ç*‚åÄ[qÎ"CC¤Æ™£ïÃ?›e2ílÊ¢Cnƒ®äÊgÜUßZ^ ü'¯œÜФ® û’É¡Çóä‹ß׿wŪU”§°ö2Yvc›²„5†¤iLxFð89hdelë­Û]níœwCn‡AUÀfO®L.啃å1Ù†x?%j¦\>plWŒZ&÷W—{{á ½ÿUÿÞv¼ÕŠB9‰8À§ |{R¢×€äº.›8M– ‡og®ž‘ ^\Ídjö‰4fŽ&F«Wž‹HõÕpD÷Pæ®ZM¼92Ox™x9ÝœƒSe„ï¨YÅöÐÙØúÉj ìŸ—âXE*TrR¥GÄâ•D‚9ò:³óùïúu£ŠmÂIP—)vo­¨TR›u§?³Ýw¥Ô³)îÄÚM!B¿Ôì+¼w¨Ñê?Õç¤ÓI››W|$¯ñ TÉT,$Sê…mHœÅjO[Ž­±„p˜¡óÔÿõŸ7±/­EbmODi¦Š;„ EÅ?Ÿ~:p4x 4Ñ‹ÉÊ(57`Ây¯òÛ~õ¼™›ïâ‘-NÍZf½+.ÝÅcŠAdž‰¤ŠeÄBí¨]€™ð×פ½Ee9)”‚iò ÝÇAë%nfð4Ž¢£I¶2¯L’^ÙK °tbÃbݹތLgè±À3å„TסàÁç’ÓCÂß>/}1¼ý±ñDK³/àFàL<´½Þ"_}€XêÁÑ­îàÄmÝ…ùŽäÙƒ˜0…Ó-b±ù»­àlaË8ñÙ0ÀpÚÇ/ï¾Ø&[ïxR½,·å­UJÿû#?ÙŠ0a `Áƒ»u„>l«»†-÷ˆ†ËtÀ?€+A‚Àe ³s‹-ˆÁ…Òp  ÌqÕTY8pW.î)ÉI†¶H#–ËÎ%‰ôƒmÊf l„•DBå"‘@ h Úi«ŒöVvw% ` ¶7æÜäp3ΠI‡$EýøÊ&£<»BF<~ôùÊçïõˆ/KÖµ…³¦æí¡Nttt-ñî@«,¯KÖ^÷D÷qÃdoHÈ¡¶}ú¿½(\ðP.mé¬DÖR÷ƒ£££qè‚/Y¯;ðZðÛ^÷Z\Õ—ÑÑœ5!·ÑÑ 9Ïç]·‚Òô¶œSÚ!r€ÔñŸ¿/÷üÏ–Ô=ûðPïq[ß—¢Ùs#˅ܦX$ÒÑlqåWæPFYÊÀ+•ÀR <à·A+c)tºÛ ¨¨jÀ‚.d.—n0ÐSb+¥B. EãÀ` kå˜ í¨· Ê À)=À%~Aà:´" È9Yl€9Ô¼ ¸€àq(%PA“`9dvÔPÜ‚°Q;À| . v @° PIc¥.À½ÕûWd>úð EÀ /®@)h–· ¿mºÔ@Hx W†$BHiV»4'{L;v6W¤™LÕï,g9 †Í4,š4hÑ£F^4hÒf°°ØnÆ,Ñ£F½)©[»/øhÖÍxA¾’÷w“ Fš¼ä™V%nÛ_‘¨Ñ¼oIN³4jŒ‘ 5FH'bÕÌ“ÐZªE&ª‰DŠªÜÎçdr6äˆÆÂmå"):ßÇX]3áÁBðFÝnF#Àxï< èŒE"‘¸9óÁ,RšXòñ‡¶ôï\{÷Ͼç{.{Üî]œºŸU,ßÙo%ü¶²D²Ï¿ožQ‰)% $”)M.ÑÌ=Lô‰wi™ùâÍe§£NáÎÃ\–wL\qÃW53Ï'ÝÔ±±ËJ-eÜËj÷ìQ‰ã¦yÊeS«î0”œ¦)È$O!FX®ñ8êò‘Ôˆ®áœdUà$<ÇÐ.v.ÿ |½ÀæàLê$Ð.ffnt~3 |€<)ØZß¶X?e­‚ÄÑòE‰ß 4(‘ÑðØRc‹¦œýB‘;¯ï¿HŸàÅïžøÒJ×¢êšFó³î/ xõD¸1êdTÉtŒº}²jÄs}=gÄî4ëg9ep«Ã‡2µrûnXñ{”ÃðaKYe¾Ån 1‚ÂÃ’8pä`ä`áÇ)¾êíÕ –€c««¶ÄLwm•™jÛ³‹–½Tœ“ÁW¾9§;£Ç=ÆóŠïÇX¹.¹õز$gJá¸õ›0ܬذc2a¹WXYëÁyr6©±.S‡8r˜?¹¶+ÌàFï¶„ôáÇ$áÇ8páÇrøáÎ&¬ÊbÜŠw“¨ãŠW¥î(¯gX?ɶG‚#ãü¾£¾MYô,ð/±ù×q—_š/ oc£–éÏÆeÒeß—£òöx§ÔG,2ú¾èчB{ ñ«‚&š‰ënv ”ëy—ÉO5kÿ#^`iêþ¿žyC_ãHƒLÎ ÊÙÜöàZÛ¥Ê˹‘‰•®`{7/>òÁìµå%#ÜÃ>øT`Ú|i0#Bc6X±*àÁ™<㯹ÖY4m¼m4Î ŒÁöãP+Z$ ¨ù?¬u$ú3hu} }~ çWU)Ká€@˜ˆâ+ÎPk+fBL®)—Ô]ÍÝäY.C»šEˆÒ·Õý9ocâ+•UTƒ=C1bÍ«ýj2ØUŒÑµŒovwOC³vÏLwNÐ!¸$P}Ô€µÆ­0ðB&'¦0Àé=H[a*(×.òW‹Ž8“½Ì£{šG×ÖÛ—­¼ïcY…°žç4­ÂKŽ8` .N#éN, ȵ2^Ë6#é~«§¾³ÖìY,|ûM÷÷ká#‰{ |ùóí„Âa/ŸP¾ñ „¾} èÊùóçÏŸt²Çóî°É¾¢â²E³}<ù>«”&Õ•“£„¾} ŽWuƒyN.ãß]X¯ÝÝi¦j=EòÎ:=¿aîqÚí²à™6:-wqcq=žàQÊdíÓîšOu6ã'³‹2¢1¨¬ñ’ˆ±XúÎà½q9z±Òg¤vq Yvãá©úoö¿Æ<ݨ ¤W‡±§²ö¬¼“8“C<’}°Œ1Þ‘åú‘þwyËÛÈ›u8©ÍySõÝÂ2¡/97˜>b,rõŒÇ|]teMÀ—ÙûÓWSêòIØe-;šÿWÑüþ–ëº2cT|S›EЬåèïgî¯ÑpþÒÖ%,êt—,ï¶bs®Ò¾ôÑ=—':fRÎ…É–s;fñvî•Ï …§I]ÑËÚ‰$Bì„$€ôôÃÌïÚy¶”ÝÔDº„AÔŒ ;ABvó4 Nš¢Å—¢ UØv;ÕݽX‡3EÕÞw«‡ÊXϬֺ8¢ˆ‘“Ë^³éß\óâŽÂïãù,âø®îþ/ŠîЪø®û§}§ÄúŸ[OGuΕ•g`[‘ÝØS\ºju1°ëƒƒ–â¸w-Ô;¹ÐDÁNænnþns9 Æ‹;fÎËÎîîîîîîî…±^ÎÖ3{–w/nÔÉ9W–ªÍÌ6Ý®nvÅÛøµÇ»f«fòljÕü¶å†ÁâxƒÄ ñ‚0íÊæ¤|®wn4àá^û»×¨8AÀú?]Üâ>6vr°þÙK´/™––r–xܵŽ5Ã@7:öÙC‹Û‚"„³ÝíìFüó‹‚"È" ˆ‡Ãáÿáðø|cŽ àI#м½ì ,ÒÄ`ˆo!–hÿ`s73FT > ‚"CÒ‚"~›Ý›¹£›Ö çcy!”&I#è´xš=~'GÃàcÏã;àgȽµçÒ…ùÂêÙÜüŒý¸k…Év^vO Zä7³aÙ+Kåãcßí2®ËÌC0û˜tMïýÊž›Æ~õ†öÃ8–ïø«ÚÆÿ„“¼¢£ýýí?Ê(emŸ = oü=o£¢üÈ{pãñ!¯‹ÍãÒØQç{F…÷î¥*,âÝèÛÃÞý?Ú)2‰ç#,†§¥xîŒ÷‹°Øq?Çt œ³NSjN*Mƒš”Ðf«Ô¯ðéõ:Y™IïgSÞVòŸB–húŸeR\sÑÜì{\÷~Ï à®ft¥g´_Šß¯^½ùóçŽïŒDlFéêªä¬û¬îýL1[áãñäw¨©,®SÇnôEì"/v Úö,§ñ–DGÕ\eAËy¶Ú>«{uV®6Ö®øZõUsH.H"Ùï“ö¼»Éû^ /a{)àF9p-û¿{yŒý/ª€¬½vV@ P“eEC hÜ—°ˆumu2¯  Ò¿wL¸÷—Æ2Æ^G6¤2ÇHµù—«Ç¸_Žý¸—íøÜ~‡Þ\7hil‘ã§¢ ]|˸Ï}´Z^Ñ"Ýç½¶þ4ùö–ΰ¢š >e²ÞË…Áàíè mˆµœ¹µ¸kçÈ ââ|ímû†‡ßÛº Ú@RÚDhñ?U +/”¥*R•^Iý¥º7t2f²‰þ€ÆºX~Y<6ßÃ5V+«ëQVZþ«û…n¨z¾ŸM[)d hÈ–VˆJ#º(ÅßÏØþÏ9ÿ~ËÈC nA0Û˜<B!Ø>~8?(5!7AR‚Õtà01wbéÀFOùæyÿ¾UuLÎÝ}åß7µ“øONUS¼ŽÔϤy2ÚˆxÒ\b_Vþÿì?ýÆCíÀäJ¼o¾ýýKšHñ{¥¿'Äÿ#ÏBºnýoyÿ² ÃhýÞ«'äõ!ˆ«7àC0ûûx>›"‡pÇõ5ïxö~Ks þeµçß!ý÷Ò´GùCò\Ç/÷ç#··î;C_ñ?X¿íóÁ“P0òt“ýßìoË<ý¿U—´Z?o˜_ùVP6Ò !W½gîæfÜ?š; 1ª>®ç ¦Ö¿n†ƒÇÃÒ”NªÓT9$D00dc¼£:f䬩’7=øB^l¼‚hVâ?€'ÀÍÿr(PPNÄ“ù³çO: P 8 FÈ¡FýpAÁODñN”£Šf QÍêT”¢”~;êy¡žo2³cLðQ²– P )RRÎOð½Æ3+4†°±™ªq¼Ó1Ç™¿ÏÀâ˜Ù¤3¦ÏŸ¤éÁTUª|8#=ɧ 3¤N£±;’8ÎÿÃO§’{˜¤•IœÆ<©žÝõ.ˆÔ©z“GgM?ßlbþ¡|ô£)E(}bžÚ{p`Àyp‡‰èû†ÁÃæRVÕ<F¢ô¨"¥DTTTe3532&§ÒdO§§ ˜œ&eEE0}Qíí¯h¨©¯Ãȱú*bTàI¢PZAXÀŒc¹`HUbi ÔENs8ÿMôô†ˆ¨ðèõ}Õð@øu¤²KŸJ—jY,×BìBÖµº@01wbéÀ¶þDŸ‡Îóúi^,æ½*¨ì²¸¥ZÓ„R Fì‰]kÍyìJ, îØÙÊkèY§Ö^ª ;&b¸ìøHlj…Y9(†Ç!±U«_(Á¢ômKµƒ÷wV©5l5T 0oŠK*­ÇZWÆ0«ðÂlè²RaªãæÑPAލļ5ÃÖ7­År«]–Ô÷R¯ÁZ8Û0Y§/uª5dEŽö0"òd ü’áÓJuæÍ”¸‘Œ+ìdÕôBgÏVË|¨¡§¦ÂIS;E€X®?ǃʦb iè·4)y'D00dc¤:f䬕’LßqáŒAœ~#=b‹u 22±›õìwƒ²lnÈýv?‡ýuý½»X[®¹Ð/lJWë ÝX.~ŒÇg™å˜?;Ý'„iÇ–‘¦¦(L+ªª¶ŠˆÑUZ4haSb¶…ÏÃàí#fØm!l‰€:Í T]#Iš+l©9€Ÿ@¢@”99Çw;±¨Kæ4K¤8TtðK¤û 9ÑÈ9ši +QÕbâ”òŽ 8†‚"ª¢:4YFŽ43ŽF1ˆf+˜ß´ A¢A “ô÷ÐŒÇÿ}ã‹ÌûࢠÿòäÀ9#À&°°à£…Šæ $@0Å~UU!pWéÀØsÃÔ¹0ÂJ&Œ’`rLÝ‘Ý7mÆ‹ß~ýûæ÷ß‘ÅAõ­iújNb8œA`<Î01wbéÀW GkôžSãHfnFö"†|NN¨ÁJ Tªº¤â¡Qê MÓðTT¾ñ´MS ‹Ø!†$Ö’ÇÉX#¸âª@¥Gl>K„oÝ+Œ­4cXë “  0 ¼X6f_‚×êQ/Œê3åC-*á# ê4% T  GBÂÐ0(Õlì|µLx¬Ë ÙÃßË`Äç°4¡A„nªí>t Q`‰>yÐw~å¸x< ÚøeºáÅÝ"îÀÈÃæ~Ê—HÄ%Vz@~çæÚØR™RÑ©£é”<p‡§è‡w”iy¤wu:D00dc0¦:fã$É&ož1+É“áz8góÏ<óÏ<óÏ<óo:ç\k4UȨÖyw‰åÖº„7㓞™ìû‡Ny~“?,+…KŸEðF³¶†Üàï/moÇN®ð\ÏFó€ €ÎäØÕLj×U5n»VÓo-˜Ì¶b¶§mª³öÙ…)¹Z`Ûº©Þpÿ¯u·3ìÝÓ„·«I1115ºörjcd§(];fzåÌ´ºêQÅ%©ê·Niç¶´ÂÓN]91[.!JD‡‚å.(âó……*u›çT3xRZKÉxþk™y×¶õhÐêæe­£µ° [ÚUÜæíÌJÀ)‰n¡Z¡q®=inmåÔîØ·]m¬åSì¬pÎ]Bf)<ËÞó•Šž&)çɆ…ª³±ü‹Q¢[©ì[mË—=nȈòôÄ2Gµœ³éí"¤Ì})Ù¤>ÈF"Yÿ7>'c!u×:ü_½Ve«œÎ ÃSÏù}zÉË3Mת;·-_»mÁEM€§ýç”~WAz6øL.ò‰Á¶-J£H4sò,hÒ"Fˆ¥ ƒFÙ³oàl[FKhª!UVÃDÂuxѤhÙ²4v‘³g@[PD9εx§E&j­±¢¥s§ª¤`ÖˆÀäéõ]"×3€ut3Ë „¸ˆ¡@#ZÎzdi!štñE®Ä@bµk6l­J´hÙA Â*1HE1• Šd”ÂÛž-h¼¶hÄQÊ+p¦ê5©¢²X@ΧÂÄt N hˆI}÷¤3Ž1÷×»ÛÞé÷È“‰óŸˆ•ЧԆŸÆãAZ‚÷›Ïð ä@5œ‘‰¨8-^¾¸uðžÂ ”D%ì*p¨XM"ª"€¤Á±ÀÞ‹T^À­& eL)ä!8Oø§uP×> @K’LC¢!0Xð: Øž×Æ†ŸŒdB!ôQæÃ$ ûì7¾øw¿abë`vô"àM8‡ˆ\óh‚ª>È!¨ÿp0cïA†¡;ë=l‹Īá8œjIs(â00dcì¡:aqfI2Fç¦,[`¨å—&O‡ÇZÎ9çžyçžyçžyæÎ´;ζ‹1UÕP7¬òèd^Lh!øä§Ó¦z?aÓpäú·ÈA‹,V8³>€T0 0¼À+ÁñÌ sÉ ‹Ð ð ûCW@ñ€€öf6¶Y!*ÿ+„gøN*Áꟊœ]×íOößSñmºk%߉îàáL;”þÆÁ†7ì'³7ÕLJøãÚ6ã ‡NÒÃüÕÉY¯¶ÕaVÙø¾ãÝôxvȧıMPÔydm¡ïÓèørTÙÖ7IY÷>¡÷ÚMÚ±Þ‡ô öqèîè~hÔÐcï®ôh}™R7 ÿ>’\wÕ›Åô=ÉïM:nlôÙ]›ÞæÝ—½lÖ6ÿ•­ìb†ÿ¼«}s¾=Ÿps8:·ûoûczÞ¢Ÿ²ô÷ÓÒ8Â8@G„^¬þ–9!¸ mÚGƒc"4‘ð/ò<@ñÄtý÷¸÷ô€éñ¢ÿ7yÄ'‡€xRAð;¨Ïê:€{Ì$¾‰ÓKœë磺|1MF¡ç‡×›±sœåRõÓÔ>û„æôztõyþ~Cßy–G¯æ4v i¤iF‰8ˆ‘" OâDP‘T†Æ*©*b´hб£HVŠUIrOÒòèŽ+etÃeTp j£‘Ð^IT´™Šç[àÂøŸ ¤ç$¿wÝò “+©þFy}Dr!‰ $$XÚ ˆrtdîi!Âá)´Uôް…U¤V’#¶uŒc®0ÛÀ¡sS8Îs›3"{Ì/™MdR} Ô9$1Ø0$¯¢GÓÿ¸ýøâ^o8gÿJ_âDãÿÈ—eæœ_f‡Að(äÕbâÉC⸠à€ ô]a"ƒè=`õG§pIsƒ¼a0BNKšÝ»Ð>€†& Œãß~ý¹„ãZñ¨i^Ãù²Óó„ Ú01wbé@«ˆrŠøì"‘»Ë[Œ8W+HÕÁ SÄÌzÓkÞˆ¿&—DæX,þÕ‹Ý­§ºÀ“øn¹âËb Ú¾Ý Ckþng»)îóÖÀ-S¶B3¦›û’}¯0„R— JŠó@ÄnÉ7p%´é¹#Š#høÒ⮚ÞÌd&êµ )fË¢ 3­#-UÕ†¥ âÜèë8â ‰f”g^/P ïŸM>e0SÐÄbÝXz“½»-KU6ïRhª¨ œ:¦Æ=S Ǫ$ÊBYãzƒ4@Ðsg[(ت(êµV)ƒœD00dc´£:arVJÉ&ož0‹Ø8rË—'Ã;p¼óÏ<óÏ<óÏ<óͼïœëh¯®ENzÏ.s“ì2aóìžÏtç“ë3øX®1f|O49¨†Î{êz:Ä€§Ãƒ‚sàp"{ËèaÏ’4tÕTuò @W€@ø()ÇõfÍÂØB}‚+|þïø’ýòPô6ý…ðœ#÷ÝÜ!má›xÃÛÃŒ1ؘß!óžá’H!ô Û¢o[ï£jmiXÿK:ÖX}©³ƒm_Šw¬P0?OŸ¶ô“æ~Y¦mùÉXbýëöµ=µþ<Üo¥P¥ïCÊðÚû×Ñ }ß}„»ÃkØ×ùN&ìöc%FgÚ›ge?–üwn õ’8z—ÆôÔgcÒøïY¾!»¼° ïÚùå{ýŒ‰PÓà‡›lßVsí¾¯½j æ‹úþžÈ—‰çï a<1樄 ~q1~NÐøëωógÇ\ó ÀóΜ\‚|iŒ—]ùÏjð¼µäxŸyáGÏõ–W;±Hÿoç?3‘NÏ’»Ét™`’-ñžvOäÀJž;U¢å€»áDIÉhˆ€!(ѹXDhРV!@Ñ¥@× [XØ…hÖPZ´DXà)lØ/ú4… Ê4hí"Û$DŠ‘!" ò:Ítê]™ûöÞ”ºˆbà0'Š”Hç$ç3»ÙêTê6Låòü“p@t…ÿ `1@#'Y ºg Žu¡‰êžm–/¥ Bh6V•hÑZEÐA:œ&z£I•”Qˆ=ªt²b(ÌNDj'éSQ#cДÿÊþ~ZÖ–s¡)éQœ€™ÎD:$‚2IÍtH@¹'ùÿÈÿýóî0ñÇbŸÿÇ·§ÿ|÷Ÿ‰‡Yÿði÷Ä‚Gßü8 ÿG¼Þâj€d EÉOІ‘þ‰`aX¥H|ô‹ŠØK `SÍ]<"ãá,@I%A°‹Z…«‹}Ô’T%jb—È$¹t‹yX„Ä-L=«¡„:µØlÔÄâ‚èPMË@‰sh"ÐlˆÒ­¦”ã8 ‡cºZAii¸Áq¸MMûüè"ŸAìHÓå“êÒÖX@S”/Ë릇ެϹÃeˆÔîÜË·)aÔ½ $øM#1ÃÔ“i#lOy­¹²  ÐB‹Úœ&½˜°NÖ¢¢Åðcâ‰i^:hï}LJ201wb逭‚‘`=x¾ôî\EyÛj¥âZ[0C‰L¯ökzÈE(†É‚”¯‚•þD¸Ðàá„XÏšåt„å[˜!HœK ›RlZöÁV‚Qëħ± ¾™‘µ–‰®Ž§ýÿvhÔ@ñÓ¨KEr4¸L¨¤¸Ç×M¢OíË7s øwþZÊ]rÍ8óŒ ‹U)éä„÷‚káòx¢F$’VHz°¦Åã%Ëuõ9û°¸½J;¿Ït„·X‘XLˆŸÂ™ZÁ‘ì(7\„Ú«B%Vè—iµ Ѓ‡ôÚFш«ÂÃDoD00dcèŸ:fâÌ’dÏP"L– O“'Ã¥góÏ<óÏ<óÏ<óo<÷¼è ÌU4@޳ˡ“Ë^Š`8ç°ÉO§Ny>矇%~­òbÉU–-Ó’ü1üÍü4~?C“â{xB|ø~œ¾€s;EŽTRb3öI=Å={ny­ãÂ0@ý'íO…ÏÜŽAÜÿ¸î=:Ž»øF}õ÷’/e½Ãs#8Vul ¸¿ÛÓ×>ÏÎäϳI ¨ƒ9ÅQ-7W|ârÏø»Ïä”á¤F‘ÚO°"#´BœD¤b¬YøâÄhÑUZ4jåcAR±UJ¨úh¿hí›D‰À…Ñ‚ò~R&‹J«oìV`À-"rI@A)ö¢Ì¾K’é“G.°éÄø(#9Ö„¦yÒ>¡XÐøUu]’¨ˆ ª«UhÑR¤du1QS1ÈÆ¶éA ±Øú7Ïn…ñM5£¨fà25Iör5ª’L̨zC ЊG¢>Ÿÿë±^ÿ—›ËýôûÑÆœ‰Ä©ào;€ÉrA ðf+Šíl6g ‚LC €Tø°‡®|I#Â9íܤUÑX–ø\ºL>)ÛT®- 'Á´Ñz§bÎ!ÙnÝ€5°Bÿ{ÞX¡r©à¾±Ò Ïòc üÉÇÔ3Z‡-NÍ\Ä00dc ž5'DÙqÚ[3}RÇy,99—ß×Î9çžy瞟\óo<òÎÅfž¦óÔÃáÌòü&šïyæó¡Î?Økô™ü1qŠáRï¿O¥>'ÄÁôW‰€Ð0@ëQów£~<ž1g}URî®ê•)yllº€|fÝsBÖÕ«m¹Æ6ÒJÖu6À‹µU)þ±üZ‘xn–iK)gð¿8ŽJ“Ò]²uFï: óK´Š#3áÆÀ縅é5çŽ6[²Ì©ÌE©lJ“îíïæ©5‡¥Štú tŒy'-v\çñš¿åx"W¨½œ¾”gB–Í‘@IÌ©"”Nþçb'+2ÜÅóÇp¬<Ùm›^èHWU]›ÿŸƒÉ.Þ³vº’,óeòìÚÇò~_ »Šwct’œH„VÈCåTŸIÍü¦O7Ì#3¡:bÌŠvæð!¼±Àqæ-œ‘ã7ÿäÜÓ‹/Íé²9'¶oñ S.‚CMâ“yô ‡dß:hüO|·syçãÚíµp¤˜óJ”Ϥ$³V™!hœ¯bY¦Kãתv. /¯Ïœ>wJÒãÇ·gKâCÎdƹ†°¤÷Áá€ëçŸ É„cÎèþ.—7Éë¥í8Ó|0yÞ4ùï–G¾§Ã>ž¬iü“…þŸò4'°sÌ+ ë»Ç-¢ç¸ncnà•[¶ç¸˜œÆøî ·Nàén½Â‰”P‡mÜ#– ¬XFZù´\,lº(Qª‡_Æ$4ŸÝ#FÍ›:Dv’±¶ÚLçÉéù,Ò4™ú‹Ë„Öºõšò‰,Qà ƒvDÓ¬m3˜59¦‰Árarà´qCPgPMdw}ØÓHpb§‹h«é4ÃhÐëQu>—ÐѵU£Wj±£G-+±c•ž“”@GdTwLÒ•”@KµdÆwуԤH?#8Í/lã>½t¬ÙÆyû¯^¥˜ûþ tïõøÑRàŸÅà]Kßo·Ÿ¯¿Á©y¼Þo7™yýê>úW¬¼ÓD†F¿ûâ?ù é£ #5ÝO¯“±«¯Ëÿ ”BØ— ÅBOƒ ¡$r-<„ÄP‹œÊ@`‹ WQ¾-)•]É*áI…ÀHš ii‚m&àœÚ¿øYE‹ƒà ¡°ÈÝŸVžwãã{˜0ÿSï_¿/H¤ƒiÉó]kS˜[¿Nãý€Ð’C¥Š[ù4.ïVÎ.µ¦´ 01wbéÀU·¶g,õÊ£­3íÓZò’HÖ‹¤B½l’k¯õ]R~m¨2>Â, c¢–g.Fˆµ˜meKP\ÕŠO³ŽïŸ;×úé'9¸ÍЄ+SfƒEjÃ0 œÉR†AOc¬P8_hǶ taÛR”©r@IqDÛø¨¸õù®QM}éééú\‰ÑÈÃlñ˜ëdiii† - ¸ò$÷®heNó‚wž?&Ÿ¥±ÐÌÒàó ÓÏææÇ76°…ÜžH–?ŸŸÎt:zyÓáæâÓ yç‡y¹º‘šx‡'’*xy€ò›[æ΂1Ý  =?Lð4ôÁÓ#§Æn–Üå·ppçOlKw±[W!m|\p¤Ë)÷Þ¾9_N¾7m¬ !hôG,0t/ØòÓøg55:™©©Âju:ŠDF¢"bTÔaŽ˜Â#ÑZ8EkDVŒó1œôÇ€“01wbé€ÃHOE%ÉûWà;˜ßN¼T ÔfûÓ8ŦæWÔaÜ^;bD$𬴓é·1¾fÞÇ1Ý*+2]Z«Ãº8æUœÓ“›{ üuo&i$N‹õW/7Ä*¨ÞP:¢›âF‰onÚHìQÙ¨ªOaÕ`ÒŠøx\4+¤˜¦ægú%¦†¶‰É;$zN §æœ";dX¤Ìø ,j˜ŽLá¬ôœs€låM,ŸµFÚª–ª”“, ˜˜Ötq iK¨(…W“/ª’"²zäæ üG{b‡ØFUù’ã­m'ÃeòQ+ëjñxžj¥D00dcì¦i/(Ùq&I›ë£%–Yxð„Ë’{ßXõG®y©ñ=¡“N z7®:×o°>¯· C~²Ÿ!Ç­3›àóÆy×à}Mþ ÓŽ,ß}–£%ÞlQA@cQò|  b^Pòþ‘ÞÚ@ ýiOP*ÜQE5(ªbj)ªªª¥[` TQUU•T¬U­ET•OùIÕ¡¬q¬âkà.Ržk‰H¡¬Éï†[Ó!,:uÍ)¶LoèxyáçK@îu Fy×µ´ÒH\…Ù3sså8E¯ëÑ>‰g©¥ @Гçûé}°ö,LäED00dcX¯tݘšòM'¬f<®8~îmveòöûhç<ÜÛo4@†ó~°¶üP§ÐNm&}á’’|L>Dið}0è å;€{Óiô bŸAJõ`ðÀ01wbé€sªœí f™aú¸Ñ.:£éƒC³Ø”Šè×ó.Ú‰JÅ©;¼3áS8Xh)’§™§@²_ ‹b4í½¥B¾—hšöÁ´ºNÊDƒ¬”*¡ö'²©Eý»\4²‘–d-¿«v krÃ`á  È+Ô‡[çð,YQ‹kÀÈ%=WñdÆn"²V Œ"(‹TWZ…ݯ­˜ï²ï!0~*RŸKažÕÛƒ\[ÎÒgîu›YÑ šhÔý¼“Ù‰ÌÈPbá]3ó cw¾mÃÏSvÃjG©êU ó¨Didx1#00dc00dc 01wb$é00dc 01wb*é00dc 00dc0 01wbDé00dc6 01wbJé00dc< 01wbPé00dcB 00dcV 01wbjé00dc\Ä01wb(é00dc D00dcf Ì01wb: é00dc,Ä01wbøé00dcêÜ01wbÎé00dcÀT00dc$01wbH#é00dc:$ø01wb:(é00dc,)x00dc¬,ô01wb¨0é00dcš1|01wb6é00dc7 01wb¸;é00dcª<œ00dcNAˆ01wbÞEé00dcÐF„01wb\Ké00dcNL¨00dcþP„01wbŠUé00dc|VŒ01wb[é00dc\401wb>`é00dc0aà00dce°01wbÐhé00dcÂiH01wbmé00dcnP00dc\q”01wbøsé00dcêt€01wbrwé00dcdx 01wbŒzé00dc~{00dcš}ô01wb–é00dcˆ€\01wbìé00dcÞ‚´01wbš„é00dcŒ…è00dc|†€01wb‡é00dcö‡d01wbbˆé00dcT‰@00dcœ‰(01wb̉é00dc¾Š 01wbÒŠé00dcÄ‹$01wbð‹é00dcâŒ000dc<01wb^é00dcPŽ 01wbxŽé00dcj 00dc~01wb†é00dcx01wb€é00dcr‘01wbz‘é00dcl’00dct’01wb|’é00dcn“01wbv“é00dch”00dcp”01wbx”é00dcj•01wbr•é00dcd–Ð01wb<—é00dc.˜Ð00dc™ø01wbšé00dcøš01wbœé00dc \00dcnžü01wbr é00dcd¡”01wb¤é00dcò¤¤01wbž¨é00dc©ˆ00dc ®01wb<±é00dc.²è01wbµé00dc¶ü01wb¹é00dcº 00dc½01wb>Àé00dc0Á@01wbxÄé00dcjÅ400dc¦ÈT01wbÌé00dcôÌì01wbèÏé00dcÚÐ01wbòÓé00dcäÔ 00dcø×01wbÛé00dcܘ 01wb®åé00dc æà00dcˆê(01wb¸îé00dcªïh01wbôé00dc õx01wbŒùé00dc~ú„00dc ÿÌ01wbÞé00dcÐØ01wb°é00dc¢X00dc @01wbJé00dc<¼01wbé00dcò,01wb&é00dc¤00dcÄ(01wbôé00dcæ01wb é00dcü(00dc,01wbPé00dcB@01wbŠé00dc|801wb¼é00dc®,00dcâ01wbé00dcô 01wb é00dcú 01wb!é00dc"00dc$" 01wb8"é00dc*# 01wb>#é00dc0$00dc8$01wb@$é00dc2%p01wbª%é00dcœ&P01wbô'é00dcæ(€00dcn*”01wb ,é00dcü,È01wbÌ.é00dc¾/00dcÆ1P01wb4é00dc5H01wb`7é00dcR8Ô01wb.;é00dc <@00dch@(01wb˜Cé00dcŠD,01wb¾Gé00dc°HØ00dcK01wb˜Né00dcŠOP01wbâRé00dcÔS001wb Xé00dcþXT00dcZ\ð01wbR`é00dcDaP01wbœeé00dcŽf¨00dc>k01wbZqé00dcLr|01wbÐxé00dcÂyü01wbÆ€é00dc¸400dcôˆì01wbèé00dcÚ‘ 01wbòšé00dcä› 00dcŒ¢ 01wb ©é00dc’ªp01wb ²é00dcü²¸01wb¼¸é00dc®¹00dcÒ¿x01wbRÆé00dcDÇ„01wbÐËé00dcÂÌÄ01wbŽÑé00dc€Ò00dc˜×ô01wb”Üé00dc†Ýà01wbnàé00dc`ál00dcÔä 01wb|èé00dcné01wbíé00dcøí401wb4ðé00dc&ñP00dc~ñ01wb¢ñé00dc”ò,01wbÈòé00dcºó800dcúóD01wbFôé00dc8õ401wbtõé00dcfö$01wb’öé00dc„÷<00dcÈ÷H01wbøé00dc ù401wbFùé00dc8ú(00dchú¬01wbüé00dcý„01wbšýé00dcŒþ¼01wbPÿé00dcBØ00dc"01wb>é00dc0ð01wb(é00dc$00dcF01wbÞ é00dcÐ „01wb\é00dcN401wbŠé00dc|Ä00dcHH01wb˜é00dcŠ`01wbòé00dcäà01wbÌé00dc¾\00dc"!t01wbž#é00dc$„01wb'é00dc(„00dcš*°01wbR-é00dcD.,01wbx1é00dcj2ð01wbb5é00dcT6x00dcÔ901wbä>é00dcÖ?ì01wbÊDé00dc¼EÐ00dc”J¸01wbTKé00dcFL01wbVNé00dcHO 01wbðRé00dcâSð00dcÚTP01wb2Vé00dc$WŒ01wb¸Xé00dcªYx00dc*[Ä01wbö\é00dcè]Ø01wbÈ_é00dcº`¨01wbjbé00dc\c”00dcødL01wbLfé00dc>gœ01wbâhé00dcÔiX00dc4kÀ01wbülé00dcîmÔ01wbÊoé00dc¼p˜01wb\ré00dcNs¼00dcuŒ01wb¦vé00dc˜w„01wb$yé00dczì01wb |é00dcü|ø00dcü 01wb¤„é00dc–…¤01wbBŠé00dc4‹00dcÌH01wb”é00dc•01wb™é00dc šÐ01wbäé00dcÖžÐ00dc®¢ 01wb¦é00dc´§Œ01wbH«é00dc:¬¤00dcæ¯P01wb>³é00dc0´801wbp·é00dcb¸P01wbº»é00dc¬¼x00dc,ÀP01wb„Ãé00dcvÄp01wbîÇé00dcàÈ|00dcdÌ\01wbÈÏé00dcºÐx01wb:Ôé00dc,Õl01wb Øé00dc’Ù@00dcÚÜ´01wb–àé00dcˆá001wbÀäé00dc²åœ00dcVél01wbÊìé00dc¼íx01wb<ñé00dc.òL01wb‚õé00dctöl00dcèùD01wb4ýé00dc&þ,01wbZé00dcLd00dc¸ˆ01wbH é00dc: ˆ01wbÊ é00dc¼„01wbH)é00dc:*t00dc¶-ˆ01wbF1é00dc82D01wb„5é00dcv6<01wbº9é00dc¬:T00dc>¬01wb¼Aé00dc®Bd01wbFé00dc G|00dcJt01wb Né00dcþN„01wbŠRé00dc|S€01wbWé00dcöWˆ00dc†[ˆ01wb_é00dc`t01wb„cé00dcvd„00dch01wbšké00dcŒll01wbpé00dcòp°01wbªté00dcœu€00dc$yœ01wbÈ|é00dcº}x01wb:é00dc,‚¸00dcì…œ01wb‰é00dc‚ŠŒ01wbŽé00dcÐ01wbà’é00dcÒ“Ü00dc¶—ä01wb¢›é00dc”œô01wb é00dc‚¡´00dc>¥„01wbʨé00dc¼©001wbô¬é00dcæ­˜01wb†°é00dcx±\00dcܳd01wbH¶é00dc:·ð01wb2¹é00dc$º`01wbŒ¼é00dc~½Ð00dcV¿01wbvÁé00dchÂ801wb¨Äé00dcšÅt00dcÈÜ01wbúÉé00dcìÊÜ01wbÐÌé00dcÂÍp01wb:Ïé00dc,ÐL00dc€Ò¤01wb,Ôé00dcÕÔ01wbúÖé00dcì×€00dctÙ\01wbØÛé00dcÊÜL01wbÞé00dcßø01wbáé00dcâT00dc^ãÀ01wb&åé00dcæÈ01wbèçé00dcÚè|00dc^êL01wb²ëé00dc¤ìX01wbîé00dcöîä01wbâðé00dcÔñ”00dcpó´01wb,õé00dcöÐ01wbö÷é00dcèø”00dc„ú¬01wb8üé00dc*ý¼01wbîþé00dcàÿü01wbäé00dcÖ00dcæ¼01wbªé00dcœð01wb” é00dc† À01wbN é00dc@ Ô00dcœ01wbÀé00dc²„01wb>é00dc0”00dcÌü01wbÐé00dcÂ01wbâ!é00dcÔ"01wbà%é00dcÒ&p00dcJ*Ð01wb"-é00dc.T01wbp1é00dcb2ä00dcN5„01wbÚFé00dcÌG¼01wbIé00dc‚J01wbMé00dc N000dcDQì01wb8Té00dc*U´01wbæXé00dcØYè00dcÈ\ 01wbp`é00dcba¤01wbcé00dcdì01wbôdé00dcæeX01wbFfélibtheora-1.2.0/win32/experimental/transcoder/avi2vp3/avilib.c0000644000175000017500000014050714771706724022670 0ustar perepere/* * avilib.c * * Copyright (C) Thomas Östreich - June 2001 * multiple audio track support Copyright (C) 2002 Thomas Östreich * * Original code: * Copyright (C) 1999 Rainer Johanni * * This file is part of transcode, a linux video stream processing tool * * transcode is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * transcode is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * */ #include "avilib.h" //#include #define INFO_LIST /* The following variable indicates the kind of error */ long AVI_errno; #define MAX_INFO_STRLEN 64 static char id_str[MAX_INFO_STRLEN]; #define FRAME_RATE_SCALE 1000000 #ifndef PACKAGE #define PACKAGE "my" #define VERSION "0.00" #endif #ifndef O_BINARY /* win32 wants a binary flag to open(); this sets it to null on platforms that don't have it. */ #define O_BINARY 0 #endif /******************************************************************* * * * Utilities for writing an AVI File * * * *******************************************************************/ static size_t avi_read(int fd, char *buf, size_t len) { size_t n = 0; size_t r = 0; while (r < len) { n = read (fd, buf + r, len - r); if (n <= 0) return r; r += n; } return r; } static size_t avi_write (int fd, char *buf, size_t len) { size_t n = 0; size_t r = 0; while (r < len) { n = write (fd, buf + r, len - r); if (n < 0) return n; r += n; } return r; } /* HEADERBYTES: The number of bytes to reserve for the header */ #define HEADERBYTES 2048 /* AVI_MAX_LEN: The maximum length of an AVI file, we stay a bit below the 2GB limit (Remember: 2*10^9 is smaller than 2 GB) */ #define AVI_MAX_LEN (UINT_MAX-(1<<20)*16-HEADERBYTES) #define PAD_EVEN(x) ( ((x)+1) & ~1 ) /* Copy n into dst as a 4 byte, little endian number. Should also work on big endian machines */ static void long2str(unsigned char *dst, int n) { dst[0] = (n )&0xff; dst[1] = (n>> 8)&0xff; dst[2] = (n>>16)&0xff; dst[3] = (n>>24)&0xff; } /* Convert a string of 4 or 2 bytes to a number, also working on big endian machines */ static unsigned long str2ulong(unsigned char *str) { return ( str[0] | (str[1]<<8) | (str[2]<<16) | (str[3]<<24) ); } static unsigned long str2ushort(unsigned char *str) { return ( str[0] | (str[1]<<8) ); } /* Calculate audio sample size from number of bits and number of channels. This may have to be adjusted for eg. 12 bits and stereo */ static int avi_sampsize(avi_t *AVI, int j) { int s; s = ((AVI->track[j].a_bits+7)/8)*AVI->track[j].a_chans; // if(s==0) s=1; /* avoid possible zero divisions */ if(s<4) s=4; /* avoid possible zero divisions */ return s; } /* Add a chunk (=tag and data) to the AVI file, returns -1 on write error, 0 on success */ static int avi_add_chunk(avi_t *AVI, unsigned char *tag, unsigned char *data, int length) { unsigned char c[8]; /* Copy tag and length int c, so that we need only 1 write system call for these two values */ memcpy(c,tag,4); long2str(c+4,length); /* Output tag, length and data, restore previous position if the write fails */ length = PAD_EVEN(length); if( avi_write(AVI->fdes,(char *)c,8) != 8 || avi_write(AVI->fdes,(char *)data,length) != length ) { lseek(AVI->fdes,AVI->pos,SEEK_SET); AVI_errno = AVI_ERR_WRITE; return -1; } /* Update file position */ AVI->pos += 8 + length; //fprintf(stderr, "pos=%lu %s\n", AVI->pos, tag); return 0; } static int avi_add_index_entry(avi_t *AVI, unsigned char *tag, long flags, unsigned long pos, unsigned long len) { void *ptr; if(AVI->n_idx>=AVI->max_idx) { ptr = realloc((void *)AVI->idx,(AVI->max_idx+4096)*16); if(ptr == 0) { AVI_errno = AVI_ERR_NO_MEM; return -1; } AVI->max_idx += 4096; AVI->idx = (unsigned char((*)[16]) ) ptr; } /* Add index entry */ // fprintf(stderr, "INDEX %s %ld %lu %lu\n", tag, flags, pos, len); memcpy(AVI->idx[AVI->n_idx],tag,4); long2str(AVI->idx[AVI->n_idx]+ 4,flags); long2str(AVI->idx[AVI->n_idx]+ 8, pos); long2str(AVI->idx[AVI->n_idx]+12, len); /* Update counter */ AVI->n_idx++; if(len>AVI->max_len) AVI->max_len=len; return 0; } /* AVI_open_output_file: Open an AVI File and write a bunch of zero bytes as space for the header. returns a pointer to avi_t on success, a zero pointer on error */ avi_t* AVI_open_output_file(char * filename) { avi_t *AVI; int i; int mask = 0; unsigned char AVI_header[HEADERBYTES]; /* Allocate the avi_t struct and zero it */ AVI = (avi_t *) malloc(sizeof(avi_t)); if(AVI==0) { AVI_errno = AVI_ERR_NO_MEM; return 0; } memset((void *)AVI,0,sizeof(avi_t)); /* Since Linux needs a long time when deleting big files, we do not truncate the file when we open it. Instead it is truncated when the AVI file is closed */ /* mask = umask (0); umask (mask);*/ AVI->fdes = open(filename, O_RDWR|O_CREAT|O_BINARY, 0644 &~ mask); if (AVI->fdes < 0) { AVI_errno = AVI_ERR_OPEN; free(AVI); return 0; } /* Write out HEADERBYTES bytes, the header will go here when we are finished with writing */ for (i=0;ifdes,(char *)AVI_header,HEADERBYTES); if (i != HEADERBYTES) { close(AVI->fdes); AVI_errno = AVI_ERR_WRITE; free(AVI); return 0; } AVI->pos = HEADERBYTES; AVI->mode = AVI_MODE_WRITE; /* open for writing */ //init AVI->anum = 0; AVI->aptr = 0; return AVI; } void AVI_set_video(avi_t *AVI, int width, int height, double fps, char *compressor) { /* may only be called if file is open for writing */ if(AVI->mode==AVI_MODE_READ) return; AVI->width = width; AVI->height = height; AVI->fps = fps; if(strncmp(compressor, "RGB", 3)==0) { memset(AVI->compressor, 0, 4); } else { memcpy(AVI->compressor,compressor,4); } AVI->compressor[4] = 0; avi_update_header(AVI); } void AVI_set_audio(avi_t *AVI, int channels, long rate, int bits, int format, long mp3rate) { /* may only be called if file is open for writing */ if(AVI->mode==AVI_MODE_READ) return; //inc audio tracks AVI->aptr=AVI->anum; ++AVI->anum; if(AVI->anum > AVI_MAX_TRACKS) { fprintf(stderr, "error - only %d audio tracks supported\n", AVI_MAX_TRACKS); exit(1); } AVI->track[AVI->aptr].a_chans = channels; AVI->track[AVI->aptr].a_rate = rate; AVI->track[AVI->aptr].a_bits = bits; AVI->track[AVI->aptr].a_fmt = format; AVI->track[AVI->aptr].mp3rate = mp3rate; avi_update_header(AVI); } #define OUT4CC(s) \ if(nhb<=HEADERBYTES-4) memcpy(AVI_header+nhb,s,4); nhb += 4 #define OUTLONG(n) \ if(nhb<=HEADERBYTES-4) long2str(AVI_header+nhb,n); nhb += 4 #define OUTSHRT(n) \ if(nhb<=HEADERBYTES-2) { \ AVI_header[nhb ] = (n )&0xff; \ AVI_header[nhb+1] = (n>>8)&0xff; \ } \ nhb += 2 //ThOe write preliminary AVI file header: 0 frames, max vid/aud size int avi_update_header(avi_t *AVI) { int njunk, sampsize, hasIndex, ms_per_frame, frate, flag; int movi_len, hdrl_start, strl_start, j; unsigned char AVI_header[HEADERBYTES]; long nhb; //assume max size movi_len = AVI_MAX_LEN - HEADERBYTES + 4; //assume index will be written hasIndex=1; if(AVI->fps < 0.001) { frate=0; ms_per_frame=0; } else { frate = (int) (FRAME_RATE_SCALE*AVI->fps + 0.5); ms_per_frame=(int) (1000000/AVI->fps + 0.5); } /* Prepare the file header */ nhb = 0; /* The RIFF header */ OUT4CC ("RIFF"); OUTLONG(movi_len); // assume max size OUT4CC ("AVI "); /* Start the header list */ OUT4CC ("LIST"); OUTLONG(0); /* Length of list in bytes, don't know yet */ hdrl_start = nhb; /* Store start position */ OUT4CC ("hdrl"); /* The main AVI header */ /* The Flags in AVI File header */ #define AVIF_HASINDEX 0x00000010 /* Index at end of file */ #define AVIF_MUSTUSEINDEX 0x00000020 #define AVIF_ISINTERLEAVED 0x00000100 #define AVIF_TRUSTCKTYPE 0x00000800 /* Use CKType to find key frames */ #define AVIF_WASCAPTUREFILE 0x00010000 #define AVIF_COPYRIGHTED 0x00020000 OUT4CC ("avih"); OUTLONG(56); /* # of bytes to follow */ OUTLONG(ms_per_frame); /* Microseconds per frame */ //ThOe ->0 // OUTLONG(10000000); /* MaxBytesPerSec, I hope this will never be used */ OUTLONG(0); OUTLONG(0); /* PaddingGranularity (whatever that might be) */ /* Other sources call it 'reserved' */ flag = AVIF_ISINTERLEAVED; if(hasIndex) flag |= AVIF_HASINDEX; if(hasIndex && AVI->must_use_index) flag |= AVIF_MUSTUSEINDEX; OUTLONG(flag); /* Flags */ OUTLONG(0); // no frames yet OUTLONG(0); /* InitialFrames */ OUTLONG(AVI->anum+1); OUTLONG(0); /* SuggestedBufferSize */ OUTLONG(AVI->width); /* Width */ OUTLONG(AVI->height); /* Height */ /* MS calls the following 'reserved': */ OUTLONG(0); /* TimeScale: Unit used to measure time */ OUTLONG(0); /* DataRate: Data rate of playback */ OUTLONG(0); /* StartTime: Starting time of AVI data */ OUTLONG(0); /* DataLength: Size of AVI data chunk */ /* Start the video stream list ---------------------------------- */ OUT4CC ("LIST"); OUTLONG(0); /* Length of list in bytes, don't know yet */ strl_start = nhb; /* Store start position */ OUT4CC ("strl"); /* The video stream header */ OUT4CC ("strh"); OUTLONG(56); /* # of bytes to follow */ OUT4CC ("vids"); /* Type */ OUT4CC (AVI->compressor); /* Handler */ OUTLONG(0); /* Flags */ OUTLONG(0); /* Reserved, MS says: wPriority, wLanguage */ OUTLONG(0); /* InitialFrames */ OUTLONG(FRAME_RATE_SCALE); /* Scale */ OUTLONG(frate); /* Rate: Rate/Scale == samples/second */ OUTLONG(0); /* Start */ OUTLONG(0); // no frames yet OUTLONG(0); /* SuggestedBufferSize */ OUTLONG(-1); /* Quality */ OUTLONG(0); /* SampleSize */ OUTLONG(0); /* Frame */ OUTLONG(0); /* Frame */ // OUTLONG(0); /* Frame */ //OUTLONG(0); /* Frame */ /* The video stream format */ OUT4CC ("strf"); OUTLONG(40); /* # of bytes to follow */ OUTLONG(40); /* Size */ OUTLONG(AVI->width); /* Width */ OUTLONG(AVI->height); /* Height */ OUTSHRT(1); OUTSHRT(24); /* Planes, Count */ OUT4CC (AVI->compressor); /* Compression */ // ThOe (*3) OUTLONG(AVI->width*AVI->height*3); /* SizeImage (in bytes?) */ OUTLONG(0); /* XPelsPerMeter */ OUTLONG(0); /* YPelsPerMeter */ OUTLONG(0); /* ClrUsed: Number of colors used */ OUTLONG(0); /* ClrImportant: Number of colors important */ /* Finish stream list, i.e. put number of bytes in the list to proper pos */ long2str(AVI_header+strl_start-4,nhb-strl_start); /* Start the audio stream list ---------------------------------- */ for(j=0; janum; ++j) { sampsize = avi_sampsize(AVI, j); OUT4CC ("LIST"); OUTLONG(0); /* Length of list in bytes, don't know yet */ strl_start = nhb; /* Store start position */ OUT4CC ("strl"); /* The audio stream header */ OUT4CC ("strh"); OUTLONG(56); /* # of bytes to follow */ OUT4CC ("auds"); // ----------- // ThOe OUTLONG(0); /* Format (Optionally) */ // ----------- OUTLONG(0); /* Flags */ OUTLONG(0); /* Reserved, MS says: wPriority, wLanguage */ OUTLONG(0); /* InitialFrames */ // ThOe /4 OUTLONG(sampsize/4); /* Scale */ OUTLONG(1000*AVI->track[j].mp3rate/8); OUTLONG(0); /* Start */ OUTLONG(4*AVI->track[j].audio_bytes/sampsize); /* Length */ OUTLONG(0); /* SuggestedBufferSize */ OUTLONG(-1); /* Quality */ // ThOe /4 OUTLONG(sampsize/4); /* SampleSize */ OUTLONG(0); /* Frame */ OUTLONG(0); /* Frame */ // OUTLONG(0); /* Frame */ //OUTLONG(0); /* Frame */ /* The audio stream format */ OUT4CC ("strf"); OUTLONG(16); /* # of bytes to follow */ OUTSHRT(AVI->track[j].a_fmt); /* Format */ OUTSHRT(AVI->track[j].a_chans); /* Number of channels */ OUTLONG(AVI->track[j].a_rate); /* SamplesPerSec */ // ThOe OUTLONG(1000*AVI->track[j].mp3rate/8); //ThOe (/4) OUTSHRT(sampsize/4); /* BlockAlign */ OUTSHRT(AVI->track[j].a_bits); /* BitsPerSample */ /* Finish stream list, i.e. put number of bytes in the list to proper pos */ long2str(AVI_header+strl_start-4,nhb-strl_start); } /* Finish header list */ long2str(AVI_header+hdrl_start-4,nhb-hdrl_start); /* Calculate the needed amount of junk bytes, output junk */ njunk = HEADERBYTES - nhb - 8 - 12; /* Safety first: if njunk <= 0, somebody has played with HEADERBYTES without knowing what (s)he did. This is a fatal error */ if(njunk<=0) { fprintf(stderr,"AVI_close_output_file: # of header bytes too small\n"); exit(1); } OUT4CC ("JUNK"); OUTLONG(njunk); memset(AVI_header+nhb,0,njunk); //11/14/01 added id string if(njunk > strlen(id_str)+8) { sprintf(id_str, "%s-%s", PACKAGE, VERSION); memcpy(AVI_header+nhb, id_str, strlen(id_str)); } nhb += njunk; /* Start the movi list */ OUT4CC ("LIST"); OUTLONG(movi_len); /* Length of list in bytes */ OUT4CC ("movi"); /* Output the header, truncate the file to the number of bytes actually written, report an error if something goes wrong */ if ( lseek(AVI->fdes,0,SEEK_SET)<0 || avi_write(AVI->fdes,(char *)AVI_header,HEADERBYTES)!=HEADERBYTES || lseek(AVI->fdes,AVI->pos,SEEK_SET)<0) { AVI_errno = AVI_ERR_CLOSE; return -1; } return 0; } /* Write the header of an AVI file and close it. returns 0 on success, -1 on write error. */ static int avi_close_output_file(avi_t *AVI) { int ret, njunk, sampsize, hasIndex, ms_per_frame, frate, idxerror, flag; unsigned long movi_len; int hdrl_start, strl_start, j; unsigned char AVI_header[HEADERBYTES]; long nhb; #ifdef INFO_LIST long info_len; // time_t calptr; #endif /* Calculate length of movi list */ movi_len = AVI->pos - HEADERBYTES + 4; /* Try to output the index entries. This may fail e.g. if no space is left on device. We will report this as an error, but we still try to write the header correctly (so that the file still may be readable in the most cases */ idxerror = 0; // fprintf(stderr, "pos=%lu, index_len=%ld \n", AVI->pos, AVI->n_idx*16); ret = avi_add_chunk(AVI, (unsigned char *)"idx1", (void*)AVI->idx, AVI->n_idx*16); hasIndex = (ret==0); //fprintf(stderr, "pos=%lu, index_len=%d\n", AVI->pos, hasIndex); if(ret) { idxerror = 1; AVI_errno = AVI_ERR_WRITE_INDEX; } /* Calculate Microseconds per frame */ if(AVI->fps < 0.001) { frate=0; ms_per_frame=0; } else { frate = (int) (FRAME_RATE_SCALE*AVI->fps + 0.5); ms_per_frame=(int) (1000000/AVI->fps + 0.5); } /* Prepare the file header */ nhb = 0; /* The RIFF header */ OUT4CC ("RIFF"); OUTLONG(AVI->pos - 8); /* # of bytes to follow */ OUT4CC ("AVI "); /* Start the header list */ OUT4CC ("LIST"); OUTLONG(0); /* Length of list in bytes, don't know yet */ hdrl_start = nhb; /* Store start position */ OUT4CC ("hdrl"); /* The main AVI header */ /* The Flags in AVI File header */ #define AVIF_HASINDEX 0x00000010 /* Index at end of file */ #define AVIF_MUSTUSEINDEX 0x00000020 #define AVIF_ISINTERLEAVED 0x00000100 #define AVIF_TRUSTCKTYPE 0x00000800 /* Use CKType to find key frames */ #define AVIF_WASCAPTUREFILE 0x00010000 #define AVIF_COPYRIGHTED 0x00020000 OUT4CC ("avih"); OUTLONG(56); /* # of bytes to follow */ OUTLONG(ms_per_frame); /* Microseconds per frame */ //ThOe ->0 // OUTLONG(10000000); /* MaxBytesPerSec, I hope this will never be used */ OUTLONG(0); OUTLONG(0); /* PaddingGranularity (whatever that might be) */ /* Other sources call it 'reserved' */ flag = AVIF_ISINTERLEAVED; if(hasIndex) flag |= AVIF_HASINDEX; if(hasIndex && AVI->must_use_index) flag |= AVIF_MUSTUSEINDEX; OUTLONG(flag); /* Flags */ OUTLONG(AVI->video_frames); /* TotalFrames */ OUTLONG(0); /* InitialFrames */ OUTLONG(AVI->anum+1); // if (AVI->track[0].audio_bytes) // { OUTLONG(2); } /* Streams */ // else // { OUTLONG(1); } /* Streams */ OUTLONG(0); /* SuggestedBufferSize */ OUTLONG(AVI->width); /* Width */ OUTLONG(AVI->height); /* Height */ /* MS calls the following 'reserved': */ OUTLONG(0); /* TimeScale: Unit used to measure time */ OUTLONG(0); /* DataRate: Data rate of playback */ OUTLONG(0); /* StartTime: Starting time of AVI data */ OUTLONG(0); /* DataLength: Size of AVI data chunk */ /* Start the video stream list ---------------------------------- */ OUT4CC ("LIST"); OUTLONG(0); /* Length of list in bytes, don't know yet */ strl_start = nhb; /* Store start position */ OUT4CC ("strl"); /* The video stream header */ OUT4CC ("strh"); OUTLONG(56); /* # of bytes to follow */ OUT4CC ("vids"); /* Type */ OUT4CC (AVI->compressor); /* Handler */ OUTLONG(0); /* Flags */ OUTLONG(0); /* Reserved, MS says: wPriority, wLanguage */ OUTLONG(0); /* InitialFrames */ OUTLONG(FRAME_RATE_SCALE); /* Scale */ OUTLONG(frate); /* Rate: Rate/Scale == samples/second */ OUTLONG(0); /* Start */ OUTLONG(AVI->video_frames); /* Length */ OUTLONG(0); /* SuggestedBufferSize */ OUTLONG(-1); /* Quality */ OUTLONG(0); /* SampleSize */ OUTLONG(0); /* Frame */ OUTLONG(0); /* Frame */ // OUTLONG(0); /* Frame */ //OUTLONG(0); /* Frame */ /* The video stream format */ OUT4CC ("strf"); OUTLONG(40); /* # of bytes to follow */ OUTLONG(40); /* Size */ OUTLONG(AVI->width); /* Width */ OUTLONG(AVI->height); /* Height */ OUTSHRT(1); OUTSHRT(24); /* Planes, Count */ OUT4CC (AVI->compressor); /* Compression */ // ThOe (*3) OUTLONG(AVI->width*AVI->height*3); /* SizeImage (in bytes?) */ OUTLONG(0); /* XPelsPerMeter */ OUTLONG(0); /* YPelsPerMeter */ OUTLONG(0); /* ClrUsed: Number of colors used */ OUTLONG(0); /* ClrImportant: Number of colors important */ /* Finish stream list, i.e. put number of bytes in the list to proper pos */ long2str(AVI_header+strl_start-4,nhb-strl_start); /* Start the audio stream list ---------------------------------- */ for(j=0; janum; ++j) { //if (AVI->track[j].a_chans && AVI->track[j].audio_bytes) { sampsize = avi_sampsize(AVI, j); OUT4CC ("LIST"); OUTLONG(0); /* Length of list in bytes, don't know yet */ strl_start = nhb; /* Store start position */ OUT4CC ("strl"); /* The audio stream header */ OUT4CC ("strh"); OUTLONG(56); /* # of bytes to follow */ OUT4CC ("auds"); // ----------- // ThOe OUTLONG(0); /* Format (Optionally) */ // ----------- OUTLONG(0); /* Flags */ OUTLONG(0); /* Reserved, MS says: wPriority, wLanguage */ OUTLONG(0); /* InitialFrames */ // ThOe /4 OUTLONG(sampsize/4); /* Scale */ OUTLONG(1000*AVI->track[j].mp3rate/8); OUTLONG(0); /* Start */ OUTLONG(4*AVI->track[j].audio_bytes/sampsize); /* Length */ OUTLONG(0); /* SuggestedBufferSize */ OUTLONG(-1); /* Quality */ // ThOe /4 OUTLONG(sampsize/4); /* SampleSize */ OUTLONG(0); /* Frame */ OUTLONG(0); /* Frame */ // OUTLONG(0); /* Frame */ //OUTLONG(0); /* Frame */ /* The audio stream format */ OUT4CC ("strf"); OUTLONG(16); /* # of bytes to follow */ OUTSHRT(AVI->track[j].a_fmt); /* Format */ OUTSHRT(AVI->track[j].a_chans); /* Number of channels */ OUTLONG(AVI->track[j].a_rate); /* SamplesPerSec */ // ThOe OUTLONG(1000*AVI->track[j].mp3rate/8); //ThOe (/4) OUTSHRT(sampsize/4); /* BlockAlign */ OUTSHRT(AVI->track[j].a_bits); /* BitsPerSample */ /* Finish stream list, i.e. put number of bytes in the list to proper pos */ } long2str(AVI_header+strl_start-4,nhb-strl_start); } /* Finish header list */ long2str(AVI_header+hdrl_start-4,nhb-hdrl_start); // add INFO list --- (0.6.0pre4) #ifdef INFO_LIST OUT4CC ("LIST"); //FIXME info_len = MAX_INFO_STRLEN + 12; OUTLONG(info_len); OUT4CC ("INFO"); // OUT4CC ("INAM"); // OUTLONG(MAX_INFO_STRLEN); // sprintf(id_str, "\t"); // memset(AVI_header+nhb, 0, MAX_INFO_STRLEN); // memcpy(AVI_header+nhb, id_str, strlen(id_str)); // nhb += MAX_INFO_STRLEN; OUT4CC ("ISFT"); OUTLONG(MAX_INFO_STRLEN); sprintf(id_str, "%s-%s", PACKAGE, VERSION); memset(AVI_header+nhb, 0, MAX_INFO_STRLEN); memcpy(AVI_header+nhb, id_str, strlen(id_str)); nhb += MAX_INFO_STRLEN; // OUT4CC ("ICMT"); // OUTLONG(MAX_INFO_STRLEN); // calptr=time(NULL); // sprintf(id_str, "\t%s %s", ctime(&calptr), ""); // memset(AVI_header+nhb, 0, MAX_INFO_STRLEN); // memcpy(AVI_header+nhb, id_str, 25); // nhb += MAX_INFO_STRLEN; #endif // ---------------------------- /* Calculate the needed amount of junk bytes, output junk */ njunk = HEADERBYTES - nhb - 8 - 12; /* Safety first: if njunk <= 0, somebody has played with HEADERBYTES without knowing what (s)he did. This is a fatal error */ if(njunk<=0) { fprintf(stderr,"AVI_close_output_file: # of header bytes too small\n"); exit(1); } OUT4CC ("JUNK"); OUTLONG(njunk); memset(AVI_header+nhb,0,njunk); nhb += njunk; /* Start the movi list */ OUT4CC ("LIST"); OUTLONG(movi_len); /* Length of list in bytes */ OUT4CC ("movi"); /* Output the header, truncate the file to the number of bytes actually written, report an error if something goes wrong */ if ( lseek(AVI->fdes,0,SEEK_SET)<0 || avi_write(AVI->fdes,(char *)AVI_header,HEADERBYTES)!=HEADERBYTES //|| ftruncate(AVI->fdes,AVI->pos)<0 ) { AVI_errno = AVI_ERR_CLOSE; return -1; } if(idxerror) return -1; return 0; } /* AVI_write_data: Add video or audio data to the file; Return values: 0 No error; -1 Error, AVI_errno is set appropriately; */ static int avi_write_data(avi_t *AVI, char *data, unsigned long length, int audio, int keyframe) { int n; unsigned char astr[5]; /* Check for maximum file length */ if ( (AVI->pos + 8 + length + 8 + (AVI->n_idx+1)*16) > AVI_MAX_LEN ) { AVI_errno = AVI_ERR_SIZELIM; return -1; } /* Add index entry */ //set tag for current audio track sprintf((char *)astr, "0%1dwb", AVI->aptr+1); if(audio) n = avi_add_index_entry(AVI,astr,0x00,AVI->pos,length); else n = avi_add_index_entry(AVI,(unsigned char *) "00db",((keyframe)?0x10:0x0),AVI->pos,length); if(n) return -1; /* Output tag and data */ if(audio) n = avi_add_chunk(AVI,(unsigned char *) astr, (unsigned char *)data,length); else n = avi_add_chunk(AVI,(unsigned char *)"00db",(unsigned char *)data,length); if (n) return -1; return 0; } int AVI_write_frame(avi_t *AVI, char *data, long bytes, int keyframe) { unsigned long pos; if(AVI->mode==AVI_MODE_READ) { AVI_errno = AVI_ERR_NOT_PERM; return -1; } pos = AVI->pos; if(avi_write_data(AVI,data,bytes,0,keyframe)) return -1; AVI->last_pos = pos; AVI->last_len = bytes; AVI->video_frames++; return 0; } int AVI_dup_frame(avi_t *AVI) { if(AVI->mode==AVI_MODE_READ) { AVI_errno = AVI_ERR_NOT_PERM; return -1; } if(AVI->last_pos==0) return 0; /* No previous real frame */ if(avi_add_index_entry(AVI,(unsigned char *)"00db",0x10,AVI->last_pos,AVI->last_len)) return -1; AVI->video_frames++; AVI->must_use_index = 1; return 0; } int AVI_write_audio(avi_t *AVI, char *data, long bytes) { if(AVI->mode==AVI_MODE_READ) { AVI_errno = AVI_ERR_NOT_PERM; return -1; } if( avi_write_data(AVI,data,bytes,1,0) ) return -1; AVI->track[AVI->aptr].audio_bytes += bytes; return 0; } int AVI_append_audio(avi_t *AVI, char *data, long bytes) { long i, length, pos; unsigned char c[4]; if(AVI->mode==AVI_MODE_READ) { AVI_errno = AVI_ERR_NOT_PERM; return -1; } // update last index entry: --AVI->n_idx; length = str2ulong(AVI->idx[AVI->n_idx]+12); pos = str2ulong(AVI->idx[AVI->n_idx]+8); //update; long2str(AVI->idx[AVI->n_idx]+12,length+bytes); ++AVI->n_idx; AVI->track[AVI->aptr].audio_bytes += bytes; //update chunk header lseek(AVI->fdes, pos+4, SEEK_SET); long2str(c, length+bytes); avi_write(AVI->fdes,(char *) c, 4); lseek(AVI->fdes, pos+8+length, SEEK_SET); i=PAD_EVEN(length + bytes); bytes = i - length; avi_write(AVI->fdes, data, bytes); AVI->pos = pos + 8 + i; return 0; } long AVI_bytes_remain(avi_t *AVI) { if(AVI->mode==AVI_MODE_READ) return 0; return ( AVI_MAX_LEN - (AVI->pos + 8 + 16*AVI->n_idx)); } long AVI_bytes_written(avi_t *AVI) { if(AVI->mode==AVI_MODE_READ) return 0; return (AVI->pos + 8 + 16*AVI->n_idx); } int AVI_set_audio_track(avi_t *AVI, int track) { if(track < 0 || track + 1 > AVI->anum) return(-1); //this info is not written to file anyway AVI->aptr=track; return 0; } int AVI_get_audio_track(avi_t *AVI) { return(AVI->aptr); } /******************************************************************* * * * Utilities for reading video and audio from an AVI File * * * *******************************************************************/ int AVI_close(avi_t *AVI) { int ret; /* If the file was open for writing, the header and index still have to be written */ if(AVI->mode == AVI_MODE_WRITE) ret = avi_close_output_file(AVI); else ret = 0; /* Even if there happened an error, we first clean up */ close(AVI->fdes); if(AVI->idx) free(AVI->idx); if(AVI->video_index) free(AVI->video_index); //FIXME //if(AVI->audio_index) free(AVI->audio_index); free(AVI); return ret; } #define ERR_EXIT(x) \ { \ AVI_close(AVI); \ AVI_errno = x; \ return 0; \ } avi_t *AVI_open_input_file(char *filename, int getIndex) { avi_t *AVI=NULL; /* Create avi_t structure */ AVI = (avi_t *) malloc(sizeof(avi_t)); if(AVI==NULL) { AVI_errno = AVI_ERR_NO_MEM; return 0; } memset((void *)AVI,0,sizeof(avi_t)); AVI->mode = AVI_MODE_READ; /* open for reading */ /* Open the file */ AVI->fdes = open(filename,O_RDONLY|O_BINARY); if(AVI->fdes < 0) { AVI_errno = AVI_ERR_OPEN; free(AVI); return 0; } avi_parse_input_file(AVI, getIndex); AVI->aptr=0; //reset return AVI; } avi_t *AVI_open_fd(int fd, int getIndex) { avi_t *AVI=NULL; /* Create avi_t structure */ AVI = (avi_t *) malloc(sizeof(avi_t)); if(AVI==NULL) { AVI_errno = AVI_ERR_NO_MEM; return 0; } memset((void *)AVI,0,sizeof(avi_t)); AVI->mode = AVI_MODE_READ; /* open for reading */ // file already open AVI->fdes = fd; avi_parse_input_file(AVI, getIndex); AVI->aptr=0; //reset return AVI; } int avi_parse_input_file(avi_t *AVI, int getIndex) { long i, n, rate, scale, idx_type; unsigned char *hdrl_data; long header_offset=0, hdrl_len=0; long nvi, nai[AVI_MAX_TRACKS], ioff; long tot[AVI_MAX_TRACKS]; int j; int lasttag = 0; int vids_strh_seen = 0; int vids_strf_seen = 0; int auds_strh_seen = 0; // int auds_strf_seen = 0; int num_stream = 0; char data[256]; /* Read first 12 bytes and check that this is an AVI file */ if( avi_read(AVI->fdes,data,12) != 12 ) ERR_EXIT(AVI_ERR_READ) if( strncasecmp(data ,"RIFF",4) !=0 || strncasecmp(data+8,"AVI ",4) !=0 ) ERR_EXIT(AVI_ERR_NO_AVI) /* Go through the AVI file and extract the header list, the start position of the 'movi' list and an optionally present idx1 tag */ hdrl_data = 0; while(1) { if( avi_read(AVI->fdes,data,8) != 8 ) break; /* We assume it's EOF */ n = str2ulong((unsigned char *) data+4); n = PAD_EVEN(n); if(strncasecmp(data,"LIST",4) == 0) { if( avi_read(AVI->fdes,data,4) != 4 ) ERR_EXIT(AVI_ERR_READ) n -= 4; if(strncasecmp(data,"hdrl",4) == 0) { hdrl_len = n; hdrl_data = (unsigned char *) malloc(n); if(hdrl_data==0) ERR_EXIT(AVI_ERR_NO_MEM); // offset of header header_offset = lseek(AVI->fdes,0,SEEK_CUR); if( avi_read(AVI->fdes,(char *)hdrl_data,n) != n ) ERR_EXIT(AVI_ERR_READ) } else if(strncasecmp(data,"movi",4) == 0) { AVI->movi_start = lseek(AVI->fdes,0,SEEK_CUR); lseek(AVI->fdes,n,SEEK_CUR); } else lseek(AVI->fdes,n,SEEK_CUR); } else if(strncasecmp(data,"idx1",4) == 0) { /* n must be a multiple of 16, but the reading does not break if this is not the case */ AVI->n_idx = AVI->max_idx = n/16; AVI->idx = (unsigned char((*)[16]) ) malloc(n); if(AVI->idx==0) ERR_EXIT(AVI_ERR_NO_MEM) if(avi_read(AVI->fdes, (char *) AVI->idx, n) != n ) ERR_EXIT(AVI_ERR_READ) } else lseek(AVI->fdes,n,SEEK_CUR); } if(!hdrl_data ) ERR_EXIT(AVI_ERR_NO_HDRL) if(!AVI->movi_start) ERR_EXIT(AVI_ERR_NO_MOVI) /* Interpret the header list */ for(i=0;icompressor,hdrl_data+i+4,4); AVI->compressor[4] = 0; // ThOe AVI->v_codech_off = header_offset + i+4; scale = str2ulong((unsigned char *)hdrl_data+i+20); rate = str2ulong(hdrl_data+i+24); if(scale!=0) AVI->fps = (double)rate/(double)scale; AVI->video_frames = str2ulong(hdrl_data+i+32); AVI->video_strn = num_stream; AVI->max_len = 0; vids_strh_seen = 1; lasttag = 1; /* vids */ } else if (strncasecmp ((char *) hdrl_data+i,"auds",4) ==0 && ! auds_strh_seen) { //inc audio tracks AVI->aptr=AVI->anum; ++AVI->anum; if(AVI->anum > AVI_MAX_TRACKS) { fprintf(stderr, "error - only %d audio tracks supported\n", AVI_MAX_TRACKS); return(-1); } AVI->track[AVI->aptr].audio_bytes = str2ulong(hdrl_data+i+32)*avi_sampsize(AVI, 0); AVI->track[AVI->aptr].audio_strn = num_stream; // auds_strh_seen = 1; lasttag = 2; /* auds */ // ThOe AVI->track[AVI->aptr].a_codech_off = header_offset + i; } else lasttag = 0; num_stream++; } else if(strncasecmp((char *) hdrl_data+i,"strf",4)==0) { i += 8; if(lasttag == 1) { AVI->width = str2ulong(hdrl_data+i+4); AVI->height = str2ulong(hdrl_data+i+8); vids_strf_seen = 1; //ThOe AVI->v_codecf_off = header_offset + i+16; memcpy(AVI->compressor2, hdrl_data+i+16, 4); AVI->compressor2[4] = 0; } else if(lasttag == 2) { AVI->track[AVI->aptr].a_fmt = str2ushort(hdrl_data+i ); //ThOe AVI->track[AVI->aptr].a_codecf_off = header_offset + i; AVI->track[AVI->aptr].a_chans = str2ushort(hdrl_data+i+2); AVI->track[AVI->aptr].a_rate = str2ulong (hdrl_data+i+4); //ThOe: read mp3bitrate AVI->track[AVI->aptr].mp3rate = 8*str2ulong(hdrl_data+i+8)/1000; //:ThOe AVI->track[AVI->aptr].a_bits = str2ushort(hdrl_data+i+14); // auds_strf_seen = 1; } lasttag = 0; } else { i += 8; lasttag = 0; } i += n; } free(hdrl_data); if(!vids_strh_seen || !vids_strf_seen) ERR_EXIT(AVI_ERR_NO_VIDS) AVI->video_tag[0] = AVI->video_strn/10 + '0'; AVI->video_tag[1] = AVI->video_strn%10 + '0'; AVI->video_tag[2] = 'd'; AVI->video_tag[3] = 'b'; /* Audio tag is set to "99wb" if no audio present */ if(!AVI->track[0].a_chans) AVI->track[0].audio_strn = 99; for(j=0; janum; ++j) { AVI->track[j].audio_tag[0] = (j+1)/10 + '0'; AVI->track[j].audio_tag[1] = (j+1)%10 + '0'; AVI->track[j].audio_tag[2] = 'w'; AVI->track[j].audio_tag[3] = 'b'; } lseek(AVI->fdes,AVI->movi_start,SEEK_SET); /* get index if wanted */ if(!getIndex) return(0); /* if the file has an idx1, check if this is relative to the start of the file or to the start of the movi list */ idx_type = 0; if(AVI->idx) { long pos, len; /* Search the first videoframe in the idx1 and look where it is in the file */ for(i=0;in_idx;i++) if( strncasecmp((char *) AVI->idx[i],(char *) AVI->video_tag,3)==0 ) break; if(i>=AVI->n_idx) ERR_EXIT(AVI_ERR_NO_VIDS) pos = str2ulong(AVI->idx[i]+ 8); len = str2ulong(AVI->idx[i]+12); lseek(AVI->fdes,pos,SEEK_SET); if(avi_read(AVI->fdes,data,8)!=8) ERR_EXIT(AVI_ERR_READ) if( strncasecmp((char *)data,(char *)AVI->idx[i],4)==0 && str2ulong((unsigned char *)data+4)==len ) { idx_type = 1; /* Index from start of file */ } else { lseek(AVI->fdes,pos+AVI->movi_start-4,SEEK_SET); if(avi_read(AVI->fdes,data,8)!=8) ERR_EXIT(AVI_ERR_READ) if( strncasecmp((char *)data,(char *)AVI->idx[i],4)==0 && str2ulong((unsigned char *)data+4)==len ) { idx_type = 2; /* Index from start of movi list */ } } /* idx_type remains 0 if neither of the two tests above succeeds */ } if(idx_type == 0) { /* we must search through the file to get the index */ lseek(AVI->fdes, AVI->movi_start, SEEK_SET); AVI->n_idx = 0; while(1) { if( avi_read(AVI->fdes,data,8) != 8 ) break; n = str2ulong((unsigned char *)data+4); /* The movi list may contain sub-lists, ignore them */ if(strncasecmp(data,"LIST",4)==0) { lseek(AVI->fdes,4,SEEK_CUR); continue; } /* Check if we got a tag ##db, ##dc or ##wb */ if( ( (data[2]=='d' || data[2]=='D') && (data[3]=='b' || data[3]=='B' || data[3]=='c' || data[3]=='C') ) || ( (data[2]=='w' || data[2]=='W') && (data[3]=='b' || data[3]=='B') ) ) { avi_add_index_entry(AVI,(unsigned char *) data,0,lseek(AVI->fdes,0,SEEK_CUR)-8,n); } lseek(AVI->fdes,PAD_EVEN(n),SEEK_CUR); } idx_type = 1; } /* Now generate the video index and audio index arrays */ nvi = 0; for(j=0; janum; ++j) nai[j] = 0; for(i=0;in_idx;i++) { if(strncasecmp((char *)AVI->idx[i],(char *) AVI->video_tag,3) == 0) nvi++; for(j=0; janum; ++j) if(strncasecmp((char *)AVI->idx[i], AVI->track[j].audio_tag,4) == 0) nai[j]++; } AVI->video_frames = nvi; for(j=0; janum; ++j) AVI->track[j].audio_chunks = nai[j]; // fprintf(stderr, "chunks = %ld %d %s\n", AVI->track[0].audio_chunks, AVI->anum, AVI->track[0].audio_tag); if(AVI->video_frames==0) ERR_EXIT(AVI_ERR_NO_VIDS); AVI->video_index = (video_index_entry *) malloc(nvi*sizeof(video_index_entry)); if(AVI->video_index==0) ERR_EXIT(AVI_ERR_NO_MEM); for(j=0; janum; ++j) { if(AVI->track[j].audio_chunks) { AVI->track[j].audio_index = (audio_index_entry *) malloc(nai[j]*sizeof(audio_index_entry)); if(AVI->track[j].audio_index==0) ERR_EXIT(AVI_ERR_NO_MEM); } } nvi = 0; for(j=0; janum; ++j) nai[j] = tot[j] = 0; ioff = idx_type == 1 ? 8 : AVI->movi_start+4; for(i=0;in_idx;i++) { //video if(strncasecmp((char *)AVI->idx[i],(char *)AVI->video_tag,3) == 0) { AVI->video_index[nvi].key = str2ulong(AVI->idx[i]+ 4); AVI->video_index[nvi].pos = str2ulong(AVI->idx[i]+ 8)+ioff; AVI->video_index[nvi].len = str2ulong(AVI->idx[i]+12); nvi++; } //audio for(j=0; janum; ++j) { if(strncasecmp((char *)AVI->idx[i],AVI->track[j].audio_tag,4) == 0) { AVI->track[j].audio_index[nai[j]].pos = str2ulong(AVI->idx[i]+ 8)+ioff; AVI->track[j].audio_index[nai[j]].len = str2ulong(AVI->idx[i]+12); AVI->track[j].audio_index[nai[j]].tot = tot[j]; tot[j] += AVI->track[j].audio_index[nai[j]].len; nai[j]++; } } } for(j=0; janum; ++j) AVI->track[j].audio_bytes = tot[j]; /* Reposition the file */ lseek(AVI->fdes,AVI->movi_start,SEEK_SET); AVI->video_pos = 0; return(0); } long AVI_video_frames(avi_t *AVI) { return AVI->video_frames; } int AVI_video_width(avi_t *AVI) { return AVI->width; } int AVI_video_height(avi_t *AVI) { return AVI->height; } double AVI_frame_rate(avi_t *AVI) { return AVI->fps; } char* AVI_video_compressor(avi_t *AVI) { return AVI->compressor2; } long AVI_max_video_chunk(avi_t *AVI) { return AVI->max_len; } int AVI_audio_tracks(avi_t *AVI) { return(AVI->anum); } int AVI_audio_channels(avi_t *AVI) { return AVI->track[AVI->aptr].a_chans; } long AVI_audio_mp3rate(avi_t *AVI) { return AVI->track[AVI->aptr].mp3rate; } int AVI_audio_bits(avi_t *AVI) { return AVI->track[AVI->aptr].a_bits; } int AVI_audio_format(avi_t *AVI) { return AVI->track[AVI->aptr].a_fmt; } long AVI_audio_rate(avi_t *AVI) { return AVI->track[AVI->aptr].a_rate; } long AVI_audio_bytes(avi_t *AVI) { return AVI->track[AVI->aptr].audio_bytes; } long AVI_audio_chunks(avi_t *AVI) { return AVI->track[AVI->aptr].audio_chunks; } long AVI_audio_codech_offset(avi_t *AVI) { return AVI->track[AVI->aptr].a_codech_off; } long AVI_audio_codecf_offset(avi_t *AVI) { return AVI->track[AVI->aptr].a_codecf_off; } long AVI_video_codech_offset(avi_t *AVI) { return AVI->v_codech_off; } long AVI_video_codecf_offset(avi_t *AVI) { return AVI->v_codecf_off; } long AVI_frame_size(avi_t *AVI, long frame) { if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; } if(!AVI->video_index) { AVI_errno = AVI_ERR_NO_IDX; return -1; } if(frame < 0 || frame >= AVI->video_frames) return 0; return(AVI->video_index[frame].len); } long AVI_audio_size(avi_t *AVI, long frame) { if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; } if(!AVI->track[AVI->aptr].audio_index) { AVI_errno = AVI_ERR_NO_IDX; return -1; } if(frame < 0 || frame >= AVI->track[AVI->aptr].audio_chunks) return 0; return(AVI->track[AVI->aptr].audio_index[frame].len); } long AVI_get_video_position(avi_t *AVI, long frame) { if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; } if(!AVI->video_index) { AVI_errno = AVI_ERR_NO_IDX; return -1; } if(frame < 0 || frame >= AVI->video_frames) return 0; return(AVI->video_index[frame].pos); } int AVI_seek_start(avi_t *AVI) { if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; } lseek(AVI->fdes,AVI->movi_start,SEEK_SET); AVI->video_pos = 0; return 0; } int AVI_set_video_position(avi_t *AVI, long frame) { if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; } if(!AVI->video_index) { AVI_errno = AVI_ERR_NO_IDX; return -1; } if (frame < 0 ) frame = 0; AVI->video_pos = frame; return 0; } int AVI_set_audio_bitrate(avi_t *AVI, long bitrate) { if(AVI->mode==AVI_MODE_READ) { AVI_errno = AVI_ERR_NOT_PERM; return -1; } AVI->track[AVI->aptr].mp3rate = bitrate; return 0; } long AVI_read_frame(avi_t *AVI, char *vidbuf, int *keyframe) { long n; if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; } if(!AVI->video_index) { AVI_errno = AVI_ERR_NO_IDX; return -1; } if(AVI->video_pos < 0 || AVI->video_pos >= AVI->video_frames) return -1; n = AVI->video_index[AVI->video_pos].len; *keyframe = (AVI->video_index[AVI->video_pos].key==0x10) ? 1:0; lseek(AVI->fdes, AVI->video_index[AVI->video_pos].pos, SEEK_SET); if (avi_read(AVI->fdes,vidbuf,n) != n) { AVI_errno = AVI_ERR_READ; return -1; } AVI->video_pos++; return n; } int AVI_set_audio_position(avi_t *AVI, long byte) { long n0, n1, n; if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; } if(!AVI->track[AVI->aptr].audio_index) { AVI_errno = AVI_ERR_NO_IDX; return -1; } if(byte < 0) byte = 0; /* Binary search in the audio chunks */ n0 = 0; n1 = AVI->track[AVI->aptr].audio_chunks; while(n0track[AVI->aptr].audio_index[n].tot>byte) n1 = n; else n0 = n; } AVI->track[AVI->aptr].audio_posc = n0; AVI->track[AVI->aptr].audio_posb = byte - AVI->track[AVI->aptr].audio_index[n0].tot; return 0; } long AVI_read_audio(avi_t *AVI, char *audbuf, long bytes) { long nr, pos, left, todo; if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; } if(!AVI->track[AVI->aptr].audio_index) { AVI_errno = AVI_ERR_NO_IDX; return -1; } nr = 0; /* total number of bytes read */ while(bytes>0) { left = AVI->track[AVI->aptr].audio_index[AVI->track[AVI->aptr].audio_posc].len - AVI->track[AVI->aptr].audio_posb; if(left==0) { if(AVI->track[AVI->aptr].audio_posc>=AVI->track[AVI->aptr].audio_chunks-1) return nr; AVI->track[AVI->aptr].audio_posc++; AVI->track[AVI->aptr].audio_posb = 0; continue; } if(bytestrack[AVI->aptr].audio_index[AVI->track[AVI->aptr].audio_posc].pos + AVI->track[AVI->aptr].audio_posb; lseek(AVI->fdes, pos, SEEK_SET); if (avi_read(AVI->fdes,audbuf+nr,todo) != todo) { AVI_errno = AVI_ERR_READ; return -1; } bytes -= todo; nr += todo; AVI->track[AVI->aptr].audio_posb += todo; } return nr; } /* AVI_read_data: Special routine for reading the next audio or video chunk without having an index of the file. */ int AVI_read_data(avi_t *AVI, char *vidbuf, long max_vidbuf, char *audbuf, long max_audbuf, long *len) { /* * Return codes: * * 1 = video data read * 2 = audio data read * 0 = reached EOF * -1 = video buffer too small * -2 = audio buffer too small */ int n; char data[8]; if(AVI->mode==AVI_MODE_WRITE) return 0; while(1) { /* Read tag and length */ if( avi_read(AVI->fdes,data,8) != 8 ) return 0; /* if we got a list tag, ignore it */ if(strncasecmp(data,"LIST",4) == 0) { lseek(AVI->fdes,4,SEEK_CUR); continue; } n = PAD_EVEN(str2ulong((unsigned char *)data+4)); if(strncasecmp(data,AVI->video_tag,3) == 0) { *len = n; AVI->video_pos++; if(n>max_vidbuf) { lseek(AVI->fdes,n,SEEK_CUR); return -1; } if(avi_read(AVI->fdes,vidbuf,n) != n ) return 0; return 1; } else if(strncasecmp(data,AVI->track[AVI->aptr].audio_tag,4) == 0) { *len = n; if(n>max_audbuf) { lseek(AVI->fdes,n,SEEK_CUR); return -2; } if(avi_read(AVI->fdes,audbuf,n) != n ) return 0; return 2; break; } else if(lseek(AVI->fdes,n,SEEK_CUR)<0) return 0; } } /* AVI_print_error: Print most recent error (similar to perror) */ char *(avi_errors[]) = { /* 0 */ "avilib - No Error", /* 1 */ "avilib - AVI file size limit reached", /* 2 */ "avilib - Error opening AVI file", /* 3 */ "avilib - Error reading from AVI file", /* 4 */ "avilib - Error writing to AVI file", /* 5 */ "avilib - Error writing index (file may still be usable)", /* 6 */ "avilib - Error closing AVI file", /* 7 */ "avilib - Operation (read/write) not permitted", /* 8 */ "avilib - Out of memory (malloc failed)", /* 9 */ "avilib - Not an AVI file", /* 10 */ "avilib - AVI file has no header list (corrupted?)", /* 11 */ "avilib - AVI file has no MOVI list (corrupted?)", /* 12 */ "avilib - AVI file has no video data", /* 13 */ "avilib - operation needs an index", /* 14 */ "avilib - Unknown Error" }; static int num_avi_errors = sizeof(avi_errors)/sizeof(char*); static char error_string[4096]; void AVI_print_error(char *str) { int aerrno; aerrno = (AVI_errno>=0 && AVI_errno=0 && AVI_errno™‹Cài°Á†Ylt5€ô‡M-+ Ê)²ÓÂ)R‡M`q°ø¥ ¶ `F àé'bÀð¦°ìk`f™…4 &°+AÐÊždÅta^ªŸ€|Ħ‘Í„Ž;Á͇¼Çb8ǯ£lR'c}ô»¥¥¥¥¥¤i“¥è¼Ï4ú{l2x‰Õ¹¤wö" /Nž£é0&ÑÔW¨¾¾|Óñîàúu?KÞ®—®°jé„p¸.lœú¢~Óéñl%ϧƒé¬ŽŸtòÑO>y’k –kÿ#G-Q¨æâ5Q¨êT´º¢r Ó"":#ÈÀK<š ÀFRAME œ~ ÏÁ[ÀFRAME ­~ ÏÁ[ÀFRAME ­~ ÏÁ[ÀFRAME ­~ ÏÁ[ÀFRAME ­~ ÏÁ[ÀFRAME ­~ ÏÁ[ÀFRAME ­~ ÏÁ[ÀFRAME ­~ ÏÁ[ÀFRAME Ä®|.߀£Œx?;ìß¡Ûô(€˜~à‹ ¤C&8eÔŒ—Š}*úÖ ùY¬AtA®ƒŸHTMAÑiSFŒöÓêh`Keù1öÌ^µxCI²m¬®º¼Äš4^4ï~»u)í×6¦Jœ w´u°ÛÈÃL¥À*nþ ™ÎJõöm*¤y¤¼Í抜'yÚGïà!%®ûwz÷‘!rÓ¢SM¸¦Jc¸Ÿ¬*k\ÏÅï9X„URƒ9&w·Ïˆ`FRAME D®|.߀£Œx?tÌç©ñ©ñÕ_p­¦ÓÊÚ¬›Öàø/Ñýæ1@Ü4ÌÄTsÅàÖ >L´j¨ZTóÜ\ýU3N€ÅjhFpÛ"Þ8ŸCSÏšvwÒK·#Àà¤Ë®ÌJÒ_—[ɬA>€}¨˜¥Î‘4Õ1Ö¤X.§y›à<ŠÄF·ëfŸÝ\æe“¡íWB—< Ý×h {tOMÎS‚rР-Wë’ÉB±ZÞ— ÉG¿,iÓÈ×1Äu¬Eêçp,Â%W8¥rgÛôô+™|æ ëʬ'‘QÑÀÖØ·E¶é¿±×„Á?7rȶü¶[€kUÊ0´á“°;"z´$rÿpbõþ êê+÷Ët÷%휡etfzÃÞzûf^¥ûJÜçH¾\ }8剿ÀØ©O FRAME ̺|.žÀ)F<Kð3g^”/SêcƒŽª¯¾‘Õ:sL£º»«y·šð‹{ÔíáÈwеjŒJdQu´?pøåT…[ÝP%Ø„ÂÀH#Yd°b'Àžd/ÐëÛ­Ÿcý’¦Ï¯jcB#Ä ‹ãiÚ@òK¾åÀqH“À2YJmý§Ö jyÕòÂ"™fÃRWØ9¨ôï(M}2yd-¡•ê÷,TçÁmEèAž¯Dû·8o†Èº€gå~°úëè“€¶Úp"<¡íÆàøÉ3ß7dåã@LEñR¥ýѽ¿‰^ee+g¬ðègcMŸÉZ0 s‘HüñcÒá‰lœsðy™ó”ƒx¨ÇhEÍaåþm¬=×[úraî3D’a<Ïþ7ÌùÌd]ƒ9…ôW€~¼¹ŠÒ¢©î¿÷zäQ;ˆ}ØÀŒð›Á€æ.)Á"ŸÎb“€„ç‚»Ó<Î2{'ù:î˵<²¸ôõXá Оz±rx4Ÿm˜±§ðT *Ì|OB/-@üViµ9_Çݺ©áP%Êj½ÜÌU”ˆê©U:Hrx7†µ™ÏßfAÆb·¾{ãÔèµC¢âµõ͹{G”Y¦~;±°®H%´ –û”ª¹@w=ÍìÏá9ôv›pÚTßÝgBˆàï¿hŬ>mšv%IGë$èœÅ.öž›û9ŸÍö•Ö©†qYA~ó³Šc,Dìt.1ã°ÏÁ8PÉÅî‘‘yÚ°Üåô]$sCcÁõÙS¥Ul@¢ýÔidK°çðG¶ƒ)=²Ç­’¿öÛRJÔmJ«»¼éR'è‹0ЦJiú”`‹ûÏ›£wÿ‰€ßóoú•Î2öŠ0âM(ÌÛ2öÿG|òúyúå+âßiy‘G‘\G˺4– g—ÆýgÌ7dÎ;9¿%e¦…­'jcò_ô¯wÙ+ÃÆ{ þPjг(4t{ «âº¶'¾qº=EG3J'ÌÖF¹óŸUu\7ƒ˜f|ÝÔ›#/ §ÊCžã¾{«uŸ‘W¾dÖÛ9ï^™–Rº²®þ6ò~9˜cQÉkãÌ“S!v ™˜ÖZÍ&ï« “Ã:ÝÙª½wHò—7½ü5åì û½É™ßdå•=3|Ï|ÄÖLHûlªº%ÐX)kB9ŸS;VwáÏŸ%Øqh;LzîöóÝq-…Q³‡8U<°üáãÉgiÁk} ¾%ݤ؈z¦ø€FRAME ܼ|.»Ÿ€íŒkétü ™×xƒ;øO'sÈy;˜žCÊëëéòUöƒù òÕ¼_Õûßýx%¨ +ºvŸþ§NÖ@° ƒ?HÚ¹#ÏÒ9ÍŒK,¬ÎÆðî<•, ?pr\‘+^rg(SJÔ}ðsp“(2ÀBº^)Ý}ÉÙ†]ÍÀq´¤„J²1Cég˜gÊWnÜ_Öm?9št?ï€6Sá‘§c5Ë?…i™žúíÞõ(î’d5J9ßÕ¦ŸÜû¾óÁo ¥ €8±Ÿ/†}µmŽþí˜b0¿ÃóåA,×ö/ÑïàÅ ®.+áäîÐTTܦ4¡/Ôø’•Èy¢ÀW‡}†‹Ðrz/GòúC^Ö˜@HF…³F¡ùãæ°Dcۈµ ‹JºGôÛ ™‹Í¦ö¥9óËzD™¯s›J‡‘Ú.ô¥•)Ö×F϶ðú)¾£Ù¶AeU. ^Ôâ¥8Ö5%I„·É/—6]Ýó7ÁU”ÜSk’fz[Íi¿Ý³MVzqо¢îçŽbÇŠ¥Ô«ÿ4ÜÔõÚÍCùãØ½þôØðéØcÄ;qnžm>˜ûíðþËÓ‹ãïz£õ˜¥¦Ñ=ÔÄôfÖ³s„0¢Âž¬9hó^/LÜ·÷M4é‹$.pl±-Ó¿Íý®Ó'³[ÙÐÐÂ~gج5Ué>÷b-þÕ¶BóL†¥Ñ¢Áç·‰ëxg©‰œvß΃ý…bxÆmÜצï6»ßWzÇ@î‹¶^î<ÓOOLëy$¾+rIg¾9dåËŸy!æÂÈøw(÷º¹ÜßJbޝSÞþ‘ž?ÿ€ùÚÉà}´?Sݤ»´h7ê(Ä`M߯ír ö|nA…;dYŽ–ÞßQ°?µzÎmâÑz™ä¿ßõ“°p´BpÁž!bq$Ô*³üŸ›Ç§=,\çÿ¿2—Éö‹5ˆ^á(Ãçm‚–ïzÆ{‰õŽÆSe; ¶ÀE£ûáŽ#AIüGÉõ'¼+›¬¼ýÌlìlŇÀëÝ6Rð`yÓýø-W䯡랯^Š—“=L¾cÚûP œåÄ¥Ú/6 ABwž€°ÞózÂf¨ªÍ·¡t¶«)ÊŽÔ¦õóµZ®­É°¶mkCìî=ûJŠ-îm6ŠfR\žÿR kåµïÆÅiTÔyÁάšœ÷ŒÁBõAH˜¥*¯ï¥ö,[™m×å¤Ùò¦,º>+™=kº³¼Ÿr­Jõø2 õü+[¬Ø¾]ïû<¯ÿJž£å]`³4Tƒtû{‚$qͶë°[Ž*r{Ö›ºQùÜòCÅA”9I¯Û™’ÿéÕj‹¥/ÛlçªòQ¿ìýÆKŒ–éu5¸PT}Ar§QéÕÛFªûjÎÌ|(9jT7þa!íñõ_7º€T• nÑ¡V©C³Ú´;ÇÇàì0”¨¢¥~] ÒݓͶ=»-¨ÇXŽò=ÓÖÓÔ¥Lbó¶û`6ÏËgÎ^dH¨z:ÌDØ-W @?NÕXæœíÙÑiy2;o_\ÌG½S‡»éB#Ñî§ÄòÖeÜŸ óšÏVsÕz3žªau\Ù'Ë]g±áQœáÕmó]VÍQjêÃëÆh÷tÃ@Ñ™Ò<}Ÿ5Ò­ÄݲÐ7vþQûö¯u©Yk_$Ë–û''Q9ãÏWÊ-´fVeáiY™iLtÖ˜Oz´dmöÓfYwSvx×?:=ƒÇUÆ9²¯=EWï™·‘'šd%RÅ•]«ª9Ï««r£îή³¬È¸W( W™M嵚ù²T™ÅŠaLUÕžÑ=)•o››¶ÆË1o#?MÏJ‘ÕðYŽ®¤¨Wò€-þÍÛ£]Y‹Éöu/|~ëàÍÐ,ˆãÍâGºwWºóUg2Žî3}­èVnqõ^Ê÷£·@ù¹µSu]|×ÌwòÃŒtóÕcÕÄAê 1g‘ÝèùØ% ÀFRAME T¯|.»Ÿ€íŒkétü ›Ïx‚|bxL{˜ŸçN§Ç¨. áŽèˆÚok«}&þ¯âÞÔ9,×á‚}y}ÏÔîoþíIlý.ÉþÈöëwÿýl›B9çsâ\f4«zƵ­ÄhÉ´OÉQè:Q"éeAŠ˜¸m—(€2¼`øNئø¥Aè=„FtWWoã 7u›1Ãæ ßÓ£zäl§–ðýðÅ/¶ýuøåÈn·’ÌAPÞ¡Ëþ\me‚VÈ|O“ø²Œ6Àù>êÅïû]k·²üÊ$ÎeÔNÓ¶ž=¡š­È?Š7Üó_–ûr ë^·D³þôVU`zò}þléŒ7}±ônißûHÓÁàúžŸg(§65u°¯…¾ËþøªìDÊ¡TGwu Ccaf+\.¢UívÑÀÍŸoÅëðþiÕ¢:oEÍþIuÈ@#C']BÔ0«±Ef¥@q2”X|ig@Ý»`“Ω9§s¿øØòBæ.dA±1xu0°x gÿb& aèÝGÊV½þÅÎæ÷}ÿ'«>—%¡¹ÊèÿŸ{BwVŽY V8T9‰ðîe~iõº?µ´õJè»ÓþVFŠ˜ù¸ þ›í`£¬&B=›Ûÿ“›õæa†y±zÓlê±õ¦¹Àë§TåáÌa@½ÆðˆqÃñ&KЀF7ñ€Œ¶ÛFx¶Øø²Ÿ¡JÖÚß ÉÆ%ÙÀÞ;{ˆøi§D7´Úi(ÏRÆ9&}K:R̈!šiKym¶7wâUâë€swÀOgË}§v°¬÷Å>½œ•ͼs6 {fŠ ¯€-/Å­|І›ïØ FµëY±ÛÛáãl/8òÇ/ã_G#rè5øfÇ9È Ñ‰Ü7t¤ÈWüÝcpNJ7W³ùF¿E¾ÏE ÄT6Êë(÷$ñ©Ÿc½zšª5hÕt5¶­G ¬jÅš«˜ˆÚ®Â‘î#ïÕX®8kòØVêH­à/10«¯Æç Xöx°˜R¾IƒO§ «jµ¾²irÓF¹œzë È2¬Îf~c9–»æ¼!VIæ¦W‡Â®ãÂ|XâPoXýÌ¢yök™‹ˆAH•ñGÎV± Lq0,¤’Cee3—.ïùHL—~ÒæKØ;KÌ%̵‰'é—%×Ö­Yz0FRAME $©|.ºO™‹;bÍ}.œ¿¦óÞTóÈS€Ägæhyò:¶vp|Ž­‚à™ð‘ã\âγT^IÚþîTëÚ­câ«qû/ÞÝ·§QÌhþ/ìý¯øþ¬–ü’d²h ¹ ÿ0TÂä*@@W$î?Ö¥yCµ×F€˜ÿ±ZÉÍŸjÜésŠ_„b\p\/âÇEι!ž…¥ÜZjÁs{ÈŠ_n˜æt VÑZšõ@3é]³²þEɶÀ‹…;BÜlÛàüHž€œµ‡y|¼üC¬éH1sÑ\»u 燂ÞÑiÙ‚Œ* ‰@E)àZñoQ†§üõF©þ±¤àšÖYï7{ÆÄçe¯½ëÕ™yw£“.ðÁN&À·O؈ž>6puR° ÖÔϹúVÛñQR5×`ßOïž÷Í«ŽdTý–.¸ª%7L†v”a¹7QÕïï8NÝ­R}E€qâì€{·ˆ°‚¹+Èyg\HŽ·ó÷Ù½äÅsb]Á=‡@lؾå»'p’z ³ÙpðØq¡½ëeŒƒÄÛÛë]öcÚë+¥¶Üʹö›{“;>øxµÚQÌEùœǛ·ñfUÏÆ; )|›&pAƒL5‰â"Æ|¬WâtOE‚Ä"ôl MP8áÂ×~lnÖšDÛµD)ºßL*omjã‹'G ¦PP, »x‹E…Á²Ëv€õ¾ž¨ðâ‘©´,šDÒ?éWé[¡F{œÐ]ïíimW]®Ò[u J²mО+å8®¬Æéÿù’aYÙµÁõÞ‰Šä„ÈT.L<ÌLN²y†‹Úfxóú­H>ýõEN•ŸÅuD*DÝAÜ—WÄø©Ù»CìÙ—mMÂe$|zl4ª²ÁüVÄž‹\}Ç­4ÏÖ4ëÑNʸÚqDÚZP¾îÔ×E ì•3ºñ¥ß¶$/¯-x5ÁÉÙMÞÇÙÔßù”Sª¯:Ý…âóíÿ­›6Œ “—ͺ{›zîuϰ¥"ý³øtdˆG_ŽB'†w7ÖÚ­³`öÜŽ²ðkdüPsi¬ÕX'RxOªY“@ã1ZJ±Vç÷¿Qø7GXE#w¨‘2ˆ1 ùõè ízõ‰:øsž¼wWµBuðõ"œH¾ÏL.Qq¿ŽÝæûÞoÚ4¶½áË{sKàVmþ‹óUö·{õ~ßðÊæ´j"°UÙ” sÁŸ[îKWØy´Õw;»–%9AÎGħd\ó2ejÑ¡ ØÔqTjYž:R@LªÁƒ! 옧bÔ=8}+ã–ýsVf@Ea‰Ìø¬ßž((î,H5îõii]Ýìì ,Ì"½äÊð®WäÒM4˜™)5ŠO< ™$MtÑL8i 2i¿Õ FRAME ø¢|.ºß™‹;bÍ}.œ¿–†y¸t4à:p>&þfŽB×ÁÀô…;¨&¯póÀž+ÝÛÿÑÁGöùý–õäÌPw·ògù{OÕ~×Ý{÷ó}ø×ävèñ'ÛKsÞ­+EÙ ØDۄ̉£~¥sǨ™,§*êçGE™ŒÑ¨7 d†W<ð˜03•Ì>NÎCrPÏà{b/Épªvr~¼H2&8 gÚ·ÈÚhAm­ÑëRZ]C^í"µõ­Z²m:¯JÔWhJÝÃiK1ÚÂMG;‰¨¥jësþ %¡¥Ó_¸¤œßˆ¥sà!0Ö±ð‘ãJwÖ½º€a1Ṙûס³¤2áØ J0ˆÆr°dùýªpóF¨‰>ˆ—Ö ªb_ö ÅiµW¥úYCä¬á,à Z.±@Y;‰)_™DÞ6Ó-$Q‹ï¥Â6e º£güSJÐk¸U§»¢yW,†k _+ŸÊ~×wWÀŠ:öõwÑðÖ%hÀ Á\Mßá‡w+mmÉ)ñ¯yÊ×Ïšµ®Rç¢Ù~un?ÏÊܱ!¥ñG&¤1[wêŒGu2Rß$nkUÒÐÄaw9W \îZ±æáÏÍÜqbïâOe Á-·y6ÝúüS¢ÇÙèô|¦^«}¹”‰ Q)w1ó`¹+¬ñ*|e±?S|JAÛ·~Ë»†ÿ¡L,>EĈ*¢uÜÙ ”yÇÇý祀PXPüÏ¥‘{yömÝ™þ Þ6\%»½?ö¥©Kžå'3:ÈhÉ€'²áœÜÍRMž˜’¥ã¸î‰ê¯nýÓõa¸™:AJä ÜÓÈdJhù€De3&i›ÊZñùrZu4DElúFRAME x|.ÎGæz±e˜Å–>—«‡àÐÏ6§ÞM 8œ›ðh}¦†™¡§uñ>Çx¡¡§uñ< ‚gÒB×7Ü·.WxËK¶É:I¥åüÞÍý=Aß-ǵ_ÅÜãeÿ_ýû[“§cÉöÒš™å­²eL'0F´É¯¥»ô÷©Xž-•à0›4±LÙlžB*AÅθ¦š³˜@ðŽjÃÏéK?‡1ï¥K‰ã™ SY¼´ÌY·*1Ä®¡³û÷ˆýsÆBïäo ŠŸ¸!Ç7-ÄÓ–yLYCšÊt¿O€Ò¾)Wª=Ržý÷ÓS")òÈhöî ‹9š¥Áj1lÁ’ÈãÏØe=v¨Õ;s¯r_óW8Üí’当5>¬ìåšF`÷qWbPŒ}MÇöpúå«%­B ¨«™0}ö}›5¹_­ùMµ}¬¶×“×ÃàkZamxùýGÌ{8oû_°UÏ_ྉßðË_.>9byg)6Ä“˜•ÍG° Œw¨¾åûù µ£›U™¤ôgÍŽWónD ZÈu”5µéZä•ë_#¨žHø|¤ëãr2[HGª±ÃæBì;Dž„X)]c,zðÒPºÍ&€ÛþùÇÍr6Î*ÈyÉÍšMS?Ð%I@AD¯F¢Ã€7ü·ãoð{sƒ$È¿s‹üÝ”œ;D‰"ûˆ¨Àl‹£™ù¿<?ŸA—¯¸—ÙÀ š6»C9—#õy+·ÿìÎ@þ×Wöllksq/)ØÁ1¾2‹j÷êÑë¤/×±ýšÉÙúºÜÅ÷¾ ãqÄbAi®MÌ)2÷K0 ð8?kÅ?„¢OŸö€ë}Ž^cî[IC&]YÅ=ÐVŒíü´Éòønàï•ì.ÃóD<‚nÝè]¨QŠk%õ@ñÞˆ~Qæd‡gè<îNÿ¥3´1ƒŠ.n,ÔXFà‚xršC¤p\‡µë1—Ík¤ß¹×mr e9¬ H“®ô¿[vyæœJdSØÉÛï3jhqâÐ9Qµ©B‚*ñÆ+^¢¢KQùw^¿°N†X›ø+XøðŒ÷0SΦív¥LogFQMÍÞåFàâX“镘Ï6¢ÆRÉyª2d:†âÑþžb&•û®ú]êjS ˜ÒÃUÁZKuo¡Nb`¨qÿ«äCFRAME ôœ|.ÎG›Ó†,³²ÇÒõpüÚæà}¬ÐÒâ;07æpOŒÑÃ7“¬V}ŽñCy:Â03Àx(}›Dãå[ëȹŠæÚ­ÿ¦§³öà¯å«f}[>¿»÷¯» 99_½¯æ-û›jû÷«»ÿ¿M²=_yèèáÏr´Ñ•ùIê²b2\ŠtTÑ»~—  î^#»5'o:xž5÷deê¡€Áó¼;»¸ú,Îe‚;x$­•õÚœó'a$+^H®„”U_IJ»%;Èëç)ïæÉ·ÜìÎðk-k‚#ìÓÉšD0eøgmFµ7.¹½¼£•Zü o3ÃÛ|œïÛ!Øi÷/+RríÎn¬EªN[%,y2¾Ëù\àôö“¬J)°Y°®2µ¾¿ n}Ì`f“^ 3'«SóÈ×›‰ŸE…Eÿ‹Ï㨷Õ,?œ¬yîT=__“ˆ––|ï±é—­RÏìÜ”ÓsÕÙ/W²ÈVe¤æ0däg8†YÕ|o*¨YûÑ2†EÈ Dä‹í™ë lr,nu™Yyy˜¿!?AØ'/M‡8û÷"ŸIɾõsDÃ÷ýW;ÏŸJï;䇹å6'—j»P–0 ,M·2½‰Œ¿ø†kiÄX=„¼E@Z‡¼ È…ÀFàÀøNe½\Ðz&^8&?…Bmy•þK™L¯µ’U³ÌpÝ%Ç:pø61CÒPdäO¹“jãìÚ©VWU8)†»<æÒ—íYR?ÂÚÅχݟÐ/@Bq‹¡fEl`0@ ‡Ã}"ổ‘ŠŒ¹QÄ ÿßòôÔÆùNoDÞNßýö¾y6§èvbýÈÆÛYSF´ÿ»w±Ìª WŠÅV9³ãWôÍãäûˆ´çäv ü[©_€yzдcKÚÀ­×¸g,¢Îò^eª‰]ãHÒcKÿxæ1â~ïÚêè÷_àÜòÑðsNˆü÷îÅý›œyÊñço‹Žh‘Wûwц/Á~wúr¯P» ±±Ï‘ë^M?ÇÒ½6'£1É“MxYò½àÇZ /Z2㱦]’´ÓÓ|€Á¢ ‹W-d{ôgÇÐ4ñá÷÷ì­èVš©?²—¯Ê Gy3wò.Ny…|SÏ&=?2päÉÎúS8›³´$šÞ´ ˃U}7Úûr±qÀW@A£Ѝ•£Ë¶k‡§Žþ€¸r”ÞÎ(`JDÜ%%ÍK!ÃÆBNêø_¿wüÜÚËé7qæ“Pù†—5X]¿Üþo]vÂn®;Ÿ5Öj…fsøtFRAME |œ|.ÎG‚tá‹%Æ,•ô½\8rúšæà}¥ÐÒÉ2v_ðpOŒÑñiÐògØïÓÏÄy3À¸¦<®%xÙS ž¶mnlN-½ŸÉ?–ßnc޵¸‰îKØsÿŒ_Н[`ÌȈ€i¢v{ š¹ òëõõƒ×br 7§¤µø0k9ui4ìWÖËMx*ÆA‰mh æŒLú WÍæ›x;{¤n[y ên‡<¦§.^Vrö›Š×mùüjÏR”— ¬פ_É+Ê CÛ‹:õµ¬¶^" JI,]ëæ1»±%J¤læ©5é5a`U‰|È6é 3ö´ú/mÛ‡ 4KîdýÍ“«#Ëæ+V³¾ 0ºñKËï=FÀØ•µƒƵG½‰EØrå#!&5l +`Û/H^Ù '›šïUø—-vÙk“—Ÿ!}õ÷2Òà\•5,JÔÚƒPõZ½ Uà•­VÒñ}8΀:æ`ëÐ ¿«ë'Yì°Ô µõŠ$›ù§)c”§ƒãr½¤¬ÉüÖ¿+¹eúÖr‘«MÅË9ʧ¦ér^>\’û ü¹.“þzÁî|“–‡÷¹ñîI´+ünœ 7ÄNÄ_Œ‘ä~¥i™logˆ™~f95¥!^#ü`ª7ù†ÿíXL©ÉåæÅ#ÑÁ°ÔŽ»toá6œ§Šá§ï#=4`Ê@Z¿\ÙzpêÙª¾Ö¡ˆÿÊŠhÍž.?¦L}4wê¢WcOÅ#Ë¿  q43§:ÏÓ±Ÿxl(Ržx°‹ô)Т4;˜øWPé{ÇšAØ8ᵑ÷1-HÅvçóæ#?˜ÞÙýýÀ"úK·Úíü,mÀÁùš•)SÎwÑÓÅ’^ÛÔZÿ×*¯J¯_⸥Euì=©'ö¸±|‘ÆØg¹µÄÜ ã9Sfê¾×;›·§ã–8ùZ’u·#€ˆ£$²³Êå"xªWÅ.!E»ù-ŠˆÆPŸ@ Ê|ª×ìîLçߘ¾Jž+jŸÙ´Ñ¤OS‡èÍ|æþ¡g!¬”(£šìö€5GQ®Š ƒD ˆÐ‚¢ˆ'ýű‘`@Z¾Z%Ä,gˆJ¦—öÔ JŠe>Û§âdæŸRïû¢N¯¦ÑTÌ@;RÂÑX”ŸM*Ñ›IxçŸN„{j7Î >/œ|”áIjõdJ€uæä•Ö“Ö‘L _ŠÎR sâÏœÿþFRAME  œ|.ÎG‚p8bÉq‹%}/W>¦†yšit4òLœâÓêp“>Gã:8 8ôgØïÅIñôgpLùõCÝ¡Qêl 5Z«6woÙvnFá×s¦0ÁWåOO?Öwåó?÷óo-M?ñÿkŠ—ýöd½g/ÑëLÚ9™Ö£iÕy’>lÂ0ÔIØØ&­Ã¸Èx§~T_j àŠNÏ!Š êtà©­{pNTƒ­©1(Úè‰\FË?«úðcÓ%€àü7]$,8NôaÊÑu78æyŽK8œP<´”Ö¼W=k’³»mÐýKkôWÓ¥¥ ¾Ø^Àý›ìÞ$ì,ò–gÒ@'˜h¢Òã±™¹fRÇ-bh:#z ~#¢8ÂÚ‘ÙOeD¿™™y™èlØéß·ßÔœÉÆ€Äú”ï8: `ºž&½¢~f-ãóòõË~tz}†|(?¡ý´bª÷fÐyu¯Ô«íŽ‚‡Eè,fÊÒƒó˸÷w!a£2°Äq~}Yè‚G’³ýóÇi«Ó†‰â–°U‹d.QÙêò«EÚˆ¼: róÊúìqÃÉÿïÄ÷¼-¶tå JxˆO6~¨!ïŒÈÃÙwX/ŸÔAÝ´²‚ƺ·f”Jxø‰ Ž~ $%^òÏg·2ƒA†õ#À§äü0úM«óüËZÌÒy º‰íåÊÆ>€& î£<îI=æhto[8îžb£žæÎg°ÌE™†ÛT,“ðÉh@þ'ã³K}Ì! hÊÇáúž~ÿ»žn‡¬ÜÉ·Ï~þ‰øî¡àå^é0û}n'§Z“b;yÙ ng–’ìÖœî&h{‰š`+HPBOB%Pª.5RŒ¬Wê¶–-W…Ý£6]¿IÇØ¦Èe#iªŠ¯µÑÉÍ¡#fÂO2b~±Æ¦7¯JP¡MWúFRAME œœ|.ÎFÃaö,“Ád‡Òõk\O¹¡žf‡Ú] `ýŽÓ&†=lýIogã:8 ôÜÂ)¨ù_M‡bB£îϤe«¢zÊœ‹Áf){¿¿»ôŸ×è·¯©¿¿ç!­¬½óÿâûýh¢ý7ø{þ½-¿‹Éµ–ûüè&‡• Dp°)ÖX,ŽÇ®÷ÓùÀGÑŸ0¾ä&ÊÕ´t~/ª`ÉŠN‘Úm©£E­VÚ2Í-³MÅIe‹z2¾f)å‘ÁѼƒâXú݉Âri.WdøþrcÔa×,ÈÙ™ÉYÌþí5aàeP“Ú¶˜ÝÕš?¯Ež° ]CÛÎŒÜ2¶È¡#ÐÉB'9úf*%“9™šº^¾¥¿D.!ð„ô8ß©â?s!JÂu)¨ƒ½gžikøÄy†coóärÌÏTóŸT1RrW {_èÇQ¿¢>2>OõÚvˆo©¼ZúœèÈxA,b pšx¢‹Âuæ?ÜϾ7Ãï úcû§ì”ü„TT T©cÎâÊ &##"/û07½¨ÄrÊ`ºÔù§šè´(¦'óÒ¨ž:Q ôxdz+uc¸Á³©šý±»:Žç)áÍÉÁz#ÄvVâ{ÛýABg½IÓñ–c ³Û–>?]„2Þêÿ dÈÖ|ü„ÆÜtEÍ·‚f1á |¸õ3!䘀Güc«š:õè:A–ÿ0ÐüôÓü×᪲ç§iMûé´X¬æãàCĨ̹IDÐ1ªšÀ«ŽS…ŸA¸¢æ2, iÙ*½á57²?ë ^E­>îõ§ÒÙüwoê™Sù‡.“›ÊmÇZvÎòòOi¸ÛFxúŽØÚûÁYÖÏÖ¯xšanÚ¬‰Æ ?ÙĨôÞ`—¸§2=·ÝÔJ)p›0º³õ¸Ã32ãäÎÀƒšÂ’2™ÛÆbâ ûWU+¤)×;½³¤âÞ¹6ü…߇ceAâ9Ùy«–‡Ñ¼‡X*{Bib¼R9Dmbº@à§Ú¼JVj”†x«öyiŸ¿Ît8`Àðª/½›'àŒ–V°á­¾;‘ZÃ0Û,ÉÈ7:hÈÑLèÄwâµXb}>.Ú^ñXº‰ß7°~¶ìçpD¦i¸JÝZ-ÕËæ†Ÿ~ÚnåÌµÌÆv׎†‚Ç4ªîž‹ºJåwF~öÑvDBA¯àž`üªûð·á³âéyø„ŠÄ9ÞW©aÛuK['.ñ>)ZIn·iSÓ´4.è–V¥µKKxï6ˣ̤t7Å"Qn÷e&Ö:õêWIÇ—5wåé6FuõÒìé¼<1QŠ·O}}o@G8Miµ½Q­:U(ÕTk#Ô¿BÌîªlFÊÓ‰$ˆI¬’Øs©Ò8ª¾”LºŒòob‘•h'^Ô¨¨‹àñFRAME ˆœ}Nç#a’5ê°<õ=ZÉ·Ùè:š?Yt1ƒö;Kt1ðßn&J">14à4å›&Òú3hƒ§ÊªSêyD¸dzûË¡µ+gôøÕý'µw·þ~ÿß|fÝ8_k÷ûø‘gðÕŸy™ò6‘ü+ô}"â?•{¹Ãü"K³âtÅ5yònoV–èN i•èw‰6/¤0àxÀOYux†}#Þæ~zÞÖb]Ã5™‘Êy‚ƒQ£Ø£ÉÚE™ò‘ÉE_¶&]}šÊ•Ä΋ýq˜I­*:îR™ñå¸ ñáÇ“C§P0]@>&ÀAaKtä`ÆXwEi={Iô³´ÿ¥!Þ¬VVÍŠw“êÓOÉî<Ø=päêUƒO€Í¦§-â›ÐNJ0qäW® BŽb_<:ˆcb!9#[ñ‰iSz`´ÇWEЬE`|¸Ÿ&R È ]ʛ䠅¬ÿ\ÑùJçlS¾–:5h\ÉâîÄò©‘x à¡Áp®Š©¥pC «¨µ-Œ…`ê„^:ï±Ï®ã D£€J+«?b»PõÌÝg(b)¤+|õ×&5R¨­š§2Paòç†*˜”®<2ŒN(ʲ¬ÆõæäÉJò¾W×ûÿ´M, lÕg`ÒZ|1‰tSQD&qÿÄ@FRAME „œ}S©È¨1]<–ƒ ~-eÛìöu9½Ö] `ýO “C>I˜< §§,Úúði#ÀtÄ7xÙl·R¶öX§>ê¡p»ûûþ«ü£û}?ûÿ¾”~ù¿¡ýK›®¢]œ9ìÀbE6qíXy%D².#˜uÈ: :X…dp‚§õ¨Ýl¸5#ú9‹Þ5䑟|Ó±º–ž·ÈçË'‹‚b+'Ì‹fC5’ëv¶œ–™¸äY¦[ÍZŽNôÎ i(Ó¦ €`$_z˜³ƒ½py2PУÐÃA½EàÊí¼JÏ –¥fɶw-¨ªÑ4Ž"Vò´Ê ù‰.^Ôy§óñ#°)áIÓƒäÚ/™üH®ÝaSÉñŽ¿¸õƒbÉv/™Ÿÿ; .<ú ÃÍf:1µî¿KùUÖ‘©¼¾APp0ƒÍM"à'óª´Ê²g?ZØš›ÍTk],f…ŒV`È0I€ÿ{¤ f«èJšU­Ú ïd n„jeµ7ýó‰’óÄÓž|ò 4‡ÏÈñšôŒ}ã>›+…ÖÁB´`Zšæ¢ÈëX/Sÿè” ¾»é>jƒÛ¼ÕÔ†ÉQ Ðª#Ef>ÌgÿÞÜâjÜð½Xp¦l?ßóHàcÿhnàï8ØÀJðc=øCtÔ/Æ&u¡–É·ÏiYîûP>‚gU©_ÿ?”F} ܲ Á=2Gý™+:„?‚¿Ã¬Ÿ¥£ÛÒÞ¯ îss∶Ì\u=*Pksh–99JB¬þÿy ƒóÈåý‡¬ÿøñ`óç¿çîDyôÓ6ãF ®‡zv“GõÖµ“ØÚØ.¤Ôÿ|£ì;;qáÞxÈü jÅØÔpð tYÉG“JAøqŸ„uqΙO}wñ”žˆÌö‰™€%%ü÷ €ü¿ÇÆç„äTÁuäôƒÉöe1V£‚}k!äqéŠ+’†ùÅÙ"VBá ú«øR1V(?—Z ó O*dƒAö˜xÃRf"­Ü¦1‡y“¬ÿLÉì›jyª–.¶£ÜVgâ†÷pÊq7Þ›ë¡3)‚awáÈÐtÍ´†$òM0fn&g‹ÿ}«{ír$q™o›â&2Þ’QÅR©7B˜”üWT,$er …ÔJø¹<¦]££xJ33ì© 0ó N™e–$ÖõÕ‘)¦Òˆ³;µEÆÑOÅ» ›lòô- Aë)Y[ÝÅ>m;KÚZØs†©UqËÊ[KêÔç.ÂVÊ$¯i»TTžæi]úw¦Óoœ¤¡¹E­­SI±'Εô„i#T]\MÚ6KÔ«PgXwO,ó9#ÎÎæs½-¡>-,Z¶ÒÊŒK2¨Ö¿åIvam—5M‰dÛ~ZŠÊÁR¹¬Ç'b‡s,7í’{$Ú=ý…õMZoR§“•¸u~Rx{Ðh(d9ýG£ŠØ Œˆ\¦ý/‰›Ãÿ¬äž[°kªa׎•˜d2ꦲö¸â×Úªé¼?ú^n“¾Tú5™%Âfë“$"lIc™°žô¢…X´¥æ³€yî›æ“Ø '¦-´ž$(;’ 5¯?ÓÝ:£j«´~4ôhÏz ¿Ø?ú,ã¯#åtÇ@¿­ÄÙ¡ˆ°o¬Í¼Á–2loYy/_¼>qUöÕìÝ̉õƒ¼ºM7û×Ðh °b qþtÅ—LH“Q°|[œ1ÙÏ­*4¼¿9~9ðVþuúÉ[ëëPnîXô¢¦Ve`޼a¤?ë,¢ˆä8<`ájñV&ÅðW-‘GÆü[‘øâ›ž²ˆA—»­ò?± †=gŒ:ã4·iÉÇîùú®ø@ßéVÆ.ðyîýDµ™À1ÌÀ}3<Ç|Ÿq×èW¡@þt¦†[u$>9ìý;¿ã‹‘ƒïE,ŸýgŠúJ€iÊ´UU ­ä´rY‚+iäRÄ"ßs9á$µ?³¾¿hEðÞŽ ã"aïãgîYAÙîy©Ç¿ë=äySgÑ¡-y3“‹#8À‰6ÿL“/úÅ"¡½˜ÿ^_œÊïãÁçýg~âøxvjÚæõçJZî‚«»Î=­Ã%¡oÇÆ¯KùèRÄ‚«õ •mi áX_€im¼Þn…l"ÐX8CÎT,ª¢ø×Œ½FßÇ’a>Td{Õö'×sñYá‘A½˜ ŽZüüB Zü(l+<ÁëÛäh„=LUj'Œr»f7ŠØN3FÖ%úì•–Á[_¶g§–§<ãóSޝš~û‘ÿ=ÏgL'ÕÅñÛo0ýN>>9VqZ  áÒñ ¸²ðb}Ss…w^‹ö4Ý÷sÿ’ûœž$’æûûøøÑH‡™R³ˆ*/ßÂ3,ØÑW,É0*µR8øZ“‰u,¶ŠR Üœwö@ʽŒM$M¯ö­rÐ:7×YZT­Pq´Çȯ›ßÂçŽl_±]ñÊ¢.&³)Jˆ§²¢/‘¨ž›cå: ZNSËæmcK™(tÎôÚf+ }J£xF²vªüÞµzMkVÇ«¾ð¾ÎWÛ˜­t\\ž¨-„q*Õ*+aMgö…qðîöŠvüZÚÝŽyFâ Uö—ŽÑF£Wÿ÷Í“ó—;öû÷ýéy»ß9úÝK’§Íù{/¦°]c—ùT11‹0€7q›z@cElî¬0Î6X >ûëS00=@‡ALó“¡j j†0œ%+€èô‹ nуçÉÎG+¦ökÀ_šè3tùjC¥™Çwñ϶Ӥê=uìÈ­D™¿´ùúËïÓ^BvÙþ zK øÌ’SD8Ì£L™^ Ò‘ÿ豫¾ÌZqÇ;®o4|<§|]kdÓEÿYùÎàküO|½Í×ÚÊ}Ÿ_(YÆgX =!“m`˜I_ssèIšÐE}¿ŠS™Y‹“ÂÇ«8?Áőٗ鶜sc®?RÞü{É¡vÿRÒþÙœxCzu^¿ >z|¾Øb«çŽy'\WÑŽœ­DÏ@:‰Z‚Ã>fU:¹²¶`÷•àé^qØŽW)Þé?÷ðÐh¯÷~Q|ó™à?gÞ]ü{á*ùD‹'ê¼³žŸ9c5#üîø±­A4•ýýîz·r† éåJª™› Wå“ZT¾WîôÁ)ïWé)ü×¬ÈøšK`ëÈJ|T˜ï²þ'“« ;‰sb½e‡3/ &Ùó½^lŠ’|Ü?=ífîsŸ³öüŒÝCÞŒç3 OX­gÇ ›‹‹#Ej v¿·(«iú¡[ÃêW:{Ú¬E™&B£à ð¥Uœ¿´rE.G%3-ìåÇ êL½N¥Éõ5 bˆ7ÖXÌø­Ø¬po* ºœï¨9œªè­–TReE ©{òÁ6ø[¨’*%ÙQ*îŠñT¬å†[¢¡ÔæšRé§*œå)3LÓtÜy«ju“¤Ú›Ò8Ð.;Iâ!yÜ&È<ì#¾¬Qý㬒Ƿp<*ÝìÀžu Œ*2•)>[­ÏV¶#o(ãµM-‚‘ß1¥tª•RR7¤šÐ[[ˆ%¾YÜëÔzImdŸ™ÉåÅÛtsÚÔw*•QïƒLîï´¶VQ¸ªê¼nW‘=P¡UÑtr¡}«am›0·Z×Éú(æ^ Zö›«VÀFRAME Œœ~ó*Á&7<ãÀü“>ìíøNyÙ?WžÓ&†>‡*v™Ã^[ð»ÏiŠÀÓÍž,êýÙÞ¡â ÷¸¶×ª* Uá ö)oßBÙ]7Ó}»IõÿýÿÓ8ÇT}õëüGéôGÄü®JþVÉýÿÝüGË~Ai1½˜ gž `ƒÙD ¢×ÑßyÌf1÷¯3oè¡¶ìˆÛ€qf-ɳì&mÖyÍkŸ‹[F»Ô—¤º9ƒ#š*Î@×»,Ý,±ºü†‘ûe¿ÂŠ“´Na“UêN@œñ¸ýr櫌Ƿk5éRyŸÌ:bÔ ¹u††²u© îÕ>•¦» çüu’‹~Y×<šöÞ%´.µÑš´ÎÐÞÅUk½ºS>08þÔ"“•Õ¦O¬©ý.&˜>]ÂÑrr_ŸµŸ•è«K…Ùè_g<Ù’D J¥öç#írÆ1“‹½#Ê­¨ˆ,€:,þ=¡Ôˆ}_Ó‹pfÈRáèq–M+F9ãž7Œ¸Xqifª3¸.žz'Å¡Y¼H^vfßð#žgnźªtӫݨsÓü¯©{-ûé1°Îuñ«=4¯ö§tHDU_©%Ý¢W§ç# ý¬žÿ@^ÎnGô±D¿qèýœ0.AÌ1 `üÂ@Ívãòï̈$ ô6 óù³º‚ˆ¤ÒSý‡ }ÎÊã"…³[q (]ËŸæW.¤Zm‹*ºUTj)kzª!¥ün[bÑVÔ¯a]=[<˜Yåa'ŠtôÿFfN`ú“Cg~ÇÏwì ’ú=‡85áæ1mº©k|À_‰ÍGãÖê¼æž §POmù£ßïìýîC²Z•¤W{Ýéü¢øG|´¢U÷{ÎP,ö²À]ì£í7á-—5êüf|qÇ âAuXö?Å8á‘'ÅøîU]s4Êö¦ÈȲß21sxrCLIÛ9J*BUü‘µÌïçå‡" Õ$Ê?‚Þðåפ_l’ââÍþ#Ê&fZkJ«Óß¶]Ó¨š¤çI·œ\\å® ”Þ« œ ºo³Ñ'1äq$ÿÝŠœ¼X†®à*å¿…–ŠPncgûnM$ôÝRSÔÎ^2“ivíãùòò±³jcZ€Ú-°ÅK 1JÌÄ$Œ+¼LŽc“8HuÐB¸ëzCœ®çÒ_¹rž¾×Ø,ÎÛÜ6Ñ7²°Î)ß“—NÚ§Þ¹Ú㔑Ztˆl—iµ™¦Ê ¥½5.Qq—™±i1f“RÞµi©&¦CÐZůVœ¼Áͧ®ü¤xl„¦îÛnׇ=ƒyPBvØìV¯uº­Ox¶´·v¼›áQ*í­Å¡¡¦È“¡y»KËK2‚›d§ˆ‰ß+\JÒRñâæk"åòq$÷5x_ˆü]íÄÜ<Þy¼G¾ú#8äš([ÕxÓ¯­(†(MÄzµuñœç“ŒžªYP±^Ó,Zé«ôë¨e7§i–ÿѮµãøýZ–`FRAME 4œ~×"IÏ8ãÆ€Z&}ó€ñ‘<˜Kù{œö™Âú©ÚdÚòß]N{KÒÞOVqÔÀòásC¥A¿u«eµJ Tàú^ÈTý÷_2oÛmwß}—×g Íý¾Ù=Êt·Õýû†þ/ÄÄql/ßD'\‹Ð‹gÄšÃÙ4ª7àm›”†dñdÀÅìÕ‹ôY,šbý£Qw[ÏCß³õî†ÃŸyPf‰Vj6Í=^:& >â h Z‘ÁíDê`×k~)£õÜ)_“Ž‘>yQªð>,¢1t4ÿñ9©Þ±;Ñ/Yµ9LÈãŸÌôÿU>Á¿Þ*£~(ò£Io~:ý§³ É“éoç88}¯æœ}}‚Í“CŒªa_¤ì?ÆAß_eòÇ›4y}ÚšïF‡Í·ÎùÿÆ´4$ ç8 úØq¯“^ºº9âz¯³Ô¿y¦ê´/ÞøBØ6k̘D ÞZ7À.|¡\—PC3Ù·tÆLDïvæS¢x-®u#®kOïÃÅKq~ýU]öaÿ®Õ«ªßóÚŠa¸Ðg«È3PžjwùùB||²X×p¤_ÓÛNÿkpÐ}Ÿ=Ø™ÂÛ ­À»Ï³Ü«ç¤Bþ¥)…Ë!í†@÷ÓUµ>ùg.'\ˆŸV#¿=î·íŒçð3öôÆå²@¾"Ð%¨,ÊsâyDàœàvbÌ ]C‹óûÙ훽ßbð÷OvM ÞóÏX#Ýõ}ì7Ï>G®ùx6p¬•^£»¼=Òèéã¸Úˆ48‰=†p¨HÿtËR×íZ´˜ÊGN’Íí÷:o”Å1ë;œððìÁxÊYÔý0ó Ú»ÏÏ#e<=1†ª¢©8qü®¢¶åwÌWóú‰bÅÍ7'îïó/rpŸVd„¤V€¿«âŽh³ã+šØôúDõšúÉ,©¹DbaÒL_›¨˜>SÎþÙ·´*eMÎ=. xGl3(VüÀeÜîWv÷½© Y1"žðìÇJÑ",ðII“ÿúL¦¿gó+JAŒ6r¯çåÞ"®²•¤)0)8³ÔÃ¬Š¨,™S ²QgÂÈ"vY¼î:dû¬ÖÍÊß• jÝÎ2§öó•Îê,WÚ§¸—*–44Š‘Òi“ÊE„î ZQº[º+ↇ5Ѭ&’i­{l6½ZUX%åC¯^$´wØê˜TW„©Ò<û¾ÏâÅÝJ ]‰øì6âyq*1Ø“ÌÍ£ÇFù)îm»m^|nj™±½2©¸¡¡¦Wo`£–'kxØÊóbÑŠD"YûI3Œ‡tIŒaq¸Ð3kxЀ «xUÔ‹TÀ@ ²­/IRRˆ–ÚV÷gNYÔÀò'Êo:‰Bg6ÙÝœ¤vïªëýõzTGoºùsþû¯>ó7ö‰‚oWh¿Ïì¾kµû_ô+ëöWá¾Kò» yœ«ËÞ[Ñ4Ö«,ÉÏ#œ¶É~üö úØÆ}ÿèû÷÷(#7vC36bHúC.üÆÆYã-žÁ{Áb"’|‘ëÁPˆQ!Eï¼í¬¶UP¦˜©.2Ø h|ØèUuàËG\Ì1¨…¨Á'‚dÑ}€~pÏãˆú"j±ÕþÀÔ¬pÜÿ¸ýïÛ‰Y«Ù¬Hœ(—ø¯¢4èf—žY‰ž…{“ðÌ{|.\‘RÒ}*@ž$ÜØ˜·ôvªífoÅ"$JgaѰ#dEëjœãðZ4hl*±íŸ½cT¨s׿ñÍ…° ÏÎßp ôbs%Âlò龤±^Ò#cC±Ï¤Pöþ!¿LÛ9—Uæ¯lljÔÚ¼ÇÂg“‚Û˜ R“&¢èt&÷œš. rv+ÃYm­Mz¼Ž°]ƒhWM¯Ea¢´ °I™k+³3lóà.üI™Â½ —ÚÃbŽLv3¼WŽLÞ€òô¾DùŽ:_÷©__EùŒoÅÁ±ð ‚ÎJLfž³“Úˆ˜9(öœyñríèüd4Oj~‹ ]‹YŒOÑDZm3Šùµ¥V‚¥ãV³ÙÚùÐD©ñ’B)ö&ϹWœÿÑ„xé=š‹¡CøÄ8Ÿ·y®ÏسƒüÝ‘üÉÕd·7Ø{ÏŽ«¼·nÜÿ»ŽíÚ‘ï9”5¬þüŒi¤ïé*š??¾} «·E~2ª‡çp+’Û˜~3œ·¥æÓ Œ¯ƒ€Ö F5¦ ›¡wQ˜£u‚Æ4!(½u—§üñµÉb²ó_—y3>•¦Å&ÿf“t™Édà·¬jè~nðyŠé xhª¢|y»éC”óè1ã~‡{}bւͺc'"¡óàÜ1¸Ef.Ÿïñþ^÷¥ÑÑI©€±&¦-¾ZO—$œí-˜\õqYjÀ|h|wþ›ßÎ:°„Òê¬"¢ÏTFRAME °œ}“¡ÌCXÜ郆Bðrã>'˜C¼©µî`|Çç=Ÿ¶sž¦×–øÜ³©ƒÛԽ雖u0|›Ï”¦7õwnÍÝ­·™µ]î„”ï r§o²ó¾óþþûyÞk¾¯ò¾-á‹ÿ¿»M’µb7ý+ sµ‡[¥øA¤5ø[ýT­5ã´km¤êCužÓé]öëEÈëhêTî%¬FÜr==]‡ÿì É®—4$|¹’®U¢X • ˜d1QЫÉä^ņWrðŠSÝ&j¶QU¬ÒdöÌ5Kj&Ë€þ,A²±äY=F'n=«¥“ˆM#žpHÜÆûv\Fçw–í?7þ°n]<·âØæäl?«Q)‘wbuiç\²5­ã$zÀK‹ÏÞÜ7ÝEüÅò¯TÛc1Œ“=ÓÁÁèÀ¿§‰ünXÏ7«^úÜllÎq‡`dm„,ÁV5ú‡KÀ"6tŸ¹ìp³ˆ"BFßáp\ûAr7g, ïÝô•¬œR6³ö¢2½w“÷-¬ì7zó[¤:¥åc¤5xþé%]·­zíX3Pobâ+¦Ç>þó‚·xüá <.'\žýÂèê,0ìê„·p±3žùrî=Žò‹É±ŠW“ÏWÎ_Áˆ&lW²çÁ´s9Tär½ó*TĬÿ“Ä L¨)Ÿ§ïÍX—=¼>óØñe(MŒ^j4ýg'JäK J7WPœ¥”÷ö¬âb}—›ÑVûWŒcj>™ªx˜OÎÅqäë’O•ý‚°>n‰à:áû'í[qEâ¤{-˜™òmñ”øµØÍ@ÉUÈ¿ƒƒåm‹eʱæàHBC@‡´Ž;ƒ¿ þL»Çœ˜b/ç+•8}æ¾»ý¨Z¿íxñ­õŠG´rògÞ¯k–FïÂö™>°~…‹ ØcøU¹×òFþçé fèaÅu®DYÿð?’?›š×¿â¥™)y7™˜.üئŠh¤üG¿cDÙ0*Ô1›R¡ õdØ€O,ëÀÒ~öÁ³c¸¼#Ãàé²ú&чm£FÅÀƒë†XÁ"óE:*ZSóBáø¾¶BßQúu³ÉkçĪ¢:[é¹³QÐ×ã7|U3I -ØðÅø|lòwÐ}ä…g¶<ž@´®G*¢D‚à_~}qzäÏŸ±'ñÏ8ùýs*×uJ­~‘LçF´0“…®óò¦%{«×òk™*þë® ˆ:I7ú¿¯µÕ?b FRAME Hœ|OC˜†«Œé—†L§ÖéË‹ø1^p6½Ì˜å œö|§?.ëËyë,M˜=Ëì„묱r`poƒ‘*,oµwvîW[ºòÝ[½°êˆÏ°íõße÷žm·ß}7Í|ëü!éñG }X2Fã{¼¹u¿’óEá—`vŠp»S³„|—÷Þ2ÙðdýÆt Žéûÿ¦aòŸ7/j¼ÿ›Däîãí…Ž(•šuß^䔊Þ`|TšéˆªùM¾3/àúW§ ÔZÑ®3c{³S[-Gð C£wgçŸ.‡WÑâÜ_á1Y®‘4’Xéj…÷ÔjßXgóM|¥ŒÂæ'ÆEÕ*v»Õßzà>Ç9ª33ÁØ™_˜ú)ÃBXÓÁ~[¡Œø_ßÈ¿$¿‰mÓÂüaØD•côEìñ0l„fV-úhàV .\²ÿf*•¬ÉYÆ“‘’]ƒá;×/2œsÂ:škæuT ÷Ám)m«ÞYåÕ9 4Œ~V&4HáÇs¡'ì žºƒÅ×bàx£‚óX#ÏåÐK¶|}¢€Ú˜ ±WÏ£Fúýìõqà)áÈ(mÈ0ð`ï>hϾlOɉDê>Í/UˆñQ:::É|Ž•’HeJ¨K¥·”­;Qòý®R”½-VÄ]ùؙѺEù‹#x¥ V휥ž‡äD?}Rcl>ó¦pøycñ¿•Ü$¬:Ç篛>&}Ì ©* SÐWIïAGÿavïvmMüËœŸ&ÿ&rUšítQE!éè=YMR,~º]ûZî ^ Ä>Šù6lè#?)ÈñŒ½"ð<"÷´$ѯxÌCRF+N‡·ŠhW^žÿßßÎÞÞñdL+¿¿!m4x$Ô¥ÓK[…Gîû¹çµ 8lcç{àîÄäÅ\Ũ»5 ͵¨álD!q+Ç D µ ÕÜÃçÓe;‚îoÎÀ:6É=VlÖ231=»éèî´_éôa—aæá—˜…J—ú{È1sèˆ9¼cé¿ 8Ç5ÈìyŸsÎÎO­›è_7KF¢KV6¨`:§>rsCLx˜f<˜.õ|Ý”çWt…+ãâ­6'A'z8PFRAME Pœ|OC¡ÓÂöÉŽ™2GÖéÓ«ó=Ύ׹³g99ͯ,:ËC‡œ™‡YxÉÁ¾ % ÌvÛºÙ¶t¸æîÓaURªöÖu—×u·Ê,³Ÿuÿ?÷öß-ëÿ pÃÙð5{É/Á¶Ûâ»nµog˜'òž‡tŸjñ–Û)I=åþmóDžKΆó%¯Y‘ÿ‘ÂYÀ³ïÂÕ ö6çÄø½½¢à>H.E©°?ED|½K¡Ã¢WGIT^Ù™vª ?Å*ŽwRüçóƒuÁ=®R>m¾ Ýc²Ÿ‡Sà1¾H‡%òÞo±ok«íYs˜ÑWzô¶ëŸ,†M¼±ˆão¯®Üž&ZËc<³›¶Åu ›‘áµÉ†>µdº© ¯ºÕŸÐºâ…YœËܵKrÃõÙvˆ™JskíÔÙrzí»óû7;ò,I)o+òx&Óp’ìªN¬W8 è¨u¢árA¾bŠÄqì’6"åÇKRÊìö9ÙYQÅû\¹°ß 'ØÀ:[âYýÞì’AÁ“›â ‹Ûå¤×²Î«åê’Ûðº‚à÷ׄïVÇ$‚7ÀÐ °žOéŸßÁðz C¬Ã唾ñæµ™:J¿=Ièm$°‰A?“Çxuè!nþK…þ¼c¤è> ‹Ê{#Ç8»Uo †©E^º•hùî_½@n›¿O£i!w4dÕc;~¹/W˼•fo½­4Ô+k_±gÑ-u~,è:‚´Óï:ºï¾îßœÚ/¦ûäõ¡/¡!IŒ’«“g°¼È,‰3(`N¿CjˆfRâi1¦o9ß}Ò|/_P?(„TÎg{Ðp£byžJƒ~]ŽŠÔzþßVü$vpƒs~BxÄ÷x ¯ŸblG_'OG#žêŸ˜™óý /0·®z¢È8¢âa‡oNÔ¦Aθq/ÝocaøÏL”͇/ß–Á(™»nÝ¿¥¹è{èï…Uw©†ò Æ;Ñ<‘“€ –-'õQ3»»¹|Ih^p]lí±Sßr™H]®¹Þrʘ~w«‰ÓìZbÏ +ÀÈÎ ï60E¯`ë€lÙ졤:d üvå®@ùìõó:÷-K×ñ¡rQÓ tb]'í8?|¾´ˆ80& Ù5òau7V¡ú(É€Ëç&1>ð…Ï6I30ŸлØîðçãOï8ù)ñ÷7±w¯ö÷ÇÛÓÒêiÿ¤ö…­v²Ï(o÷P?0óÒWµùÜÌÿA¾—9Ø>IP}’¤£iä1ÌQ±Ÿ¿>pÊGÒ¾¸"Ç[:ro¦3Öæ´M–6:Ç”¥ŠsR' ¡ÈÕä¤åþ$º~ƒUi¾o‘_Zkûq# €FRAME €Ÿ|OC¢s{x2då“$}n?Œ ²`lÀÙÏgo]žüºkÁÖ;à48<5ö BgrÌˬÛ)*«VØywØ}—Û}·y~¼}÷_ïÿm)÷Û]öKÏžl{¢¢¬Ü€óºä·ðT?f   SÍi._𠆂¢ôn£X^’ØÆÿ²Ó3“Lpb±€ÖUð­’ãèå¢"8®¡H Q¼u;l|Êî5>è\Æ3Sõ<ºüÌd,bs…§þXýôÖ¶mû—^^¢Â¤÷;\ âè[‚êôi6èÜFÈ 5ðä³ ß¸epL¨à¹áÂÕ ýlõ¿éÒ^¿ —ÐMoqpÓÐN†?Ü÷ƒÿƒÖ, ²ì ‹»½5Œ¼†Ï>ĹVŸû¹fI±,z«¸.ï o——_Üo`’ã<_G»” ŸÀ¥„÷!wöÊð~6UB¬xæ9>°)ÔsÃJYï¤[áZ.çï÷H[ôqåÁ¶¾ÅXæ3©WÿpLí½ÒFn0 a×/•¯!d&±žR2¾®Ëpã1:l¹óåÉÜ%ÑõÞw³M8“礗Hðtd¾(|>{LÌy¨T2D¾(?I %8æO¿GÒI€é“w0uÅ ôê=u¤ j5+¥¯K£_UeYX¶QÁ'|Ü9»ÈדªÂsg¾šŒÔuÌa*Ÿ?œ?¯ÿëm•€é9›9YóœjãÇ‹÷÷0 ™J«‰€FRAME ¥|NçC¡ÔøÙ1Ó'OÀ ÓðøG?,˜3£»Dä:׃x烬*,oª­»‹jÙÍnëðûì¶úí8ó’Ç19ʱ±ÖZák«Þ J4^éþ9¹ææ±¦%Þ¬/£Ž®¨y™!¸UH‚[ŨaOÈÂxæ/ÈXúÀÚfi~'K‰rÙ?\O-x\yr;·ÈWð·—£¹@á¹è9‘¹Ø¶S3m¡ !q4û1Z |çþ‚䬗'Aƒ)/ë!Õ¨¨ zøŠø+¶ŸÇÏ(û‚\±éûÿ›\DéÞDs‡þYËD”a''¼òµâqaåqþ𣠞8h—ÞCPŸ­úë§õX¹ëpÍÙ…hŸ¶Ÿ÷äpHA¸sž–çoŸÝíßÿ”*hŠigÒ(\†nÒ¢K™‘ãž¿Ôßëne§ç(ÓÀ0ÐGêaŽ ¹|¢fg ßþ üZ«š~6Ö“ïlG·¡¶x;”QÆ,QºàðYƒ©\ò(½*TÙar@üøç>×GÑðº1ÏõÉæ¸lÑèäÌ!8»—¾Udöè^+9çÙ㕺%UÄ?~Iýàrèô¯¿W‹[›ùcÓp ‚sÂIb‰29_MÒ®"¹úœÆ±1iô¼k^/N{ëGÞ™QÏiÝ`*<ªç³úýýjæJóó+Ÿ>Ó±*¤=u¹¤…"FRAME ô¨x;w:O¹“Í“§àüØwä<iÖL½rkÁ{x:Èøé7SM§dQ«m¶Ü]Õž]ö_oþŸ6øúmðýÜ^NÔXúAÿ¬Æ½_ÂÆºqêVÁ1‚W¡Á íÖÄ´9h¦+öUi¼Š]ej wºÃM-HåÜW ?uý×§@ N•bècj•wÿý®& Z=òɾ½RoS8Ï‚|S¢û@1­KöfKŸÄ\E .^ 5>ë¥øÔKWíµCû»$Gkä1)¾%j†ÎnT¥P£$Ï#c:ËØBÀä÷yy¡Ûè Ð1Eû{¢¢Ñáúì'@ì¹×ç„•és@Ì‘Y¥bJ,Е.Kë'2•² ävy¿{wpHiŸy†ãðAÝÓ©’íÐdÛjåÒÚ~–žªmMžk‹‰V’iTëþx>{ÚÒò5ôã?w~IOÜíÿEá þ¬…îÈ™bÖôIë‰Ý ÉJ0] 8Lÿßy«<°$À›Èr§<þ¸ÎJÈÌÞ×åà¦+X˜…ppҜŤaè^Ìw0ÇãxêF fñæÐV4ˆç$uFašº Ùó=S?ªp6²*ùXTBÏÊ™{gäÍ«&ºæk’Áy˜Ôû±Ñ3hèFRAME \«x;w:>öO6NŸ€ð$aßpðuñÉáÖ¸:žCž²}MµiÙ-¶Û³«<»ì>o«+ìõÏêsêo”ºûkpá¼æM¸mŒ£æ—eµ°Kç8.b WdÁ×$üðIœÙÆn¸2aÉ:ÿSÒƒüI¿¦T×*¿­µû¦Ô*çD»¢‡pK;-œ\æ– àtSms†¹ðu×ZÒàÚùÐÜ/d½ï¼aBˆkó¨?eÉCçÈ&¿Ô:X†¿Æ)~•§”Î~Ã~Krûi^çÿ/a-?äLwKEË£i›c³cóÈüÉ6åšhÈÊùrÒ­‰¨?%?îÿ}]Ìä ØÁx´7X¯7‹Ù˜ •"Îeò}>Ú3_@BÜË&%KÍì³82œ’Š<Ï箹ئ7 ­>t|ßïÍø4©h+*Q‚˜hȯ‡DÔiöÃzT¡þFRAME ´¯x;N§o©Œz1ÛðIaßàï_/6ù¸viÐSž‚t“­6Û¶ÛoMfÖugÍ^ûœ8aÁ¾OŠË:3À„ ðÏ—=¡P6ÈÉæa9ˆ&fݨeø%‡NÍlÄüu\2élU¢ÿšûKÂûmvK߇ð$¾"¤×ö'SâÔçY—… ;ª¤­üv½ZI]Ž;ÿ–§ôŒcøH¶PÎøÏZ¾Ü&…ÕuÁ¯ž–.k×éÓª­5T‘Á0Áu^úÁÌH!è­ãåa1?oâ-˜‰Â«-/( €nòavò;ÿú(‡ÿžÛˆôøé¨ÓýÀ%¨HsࣇéæCpÖä']ûÍx–‡ö9ßÏ` §°–ÃÌùë&Wçr®y}ïŽg.sÖ!Ö,“Ádšüuäõ¶ÛñLùçØÀ?¯À'ØÀ?¯Ãzªª¯8? -(#@„}Ï&ò`uu˜´©iôiW†æQÄQRÇ s$$?9j¸ŽlóÃë Ý÷Û@FRAME @®x;}BÂ_f13¦FWà|³«çC»ìíõ¦y¨s}öŸ “Â'âx=Ÿ “Â:ªªªªÿk¹p©Ù† FRAME (®~gÅžØü 'àæó§æóuäMGäò&‚£ãUUUðÖFRAME ­~ ÏÁ[ÀFRAME $­|3”~R½%x?Ï6ù¶óo<¡†ƒÁõC ƒÎªªøk€FRAME 0­~p0~˜žxšüÛ~7›o6Ûç³£ÙäØPìèöyö”5UU|5€ðFRAME <­~ˆŸO>|×à|ç›y·›Ï<ómæÛæÞo=¡ì•ì`|_h{¥{ØWUUUUWÃX€FRAME ³~3é'±#€›y¶¾dCËæD9ÕU_ `0FRAME ¿~ ÏÁ[ÀFRAME ¿~ ÏÁ[ÀFRAME ¿~ ÏÁ[ÀFRAME ¿~ ÏÁ[ÀFRAME ¿~ ÏÁ[ÀFRAME ¿~ ÏÁ[ÀFRAME ¿~ ÏÁ[ÀFRAME ¿~ ÏÁ[ÀFRAME ¿~ ÏÁ[ÀFRAME ¿~ ÏÁ[ÀFRAME п~Nß3ácðRYМ=¼R%^ÈêŸ2Š€~žµšÁÛÑ|ÉYž Ó§NÆŸ ÏP85ÙàÙw¯òWOÇÓµ¿¦t¼¼ÿÊ85²kò)Y0 œ¬^Àâ~†ÍFíW")ç¸êo”Cß×ZE¸@hIžõc`È(¸<;O…wJ)V‹$ £)_,Ú}¥;\¼eÒ€}%O>Y.‹^Ö7[Ší¸]¤kÔÔtì°­Ågy1Îb7øûcì›ç¼¥ˆ+ôWÃnÜ€FRAME п~Nß3ácðR[ÍJöðéu7×i ¹Ð‚,ÐEï ê@\ÑFÌe“=Á½Ûð:¡sÆøWX5ü¦=Uœ^ã’9 qÎ^6¯p<ìì&¦{§­ÎIŠ,‹ä†»’GVG¼ìgW’àºù†šË˜OËÓ¼ (Ù²·9Ý,³ìÌÁ{ü^ZU¶Ì0‘èFRAME ø¿~Nß3ácðRZF^nº.žùæÀ]t¡ÞDÐr&ÇÝ;rè’Ê·tGÜÛdÏ è"µË®ÆÔu[5Ïíù‡51öèŽçÀg6¡Ÿ9ÿc‡„Õ%¿øŒ7£Q(«eV£ÏÿxéãÖý z½SŽýØ·Ô%½UÄko" Wp–ZèËXs¢Ÿûç÷ ¹ÙÅÏ!þiðû¿¿€È Ò¥ˆ—Þi ÷äôû~4÷‹ ©m(âÀUõWïjù÷'1î6 g"½¤[)*{¹§ZWJorí@«½v`õ¿1ëÞ\:YLV”‚'9lH^uºÔCçÿµ¡˜ýù’âOÌÁÆÜ]äyÏúªí=Ù¹w¹! KvÖ9ý:Ô»ëñ ^_Yí5•¶Çuÿšz·l-þÿâöñ20~õ¢U@½H €®_-”z.Ÿ©¬)ïýÔx4½7Z©œ·Wr­ŒëF©ÜØo/tz²Nm9í)Y޹£”%]-û'(õ$[óé;],ÑlÇðéÌ}Y横àû²`½GjMÃ( S|H#“î²kŒFRAME ü¿~S·ÊøXüŸ€cíêŒÐº ¢3‰Œ’ã¾ÆÄþåÞf±•^aéZ…:¸#Çkbö¨räÿà¡,¥_#ªHÇïÙU×±DYM `Ò£Fur‘>mO/E,X¼iKwx.“@…Ã5A¹@>%/þeË”õ # ]Q-󥎿u¤óø˜¡w1q°óµ¬wE{'ñ¿UÐûÒž1ý¤ø|ž] ËMä×Ps‹ƒÕ‰Ì†)~Ýä^ñºñP…ލÏYý¯¿.½Œü þ¡—ål¾2ýQÒªrê±U0»o»Ø7Ì{üª±gÅ»U\ˆ÷Ú;?‘tܪ^‹æÃN;œÜUÍÌÑe´Ñê Jﲯ\8–Õ|ûšº&üð‹±v%|žhìGhÑ©‹9Þf%‰¬²Ï"߀;«¼³ãÅ€«é9²ªqÛ©#4ÍE@ÌåáÙÚìL!O‘ ÁÏd §,AxÝ {öãËÄàÅs7Âß¹FRAME ”¿~Sï|,~Sð b^xã›Ê꪿"ú¥*—R¡: czÔŒÖIÅâ'¥’P™>%•—oŠJr°Cêúè%¨©[t‰:'ô¿ïÇÂqoßæ<(Å×ö ½ºtÌ4Ø1§_ƒ[˜ñj!|æŠ%µõã@—A#£¡gG<½AãCXí™b¹¬âK±ìh´ òû©K¡#OÙÊÞ½U°tF‡å“u¹R†tVe•¹NFap±~éÏm²~ýà=xÊUù|áãk‹YáüÒ'qx¿£ÕMmµT?ÀÚ,ˆrçküžûŒÂà™ñ¼Ë¯­’sãÔ¾Fˆ€ˆÅ™wSîȪ‰2÷”,ÐND†ybÌÙzŠï÷çó[GàL÷#– ÐyÝŽ“ ‹N0…Æ|m XÐf±ôÈEžÆ‘})”žûäƒóVæ x¼\Ç)|µnҠ󜵲k›ðCfL·¥–(Jÿõ!î)õ„÷tTž·9½ÈRæô×»– Ÿ÷ŽSÁÓ`²sýËÁÞ,›A)ßÙ°[®}Š€Îïù† °ñœ¥â~­Úë £‡©VÆ ¹_Î’8Þk9øƒm†öÂ%Õ¶õ}é!n¦ÔÑwßîÜ£ŸnªA«j¤Š­ÕHuSœaówsÖ¬È÷n¥.™—uÓ:kG]µhÊ­¸Éõß^æ‹¢çI£ÚDµŠê'˜¹™JR ¤ñ»DG•R7rQö££_~? oå¨3gŽ‚cÇ7nÑidwjíóé#XGc;u[¨Qº›Žáºî¡øcýqæìš«§æFªá³Ïq‹²<ûg4SÊõ–$¤ÿVdK§KÙn›ERM'/¾yïLÕçÇšõ{ÛÌ>yÒ6Û{Þ¸ºÔ4àà† FRAME ¤¿~W·É> _ üX™žuìMî=wU,bÆÔ®NÓF®SIGë#¥ÖæâÊô÷í=j¨HàðPZC:ð“õ;+a?(£šóië(!•¶ú¯£a6×-†?—/-pF6²üš¡ U®.•*ÇÄà.ëô|³ÅBOÎתF‚]! ÖG){S ŒTÿþJAŠSÏB­ˆœ´5!oEz'‹~?¹ M6ŒVaŸˆX©È J6 @†,Lõðv¼3Ë0=bÒ¶Ñ\A/»Ž¹ez‘¾>_-ùœSó1²7K$æu â/qTh°*]·Û3ì-I/+ =V¨*§ÕRõT⫦çüâ.¯cÝþ¹½‘Ç•fâëùUOLÔIÐc¹¨æmÞš;.ÑÝ…¹­½N_¹š63Ü Ü¹›Œr©»ÖgŠÍÒb͘Eƺé¾ÅZ¿‘ׯ `Uì‚ûÑWÝUô“‹1nYµèÀ^ÞZctA8Í;¸ÖÏF«¨ž:YÓÓÑ?aÇÛ¥«:¾†ÕÆuÓÚÏ¢:õ¾díÇQk±ñNâæÞãªåœÊªmÛ¿GÍÆþ|—^|&^?áü}¹D˜óÄlé{7E–`VFíö¼U¾¤©d5­ºB»¬Íñùç:@y/k}yyŽÍ±ÒÇlkÉGp´3x¬8(`±,ÑíC`FRAME ˆ¿~C·É> _€Ó™ø±2ówÂõáxuô…>T Q¥šy ?_­Ë4h§ôeUãÿofWX _RërÊ’ÔÐEÏùk¼qÝBAïx¨ rL̹œš2RÝZ© '‚7®£Î×^÷Á.[® ‚ìä/°rtt Œ ðÿùÅ¿m.1Ê,æZDÐ2]$ {Ù!¬Æ£[¼ ÿ–† 1y>ë(3Z?™¼Xb_^sžžìGÜPóñ|¼t–¾×]û=S NÇK¥Ô7d&å]ÿù€“)™á~á4!ÁM3Õãˆ8(žëz @@›F³o²jVÊTþ {ýxs@.–.GöeÏ—y_Iö&ýFu™ ½!¹ñVB¬Ž†ñ7(‘Z>•zH>!诿Tþ‰é‡ªá ¸8ùç[fbæ"ÉÖ9 7?úBï¤ÑzÛÓ³ƒ¥§8Ÿ\¬ƒ}­¯(‡^²ÜfÃøæ þ÷6÷¼gpU5JØPtéKxÛgiw+Ê“•ƒ¿ùõ ®þlâÝz’ü¦TªOßÔ6Ø>²üÖ¦©sùFÂáÎë¯]ËÆ»mÄ" ¹Ê7¾Â~ŸK¿~°¬VŠ£Ù Nþýy GÿšZ@RÚS¾è'»ål÷¼¾Ö´ž·k®’¾JSŸ^È{ý¹=Ñi™/7!b9}žø:ˆRS˜üïs?Š T©…Lãà 1 3bQ³†HwÐìÝ×…‚´4&þRA÷ùÇ®›jž+ðßP{j·üMÔ ÊMˆWÐEý¥.6ÕÝ}^9ƒt{ÏéõFö¿Ê©Ï 1ßÀàæ)¸ŒvÚ¨h¸j–êsŒš]Åq®ÏÏUÆeA£ÐG[SU#ÕLjµÍV:‰'Ð}ݺ1ïg‰o9ê{kžù•]å]U0ªšùy6½­OUIϔڊó¥óÕÛñŠê ™äÞfn3/}y¬Ìþù_i6b2 Õ7Kwn»¯À‚ĸÏ@Úú@55lQRW_;ístì2z¯cØŸ\x©&}R}¯G%]ŠŸÂ´r1K–wïðÁå@f6Ïë ²Xªn¥î=‡íËžâ=®Ý:t̪ÜsŸ¤~¬³Ú¬¾vþéžï5ÎÑö44ì>í!…É.ñ¿ŠMmÁ1(ñù ã™äó“€FRAME ±~3‘ÛÞYç,¯ÀaÌüZ/jxK~NÞÏ?ƒÛà=ë«URj¾ªñKtö,$aOT©O„öSs8¯E!g$*Xøº£¼H…<êÛ– ûÜ{C9xU‘|ârO¾¸hy/àÂ\ ÿrâC·2Šó†+S/ļMÎé‚Õ"uT²´bìAÙ]q·Ümr¾„ÿñü{s¤éEbÇ «H~4•®´ÚF0Á“4¿ ²'sDß¿7ØÕþ!|6Œ4…¤àí‚ü¾ õ¼|X’|¾4MºïœO ³ÏI]7:¸s,pN…€ñïsprˆtäöqä³øt Fl&ž»â¾Äçöðb `óžSÉð톶ÕV ¬àôâþׯ:\:RuK› ¨±)Óʾ³˜ 1½tõã2Óúø$Û\–±ÞòIc>/žä³²ÈFT? Sìݾ(Uê÷³_íè}ùçØ€¿uydbu)bV&îF$@aÄèûÂC> †ðÕ}:ûÑ5Îô´ïrîÙÚôÝ·Y:pNì¾ìL7-˜êÞÖ¯z[$Ã’‹ˆ¦G­.!ð§zšñlö¢¿ÇîÀ«õT?û³Ç÷S0Óaðj½Ô¾YAKu‡a7ŽÂ¸|l7öãþêMÂ+b¤˜@îC[û®¤92$Θ¨UQÐÕ㢬™ou±Aðp£p|1aÝ0ñøG©˜.5‰yJWF¢³Ët XFRAME è«~7„t÷–yË+ðœOÀ¡·ÏÁ-ÅNç49øÓ¹ÍCÝô"¾¨ WßeÚ" åjZ©ÙÜ^yÁ/>ýMCÈ­0Ð_ô–ƒïº´`ÿ§#Î>~-§jBSÙ7â 3Ûòaí¤Ö¨ Š·Éšl?‰A°/dCÍ@Oã;p÷}ðalv”x^KfØsÒÛí×—ÈqbšEiZ|»|‹›íxâ%|^"—ÂI˜0°5BÛBKÙÇc ŠCãU™|Å- +Â/Bú¾/ì€-<ó¾ð2@LW¹yðç„Qbî÷ ©÷^'v@h”˜ú>þ²ùð|þ…5ð]yç ÚôüßêÙ¯ `K€¢÷ 3µôf/‡Ï1§ååõ¾îÌ4‘Æ Oç»MÏüûËïmÌQ< EˆqI¤~ ÀñiñøL±VŸ@{uõík\^ius˜šiޏñè¿ìSÀ8ž©nW™ýS5CáôÀQþŽ:¸üé»ý°F€ðãN˜=J«­…ÖËÛ’Dýg„ªÕŠw; 7+sÂQêEÍ« %¬>h‰¡Òø„rµ0^‹žÍÇ"utL÷@ã6jܽ ,FRAME ü§~‡éï,ó–Wà âq?V+à4ëÒÊ‹êo<ü0îo=úÀ›}}õU>_u_aާò0’MÅgŠy'Ñþ Å\}YJvx«T¯Xˆ)Hb†·¼ øjÑ5º™Y1/Ì”ÕK½@~°ÔÌÀà“¡ÈP¿12ˆœïÊ:ßC¢¸æ+é›*6à(«éT©BŽ7b¶Æp)Úµ€®‘w!wÅB`|]Ö¥«¢‘~%{}û ükݵ­·wwøoe1]ª]ÛaÜWw­x—Ük±nñ€öñÙïì=c€õÆJøØàaKý 4¦Â² ßξEÔ¿ö'­ZÒ¹Ò Grë ouàxºÌz´OÛèt_J,Zàö«íKôdE‘ ‘»îëü. HR9 ˆ7ðwû¹ -Ü"¶† ©¤+_õ¥¨2ÔH~œ†:nõpÌÆæ†–=ÏñÊŒ@\ùï§ÀÂ>ìЙï¾5šlÛ jëÌdiÚ·°eÜ ¯]4´‹ú ÿT‰(Hàþò\ÌÚøÊ|äÓâ.yø%•I é’`D¡*ÆX˜ŒíåC[r>vÚyÑÝ,KÃ3à;r 9ï-ÒŸš4LL4jÓD—7™˜ð¼Ñ–+Âúð¬ Ô¿¦’U¯¾h©þ›œ1 -}ÝžŠ9¶Þ'ØÙRù/‚i•L[Ç^n¦ä{|‘©-hAfw'ö{£4ÒÎN6cPÓË5 ã…ÆâuÙ9M×És}$ÇMS;#zR½ÒVë»Uéìû¯óƒ>÷< /lð<¨ ¯K³û?ÂY=•½öÐóã¿kÕ‘“ö¹÷™¾1âš;‰Œ¯ñ,i ` N2Xü"3Ñ™Ë.—¦‰á>¢V±™ÓïG·ÏÓ®=‰>“p8ÃJU¤ÒžTö'hý°¿û§‡ Ôøè'ôYÇÚ êPý{©`ÐêLûRÍÏöé;¼¤µiW3±˜öõ„A9Uz¾ÿö Y¦G½Ò'ÆDùœäß!1z FRAME £~÷‘Ä9žòÏ9e~Î?WgÝçÈiÜš³Øy¦|%øO†ËðÏXP™Þñ¶Òç;mº…Ÿê~ 9ò·éÌi×r9fŸiê”gq¶ª6{.ÚNØ\xî ‰ „©<ðZ„Éè$¸@*tNáâ䥰•ɲÈ>Ax£î«þn¶Èû|À,¥x²¬Û&Þy}áןé ^¶äìT¢ü6 þi$Þ°[T—݃Øö œ/ƒ-\ïþ7&ŽŽì2&÷/©;ZÇ¢¦VjŒq)˜­ ûJ€ýþ+o¿U·y%ÿŸRwM~¤xòø¶/ÊžÀöXò‹1msÕ±Ð×ÚŸ Iö¶³ôΊ7ôUˆjžx(9á2rÕ"ìãyÙXçEª&É”¢Æ½¾”û°`M î@!UjYh)ƒÒ ]¸zÅA®Ýâ¢á=6áI\Qk?{¾,å3âB ?œÒßf+àyÌgqg„°/¾ó“.ùÍTû?ƼõîÈÀ—ó׳e ^Àµžy”«Í©Ïޏ_R ¢›_ñz(Á~Ÿ–ïäCÏjpsiwùprúV‡A2àääcse‚õÚ!üi^QrÇ!žÍ¥á«‰î@ËfîîŠ;–úî¯ßÙtà8öîÚhPk@1$,4œ*¦D…pç´§[âFö´×„¬$#×ÿ Tl6øÆèÏíš½eÏÎÔNçÿ™Ÿÿô®ši¡´ewÛñö,«›Û¨ÊŸs{Êš÷Y¯+sð[º#—’h+Œ{Y/œCNyÝkÑÑb8~O"Y¨°6"4 2!R½…ß´»û‘’ßG¾ýúQ)Ë3»ý©ÿ3ÇxòfP»ü¬y %Ð è6"ºŒ åÕË4õÌÑ¥–À²:ehúìQ²Tîb § !Âl›)/3ÿdî8ãî # •'va5L5%`†ËV',k²À_'LgŸ0’Íâé`¸è¿üxñœåWscܘ  *ÿ;ÔRìn£0ªhG㪱œ9¿VÌ—¹N‚~øFRAME ¢}Ó¡Àâó=IÚ‰+ðpûtö§ æOžËÔÐù…·’h¿ƒØôÅø<$H‰AkrÅ´é‘­ÈŽþÿèmŸëþŽiö§éü'r7+z˜êqWDËåxùoˆiø²úƒýë‹â‰Hì)Ã'€‘`ðTðF‹O—ß-^xâ#>ϧoÌýôtq‚XÛØ­[&sLô0ñ€çã÷cÄ ÄÂXÕ5˜H·w¸}ЃÀc'.œ¡ÀFRg0¥¥8r×÷Ø'^+Ë?$¦ƒ¸v8¿)žÇ«úÊV›á{!èÎÆ»qe 7Äe|¬éfŽ’ÂN•fimø~d¿7”%Ûh6Àl.cÁmx5^~ÛÍ®ðüÛ^1>á!Ji~GY.§÷qo»Kܺvô÷¦Ææ…QSxev³™±ZÄìµäýç~ˆcPÏþããËœJ§½*{ÔÔÌDsÝPû°ë8J÷‰†À]nô—z'“âe=¥8µHÖ']ý«þv¯^¦L›Æÿ,’©Ù"ñR­›nù²´ŽXI% r§¿ÇŽfîÐ\"/8O_=°’/篪yùø d>ûeòøÿçΨ©R®íR›¾„<‡˜Ò"üDø#{#ÿ‰¢'ã"ÉÈ¡Û#ÒIópÈö'¸þ.a]ÇJíYt7×H»b6nq¡¦UM•ÚUñ‡{ÕÃ#Ýò×4r.ZÜCúÒ¶Ä”a8Èx=%(ï{—i_ü¡õ"?¬¼™•'Iˆ34½Ìî(ŸTéže¥<}žnåã‰ÞãiØÀÎåОö¯r ¾\—Ö§8¶&À³ÞìW“À6dr>ÊÜÚÒ¸æ{¿aè˜0wZù©…ô֕Ȓۣ‹㗈õ 8)Ò4TÐþ´M4Ðü(ñüê·înÆ}¦ÞN‘‡>ÌiÚÅäù׋PCËõ‘8ªŒe/OHIJ O©¦v~×Ë|µ¦—Ëbi`ÆX°µÒÅ—žù,x¾UCºNUdêVä”0ÐЂ§Èû¸nk;D0FRAME @Ÿ}בÀã8ž’Y;’É_€+‡àê¿'ÏêÞmêh|Ã3çÉ7y~¦vj{ƒN7—êgf§ÉrP™Ý¶¶\KiÜ*ªkû©ú_§ú{©òŸ£øãåqÉ\Ë婯Ñ&'×C[Íojò2¹.|¯Ë¸ „œ9d‰JÀ¬4bJ$Fµ@ó—rЂ±ÈÈ¢:!û™h™Þˆ::ÄÁô®P©P¡zq}sêyðsA²åŸÚÙ‰ýÅy¿bzÌï¦_Š#y³À­ëøëŽI2î¯,]ØÌèž­‹VÃædêŠÄH«Û=}‰f7éų@ëÛqr3~×^ ~¼Çʱ~Ü7\1èopV»7㮟_äx}šñjêäÖ¿>»’±#DmkaüV`[Ãv'ë!I!&JŸé8 ÷^ñ>NÛ mz¶|Ǽ¯ Åf6̤ócŸå›W.Îy½†7ˆ!æWA†Á³1E°Òùzee£T*èNt·$(e?uRÂ+9…¥û.{eÐa¸¼ÂKá2^x¯sÈæWo%^ô›Â²€ái¢›ý }Øq§¿jÔ)ËÊÙÁ!CaMž ßX'Ÿ˜¥–°%c.Ûžû¡É:ð°ð-½ ûSù‹V„‹f¤øèùQÓ‹ø=!×äXô^þ\´Í#寕˜ôR­l~ÑSµõ]‹ÇýË =tbC#0oÓT(æÆ7Å|=¦ÅkïO­z.ìÖ2u+”óÿÁæT¸Räû›8t9}b ûœlÝßöÿïW'6:Ô–þÊa²÷ƒsî+@0Sé4ÕÜ£;ça¼z;`c{7¡ŸÉp~M7©]+6’u,ÔL úŸÀÍÁ×ó½ë0[|ê¨gB1cÓÃéÓbPüB•"ê1è+è]­ˆ{ð‰nX|InËÅQerBÍ-ñ°ûöRøfq2iNÄ“yÈ-¾«JíÊß_ؤ­ÊDúî5^Gܦž™ þ™§ü·ÃÑôöz^Ô—2MO˜š”¾\Åj`„KEÙb0׋6)½ãÆÆ>9þjWZM‰ô1ÛCŠ@ÓÔ-0ãsˆb*€FRAME 4ž|³‘Èâó:zIdîY%}Ž_€²óÌù×À|þ®}RÔ>a‰I¼æ|ÍèÔùòùÌë£SæaàJ?=ÔØ?óŽëA¦?­ø¯³ûÿ§úÿš¾Ÿ‘IÅmÊEOb_œ½ì\ÎY•ÊÞžy šŽdEú Ö÷áÔ¸í¤vä¼µHèxT¡dnbçºû‚ub³"¸xsñŒð»IÔL6'âH=,Ú„Ê&á$ÁÞ¬á¿5Ãh÷®Ý™Y¤Oív ‹¼OQ˦à7pÐ% H)/nnRž…š/_ š†nÍK´çFÄó0Å?LØ“àõØ-($ÓJØ.3 ÞËåàsÛæg¢LóY¶Myœ|áÇ/ÖB˜’)~Íw›² ÇŒd6ÿR™q~r>a‹¿†¼_<ç¯×É`g¿‡c_¢óÓÕ[ Ÿ™¯ß»~Jâ¬%Z¦P%Ct=U~kÍÿ½HÉÓÂî_M`–ybíðͶäÁJšÖÒ¼%k§±°³°lŸÝ? èÇ`ƒ¥n’ï%sÛW[‚LW¥ÎÕ±¯\¶Á'ÐÜõêI|ç/˜\ÿ ˜ —'»½·¾¶k×ÿïi‹Õó¥òäÒw;¶Æ=Ç7XÛë)8)/Ñ)bÓæF¼à“6½øÖûx·¨uíhÛÄúö|Ùd}$øŠ§ãbÅ "ýHß“IùsÂd3pmí®ï½”r Ž@='7n2¿ ?åy\?ÏÌRÙôKt7(¢À{kþ­Ö½ûŠ)8UbTÈ4p˜p–óƒÁù’ž¾ÚhêÕ Á£~\NçíƒÃ ø~PãqSFcFÀû„O ¸Ó³ù‘á°T\µ§{³ó×@ݱo@bò‘剥µ=ˆè‘#ùS–ÎkÑË£‚<Ðb²HVÄ«^€¸­T8ø± zá“vûTj¥´‰ã‹KÆ–ƒ,T\õÁ ýŸe;)p ÏŸnÉräÑ17k®Ý¨æ:,#Ý'óÏÏòS$É„õÌDõ;+¢Š}r×eoZ“²Z`ãl|–œmòXqæh|™ÌÑ™®§ÑÂ`¦Æ¹ª*³tj"ª8àÆ–FRAME T|·‚p8¼Îž’Y;–F>·À\‡ó¥|Ÿ0÷õsä>ƒæ”›ÉÝ<š™1>|‡¾Né$Äù˜. >œÆ¡îÖìyÕ0Toûÿ³û¿Ÿº¿£ê?¼B?¯ùìåù‹mùëàÍíå±êÞΟžÖ™§‘ÊÜ\èp£%¥•É¡<¤¥b{žð±R̤wÏDnq ”¬-YÓ F!”7ŸÐ )@IÖ’n.\¦Íái‚çµóÿ%3[y¥u.Ó‡·h²ô»IhF½‡ ‰ë{qŸ5»âw\Püêm+Q«ömN“;ÎÊ »šðÎMìlØ1NrÎlcÛözým£²åག.O݃aÅ뚊ùxÏïúN ]xk¿*€êr’uQ¶™“lÛæOFNð¤R½jø5¯ÛÈn€xf¬Ô·—‘¹7À؆M¯bt†'÷v‡ÁŸb;#êN7ƒG¯ß={­cÞy¨É¥/ZšúX÷0 ™z`Wƒ›ü-MðÅDtÔ  ‰(n^’5Ëœ&î%ó,dÖ¿Î [bñÕ¤lpO²×£Ìïåœï²‘Á~gÁI€í¹rñ`%)áÍgÓÛÛNߺÚOà6ORÀkþÙzÔÏ‚ƒR¸0ûÍ96îû*—´Ë!?ä5[~Ë©Ìé†w@]‹ìWØÝmæ¹*'ôÏùg<ö@j “0ϯss.n²¦1‚ øÏþ_þS!ÉÉßí~-ŒÈG*ˆéã¥|c7«ÿì3f•zûߊNp,ÁºÕC³ï°%i8 !e~äžúhî… sÕú~Ïÿoê/œÑçþ€´ûäçܺ ÌgQ÷Kì0Õ[tn²<Ïúö·ÖØêØçPXõ… £Yô {C 3ƒ³rø*+1ᘠÆFÓBò\†±À=؉£[‘^ê‚É ýÄlBo«M;D–ŒbK$´X”T`/š;â=0+çTàburnÒYè‹ÁqJäZº¯å®»ð¡Í|˜³|=º5Y®‰Ñ3¦äŸBýU×}½—iö×¥Z'zMb’M[hPkåµ1u ¾IÆù%¡^éYõsL×›á†Â?ë‘dþ’uv&ÅПš^G¤FRAME ìœyÞGâñy;–K&K,åñ8~NÝï™Ú}~mìÔù†½}ÜùÓØc³³¨žCå_¦Lû¬™ÔO!òª‚\ø BgvÙA™«¦mÔsT—¹ú±Fÿ­ë¯ð¤àîÿ§ùÌÞÝËܵÌçÑË_ }–ŒSL…F¹l¢rS• ÷¬»iÕ—6ÊŽu'Î1šakÚ†ÐêV€(B¾Ë9prŒ¤Lã|ë)^§‚>Â)Q‰ÈzAtá¿æ‰ìjJ¬ß»üâ:ãW3Mlêo’ß°¹¤‹X*ðÙžÕ—rœ7Ñy°NÔO¬Ä¦ÅܽúÞÌ]䌳-,–»C’}‚â7?íÔÂø÷ ‘~ò”g)»hµÁžqqzpеV¦¢h`JFÉ2Ù<ùX,¯ä­ˆöÔ׊jÔSÒ%¹ŸW¡ú“îñ ñøVˆøJƽwƒ¹Îó¹ÞlÌÜ&Ã'lOS~B Y¾tD çØ€°fr[;Hç,ôÔ …õe¡øáá¹M~ } ’·øŠá&}8âo©mâumϲ ©bêNˆP9NÀ¼Ó%…oÛ©ç¶ÎM!s‹¦ƒ¯eš¦7ç =/ÒKQ„7…pøðUûqD•ʵãæ|͈¤#V!C(9w?“îᛊ¾í_äŸO®îWŒÐÑAÓâÄ ¤{v:DÒâo!¨½jªBÐ#)ù ²!ÃóRí¾MÛ|oçÆ÷›|èü°ÌÁ‘Ÿ]=ªm??b6ú8¿ÎåÔGã)=STñQÿ½S~ÐØé «™ë¼ëÅYôÈNAÒu9½‰mÃ/æñ± ±òâ,rÃf6"=°(;p«2‰ÏAGïǺÞüøøŽMÞõΰe -Î>¬k%”MjK•Í5ÒtëH~?¶ÿWZ·­kLZ¾`¾LSÓÚ/—ªù8Ô£$ç%É9޳fºcÞ®L/þºÿÒŽººK}¥(Á [I&Ï ã¹qňÔFRAME œyÞGâñyŸ²K2Y]>'ÀuÛŸÁëå/fsq>a§våÏþ; |sç^ÍL—Ä™×>qàeA ‚à™ò^ów1YŒë ªºíoÙåõ®Yé¿JGOÓùÕÝ•ùß–Ù}Ïsõü´nj÷ooù†æ/j§Ó L•/Ö¨„|`ÈL] C>8éÕ‚eùGœ v©+äÅ®wýf¢Nk¥¨šM³ÃHižæ ¾e€¨focê8æ¯ç²Ò¹¥nh¾I^®Üô½œ§¢a…ÞŽG §Ö&mæ¨Pª6§b³v2Y3ø æõ3Ú…­Dh LJcY¾_~~@µ™Yd³Üaq’eÙ­ù±duoÚ§¯9Šî6NþR:‘G­*sŒ|`7&‘àTšÅ=M5ü=G¯ñ™¶?º|£³rûwB?Gƒ® žDZ:׆¬B\Œ€[¤q[ b#ìGßYŽ|㈋î(ŒEKAñEe"s¢QDF•›ºžkE–¸8=´@98©]º ¹íÊ×ɽ×IkšLPõù Dóÿ*‚ÆêÙ¤–:Ô¦ Ëë´Ôù~ùŸSäµçÆÇ‰ò®¸V£N54T¦SRÙ'Kwf £X;+–æÍˆNÎþ\DFRAME œeâo3©Óà²Æ2Ë<?Ggjö}\ø³çòu>æý¶èi݇È|^ŸÞ¿BApPö5Ì;®Û*fµOU`ÍåÏÇìüÝnÜÕ¨¹£—/ªUÇ“†/j=jmì|MjÖµ¤{¸7ƒ¸³sW·§æé¾íá¶i:ÒeÓ8—oyb|ý7z¯.< Ì­–l1T·çdù‡Ë«tÈ"†È¬rJKkì[O6GgÐËü¨jÄ{vr³Žóë•뢩Þ^ÔS6€û Y¡SÈÂú½éŸyz±ö:öës‰âf/½Ø)à—·ü±x­€­¬“°¬Æò,*Æf}¶GIù¢x|dâõá«)|FÚÀŸïuŸ°0*ÑæL½ a¡£ÊL¹2Ç¢gä•Îã˜É©TŠi¼ Q­K¯Ù©›Oó|QŸÕ2„R~ÿªOéþ˜Tm++âŠ2›D]ÕÀFE.ÙÊïØáL½ó®–vä— v[¶UËݼ“qÞÅ®ËMÁ‡PýÃùÇïU€6JdNÆ0ËÝ@O<Ü¿q™–ãûŒ~ܲy]×A¨@Ô›6ªè®±ÃA«€•˃°^ǦâÿÏ^É=?p€ZÖšÒd¶þ²Gñ×%k¯ø’øìä?B2b[£Â2åKÍüÀ-\køä<Ë{w~xÚì_u'ÿw²Ÿ§< )Pµÿ§üSö{1¸^®À EïØP ÷òÑéSmÿgìÿùí>àÐþ––)þÀ31‡ê»‚r÷}SSÓÆqê)ó[z’aÙÑ`Êro•Û¡àXñÆs¾¾ä7ÅDÚ ·zv_66*¸ŽÄŸTxy.]B… ѳš;Mú|Ãà}@ù¨1`€áøvGé%ÔfM2ãȘ€Pô ŠxhsÉ Àׂ²ñBò9òÛãõ©½St[­`§¿d©è#\‘i--ùStZßWßEK­; Ù-2— ¡# œû¸_FRAME œeäpN/©õIcÂK<\?‡gjö÷úXä^ÓGíÙö ;°—±ôæ|qãB‡¤ *æ|«°CÙÜ„ÎñРÜÁï3hͫʫ±Óùü©ú–¹›¹0oÒ[_ØüÉ8Ž÷0ooowc’(—úñ>+jÕõ¼IϔߒÒWkM¦÷ŸœÊiXû0ÜÑ !öCi ”>ÕŠÅq4 NZÏ•‡®.•ùýò>/`™ã]ÏÙá@Ó1UË€³Ÿ$ôâ«Kœ#+!ER…ßüECq=ulÃXë”úžî»6r§Ý/ØøÍµ›í1ѯÒMû¶× ±|žÁnINNr££°ü’†v+Îþß“cÏ<ã幪Æ2ŽÝyë õÑ^e!¸ÇQ0=ëa†¦:Ÿ€]ú>¶šî±HrâQ³ÞÊÁ ýH5îß°çô—3„R¼» ;eœç—b|äÔ¼ÁN(àüƒcc¬ÿnr<€ôý÷"&¹&p/nÛKØ_›Ð7¬·:h0ìd~ÈUÏ çº-UG„ Šêä«õ”©?ÌÉeŸgø×ÊJÏúŽõ‘Œ€ýû–9cÎ T­•©<!àÌÌü°ÁxЖ|`šŽk0öDÇÂK±•%>….OÏÝ_袊¨Ã —M§ÿþüw $ú!{Ž®'º«¿àß1÷2ïxž»üÛÝmë[èé=^q÷£é£ŽÞ‹…,ÊU7x­?MvŸ?ßÉÈQ‰*¿¾"xĸd@ψÜõöÏrp*> Ê~ßÿfç³ÿ· ”Ž^‰ÅöÜVõ+š‡›…Gµt¦Ã~ÐŽlÝs¨è88P±BˆðPô*Ñ–¯ìP–½A ;;àØcT*Ò›[°ˆ냾8–AìDl’ÒµÔ~!Ù_¾¬Ÿ‡Âñ¼\ïnnüG‹§K¶~›ÐëË•|蚬ŸS¦ª ó2íñIc}–ÊÚW¿MwÚ2ÖiÓ¬Eˆû5>V-֜剡Ž+‹à^ {w#»ÕeïY{Û|Üî;ˆ:7: •Fj†*w§¹õ'°~1ÿ¸3)Á€˜Æcü)®ˆàÔ2o{nAP6u·ÙæjâÍ?ƒ½@²\Iœ{f’%Í*ùèÕý½PVNUüµE4â¥F(ÞðÑ€ô½Û,²Ä¶^¬GáüèT q³( Á‡ú7ó¦’%Ó{GËÞõž¾W·l²õe‰uç^¬¬‡R¿= Ø”ëY¨»qFÙGõþŒ17û(Hb*—­fµ­x Dk£#¬×…8;m}à#xI~o?EÕ;Ȉæ&s~&©P#w×D4äsÝP>SezDÊ&ãƒé@-›úTs´›XºgÔßž9@Óâ¹\.Ô;×å}õ¨˜ŽcS_̾†v$ÕÑûË<±??6š&S˜>xVt+FÜ…Ô¯\þ8Ÿ ç´Ë2ìU:¢)'Y'¿‚ŽòÜN¤“!åW¯z¦ŠœhˆzÜåEÌDM+ócí[Œðbá÷ïÑкφGŒ7£¢>kÑ_"ütÍèñóBØ{Ï8"ññ£A£†Œl”[ÇD“tah·GÜd}kö,®Ùùöô}ò0ý½Ñ·£¤tlèyXì‹F2‘{à‘S¿Gó¶<'[f7«¾¼„Iœö9ÑÍê `¡ÿ¢â\<à_8Ý_ûõŠƒ5Yý5ïž¾6pv$ŠÒ_<ÓaMó«WÕu3øÉÈïo™ë‚ÀjÅXOñ—ó õÙŸÏwÜ›©xŠ>WF¼Ë›Ñ¡ši‚ãëÛÔõcÛø‚ÖØqD%É»^É7Ž$'\ 73ÄÝCIÎ<ëñë÷`?N] ààúÉ6wÌyõÈÍ7@áëÖ>¾o ÃÕMÓᙣqû˜’ü8]98 xå-²N7Õý¬]ÔsÕ©ôÓêY4øœZð²*T€ÈëÈúÉ.Ÿ™öT`Òig{ o ‡8P£9€‰9f"y'ZV ìÊ:F™Õ»6 ‚ÜXr¬ g’å«~ºÒàÏ-,Ã'^r'5éôRR¿`þÅ©¯.t®WÁî¯_hGû$Á[GÈ€v€n|7ƒB†F9ô"»)¯RI;L]'y›P” ÅoŽÑ¾‘üW¾ï¤¶1j¿aejµ7o5>³Œûn,èä ×jz´ÜBóO¸Ú¹¢¥fÖ=­Ù;þ[,Ììƒ'²Á—«·q^(fx£¥nÐý³Úwü~ŽæÌh,£kG¿\½L)ÇÇæ0ˆv!ÐþA­?cqf‰³xá š™¬µ´ª£S'‘âzŽ¿›˜|Rõ’97´U_ݨ_ÝAíÆÀØÜaž2¸I:Wö:I:¯|ÂŽÑrQ¾‰ÞÙ‡§Þ¿XêÅ—™~Ï×Xóù÷§ó»Ëï xÇîgiëõ·­ªÜR(ªÃüNkZ>ÿ ¢‹Ýr‘Œgc©áâD‰q|úD<¾**ñŒDð£¿ñ<öâe¬'…«Ý ô¥K¦—yaM=ZÂÍAwšÅ‚'®¥Y °”!™Z¬…Y[áîdÔ£é®,çmáëÞûñí° !ôê#ÁYþ/õMFΉÒ]¦Ù#°>’Ås á ±wŽúQoœ!¢'‡}',jxçÍÖ[l'‹h«úv‚ˆô´Ù»¨Ã6nÅCS\e×±ÖÉ[>äeÓS9[ÛÐaÐM û2¶…E+ݪ{¸¹}¢Xk{ÛýßÛš[®n#ÃÙ: ^Õè“L„=ƒŠjWßgöXرûœΨÁÊ[øq¶vã#Îø‹‘yÈE_þvû}ÙÞPwÏ=dž[ð‚ËtpfáÛš'F“B´dç0wÚ¶§• Õ–íœð‡u/uK“mëòhjûïáûrÐL©šgI?sï³VçÈU˜ïhÐþke¶Ñݼ¨ý/Ê?>jvØP‡Š þ[ìÛçñ¿ÅG^†jAö^ÐÑ«¿Æb3Ôs°Lát )ˆ;r?í ´ù+mK¨¥N\™ÙÙêpô¹$ž4»‰‘„ƒZœ½"]DúÙ?¿–û®ÊI¤µ¬-:ÿ§^Ѥ¯Z`x´u—4œàGèÒ.¿Û)~%²ÃØâÞL1g£XXæ_r2Zdú?·sý÷¾{g»ÏùŒ“^óÉøÖêƒG6…>2]:ƒ;Ÿ™Ì½ñMé§òûœ•È æ—ÄPS%t»Îg qÿ_<>û¥ÿÝå>ŒÖs¿…¢/¡üÃ×i£7@Þ„…ºiaéi—Öe F­wÅý ÙXL×6ÆAs®dQ— m>…­t]OÓWâN‚b‡Ímz ÜX:\xöyˆ¶ž–Ž¿œí| Ñì{Œ#¸ðÑóP\\ Ãbü ð+?#ß0uÁ²Ó?x¢àSó™b-À‚Ó"X¦X¹*t‹kf¾{­\¦=¢Uû'ʹ_ãûŸª?¿Rêsºzk£*.bázXwª‹®Úy„Æfë+3™;Ãxo¦‹<Ìq9yâfŒÛÌÀôú‡—ß\Õ3GÍïFc¥xãfÎ+þ!mÚ =L•8Â@µŠrÈ’èüºÅ)ì©ô) WcRÌ¢ÅÛy‰CnÆrjÚPiñÏµ×Ø/FRAME àœk¢m7uøIcÂK<Úü ¯_Ë~Xø;~u~ßqÎt<Þ¦u»ï3µ—Ûnü,Ííeöžð÷›±I©Ú†fÕ`î)親hÀ½NÃù†4w~}—þÂÖ dÞK궉ñ›?»ÿŸÿòdçÿý_Ϩº¹qcC}Yva†2JØ#,¸Î–JÅŠ‹Ì—Ä_F‰¤fèû¾HT¥0‹•ÿ嵟N`ŽSäil{=ç÷N`)Ž Z´?K}ïÂYQå8¬¥mo^w$!&•“ÎG`ûay>’߬ÑAž¹©[`æþñÙ[ Œ?8¢&(ö&—ò´ÁèüÅKkÇË%Ö–/]¤¼+u¥­*'Å36 2ò‘ŒOñ´ ¦¬@|ë]kLYokr²`"?Œcó©ÏŸ?ˆ·¼Úÿ í”Jù‡Q(Æ~±­m¿î~襦àÿæ§»ïΓÿÞ;MÜUŸ½…T{´¤FÅk{ÂÂIQQì7n˜–ô î¦ #RN ¼ùYÀ rÁ•:6cÕñ½úÁ$È€gÄÍ=êÒLºlRwïehxèM°?ÞýP°™Ÿ);ŽìwOrĤÃTcà}ÜPÇR{À ¶2= S¿øz15GâG÷þiJ笲{8¡^Æ<îž"âğ NfÚ|Î@ÂIØŽGc·$r‡'3˜ ä#‚´sÄÒ\ýkW…Kã…º®Ã5 >>éÌö+AŽ$ª@°Îm»Ñó'½òÛrðéï=ô‰Zp)b[Ûk¬äÏùyäè+çMm‹ÌÃl®h—>>>oâ½K¨î(ø„nJfêþñø“ç•å£JFþßé¼²tbðø±Ê¨ø¸.">áz)r{<—ì•iJüýƒ×îýí/ÆQëÂI1Ôy’+j¯EàÁ­/dc,¨ XÚ$ã1Ï5 Fsd>:Õñ– f-+ÃP ìå0y8&.í[ ¼$’r/0×°v8ÐÕ8ÇÇÇìà{¡Dݾ˰%ÞdI⊆O>è¿mó8föîÙ*N2“¯ädLV_y¼8ýB°GÔLÓZuÒ¡DÙ+{•œÔÎåµ+y5U¨ Žö‚¢¼Bر2¢oŠ-¢šö{‰M”Ò†‰Ó´év @p šz'Lú*V…XíYäW¤!6µ¯ÒkžWyÇ’ÑðA8y‡ôö"Tb©kTÊ{:òã öÃ7ü¤m_R·:¦¯½°î-aϯ׾þ™õ £š_|Ñ“â†9X(X¡2 (P ß©/*¡‘™-¢yÎk¾Ñï©ÊOFRAME (œeä›S8æ~CÊHx©¼òaý7ÿ¸¸K’ÛúZC%£‹6:Aìש¦¸(¸ÏøÓÆônš)–ÏYÏæÞ ²§ÛíÛ}Ô·ÖÝý”[Qk |’uMÁÕö(+àÙqä>÷[’eWC=è$œ?bU°ÓM©ŽÈôp¨ÀIÀ‰0¤¨Q¿1Éšç ψ±¯>³ DtqÛÒë&ºW¼Óó6e\p¤Ñ†:•‘ª¬={#ŽÙƇ "ç(àñ”2ÎCrØKäÙgð·7hßãì…oG ¯dlÚãÖfî•;–,ü=kü˧HÆ€Yi²r²Ý[õiÿt }<š‰ÖVÅð\·2±šíE3Oäe(¤JK$ù R¡DƒÍ–¬piçׄ€Àl=4€X^°ÄwÊ.ìuJ:ÆjeÃTR,¿vý©–¡eå‹ú¸Ø<,®X¿ùop‰ììtZ‹éx/Ëm+=êí!YCU$wÔþÁPAË"rôYu$)ÊÔ,%üÐ;xÿ±‡»Îê498†¶å‹„cýqõDO›ldY/ËzhÆGhõ‹{xˆÀsõ‹æ$ @H>”ÇšXøpN¨ëÅ;³9ÿüý€bÈúQ´© ޽D­•ÿ‡4‘Õª >\¦WäP“4.Æà|ääåàIÖLR}!'?¸biíD÷ÇÃgéÍÊ§Ž¸=ßõÃdÙbÎ#>îÁ»ž?c4ŵFR¾Ý^ÙYÑ™˜l] ©+ëåÕ=è¨úèI ‚Ëb«|åHÂ_1Â%ÓmXþ9ðhýc~:ìN”J{=,4)áF˜)DŒ‚v"7.Î!Œò5wš_»¬ @E#Ø?oúídaƒT ~óx¾(œ Ý>÷ÿ\ûÊIð—èi˜“2€”‰œbµ„òÅp4²É‡|+ŠéöË«ü½pz>ó‰†78O¬:B ·ÜÆP˜EäÆöGôúcŒ7ÞØÜ–<+©Abæ˜7°/9µm3!óH‚Uéóû¦6®¶ŠYÖU1—K:@päOª2vw„•y·oÉ‘¢¢ûò:›«.³M4|ö”TIQTkÒEï²¢¿x5žÑC°l†ÑQ2œ^iê,Š]4T†…PkÒ¥¤PjÑÚQ©¦™ª—×´’°åñkêݵÀÅ‹¥£¼cTK]=4Õ¯9fÂ7[9NÝÂ;âwœNNï¯ ˆP¡(Ôêƒ5$ô]B:£ëÍqÕ‚sFRAME hœlä›S,r>ù2ÎdË5äÖN_€«ìø~¶|±ðu>Ü¿~þãâÐññëh|—ŒúÛÛÖ'ËŽh|˜Žýntõ‰çìVÛtšd”ÖL¤ÙVÒ]¶¥k¶:å`6‚¢õi–ƒh1޲ ×{žª‹2Öɧaœöª®ëŸ;ÿò"koÒ·‚¹~±Õаq¯×0î“×ScЏt¿ìjdG¬bßÐïÙ‹ ëðWFB¹Æ­ºÒÑŒ˜×H@1|¤ª $fÀjP:GæÈO.λg´üœ<Š P' ]Ö/‰ †PŽÆ~Ê$ð*@†ö€N=O`}Y€êýLW®;³$cUÕ’] `Ùlƒ¯ž`:‚î RpK­’Ý›ûfmn¾~e÷ë—=bž&^êȔǖpÞ«Àõõ×6È\£ÔÐ~–C$H˜6*ˉ^k~KʧôbQ }Ÿ×X ðJ®c/¿‰~O*õãÏ[ìlv[ZY=ö&þUvccb …fÄ ÏMQzéÑ”·?¿„?¤ú¸¸øåY×¥òãW†Óqqûsõ¤s¦€ÈŸu‹_®RL{_×D»Ç/Gh‘ïåZçèߣ¯"š–l‚M\ãòê]¯û{ûû*} –½þ]áÚiJõšÚ¶¥àBw¬êvÙ#[O­­š÷ìžvÊ_ Ù;r8{7 Ñs*ièƒ1Rè‚ìÆ2x|·±°Ì]ç³ì4[¦#‘oøèçzg8©Jׇ_âö”;¿•¸¥ÏÂ<Áwœù\Àžü Ûf¹œYs`ψ0­oéå…€`VÛQ¶!-˜ºÂ$+2ƒq´1«lߦ‡-ÂÏ¥ zõH¨ÒjÕ*ôÖô™‰¥uÉåb2ù­½Lç¾ÉŠóæe®-Ü«¿6*nyzZ3$R$ eö&˜Ü‹ÍªØ›ãta”ûº»æÅ‡ì`ïá;‘h[€NUü?±–š¨†^) áêf¹ü§à& -ÿ®«Yy °·Ûš·gó#ü$ô¦¿x¦y{\ä^¦Jl,ü”mVˆ#ðÅágû›¾§Ün!¸'ÑU¦Š{Ò­>EÿÓnZñQÇW¸ãÎ9‰0¥¦UÞÏ´í:@£­¡þ"p6W䔬“¥Âñ±|FåIGýO¡B€g†»´ã‹ÒÜâüIc­mÑ£v®µ‘E±FÍþôàßøAu8ØØÆE¶™kaj‚# !ˆÇÁ¡‡=Kõ& ã(FxQâËÄØ‰h¦ŠeÍEZÑ—‹`• % dùõ:s›_>9õ^&9?Éí®`»“ÆØY¡Ç\€;ïUæ&´­Ë&¥4?5§$ÝßÂP ¥9SP\æÿmCPM“QQjb$·( Õ¢TvÑ -S G ':¥¯¬àÕrøðoñi•JDZWuH…!FRAME xœlä›NÊ9¿$™g2Û5ä×.gà$Å{<à8~Ãàà6ľmú'aÃ<8=¬Ï¯[Cí¼vvàxL9š§vôày N²¥lÒ]É)4’o*í½+%¶«mbE˜×G| æu§Z¡j"²,÷œ çþ{Ç-ðyª¤ç»>|yw ‹Ó£‚‘¯þ²ÿälpñQóÊH<J“¤Ï[Á]z½<»)ñ®ü^¾ýMj“ćðjl@ÎÆÆHHÿÃ^ª‚#2î(ªoq’’Ý7 KNf”M kZ/ÿÞÿsòº­9ÎädUÒÔ‚¼¼V©gÀݵå2 J]SJ™öÿÿvµç§’„JÄÄZ¦¯a®@ìâ»0sÉë«T¶2ZµJFOL犫¾ ôíAνôq¸ï «±|s$êeD‚(zÈx®/ÙîÆ5ÃÜÃc`ørƒÛ’O,d{ù¡ZïbŠH‹÷ƒc`é —…Éᜠ-XË´ šµB¹™ µ¦9xo]©‰i«Ïå9¬MKXª5˜W!K\õ ð{Ö—¶°‚ iiúù+uæ±7í¿Ù¢g¾ZØy(ªt¶4‹ûÚsW™ˆ—\¿¶«Ë OÓÅ«[_.»Mze]BŸ¤`@By~¦4þƒ^3)÷Zñ,k.x‘µ>Zû•®†õ_cÿÆb¾qG}À­ʇ~/Wjb§øþž?• v¾N¼íB^@BJ­ TTÆT?ö Y"0ØãaàÏzF/Â{Æ}ônû6:æ².ŠDîdînÏ55Åj?ºsê©¢ÖX]®«wþ!$>&\UŽ|¯÷u“=5`³½ák9èéÈlç8ÙÀ»ÌÄ ±>=ä9¡=£ !ˆ{ ¶.Ôq€©·ÙŸŽ i XA K`E… ãÏ•ðýõ\©€}Y‘gæv™9æ‘o3c4Õtòº5 Ö/D…ŒhEWOÎfÓˆøþcùöe÷â»pjæò@/l©¹Éæ à|ÖCTîú>j§é:,BÔÄ>ŠÂ`j1)1¬zÌV*Ãa&¬Ç.Õ¯Ç5¥`¸`Ôïä0¬®Fè6<µg FRAME „œlä›Ç#ÁÌîyI–b2Ù‡“ÉÔåø1^χà8>ârœ!Á÷ |9ôÀì#W³°ïž¦u´>Àøàêß}“—Báïq—á9~Ä’’I$\)tºrZÚé í¶ÕmÛE°pcË­B–%e»î­=²…ÜßV×uì÷UÂ}WÚy7ßTûžÈ!Yt{¡6n ψ*Î]¼ø"C¦âPNœ†ŸˆXºå~Q ¸5³Œ ±îü$$íëbýù"no™n}„«üÀ]áÊ¢'{'Üí‘Ìa‹ªS›8îÉù†8j—Pš·Üaëo[¿pªƒ|€ã‰›ÖÎ;k)[„zcëâú.bOóвküB÷§@)Éõ ?¢kæ r‰Nœ7çãçúPNj*0¢Ä3[ÔJ.‹ït¢–0·•>m[Û©s™áxÏ“É}×íxÚæ»ìW­¬T+."bû› ŒÈ‚óÞr|ŒsšŠªé^䞢ÎÀ]ù=gbkõiñý݈õWŸ^;Ä8ØÆ§Û†&µ?bg¥å'KÙ¶!rQ×ïééwåbFÃìuÕ%r<žÀ/Ä ØâúäEâ¦4O%δ©Í8¿Ãõ„½÷þvŠLe‡>2²²XŸÙ“ö·›í×ëàH–¼î¥ãQ¬jñNöi"mµ³°>¡ºYš3üÍ£5‹²ÓRŸgŠ–*_âñ>zÿSžAÞ¨ –DlòÎàrpÅÑ(ãÒleÃÍ[˜°Ï¼ŽŠØ_c—<@ٞɀ Mžþs¶"Â3ëx8¢_•‰ýˆÛÔ.äe;V)mÏ_¢­ñͽ~ [^ï*ÈáÆãØÈ¢8I“ƒãHEþÙúFÂŽ%]Wi›Ì$Ù ¨òw†ÈÃD:ðÊMŸf!¨}|œ2|fä¡'÷m¶üƒÉ®v`þª €9‘ÏÆôyéu—Øó°lèm#Wæ%Ž?'Õ§aò$þçÔ®Ÿ’À÷ϯÀÜðÄ\”¸áV¨k`H~ú(€Aþ5—: ,`ÿmp¼×Œ©dB|Z²Øîù`{w»'„ÛÉÉÿ—nÀŒ†š,m;Ç>ß¹Üpøƒ{w?#øÆ!U6ÄåcÛ¥¯’ÏâcMã\tÍ õÍ“AŠRn˜ýQý·k¿+IÍþ*foÐ…$ú_cy+¢É£ÿ¢üf3GC½üîþgž²:5N‰ÑåÏEù„¡¸¥{Ü6J™ãÀŸâ7xT¯167\Ì@½þ¹ÛÁÒ§¯RL‹;˜1_,鮣o¤á;úãlD¾½Á¸Djî¬ Œ%óÖ*²¨ÁY¯´EÜ x¼±àù²²—ôJ}7×÷Å&Ž’fNy<ÖÑŸ€×d<<ºX… ­*®/aRúòIê$] /5Üœ]‘ïÇ~™IÐù¯h}“-¼ÍþX^¹¹ÂQ豆Kæ"Ws_,’ÕdÅõj€zø°4z°Ⱦšc¥ò<æbÉ“E«»ÝN»Š¥æP‘Ó °*¤Ôj̇9ÅsŠ FRAME ÌœläœgCÁÌîyKlÄ–Ù‡“ÑÔåø1^Ïžžƒƒï¡Èp}“ÏËŽÃßGaß=Mçhpy׬Ÿ_¢òè>Ïrhlúý Ê2÷vÛpo¶Px•üŸªŸª«y§>}›TX)g[aUT–Öy‡}Ç}×=ÇÓmG »7ÃîKÇf¦òÿßn]x'f‰:L…,\W mªgtÈ›{Çaýy4sV7äªþµ¸#ø3k¤q㥉A1ÛÓ½YWr4Ç¢lx€ÖÅ’†úìê=êù8öö¡ªHB@âF^öå‡×ë‚ܨþRæ‹gJ}È£evcú:ºÍ…ª‚v=ž^¡æö-0Ì5Í©:!BÇSƒ2ïïï„_¿’J»®3¾OLq±°ß¿^Pµì° !¦| –·ô,ý±+OAìf·N=DO˜ gé41R¹Š»Ø¼—<#È©2Ñ¡«[ˆ¼µl;Ò3J/2?j¿p —o_²å7¿Fý’«ÔjN\½}=r¦{1Oë)Ø.Óöé>š¾ÿ,ÈSb¼ Q÷ÊJî¯Ø/t XV“U€˜,Œ€çgõû%ñìcè4 ÑaÕVðŽlÁ àâp3c³’‡´kéO®êÓ.t™Ì–µø¸k[Îö›Îcó·ø×ßÛѬlϱì6¥œEçû}2ÖæîX3Û&Ž@Ë?V·ýuÓÒY|°üǯ/6¼‚ྨ³;ߺ$`šh¸ê@ö—ƒØóÙ9ÔG~iÉHÃÀl¼Ã¯ŠvH’·ÿš¨÷¯0fbMÃ?€âŒÉwû ãöÝ dswÅ7*øýš%LÑÊ"Úòä‘E4 ú%tx´÷¢ÓèÊ©8Ì¿Õö4‹Ôï™›žPÚKZ$ýÜ“¡Xì…¸Ü÷wÅË›õiÄ’¡ŸR"løïçšÞÇñÕîn»ÉW‚އ’ù;ƒ=;²8¼Ç©¶.ÙOz½óÿ3µW¡Ž£KyÓ¤ø«ùžûšÆn­d3_ “Z^Å_)pìF*7±ŒüôlEƒã²ç.^±járŠ‹¦YKJ¢qC‰A± ËT°Šä|?~}ûf™¹LŽÍŠiôZÈÚ ]]C‹BÍÕDë¯[Peòh¢ênZ1±–«¤í ¢š9žQ ÿù¯ÍAµkRíMãÐ4'ð•‰Ù:'ÛqìÇ&¢šµºÔÅ µ#*kCC  ×Ê-,ë Õ'2cÂ?AãlGä+³-(‰Z¬7¨ÚAÚ q_!@FRAME ØœlîszÏ)mj6Y‡›ÕÓ§Ðø¯g~Cƒ·°àû'­prgG—Ãù9Ý¡õÙÎO°NÎ]àpý‡Á½‚ áûm¶Á»ÀÎüDxý×ÞT¾«í½ÇÞñ¿Íë=–ØY—ÕugÓu·QlFÿy—ß}T|¶|øß].6ýà¿t>çÞ ›U JÕnƒ&.ü{Ëɹ‚sD¿š¤6¯ ¢spcíè®Ú½ýÐâ!ŒööÅ`Õ=gy#ˆY”Ã߈üöŸªƒQH¨®ûVÖj/› ×™éiõ7é—IŠã“ÎAx9±±á6L¸Øh¸}¹l`Ú ‡—’lªC[Ô%›"›WjŒ{¶üÃÛÁ°U7ëõ8&o³YMrÏV†]ÛMaS«ÞñJy$„^£/k×ÓmªÝ¤¿•üZKg&°Q†óûx2fËE…÷Öˆl#¬Øë‰?8ôœäKŠñ¶8åö8Ì]hlAηz»±lfýæW®©z;ÏàØê¢ÏO]Uh nÏÚü×"Ð$ð,®riPy„íë}¶¥‚µ¼€'£±ð_Ø«ïŒpÒ7ÉJÝXåN» â©6ƒ…š©£9P¦ŸsÛïu ¤•%ò3Îhõl‰þ¹ó˜?žä‘ Ÿ²ý£À“××ÜCµu¢!5 ¿|×¥–ï"aÈÁÿ(y2,ÑËiLúKœê—èüÞ݆ÿ'`m^Üœ–™N¬·ŒD;x h9,né³dö=þ¬ªG§¹ ûEÏÇ@Å3šçþg2Ìﳕ1»õÿæ|ÉÐdYÁåºÜûƒqäݧ¿Üõú¤0t9ý{s#¦×FûlS/7l§Õ›'3fý[ y®Ë]ʼng»ôšÄMbÐ3AQ†ƒ±’¼ØƒZBÅQ–”<£>°bð*– AÓ ¸û- £±íÐŒMýûÉ4Uk]|·fþ™9§ÖPj4½h ü àá°Û˜ª´YÊðGÕ]º¼Â/à ¨‡Z5G·gåÔÜ¥ñɹQ>ÉúҦ²EÜO£cF¹þOüÆskª«»=Ë,=7R›}Š­J¦ JŠZ7ß)4í"ÆÄAh††† ”õÞ3syçÑ?eö"Qׂ>DÒ=½kä² W)ûW©Þ«ÊèU`Í›5ÅMÄFRAME XkÂszgƒÊ[ZêVžWN_KÕŒW<‡ƒ°àû'­p6`kçå¾§WŠlœäûÞ\¸¼ % ~)mI>•M¤ª¶ÕRVÛw}²[)WÎWT}‡Û}Tû·Ötäœ}wÞ|$b'«÷…ò_ö~+ÚZxo±ì9…‡UÊgN%ñg<ôäÈ YùÂó&ÂÒݺ“µfÏ-œ´"P¤íIן{ÿvä2ÆÝplp€ 84c¦–¤ý’`ÍOÄÖÉB‡C3µj -'æã6¥µÉbã.˜ªPN®‡(ýxScØîu Ò D)Ÿ–þŸiú«Ëv啹¬' bu–Ÿ$/2=­|•‘7É糫ËvKÁ$¬}°àù»“÷uøŸ*ýõëqž#àj¼|;ã«(Îf4»¯­‹s—0ÙáÏÒà\ Ñ:âö™¤Ú”¼KŽ—ï~VåÐëÏâG2ؽZ’×Tðlv¯g`D…s"^ýÊl`ö3AÂX½d´Òç¦U¾Ä¶*gSY÷._Ítbîz†ÂÇ {ØÖ¦µæe´Û´'0«uúY› ~gšs[öòô„¹Q­üÒlùÖÖR¾ h7:%JG?ãØÔI8©¨ÁÁóÀÍÖÚH)YŒ´®ÀÙÞ#6~kªGwÒHÏ/óîmH¹«§8#ÒÖ=ùßÝhÎOü¼„›zÎIß®z=ÎÑ~+è§ÙÚÇh´¦-WŽ]è"ÃÖЮNMYЭÐâÎ?›Cx{[­û+KÓçíÂÀÏÀÔÿÑ8äeûÿ³¿RÎÍ]¨§°n ö ÎOU] t¾{©þÜé±ì¯ ñ”0˜™\)g{Ð58#^·SÓƒ|íf¬B‰±®o Ÿ7z*gb¼Í\h5HÅ––RÒõ ~Ñþ‰,hÁ¾QƒDkWß©ÒMÍ(eÐ¥ÊÌà™Ÿ³Ó;Ì9nÀÍ5»àC”`æ…§u¸—²c^ܹºªƒ¤%ŒS­šU§Â\·ðýsðyÍt:5ÒÍO'sæ!=ýºlèèÐ_7ÓTè£JÚj¥ò“I`|š–8[²œX®7È®cÍXâ™Ëøä;÷ÿîÈMU*ß@ëdݩآbpÜ5FRAME @Ÿ{N§C¡Ìù™,ó–kîtåø¯!ÁÞdõ®Ì |ü²&ä ³œŸ`àí.Üu$CBþÛmû ë§\©y‚¿Ëë£Í¾Ëï¼ò"û!O¶}$vªCï?Ò½œ^ÙÒCém4ÎHI±”ƒ¦fwaŠ‘÷Æë±å·:õ¾ÑÙÝJâÖ5`1úM†H¦lŠ'$̶j±dÑ¢¢Ák‡\-=,B XµH#rAÖ‘dsŠÖËíÒhP=Ã!¶ºw íìÄXøì^:yÀU3 dË/À†}Ë)GøAIÕ~s@²T»-†ü£Ó¬³³¾dè<÷°¢ªÑ£çíP°¶¹oBü"j4uÝÃQè{û¼£o³Áð^ßÀ™ëg4©Ê(VõEð·ìÑDŽÉM«¬ÑHL¯cZÏa€9§M?™,Ã[“hÆàOÃf$sPM†€H< ÊÙÙ¸1ùþáóµ-ÏWD¾‘õ+)i+u3ÀœÏž'ÄÎsÑÿÏñóah±_«¿L?Y‰],ùÏì÷m¢’¼Ë„ÄÝø¥áÄo5.©fófh¬¼ãÚ¶ø±IË–….Þ ”çOöfÎf=Ý9P¬U§‰ßÌ?ˆgŸƒ Ò[ØvûPøáüüºßä|ÞL±U×^OÛjë8]\QZÂ8°Ï6Rñã:Â{Îõqê0äòè~;FUðË7œ@áÈ Ì;Ç´Ý¢ Fa­EÕ[«ì+ ×M-NR´‘VØvbz«™ÀõÀ¦Ðò+&~ʬò;4ŸšâåW‚  òak0÷7Évü*+îÄ^Õ\{Õ;[Šˆç=ÜMîi7ËØ)éa@éXÀÔò‰=KNÖúìitÚ]wKƪ^uf^¸Òâ‚É?‡¤?ˆsÃÞ0b +Îø ]<´íå¤ñS·x¯S¶þ²®—MK©ß4O ?Š]ü¥«[wy«YÉÆ'a9Ñ%ýhØ6.½#}“MiÍï‚N ¨ätÝÀ\@«ˆ*JP«R*VH¯ñµ+nìb¯Q:Šùz‹:+Ùzl´¬š¿ƒW×>vˆÙ¨ Ã"ºÞ˜¹^)IV¯ÏäFRAME ¼¡{º‡3æd³ÎY¯½Ó—à"ÃØmðžµÀÙ¯Ÿ–DÞŽ$ç'Ø8;L¡Á÷£QÐw¶À%åtª‚ä½}_vÚôÜ}ÒÕÿ6P†¿AÝÿ ~ßÞ`CÉÿ×ðjÖ}â(²û \ãÈ`)K2OEY€ûÖgðÚ.ãf@ÒQÍ`ÅÑ0úèúNÃj EnpÁï›PpûGÚ×ÑxžË’¯A­„º,E½¹hž-ÏJ PÑéCùƒï®ÙL×ã?ПîyÜæá<¢"Ÿ¥äE›è7¡°ôh |K¬ßn•¸ÎÜ H\ÿŠ¿˜B÷“ê×s¨—{–,3 ¥)9ß'­9H:ã;`w‹§s²”á›üÁrö?ç6ð) ½© \Ñ\%íE?E$gLô©žåûV¨”ÆÒº†úx¨{̾˜(/j4ßp^¦Ú£MKÝÎÂ…2,í3u-gòv§ú# =ÜåIüó™ÄDÞ7õ(Ž“ø¼å>oEïˆøl(IuÎêÞ€5ÇÜÛ^ˆu*z²CFÍøøÊdÀ¨í¿Ï‹´žÖµä‰¹*ÝN~K4'>Ú÷Wøs| µl½Ñ'½MÍt°mõ®@SwWI©Í¢J¤&Özfgí ëžîík}êù~Š @6s¿À ©<Ã'?[yó{]µæÐÓ˜Ý÷&¯c—Ó%Qiˆ&\€òFöfM/(‚¸Q°ÆÜõÁ~-+ôдÀ,ɬœhWë'\äÜ·AMÕí%ëJX­Í>[Û}c?»Ü¡žv–¬3ÊŽâÙÏOÍý}¤¢f"*fܰgáâåeÆçF€ƒcaÝèO ÓüsÂrjâP°î>!ªä.o¤Œ~#ÜI©rЇ¸“{ŠàÜQÔó%ýü¤S‰’) Ÿc ¢$¨U™Cµœ<*H£ n!A;ìùPK@FRAME ,£}ÁÐæ}rÏ9f¿N_€“_ŒÁÀÙ¯Ÿ–DØ\â}ƒƒ¾oGÜr"²°ó€BEÞŠý"¤ÿOÄYòÆ÷#ÒkéÞ7 Å©ì„m[¾g¨_=ñRÛ€C´USíTòN Ö‘ M"p©Þd­n§‹½±‚mCC‘UÕDƒ½¢Œ ³U£F”fmený÷'xàø.{à¶$æÌWW2íµ~äÆÑÞþœßÛ]®néi©}Ρ…Î=¬½ÆaQkÖiœ¾õ¤}. åa§Åó¢zÒ †×!»´50¯ŒPøÚk]Ñ·M<Ä¢¿úûíêFë_j",Mæ®h€;WµÇRHÒ‘ÿ.NGâø·eOäiÚC)Üêúëù¹®&„@­÷î?ÎŃæøÑ½ïì ‘pÙg5B-´Ùƒ˜}©MÀ^ÆmdlŽ]¼c¿ÚÇœ‘i:É´tî?Õ®öR_ë=äwO‚#.öÓp‚‡¡º3ZëVwuB—AHs5£Ú"ÑHbhgy»ÎåÖ â²U™¬Ñž6±ë‚^«?^roííMÌÛÚ ˆ“$BN Ñ‘âXí­¸×+XÈÈÞÙ-9È% ÍUQ³•1¢âSrÁpÞ¹Ç{Gâèlƒ—9žÅË;häÊ•„ʃ ¬ 2ª€³&[È[ª2ÚµÝìE,gÎÖ~¡ |²\÷Z£Æ?'ÀØÏXY"IÄx úFéÊerÜ Ž]—n Ø@j±FRAME ¤¨}/C™õË=kð rüÜÎp=†¾~Y|œO°éÞqȱ”Æà¨uµK2E.l?þ=|ÇcTZž{s(Aã9(—ÝŒ¬3ƒÔ›2a™s áLµIo{é)¦³]ØÇ8 GäC/øŠx…;2ˆ~.þPݵӠ«òq{)ëx ”gaÃVçU>ŒŽù.@ l·Õ$üÃ+>OK—3tìŽNÑ&HjôºZpÿ0ÛÊBæM¡c9×ô,úS ’x»\^ˆƒ d8e´A´'ýQ¡:{ãw2òAwuX6FG,K N8÷Š{™%_9™‘¥0¦å7ÌvѰk™<Æí¹£ˆ~ByêÆ™u»%Å|1/ôù\} S^̪t‹G‘wê©&ãKl¥Ûœ¢Íç›RYäk¯Ý’ÌŽ@]åïçV–^!ae­Æþ üÀŽÎZw=ôsž¬Œlšmá+Á#w‚)v»âØ{¶8oàŽè1”»:¦´ÎÖ,“³Éß=›—^PQJ6(zRxå34¹™’Jx½qÚˆ¢úFRAME (®~ޝO±gÁ5ø ?T> óåóØm?~K!#ªªªªøkPFRAME ¯~£©ø>wà¢í×—°yç±cª«áKFRAME (®eütðs=Ÿ‚k›Ï<ß«Nœ?‚táçÒMò1_Rlõ _Ÿ£Â¾FRAME ­~…îô~ªûišøñ±_R{ôýøbFRAME @­{MGà,—Ñ/‹ãŸ›Í·ãÍ¿>ÂuaóCì'Xžy €A$Ÿ·j‚•Ê8A|æÁlþÂÆ8ÔVd³Ã™FRAME 8­}31?Ûï|‚CŸ_›m¼Ûè¯ `ª!௠`ª!º¨UUé’ª OXùM™G3ÃFRAME ,­~)/ÜO‚kðJzø_6ó|óy¼üàÄÍxƒ5áʪªªÿù¬$ÓœFRAME ­~O±ðŸðÛã8˪ªøkPFRAME ­~ ÏÁ[ÀFRAME ­|¯Àqð¼ß‚šß±ðxFRAME ­~ÀI𼟂›ÍàøëÀÐFRAME ­~ ÏÁ[ÀFRAME ¿~ ÏÁ[ÀFRAME ¿~ ÏÁ[ÀFRAME ¿~ ÏÁ[ÀFRAME p¿~¯…🂙C—¶ÒS ôt(WïEf‘œê?k!^(š"VBþ›Á°»ç•ü=\Tòr«5¹ÃUxîß6¢É<ºš®ÌÕ•9Xa]NH´< ð¢ç·sÝèßl@bAÁµŒÏ~öÝ_Uǯ§§6ƒe0“‡óì´Ä3o9FRAME €¿~S©ð¾ðPvï0ë ºöÕè“K¡Õ¬a‡/«- ¥¸B¼Ô4và¢úñHè^ßÈÖ1ã?C¿¡ÛM é󽽘ýì-Ñ$,ê^å7Cgš‚šL¨,“Zwu“¹]_ôº¾1öëé3Bñ_7»á@ZÍUJ^ñ úr=sýgd ø:zý*s—­ô}8-|X7“ÐÜä*}«ÄÂ]û¤$ÐGqœû³æÒ¤,DB}›‰3þ­Ÿ·\r[OÔ5?"Ǧ¢Š —ÃiöV ð2UÁ†íG¸Õ≖ê;Ç7ÀÿŸÌêNñ|±w¬<þ÷e¿qÁõ¦Ðu¶¥Éw*îcUÇæn€öxêcާ˜Û1Íj< =îã2®ëYÝšµé¸ÒrרùxQ¬ÝX¶ç:6Ž?gÃç6:IçÎcšèw†æí%WÍSùo:$öâ·ÛIï_nôüá<ÀÚ@ÝÆ ü¾1à¾GÍÞ " ÜÕR;w¯á¥$T¥ùîdç` yÎÀVÿ—ñ…ªÎˆÉò³!·‘.9¯¾r~Jñ…c%0ÓƒŸT­{yïiYÿCˆÎ/*¹ûÝ÷ÊöÌ~{³ivŽÍžp&ûT–Í Ùï *“w)æE.œö¬ÞÑ׈Û6FŒöù'ŒÕÕ]™°ô;ªõÐY¯Ê²8üªœsWŒÑð'3+ö(>xyLKDe¬¥eç•L–åÌ^x 0>Î[pFRAME È¿~©ÛÑF‚k·Ž>câ%&‹¥ÝK®&Ò¥„_•žHˆ#lv"bMÎn‡â@]$³œ!9txšPü8•Œ_~uCº)¾–ª9„|ñƒ ÿÚªGΤ`Ä×%˜÷ñWÙ,ÌZ•ÿE .€9šŠÛY#êªmúI%“Ç|‹&\sÍÑ›'8&D¸À@ ß òç’XÙž_ÒÙ&3üçÄøO˜Q" 0L K¨ë0<ïL‰$O•ðé)»§ŸÆ %¯{¶­O?'ÉâãÊ¡Òâ—®V†Ã¯'JñˆÅÏO½h¦Xÿ#‹®è®õ½qq¸µ¿ð÷ã™(ÆÔ»¿˜¦ý WoÞw£wYgç»°˜:”Šço6aÅ+éÅvéé£y¾<°•Óöý)ÛèL%“å¹ëúŽôC D2!“uìj®aa8œ=ã\t]ð„ñÄÃøŒjÏç~„¬ùZ«þŽTŽwfÄqöˆýÙ(@ױŽGUÐ dßÔ{C[dzc¸=uœì¯g:>ƯڇI— fW2ê°K¯^uü¬ªe 4€G?ƒpèùDZtÿ½¯&xWÜuáƒÊFRAME ¿~·oF=~ Îþ1;‰Œñ»¾kú,•”}QÖ¯XFï äÇym®öù˜CžnË” ÀÈû+&8¢~!1ø\Mc·Ó½×<|ª]ø¢òļkì,z€ÖTŽî y!ƒºå¬ñ’cÔ¿–d•¶>Oÿ_%7z.ì÷ùÁ·ûfÛ|O´£»úAéĸ%[çù”ö lÉc‚&ÀÒhƒÆ² DøÜPKÞ|°'Bd­?’‹É;@s‡ârìbNÙ{]{6Þ1²ßkmÈX¾›|%C .brQåÿvCf¢é¥{·ù,—¸Ë®vã^wž‹—Ðï}„9L rgÄæ ȼ oì/°;€îš[õ'`tös¾{Èà0ëé½²¡Æo­Ñ¸Âj¥UãçY,{ü*±C8R!åq Óð¨]|7<¿ B…ƈS#—ÿÙöŒ1‡GˆEY  (¿çûq˜¶8‰Gú©p(‹²^òJJ´ªQ¼t 넪ټO' à ?X]Ÿh!Ö´ÂÜ"†œkzÿ‡óÃÂA…¤pÿ…cC9Ü0Ã^Ï?ãüxÔ&Óx_R,Mp8Uµ{¾çÕˆ„®¦xŠ4– Ú†tãóà ÑD”Þ…N€«ó®Í2ñ˜Î ªî‚°¹QD@FRAME P¿~Ó©Û·£Œ?Ç7›õ÷¸‘ajr‘.•ÖÙõZ¥pWAž  ,Q<¼®Ø®;˜A0ܯâEÞ`&|¶Bt?dÏÏÍ3XŽ= =¬ñ-²¬í«Ž‡9Ò8‘Kï¥S—d% ¨táârFoI¿—í›ÙÌXvãYâÆdÑÕG”ÖµÙâè#È-Fùò$˜T<Î6k9•Þ)Ûé*¨Žƒ½VŒupö5U;Êž•eTáEÍëÔšë‡6±#¾Þ¹#è³E[wáé&F™ùïfW<²m§é§ë·´¥:5í 7×.•ÿ†<ͬóÉq;j#n½¨fÙ»j÷·æì5ä<ìÃFRAME H¿~Ó©Û·£~ ®~?_{ÜH«jñ£jŽ—ÉoŸ}/#8+ Ï Ù¸Yr¥â®žµ&mÐC=Áu º !òõ¦á`ƒô×ã£T%!s!ºWDT^ö[l°žÎ½\QûõP˜)xw²ˆ‚Ð8"K{)DC": a;¿D&.Bt; ^«bVÑç°Òÿ£.¨EAkßôX+9®ÔSäù䀅ÊÀ½ S3"\ëïüL'îñ?·&™ Eý_ š­×—ÁY½1º®\½#ÍLõ1?8FóD#Žôê¬s9Æ?âcŽoP@ü2d|{Ñ3TmÌ ·nò´²ÛqþÿUOñTKqýmç÷™o!pxÅçŸ?%­»»àçGlZëØµ„‚Å㪰öXDqìð]ìÏÜ“rØž®³‘Û@¿dþÎÐwåü„„@& SôX O”öß½¡rÇëïÎ6|ùÍ”›ŸUì‚c6z©…šÏ6Us"Wt¬Èùº£U|ô,—*»qssG@žE*é͆αiOg6£n›}Œ~ÊÉéw½öÚ(LÅñËLBYÞ:Û¼$¾þd‡)Š_óák½!„n]6_ÝíƒÂ1ë1}‘p?“FàZ9ìɘrÁÞ.µ£;îÛxïåßC¼€÷s²vbà3°íͱ[î«—ìý ‚…1œ©MI—ò”ùxŽ—¨ïb­íÚ[Vßþó™Õr¢®UÕf3Ôž£4¨*çRºÐU~ù¢æwªÙÕWc³ººþk§E¬ÜY¯4.6íçGï³\Øú]VìØ¢:z˜¢žÍVÍÜwdso¸ºåÚØrüY_¨óÊB²NËeV­÷)ëãIåõÔÅïÛçÃ(¦;î¢èb¶j#c3«j×Þßz²€pK|×̪ÎPGº²5œÎ¡óeT欫*üŠ®ªñ«gÙ‘Î`k”×bóîDeÚîûN_KÓa¨Û©y^4ñ6ÓÖ¾eeY\—~t–sÍZ“í·­ýßHõç][~öÙãŒÂÒÚ~9«Oß6Ð6ž±æ}K¢eÜÄ- ØóAñFRAME @¿~“©Ôíð±èÆ¿±O ìßÔ<íéÍá²9»+QÊŸUJµÏ’ñŽøLÀ¬ˆ˜\Ä`„1) I°Ã¹’Cß^QCÒ gÉÌ‚Ñ@=H[ì^lTË4|¦r}Ag²t"ONJN4éCéFôt œhGGňYñ"  œ)j·Dû@o¥îm• — êpç6z·J%+¦pˆãe·N?÷}‘!tzúéÖÎ"‚¶BYJ1ÀâÞˆƒÒ‰ûàHÕ×Ïñ¡Þo:ͳO[¦gvóBaWýòœ¡Äôއ»¿ ¤Ž‡ÛFóòæ °7vŸ’¿ä© —©LG_“¢땟r@‡òDz«³0‡Ý)®,Ý«ž÷ÏÒÀ¦"Â;ˆÜô{oäîœÀüI€by ò«TÈY¿jM?å\;ŒI£y¼t¶9_âÅŠš=ç=eùÊÊÈ4=E€ VzëÑÕãþ‘‚$1#ÌìÙDílÜsQ¿r8³ã[9ÿô=L÷È´g5äÍ Í ´3›¸ûcGXjHM]Ô†oÆBsß#³†×“—*¶Ž}@íI·ÃæZ«ÑÔš[Ü¥$ \ŽÍnßýÅ:†ú6•¼”åF‡Ç»¹ú}Ý¿sáØà¬ÐNî¼Æ@Æ"ôÚ÷=}£s¾ sÇi}þáawX'ÿ^÷s¼Ê¿‰¼¼ø»É.С“rç×.1uÜ@å¹âtœèÛ»™¾ñ‚#ˆ0}ÈYR§}GC˜÷¨åó"ˆDAÒ¤íµ.#ýÞü7¼A |ïóáñÌhÔoÏæÍW-¹By¹‡#YâÇóQýµ6¿jØr¡¼W°i–iñ@;.©‚Ÿ3—*VJ³mÚ©~¼ZNñö© VªV.z©¥O75^ª°yê½Ï@kÎbUuIuSKçŠ>•\Ï|Ê¢ªcXj¬o±›¨º©•\í]]Ú=Åž>TÇå]S޲Éöt×~ýÍ™µRhðøK˜ñ³ûÚÞ™î€ÍÐÖú]|Y«¢vgºM~r÷ó tgé–(ݯ—IRz6z6Î;yš˜ñŸ~MoTzòr´™Îݼ։àÈï¡»ëf5j0îÙã»GÃÃj€ì÷z6G‘>lŠ‚…c°vj(ÑÌp¹Õ š8ÕN‚æ9UTÆê-eYÖ´YNÕS ®Ps¾|¨¨ûå^’oª*˪ÜueÅ®cº°ÝûtÜZ]*#÷š€×ϼñiž%¬‹ÝGÍÓfU/,Ý;;Þ#^òݶ«»–O£úòµÉÙý“å«øåŽ¾tׇk~ûHf¶Îb µõ·ožç;Í5šÝÚÌWi?6|½TkÜÔò1îMÛ¶$×3ZX—OŠ#3 ãßÕ 5º0AÁ·àBptOÕ¾" h8m€FRAME (³}7›ÔêvøXÇSü]sËúÓÃ~Aïê>6ôÎa#àòo0hú™õŠKß%ò%áT!‘ À‡-¤²l|a€‡¥J:™_/mòg«Ê%¤b_ˆ´a‡ò6€Åm)%è(S\—\e£¬ËeܱIeq–í ˆò({mÃÄ?Þòr!înao½øá í‚p—‹%âQo°G5šˆŠE^JÐcXRæè•ïõ,jó6ÀÛ(qÕ± õØø=ù,ÁBÿÌ£]Ó¿†äú‘Ø/&Æn箨»}Ö~{ðªÅ´ánë@ƒ.„ m:®­ÂOîöâ'ÇAz´`u0ÀbÖr_<ó+µw’¯.¬Öì`Vë–lÉ=ý`ÒákÓi%®¨¿w×âkÃÌàÝܹ¢}銸߄æÊú?K¡Çf¸hîíwûòöÅp|C4ÎU£btú™§"±þÌ6¹ðÉÎﮢ4(ŒZL¸þÞæv÷sýg‡O„<^Ûx‹óÈ_vTáÎ8Bd^—8Oä¶É ñ•:D€¼ˆFŽbú9< }Æ×(7òš Á«åy2ªUeR·dWDî~/oÉòKr7+)ûÅlÍÓK¥0þ%-Ñ4.>o@Á|þlôÊ]njs1Û£(Ô Üð„Ü¡¡~o{ÔC¬öN€µþ3¨”dJæ‘—?%'·ûø²ÝHìvªðQú«þ'd`šH4gá½_c`I%^ÚB$‚Ô ui1GKì3|$gÌZQnÍ÷,W öws¹kŒ„V¤EJ€.4M·g󵤺ø¥ÃŒÌNésa~Ðg†g32ᙕε¸Û[Wçõvœ6«+Ϋ8zçáêû­“°t}‰4uÕFÅ#UœÜ Ê ?Ì•Ø~d{$cæeMSœÎóñO‹ø>@È(€% XnMÑ…M'lsa;µlˆkUV•)î¾7ÅÓZ5Ž^ggeûë‹S Úa0‰³³„à1qx h+ɨ—-ùAÑb¼KKË/ËV]¾}¬Z½ FRAME ,¬|‡7©Ôíè³Ř×Ðü ا°¡_Ö^›ô÷óA·§O¸éacàÓìºXCÂM©O¾«ª¥Yõî"ùŽ”ùÉL„8Ê Š†€‡xd›‰uÃ¥8ÐÜÍMÏ7ývhï‚Ê[táÇF1j],Éå,’ø†œ(2hh-|1ÙO5G® ¾û=ˆq|Äzkä/Øn(÷]i}âY„ ý® ¡0×jU>ÇŽ„‚]žGEwf1ñ§ª®ÿbô2ŸÓ„Û¯æG-N~˜ŠÂoñMz¬®Šâüµä7t¹8Û^¹Þ~Kµø£Dºké+¢6Áb(hÂR–%o«©Hè8Ÿ‹ÿÙŒ¯¾ïàЪƒÌY6è‡$C—*Ä”^( kU„h3`0¿»Qn°K‰g1á_. )Òæ×…ôcikë_"±†r]cð!4fiÿóÄÃX¿¥É©NFYµ8í‚Ì=äó‡Kz0ìUÄœÙÉìaÔ¾È3E5Ž€| J_X.DŒÌþÏŽÔ²ÚÁχ<Î9n±ÿ™à—=„ıńs·ÀOøqÚCÕ:öÝ’“­tš?'EëßÓŸzÓÿºu…Ø—:ˆfbg^½ZtóSçñæbLs’ÐÁ™¦˜G³\òvZ^þø£Øþ>Îö®[Óã?Ë1ç]¹> x®-‰ºÍ×#•=ÜH¢aøžŽSüJ´´ÿþâ]Ÿ,}4°ÊÖ¦+Þh3¢%}†{9:‘T¥èïò}þÊÇEyw¾µ^“ÎZéï)]ž=â³?+ßÿ¶ZTò§ö?F{ÇИáþˆ°ñ³øp‡hçbMxu(•·`‹ñ³Ô‘{Ž¥¥[ŸÜÎUuXå°œnþ½HæMŠÉ•׉ΊÚC:¦U ,wsæ¾›g6cE6B¤¶2#("¢"á”m8l§ËŠ«Gª_f_/;È:•‹¯•ωP®êtÄKb`”Æ‘´ rYéCÐÐ…dR«çÆ_m¨ô²loCîã¬>:«ÆBhj> Ø¢æŽv<ÇÙ‰ð'Þ'öPWÊuߣ}ÿëÓ|F¾}ßj_¦;ô¥*¼!û ì2²â?6à¤xñ¤Kâ!úˆtDbÉL¿&_ÛÞ~ú=C»×²MxÌÓ¢«¤(Vrä¥]._ì"­]v®ð#Ìd›£?­êÆÁ©÷Tì•´Ø÷0]µPµÊø±Q¹üæÖÿ—gåÏ—é™ÔëŸ6®¥]°?é bÅøÇìhÖÁ}Mα–(¿ b.|A NFAR]¯‹ t‘Έf&,A˜¢X‰×¢•»Oµð:iŽ…ô 娔NÄΖ¡§ÓLÒ-lŒ7'>cMÞÓÀW[jRRSÜ}þ‚­;“µc“ùRŸfnð¦º-ÏÙ-X'‘Só¶ Ýy抖€Aô°M-Þ{˜áµ/ÒÑÁø¾ÏV0vŸ¸fÝ8bÀQ¦ŸëCÿ~ó§oú©)¡“—}XkD~y¢R´/E߀…œ4‰ÉÏ(a<£“œ¸IÃÃöbÉÌÅYÈÅ·$拉r:Jêº#túZtú.ª»R· &©|$¾B:yû«äÑÌEÚö¯z€Ó&pêu@ÕÜɡˋlQ@‹­í–òðÀÕ*v2ÿ£þPº…Û²Ë7.Ýž¥ó »F·«9h÷‰0fž]:´ ·`ô´õ³€lö ñpÙœÁ—V©®"Ìδèà|òLÏØöùZrÎ6ø#,ß&PùK8Fr~Æ…¦Då3¡äòùõ‘äán '·€ˆý~|Ö)(:—æçý¥*‚d^‚ÞCŸ‹ƒ@A¾ -jh‹Ô’«¹f⸉ïÜ7N8µÅ³yÁ¿øf‰'p àçlÎÔ’šÛ×Ôë˜ÊɱۗéÚ?“y°æN½t¾·Ò^]T×ùéRàÌÕqLýŒü—íã¦;ré_}Ž‚«±ËñÇ›Ué)ÊR4ÐT½U(}ãe•¨?þ®üLÍ—ÏF¤í?ÏJÏp ö‡3÷ºøl£9;rþPÇÉ<œ„Ë¿úÌžWܹrîŽÀ\ùòT.gzöˆJhÍÜ›a˜?›½6´€)]öQ™!™^ð‹¨ÝÓ N< Ê•9ª¶Ð)Ïsóz„dÓ‘Á¬2@;úÜòü\»sñËŒðÏÿlX]Ç_øfh Gû Fжýü%ÿäø(⤳s^?Z¶V*Òsÿ¿\›Ó)›ô&æt,Ñä4×8Lj·ýÉBxC‡WŠù§¢Ï§6:-–1iÈþ:†+Q]²xOÀ2K˜6L0£Ëy>Æ‚ ö h6¸3GÕðÄ¹Š æ¨·*Ýü¹7Éÿ#äÌS"Ü™( Á\f£!ØÖ¾ÐK-k`D8;S»5}uË1¥ÒöOɦ^ùÿ̧F>„þín©±Â×½ú­îšÐ_,ÓI²iI0\øØŸ&›¦ ±V#¬´ÁùíøoüЩ=1ªH)×`ë®Üºh«C–æ8³óÕÀ‡ÀH FRAME 0 qyNçS©òË1Ô³ó~$Ÿ«{jü8yú’xgÏãó‡}3¹xl‹NåüjôáQ÷D}¥ªþŸ*­©µ>Ÿtrç®:¢ @2¢²ª ÑŽɬ–± ”Ðé詈˜†µøªÇ#ú1`ÿ*§J죥\?ª!ä A(ƒSoëÖö7y…éøKÆ®†ŸäÓiÚìÁ€ØÅHߦŸ‘&G~-;ø;° . ½dä·ò *àvì5÷F¦ÀS顺&äš‹Ì9K­^Üý_Ø«& +¬Õçì—« n’cPÓâ%*J«üoóR@˜2HU.‚B:;\¨B•ωIƒ a”·l©#á¶¾üa×KF1K/µä‹ ·¸¿È7¦æ¹ÙuJßtÎ¥ {±ßµ:?AÏ#¢þF(X¬û}€i‡úÊèÖÒZÒ*W4\Y´Ò>4+®ñ«î\$üd·%!õZ’HûNIúVÿuLW‘X†ÊDË•v.ûI¾‚±-æÁ8ߢ]©TØŠhNÁ¸ä‡Öf7sjF9Ô4YGLe;¡ãfL~¿Çô~Þå§hH ÔŒM©cð÷uÄÅŽIZES%øœ’•48¿Å£ŠñÙs¨Jrª©ÝÚù¬7ñ«æö-xšÅÇM¾!µó6‰)âŒa°¦³h‘¥RP(ÿP3"°YËò5§É†}§OÔ°L•moi;.ðœM•c݇áä‘aov `š²O˜g³™lR¶”ÆfOxg‹oCª¢…¼ž¸áS]î¿ß&ä¤Ðù7—FÇ݃0ä³=Ñ£³Òm>FpÀ%4y¶‹±±é›¨µ>“¿<öÑ2Y÷à:0¬ã?̦š±f zÚŸ§-Õ ¯¼·ê_5=Ï‚þ>PSê˜ñ4ZýçŸÏ™XA¬%/{̓è‘ו[ÕD‹ÃX0ζn¿äÁÜëk‡<Žw‡4`³óÐy–ÿJùÅ¿éC#K9ls@¹ßR,3ù²žübû)}ƒƒ† ¿aãýE_ è”Ëú·$æbó'¯Ê˜ûÛ˜§ï—Ú`^û^¯0OŠ”8tɦަ¸øBëüøÓ_„óòÜC-9w (¯Ahòý{1Ë%eÀ±å¤örS†Ï’Ó“w:š7›‹qï®}d¬À–AòÉÆìœ©ò³ƒ8Ùy¯¸²Å[ÞY™£¸NeÌDIÖ/8f!v¢1Ÿ!µåúýýÉ >5¬B䆣K¨û·d>2tÇÅdNx»sé>ƒwè p&EQ`<'ÜœÈ ³iOè}ªÑõ3vÈóÚ3ìv…š®¥06[7@lÈêL½–ãûäÊ—)Êäª‰Š »ØÐåý‹\ìhOrww5ü™bÞã,ÏdµÙ1ø€t€FRAME Tœi8‡S¹Ôê|Ë1ÈÆ5®€³ÑæîO†O°éó’|ŠøgÏãó‡!âþ|pÙFÎÂOc6½ò«í«ý\Rªúï¿°Å/‘µ(Oe$OmtÝk\öLX¥ÈduTUD$dÄP4DRÑë´s}˘ª[Í‹6 ù&®Ûü!@¿¤0Þ›eò)‰ìÚºÛ7œƒe°%1b Åfn>9û!ØîìNgÙåª!|ôEcïL&í„U±ô÷^ƒ:…è;Í^JεӲ¢¨ F }ÜÆ§¨ø€‰Â=ÃöGoŽ{û˜|Ï0»'™îûN;Íçm_g›€_WÔç.Ò ïÞÌÊ{ô‰ÒØ'W"(T •ÄZ‡k;k,®£PµyeT¸G÷õ;i¾åçaßÜç¿qܾ;5»o†²å;íì­›[5Cë÷•BlÌ 'НDÂ0yœ $4–à)Aà®üÔ ç&˜Fà Ð2„˾åþAé¥\b€êZý9܉©1OÉS, LxrâñÜM4à·š|¼Y©H ñÒ#¿×¬ìòõeªA¢ :›gEIbˆçØJS}ˆÖÝ‹:ÑÁ±rIpGŽZ!Êz¤š•jÒze…í$²s r áD|DS£FsUpFRAME ðœi8GÜêu>Af9cZâ~oG“y~øs£Cí<žSäWÃ<9ñú†ýèKÑï ÙZô$ìø½=ˆ”÷+!¶L|òðÌ.ïÉüÎÌȵ E§ôîäÜ—=4s–m •)¢Õ!’Y%Q•!PÍ26qÞyàʢq^¾L sX­5õÑáœ*M¼»:š0Ò†sÙY@ ’=Ÿ…ï¾/ËèMrÚÜ©#bŠåeÄtózb•l‘z¡ ûËŽ÷¸À^ ¯yyØñ½“¦µ¸Þ¸…iã%qCY‚"‘qÂ[ÿÕÛfe{'¹°kïš‹@y›ïS¾O äQ8Œ  —èÖæüÞ×;ïjæü:ç›ö+ØØËÒÔ©+Z(°l&8ŒcŸ!W2oÊ»4™ùˆÍúŽÉ“×Ë=|áx}EÈxA6Aã$ì!eU7ÕÐ]°0 •UL›¼dW(§;‹U®ýµ°Ç_©ÕA0Á&Í!?û6í3áÕ,öÜü>L| ª¿i?âI“÷Çÿòߟ™”è*$« ©6ÇpÕ·—.ØÀ=@¦ÃêšœØÒ8Ý}—5ù+ž¾¥È¾Ó™ü‘¡‹‹mR>M¬ˆ‚Øü|?üÅ7žš3˳^HP»LãS=jµµj{”ÉNŒ»ë`@u^«WçÅåk5›QxÒÿxl…™ÞRX_gÑ.ú‚¦GfqŸý¯ÒRÛ¯C­¥1胩¢pë7'Hܰžtõ!.ÚWvõrF8ÖÎE³èO ðõƒÐù†¸ZßU;E¤0MZV[ÿ(•ÿ(5(ù-‘GgTš©(ô Ì8’ÿ) Cî4À‰¤ãCp¶æ£“9¤cŸ±/–mVïù²¬lþ ä£e. Ë‚6Epfò]¹¼Ÿ‰;vä»?ýäýÝÏcQt¢‰í»â5QaAÞæÕkMò«ž_"{ü~dü+ê¢12ž›ÑÁ¹flÎiþÓÿá@l[ßÏßcÂaÝLgïyú—÷Jhãü`ñ’ïEÞå?ÆÛ¬ïþ3n'YÛȼw‘«èH}t[º(ŒF«UÚ)åÑw‚?ŸÓùZêYÇ;v3\{çÐ8E÷“ÂïÕÊãù›¤¯QfÅ 9­õ0ö"9‘õÇ¿„Ïê$·ÅâD {– ,´j^8Õ¼5`|yú¾}‹)+ûl›“C¸K{[Ù—TÞóÒ)¼(žÒˆTû 3QÈ=«®ËÂX ¤Ó¿fõ¬„¡=ÍÍ=ÎöÓÀNë@š™ÞŒíõÕŠÂùpþS^gÕbk}\ï“ö\»Í­‘ò{šBÀJu†Ù»‚H‘ÇöA (8FRAME Pœd8WÜêu>A.9ãXâþo7‹³®ß‡•M ¼óÔîį†xsãõ ËÀYø½ŠqÄ­a9 ?7ØAéðàb÷ùŸcãCðHÞI¶§gÒ¹Åõ?IýSÄ›äÙXô]=RæýŸÖýTínVÑCMA3×-§×ù‰Öåz 5c)2!QÝq‘2fÓÐB­\5mãïwN6Œ‚qEå»2ð 2Ï¿'rò®¤íFØ@©îÝPžkÚ¿?‰Ãú͇£G——Õ¸±qDª{æ5ƒ˜&ŽÓ›d0Ë3œìS÷Z‚ ØÆÉ'µ¥^ì"E“Î-¶*‘³Pý#¤˜’Ék >«Æû:‡9ßbÈ‹04›˜±§ã3ÃaL'CÖÛêñv‚ö˜œ—aÒ+Y>-ûk:ø[$‡ceÆÕË;XðjkÚkØäÕèN5˜¢×ƒÛÇX4'œà¯ÚØÏ Qw» ®1iåG…îÇ¿á Ì®øÉÍlf³tÆmÃñpsšÒî¾ùŒÞ”ÿåßÁË~ËÕS)J^I“Ì¢ýFYæ7³-“š½=Ñ\¶>žÇZça£”ƒô¥/ʇ„ÿ*]ÿ# @z]"(Òt3ˆ5`pì};iv·XŠwyíß[-@xdò¸×IåM{ TòïÄ< Gš3±Íަxi ¤&¸˜sŠ™ƒ°º2,•Ê{0~O 9È->ÔÖÜB«6ZïU°f©Ý걋[MÉY€u+‹×É-µSƒ€³|µLaGi9¢Ã€ó;±ë“\´û4¯è³ÑPææJ¶ÛlK­^_`É$;+.OÇ¡CõB¬ö’o׺CóÄOÏÕýÖMdèx0æd%;z'§‚dbÓ¿üo~‡ìà ¬øØD½ ù›âÃ1,’]ô²vSÃÀ¬ŒEš]³p÷Ò­»ñpè4çˆQXp4¼G3+M »´\ÿïÉk#ÿö^«¡íÜ%cÉGçc è/p÷ ŒÅLÊ xãÊ[þ¼‘‘×ÞJìyûÍÚ÷4Ò½鄾Q[~æ¥+±ù¨§$…©G{C¾3¬${ÃÁëÆ%4,.a‘€›g÷D8ðɺޫFºÛãÜ{>ïî{(S}]þ|G‰¤…¦E"õ$T {ÃW©Á¥ xÿíÌÒ$ÎÇëy7Åý,4 xγ!±§LY,€yÛØ« <Õž“±Výpᑽ>0îû”;±¥„·/æø ü !–2Þ)x½ƒeŒ;ªt  û2ú`;òêfB¯}󫾟W 4Òƒ7Á ôê:m^’»ÌW-D¸¾ÁB†øsëŸ]·urç¾2s„›Ö0¡'Øe¬ 1¦%VÓå´5Tª|‰šÃ™Ö,-Á¬'6lÙ±fÅé‹b¿õMñks¢êasÒ»O´q,c0çùFRAME ¨œdMV—ÁÔû¬¸æËcn»~Îλ|‡Šx7£CÈdïì ðçǰìøãáëC‘ñ³¶gÇOZCz=‹OÎü܋ϲü 9wÇÚ/$ô=°uH¼ñb¢ ¾Ÿï~ÏíúÜæþ.¬¾B0^!¢1çº :@Ôñ¬”»ïþïŽÀ-Ë”¹jÁ Ë€<ÉŒF ¾?»ñG¯)@ 6opï’äT¶èÇΖ}wXõóá~ãФ©’Q/(r}jòkƉU¼)Ä+»AªQÓgÈØÉ–·vîeqÇ£>FÙ'/rT?pÃÞ¹e­ïqô¤§9ÌÁÊ“Q~4å³YÞƒÝ=ÉCHžÁí’¾OLž1+œn÷þ]žrkÆgN/C% {Dh‘QFˆ±Ž<] ÀFÁu×DëÅäìÉ›ÅýêOÍ>L­Ç‡…úf÷äòÛßåœé~ùck'&o-®fÅ^eù=¶ÿTÎJ„üÈ[€°Nʼ‚80Ç1=ȶsÜ9y@“ÌØ¸Ó|‰”äÍu\ìYr@UXG)‘¢KÙF‘þ况HPäÞÿ(ª7§‹ÌŽrOï§ít.ŸºR,ÅeÎT‚ú[.CÌk`«´Ÿ¶½jð:Câ~¼Ë#d¯43ÌÃò'¥!„Ð¥FûiçOÕÇÏÿ2•`©˜ö ›Öô+–‡„œ̃@¼Ø¸ .¹ìlŠÂÕyÀåõ6d£›–#Ž#ÀÞlGÇ,€aq(ž½á@aèé°ào6DéÙ­Xmê(}Dä ¯Öo±ÆŠü:Õ:û›§%Ë ³™œ®aBZ¤rÍãM”,ÊZñ|„˜lNMƒÁšxWoHÿ\Ú¸xçÙˆ1y׉7ï)œÔ}ßï¿™Ö3トäÿAý$«:/ÈÀêãš!“?ºOR†~Ÿ\}HIÁ@;¦´.üd]çš(›ó¦¸½ê–ìp5àÉþüªÇÉߎ@X£PÝx°<—lQγùð<Ø4½O|2sÚÀþƒ*º?ÃÊ·.˜Ñ)KLúϰ4›öH •w'“³…Kwù„}’šJ'øÁE©0ß·o£>Fïoä£J~Ï$² Ÿ²½WòÐàÕwšUJ€ïM¬ÐJeÒ_ëŸS´ÉÅÿ8ÿÞÀï’Îl O½âAÏ< Á !åÒ‚‘‚\¤ÌW…/4 #]ÃÜÿ”9S~ÎùçjrÌsûr\±ÿ›½±ºB>œ-Éþ‡®Ê5¡_˰Sõ>h[)PñÉ?;}LZï5 4‰ç9ÅŠ››ž«o6%€w™º®Œ€lWƒ5ž" BcÃB 1—[ÑcT|mô &8‡Q¼¤UÅ´ ’ñ`ßlEš·"˜¾*‹ã[õÒSèuÊûBLᅫÄùçkºÎåü çðD<›’¥ˆâ®ÇÄ!Ÿ 9 « 8†GGëªþ/g®‰_߆ÍúÏ`_²Qu9ù®ˆ¼û&€Sˆð—8²jŒÏj>Å3'’ÇwYé’í®,±(PÑa¥¥,URãëb¯—Z7›zËŽ¶ _ι¦>Y¿µv†nk˜Xîîéù ÈPÏTFRAME œfä¬K²ºŸlŽ1˜×W'/Àñ»:îƒçsâh||†@çì^yê³Ãž~çØYùÕxGÆÏƒ€ìøp}ÇUà<†ô{…±ë ÷¨óçë»çÑ»¨3½­v~æêzá¤J ¾íî~¿xü.e[«ðÇ)æ ‚`* ©ÌŽik‡.OçíÜÄHsÄñƒ?†|ÿíZ™Š¸ë¾üŸôýK˜é‚×vùO(ÿàa Ù3Ÿ8`A»&ÌÝÿ,;ò+0 ÑRÂg¹„ÄÕè?±ôðÕ™pùÐ?’ëçèÓw†Lw_n¹º(¹ðVqIî–È]³ÉâÏX®gÑ<„œÜÆ”Âw÷ØqŽ?0ý؇¢ø V×b’Ì‹ d·Ä/ïâ'¬ø„®.‹ÔÉ$êg/ê%n)}SzCeû¾[H-«Éx›j,ÍX“°Uåøú»¬éih›vÓ£G£dò®–ý”±zÏ€”ŽÙØr·džÁoÚ?™¢XYÃónáçƒÕXò¶ß1èg%üžonç^œêddÖÀË<'Ìp|xþ–ênÈb[Ø¡ç\…=Òù@y¶<ì L7º)1ˆ©œ øÏÅ)µêu4­ryÚ°ãŽS;–ô ,OÚÎÁØÃ ³c¡ógñZœ½Ûò¯«l'Y0otrvh!­zåoÞƒI%Ðbéà™4æ~ÃcéJƒ=h0ËðóÖÅ)Â_Px _o£ãI€ gšŸ£X`þsOÒhǧ©Æ„`Ë,bñº.x}}»w,ò°-k±©€é–Ï,÷â/ÄÅ0˜Â°¶Ý¯ÀÓø¨?]4éõËÆ1[‡PÛö5ˆóìÄIq89±^g7ÈCOoŠžw§Ÿ‚}6&¯Sòs½7Ñïæ;›ë°À3àÕ%§öÖ¸b#O@b­7%jJÐ1}Ò8û=÷.ψl'}À }žÕ4Nìº)V¹Êi6Я¤9¬xg“UÉ®©¬ÜþT­ì\ü S lž¶ý¾×/ ö&ÓSk0*,¹×¾­»®y–U¼í(˜ž:„"Ádð2³ýHZ½‚Ð'xN¶öâǯ ôô•juZ½_ÈÄù¼l'‘¨†£°»^/1™ûtÖÍ%”ˆ;i²ÿ9ˆ˜f÷Ü×kk†o#Ï¥Ø+…> ÌÜ{gñÒpóÚV“ƒÆ›†_Šž1ndç_àüûÆÄؽÍüàŒ•ûî<°é¬ÌŠ\D7ÁPŠ–=€Ö4 jA#ø3ÄògfÇæ#IÈiQýJš ˆ?€ Ö×cCjÇkóÈî2y\ ÖQqãÓü—y{W£#äå3þG¥qÝ+® »rè ?bnŠþ8:ðʪºmþÞñíu^þsÚÈQFO=1r¥Þø‚±U/CŸÒůÆí„Æ#Š{SMªZfàe^&±–¾ÆD?8Y†°š™·°ØÚœk¸åø]o<3ëÒR»IiÄÎänx%Z‡™–¤§«L¬&OÐ'äcÜç=;—ÈÇýuYø¾D§„,Ã\¹»(.¯mÏÿÝ&GSp*ÓYÿ›ÇÙ‚0 rè<ï9”Ü/ï»ü›W"Eý·{Ï—ïþ{LèÑwKeGÝXÚ±þįߦ€Þ¿"ã!@ø·è^å­\ññÉ+é¸'èí «Ã–œ£=ŽùËÍT ý,ˆP@ñýoÞdØ€9¯£Z¸`Ǫ¾iáZ(DúA¼Æ¼šwÑ÷ѱB„:aRƒ´ÐeÑ¥¬1.a€.ë)¶v*,‚-Z‹é5sùZ9jêÄHCŠ/^{3™!›ãŸ/íR<ˆÑðº›ôæÇ2:Ò)Åê<ÜÜíÿA¼p¾¬"‰ÉÔ&õ>’cßÄ.¬Ö5È5þGE{ èí¡@oíŽRº¾s! ö3È”F«ïë ÔMfpùöLÅÓ_Š·+Úe9±]±î&}¢O´j¾^Š+†ŠqÒùM ¡ò³ÄWÉœuaO“q\XQï-œ ¿å¾Ed¥Uû«Û·C6DŠi?Òšl»|êA‰κÒÖþH´ç"Ð8®`šFRAME |œmÙUn²¾è21ˆkÂÛƒð| Õþw>&‡Èºý‰>y> ?SÊ=^λ >_3€á<éð']ß<?™©ä7ðüOc0¡¼†ßÚ¸Þþ ¿?v8Þv`}÷wÿT†Õ÷ߪq½SzPV%Ô@çP]÷¿_¥üWrw/òvèÐÁ$Ù|äLPäß~Ÿb÷÷þ{Æé(Ô‰d¶D0…ô[bëf>{~ƒˆ@„•­ºF¡ •kzm¼_Ässõ,/¥XüA-z­oS)hdü‡ëáÿ»6èÍ”YëãëüœIAöÞÏõ0‚®ÿ«QŒ½{“Àà&íýÛgþ‡—Ê^ ¸†®ÐjŸ–³Ëp“Õæß>È[ø²{ú‹ROÛ˜+ûø˜Ij Q¤¼¢š_/͉öaðöþ$ÔKÁݳ9°¯^`üFf¹ÁØPÞ“ö ß`­‹ôµ`n«â ÏýŒÇZ-zw ÞÙ-çKI´GÖcbQ ahSA,æºa4s½¤…G™Dzï4T~í8('2GáÐÚ>Û833ÑÔ{6wKTL¿cs'ïSŸK7y}~Á².®(ç9xzæË‘Tmœ­¤Udü‹‰ùËc¯-eØ^cº¾+I¤d¼>tSòù¦½¯,Yê,‚~Ûx‘åàk]ÁTJà,߸|Ò$\5&rÍ|¶7ß&Ä¢¯’h´À¢;-gVd³%,’”Ó¦ a~™±W—çýö!žk&y<üÿßà}hÄz×êaÀ£ ”÷›P5Ø"Ÿ¤Ë£‡®[WÀD“TTOú<6[KXŒÞúW)ù;âbÌý}<-O~Ü‘D?‚öã•I¼‰ö̺ýÀz}}ó¢B#ØD?{±—ž6–†3¹Es¿7‡úƒó&¬íÒíIÜÉ'w§É³iT`1rWœç:ާç.ú`æÇÔ=ƒb<ä»Ã×é=Ö±7Ín|—÷±~˜| l^À™¾pqÍÁ³È‚¿ c^uìyˆ1á#>OwÕ;8MÀÜ?V4–Sa\¶¿|Òç?X<düü]8¼t(MÄ­d7 Ÿ±µ߮瑌õ¼ýï\šôš¿Q€»pI9ší{óÆÄø5«Öا€nh)ª–`5ùýi‰ @ƒä”>œ¦¦ƒY°>ǤýêZrK;„a»m¾/æÿ$;öˆIÿõ›|öñ¢!Om1}Vm*Ç/:li éâ” ØWº¦¶%‰Æ=|ØÛÛÎЯ$?/Òtõ…P²ï*:¡ŒÈ¶¬¤—·Àš#½6<÷ÓùLsãþõ_ü´\C:5¼¶óуò„ÿ¡cL²²¦Ñï×kjˆ€LœšòþˆxL\ÔU,ýt Ùo—¸ô1WïS}Ô9ßÀ‹/¨ýÏ|¼ù«â¼ ±Þ`²kÙŽçè,›Ru7(¯î3±€;\.@?¿ó¯ *·“Äpd\Ç‹ãó‘Jq,Œ‚6f`ØÙà=cÔÑBÒÅ/}»÷WŠ;öŽ.?±ï´†nïïæÓ]n~SãiµCHïD¶,ÌEcƪDÁƒ Uô• ÒM1}`ªÀµEAP|‰^tx(Y%Àîpp]°!âÓü™q¿!Ãð}Š´¨ þÇ]÷QÕ¯öû— n;M’8_Ñ. º£"ü4Ž61)\rñg‰5ú Èþ~v{âä–aó|UK~|·]„S¾€·ÿ\øû]º[™ÞD™%yÓ[XìG»ð_z¡ìHâ ¹ªª\tûD/‚©DF€F¤a P4O Ó¨ùûõx‡(ïû÷Ø-ŸŒ²Û9ãÆÅþ'>FÜ_`&ún:ÕÕ>•(|¶”I¨§Ë0nªbiihÑÏ5 䰵ܸÕ7jšÑù.OÙps̸ª§ÐN¨XlÖÇZTÖ‹&îÆ͈Z) FRAME üœnd ¶ !#îƒâÌN]Ël#ð|,æÿƒçsôi¡ä2_F‡Ùsã“Ȭû{wâþ» <}Mí<ðwÏ“ôuÚ„°ú›í7£¾|òš^$•³,’FúM1mLâŠM*šI€Ë$Ú©ZídjvÞÍŒ-Ià~Y Á͉]ž×”Ÿ™ù~Qø5Ø}ȧÝU=92™ü÷}ÿõþ]+)’O!gß„ZSUýŸ£ù­¾ úõo˜\Ÿ6I¶È”Lœ íx}îýÝÐKþßïÞd‰¯úûE‚Ô~ãh+I]¶ò¢Ý.xäè¢&ÝuêUÚ08EýÄÍÓŸýýÕhÀK°”Sm ?ÈIbZGøGyà0dÁË×½[Øý„Y´\ø3ð Ù…Ê7õC Ï a€×ÉvkgÎÄΉƒúoOF æ†íÕÅ«‹ËUˆÆ÷5ö§æÓ³™=a5Ä.~ª&¾bèU.Þc@mþX d Oòêíê¼j6lÖ7Zæ÷CïÍi1Ì.é& 55WI¶ž6¾ Ýyd$ºÒM¢½Œ¥œCùáÆ’èóeźeÙ$-ÅÇZbSBS"cÀP¨zÎ!Z¤Æ+Œ»¬Œ‹m¶Ô¼Qëe£V5l«¬þÍæ¿5¥.Œ«Ø•ù5àŠ­pæ8)<‡;JñfqÛÀy0&m§m‚•©†b‘]½A’Ìæäš£Á Ï9®ü¼6XÆ!˜‰ê]Žˆ†«oV¿îÙŸN02¾fz°z”á~pj$¸h®šüë–e¼lƒ‡!æ3žõQ`ºY3ãèÓ~ B@ú]mí›î+ƒ±3pX¬vmÐÔbóȯL}\OuVEëŠÇÙ“ÀCµ’±c¸ÕY†FõúM¿¼Ùö²Jçå÷ò-­ ¢>¯dû1Š”—ŸÿB-ÉÖ_ìMÇÉT›k5 «Â.Š’¾ÍSi‹=”Ûöƽ¢öšcƬø“ ÿ‚vzÂz0 å»NÀ0I0=ÀºÝΚ.ˆl¦ DÙ²Ù.ÔW³QPÞ ‚D G×É@{͇å½$ô»^¤Hßv!Äò¹ä Œ(Á µÏ“jØ„HÀz3±D›& £b]Td—º@5œÕ‘–ýùAOÓPv·Ÿ™Æ'¶À„l°C‚Îüê_¦x!šòΫ~tk°±W.CaõOTÛ çÁ!ˆ¤ÐoS@5]Xæué¬1Œ™EabÉYoTy6µëÂh;|ð~z·«ØM¶ýOcAzÏ„)æ,ùdyRëe¤ÐË{yùÌÉ‚çX 'çѧÓÅñ–9–MÁâ¸Vmêb2VÀ±W袢)s©¹Ÿú•7Ó3¯ÕC%­¶®ë¯²-k[æ %ó_¢Y^öÓ¯+Vt Œ4üÕ¨ëò|Oœ›æÏz¬ý?3˜< ¤¶Œjó• ÛÜ©ØàŸÜ6áœþ2‡ð¥¶/€à<×HÇþéÉðhÍYp~zÿvANª*à·<~Ñb®Œ Ç€ ò2ªü~ï&¡ý©f¶:¡ À¸’K¸.1±Ä??‚å|{ç¿­‹>r¨×;XL2Ú8û\¹·@o›w.qòvŸäí_ƒ’˜æí ’wÿljXmxq»\äRw˜2y;|J(¸ä\^Ê- òŽÖcB|¦ÅpÃÚù&c?lU‰fš.v§?µ=¾ÚUimaV¿ŽmfÝ_,ÆÖÅ—|| D@„¡p8s×,øgŤµ¤R$V³Òf=WЉ\1KÕ<À?w~ðê\ú»M’ñdYñ·'âÎÿ¯™ø»sѼœ˜ìl?Ø™ùwsc‹XÁÛónN˘3ûܺçîýÍ_Ç@Ūóq¹GÏ‚Av›åK}ü6¬›žvž2i„qÃEª¬ÔžÇú‹€èˆú‡ Œ¼Z®iƒ˜¶¯$,d áCÅ„ÍáY¹À.ˆ É›š…®#¦ƒwÖÅù#¨QaÞx†)x¬¦LÄoAÐà­Ýƒbã¢5>éDSµÞÆìhJ«Äs--XkRÞ­âÒóK8C²Ÿ!(é·ïŠø]øê(ûZ‹0lßÖÍ¡xS“x§ç&.®M#ζuÁdœ@é£DÕ\(D*Ê"ô1y)³Å*5‰QeÁwOÓX‘ox–®„@ïÉ]|—ñ@ñUJ{;ªrpãŸx&þ¢ñøÇ?[2÷&Ÿ½îúÕtÃæ_bT°Ù0Ôw%©ªÉ}Yhi-q´V,jJ°p–ÄÅÖ\×4˜œ¹4øò&&ùòú9*œ4.+÷]©ÝË9µM5‡aM‘ðlóZÜö:íRæùÏÎü¾$(FRAME 4œndª¶( 8¿Dw×—.í²‰÷=YÍþÎèv&û ˆz7ñÖ¼äò*ý¡áß…£Ú͹ßA_©ÇäÞ׿¾«ßØë¬óÁõwòg‘Müj½ø §Ÿ¨ÇìŸWÿìàóº×ý¶ØQUw]ú×µUû»Ý×v–eöo&è:(¨.Aª)Â1! ç ‰¦~÷ªünËîŽ`$òY„¦Q„šºžZÚÉŒ²Cd?­úÿîÑ¿¯ôÅ¦Ú¹Ë Išlï/rÜç’˜Ô4ϲ‘û½n|Ì$ã˜hâ½A\Ô–ÇFÑ«|A-é"ĨRÂé‚)O(¥¾óÇ ¢™Zɯ=¿j‡êÔÉŸb‘:n“ÉþŠÚ÷^fKþîÉ¥€q±¡M7²y9i½%ê¢Á|`b¡·0t›YíD\Y0‘ëÙCº‚1¹uÑLe]o€Ù­n[Qðð5VÚ¾ÿ[³ùÏÓœàd<Ø?0ŽW#8Œ8•ù´Q'}4nÎc_;' ¡Ñcì vuVï×;a´¦}/É·Ó]«Š˜VÓ®³š‚ŽWj¼¥O‹hlS¬Ø\ý»v”&×vÇ Ái=¡öÄŸÈx:~ØhâçG‹’¹{ð>îd8¤çÔ|÷9T^ór˜)à£9~ºÞËW-Ä_†uqOQ²È’“rsVY”œgK[þl¼ ä€Bü[Î&'ÊÀzz¶öÈ«¡XÂܽTåÏ"ˆÎÞc16yÞK=üî<£±llUö8ãØ%€ÏfÊ‹íyÑ[éyyVzøjŽuYó7¬*õù¥¶ŗå`<êëÜZ Ô¢,e¯O\(ö~A±u{r[ øKZÈ:Úßþ®ôísó8ñûüûÑ‚ ¶Í²¸ÕÁÌe²Ë×mû÷þ Hoï ådªË_})Yù4i|‘#h­O³‰/¼â@4 ieVÚá ÿ ì¿ÑƒCœ»í›þ)‘åù~ËÖÿfÍíèÖµ¯]êk`>>$T­WH °ÐFhSÀf_¤¶|å±Cæú‡Ðø½<>_¯šß·‘‚qNÀ=Ê[D6•XÆ.z;”‡ØØÎ …øv#;†‹°PÒ ñò/2}q ÀØØ1@Ö81tØäC´‘?¾CD9íæ"y)eÀ¤ÌÇIbU&'ã#÷bØÍû Ûïë- ÌØ=‡ÉöÇs`a-·­²Lõ‚¶RçsVþª ~Àw–‹>LÈ_îÊÛSQrNزµÊR29;SzòKÎÜÄÞ&"èk†w¡x„ÊüÞ-l–ˆ³’)……êkco_šNKô[©¯t™¹¹VZ™4hÒ¨5jÖgIdM|À—×)¹ùAÁ+Â%vë¡#PÁ;]4žªT°šJúRÄ!ì9Ãn:IÃ×®ô?û\½W-H£˜ÖÊi]­Ì²C Ö'ý›>“Ì9s¿s=x4µ‚É:œ X!b$Ït,ýÝðE"ñ%‘÷‰ ¸Ý õ{Xø–jÝ{ååÈòP¨?Èsë©ø0HàÇaÿ nOÒjúÐø-Œ¼ÖàÑ"ÙèJÐë`/_øþB|·q­+»ü¼ß¼ßÍ$¯Œgì~ÝÌÍû‡ Ⳉ+%åyˆ÷‘yÞ߯O¯löþrw!s—ˆRrtý‘Ôå¯íƒ”ûxäïÈÖ÷žOä¸?î3û žûÉA|žÊ'ü7ç¹ Âúë×iÌdU˜s*Æ—ÒCæ€(e'àRB›¢™¤h¥ ­;7(ï±"ì2[#4 -?÷µ;»XõÓÑûh„½fø£—d.N¬1†úês€ÇÂu€‹K]ç$ È2÷=5øÑÿgûDúÏ.|ˆÃ.AKX1£CÕÒ;~fç'Îöù¹ù·Cÿu¬÷·÷î0eÔz?óº@?~ ýöv»w°Ñ??pQ)±ðÿÓг²í¢6äÓ–-ŸkiÙcÿ"Ûå)”{)¦•Ïñ[«(¦Æ ­9Α›K$îäsæèRÑÏæq <ÉÞv@q+x@«=ÇpèÐ$-Ý`Ý „#˜[µ—Õ¤ˆêXšñ_‚/££bQ½Æ#ÄÀ cKEc P`Ô¼-hÆ1„8cKKE ×"AXÊ!ZËæ¡r¼šb5²ªT q}Å~'>o!ô]šèMý›Ñ2kìþ¯ç3äÈ;G¹#h^¢ˆ}•Tb€.µ´[µbwbì@Ò• ãp ¨OStß³íÞ¾78èp]äuÂò~TËNšê§¯Ë*dƳ“¶Ùýš5­lïg‚Zêb&R[ÔBi©5>[嵦00š+ bœyšQ,jµœì k„Ž$±‹9Kuxü·wˆrá¯ç\ý]ï­VƒtŠ­¢j¾jsñ¦i»ªÌi+ÕÖôÓI­†YÎqXñ\A—FRAME ìœndª™…pN/ÀrI±P’»¶K/švÖsÁõ:ìMvöpœüjiŸ‘Îoqëœ>§èïžyùt|æ‡ÚgiÂtçK÷œ›Îyñ4>Ö‘:s¥û^@(;“¯âëÎxÿçþS»À¾U·ß¿{ÁUµºº~¯/¶«~ýU÷mЃÚ[‡˜6˜Qƒ˜é{³²p‡¾Înç6Èvü°YRi­ìµèÓzÑ«gÞLŒ×œe«füžúç°Ìý„‚Úf ?o}ˆü0[^Óð¯ÀÀIL°ûˆ§&O¿¸oÛÚõUû5êÖ¿V•WìËW~ûÂÖ>Äõ)ËØu³±±±°u9œ?ü=.Z¶[ÿ&%Ñ•Y]«^N†)ðÛ +ƒÔ‹+pÁyMäÉ)­£ˆÜñ>m:mp¸ÕÜÆ~¬ ûƒ”µÒ¤¥çÃð)&ô¥¥?'!Ê Oñí*,OPôòy<A9Qm}Ê Œÿ0lÍÂOäbXö1‰b<”`}›RQ°ÔôœÛÏ„ñW›Ÿ—žù`ÓËïÉcmØDtGò"ˆ9"q^¹%‡bz³/Áì"òxZškV£è£(w¡£I­)“%: ©ÑÎ)_vrôôôž¡AÈeÿÄsÑ[b8>‘Ç ¾[õù°¾Z¼(¿”)ç"bëÈ&¯»b\ˆ8ÎÀ¨±|`ÿ‘-ä£$ Êû–TblŽã-Š^.ôq‰ofã†+_±×,V¼Pn+ï; JRºLv‡oû½l îniPí æÄîKœMÇP«üiO/Jêõ#ÛZý‘RTwªu·Nü¹ùah=·<«ËšBö׿¥ú¬«Ãè5‘Ã{ên^ìö1V¡ˆ @ Ë KV¿.«Û\®®ˆð8Àù/pÐ-ýo!P„'´µ ‘ BË?|õûÀœÈÛdãÀÄyñdª{%ÕŽËžI¡«ë~I»>ù+o'²¨ ŽHL¯Z›ÉI¬‘Ë⬅ù¥ŒÖI&t”¹¢žÀ(›|zEÝï§ð¬[Écl¥cýS¶ÒÜ÷¤H÷›…¼lž¤ Y½»>$í'ü ûÇà6íôØÁ £ÅãN@àsm'p:'–Ÿ>`xSößãÌÑ´ìP½ ¯×¡~úø¥Ÿ‘‘êœóž/ƒ?õ¡¡z?øyd¹ Ó¼ÎíBÿ® ¯õb®L1î=ýz¡9.ãB^Dœ—PDœŸÈÑÞ§‹­»Û?ÿEæç?''-ßô\ž'™ø3ù9?å³û‚áOÞý±ñòI$޼@©ÛùfeëN!ðR1Ù”½ƒÕ<{F-cŠú'ãgü©_[êãü³ÇE¼å®ÃÿåY"‘ÿ•›ýšü>×KLxZ飽`-YO½IÆv1+2A™KŽ!qs_xåv• òSæºÑèàUÚ«BòáI¬ÌÑ[âsÙ³²ùlo2¾¥ì"-aô,ääKš5¹¾œ7½Ê½ÇTö3¨äè=Œd¯ût=ïøg4LúìÈÜ!ü²ÜoiŒûçoíØ¼÷r®dyÛ&6͇W½À¡€.6ÆŸÙõ¬ZDÇ©hû ’¥£›ªµs¼W]uW}Á!äýB‡;Áá&cŠAœf&&¾òD«Áp¨÷¸5WÓ±x±„‹¸½ І°´6-F ‚9 ôǸ²ë[UŒâª0e¥¥´– F‹¥ÑÜKË)h6H° À––PÁ–܃XŽgÞ°ãõ«°#)_Šuõ¿ DøýuBu8Ý}d¶iîÅ)ôt?R`V~®7%¼•ÑÀ‰^Ÿ¼ä…QìÐ^È굂u0âÖ”=„Ý^”q[ÊÈûº3åÊP¹?Ÿlɹ㈑'¯qÏ<˜p¾NͳJõ0Íûi>sãUìiöÔÍS­ÃeÔ%PíŒvÔÄ«M-50#µD°Ê€+51ã+XØ*ÏqÁÕhƒÏÍô•_#N+äàƒŠÍWNWDÒjùbÒäWLšt]uw®!°ê⫟‹ìæÁ FRAME  œnd«’!]8'¾É7¨’»´’íáêæk9¿Î©×bà{ºs€ï3ñàí-ðh~G=ù:¾ÎÏ«Ïg ã£ã¯Íà;;›Òqçäiç æúàú<gY<ŠOy§œB¡Ã¿Îxï¿dŸ¾ç|xüsÕW¾ŸŸ¢½¹îZùôïÕÛSõ%VÛÞÕîU¶Ü“hš ¨:ŠÊ–cǬû}¯0¾/â{Ó?#à©ú“˜yšŠe¦bÆ›ûøa¬·Š½1¹Ú¼Yf"o»¢¯¯äÏ>??»s5¨ª›4ïƒøa¿õÆú³{|A6§”HB¤ˆàý8ý³ÿnd"¯ÐMÓš@ÿÍ¡|×¢Œ “¡ž‰irìý³öýEáW¶‹0×£ó Vvž¦,ÒXu{Yq" iÊW n9îy_fí³"ðdˆ@yZì°Ð^Z9†ªsW³`½ ï÷‰¨ SíÄŠ4Uð ÷¿?ÄÍË’¤ Áª§ ƒbª¦¾ÌÁÔh 6¨EþëM ‡©Ds÷ùŒmpËö ` «f1Ð9ñ} Z…¼eÐ5cAÍúü¤šø…úŽâ!šËà\5 6LçÃ@îY x½õcæß›º¥›8ø`,rð÷ž‰Â4ç 0y>ûÝÞ€aH²ób:ãŸ6~«ûyÝ‹>¡Ô ã¼»÷ì8”„Kþr‚‘µÊ2lTw&›öoyÞ"•œû6pš÷3š˜°¾0j{Å­–†a çjîñóàïñð™{fœùÖçßæ`Þ÷5Î I‘,/yN½“”ÊÔÐBRÉeQ7òY·/œsT™=yÏ)†(¾ø9q‚”=‚MÉ#xë—v  V¹û0yAÎ8rá/ª]fbmLO×Á1¯mû•Gñxë©^‚N+Ë®Ý*-"‘¨°þ_'ˆù=^ngŒäõ^>>푌Á-†aØ…˜q%´ù,1|nŠH®ˆ~®ÀÎ]ïuêòE'Sã96ý›òêaâñëªåBð<ØÔúõKÃ}, ê¶Új¨ö mÝSš¼²iùV5kz °¨¥±¶%iØC{ØÉ&€ê-ÿÊFë3,v>ãêäýSì†Qì¬FLºœÙ8§€¸´¨'¦0ïžh…c½WÜÙ·Ÿ¸¿Ó÷ÉÊÇÔ’ m;².B“ÅÑ6¿AC)ëk>pXV6Óø2A¥³A­)cÝ$óœúÃã£ÉƒÿˆŸ¼ø üJ³<[x¥ûz\ýµ÷Pö2`˜¶è ›«ÊoQöí)-NÅÇ´ÒÁ¨å·æja¹¶±ê8À¢^¡Ï©Q­Nò)5?"Àð/=ƒ^žžššÕ©)´€Pê $]ê Ð¥*_òHëÖ²ÒøT¨Ž)D_8Â÷nE Ø-jÊ(œÜ5q¥h¡>û`x(Ä81ƒ3ø÷°l+%(àÁÒò—®¬7w!Š!+ŒU´Ü \\›÷69°,.|Øí–ìŽìAA@¾«VgžûÞXØmnlEíªBx ‹™ZæEkÌÒ¥Äf#]†Iˆ'H£™dR°Ô.Ëõk B@Äóš½¥šÕ¯RÍÒŒWdNT¡ž6»ä>O€û/'žŽ%hw U–òmƒb1>©'Gýâ> Æ/ƒƒç.Â’¾*¶ž2cÏ9y&Èx¿æ—?’V™¥ã;5ænΜ°„ ð€"ÀÃ'ËrìÝK›Mà¸?É=äo û»R­átõù¹•¨™©Þr<ŽóúÚ™‘º=.³['ƒjïî·€hÊWZåîÿ#»žýÊy'–~¥ï}‚D<½ö{Ý'Ì?ù#ˆ‡ȇ' ü¯!ù…ÿ# ÖïÇ›(Çö»J.6’2à˜ÃÂn—·4dDAøgké\›‡vNr}4~jA%Љ*š2í¨¸#cFÞ[¸ ]á­®¼øÑØ^ûIÑù"°ä¤³5Ac bíå?h?½Ê™i4ØøžÝ@§æ Ûm‰¹ñÚbÕMQ<;a‹§ÀÅ-Vž²ç&ŽâNsvãï(wñÅ£(ÝǵÜÚ¬Ø9.È\€è8¹Ìi¯„oH“—¸úqj1Y¬{‹r0w¸âzJ„8-ù F0îÒ„c`ãÇ€´ãâ¨GsX«h!øˆx\*8±q ˜¦$]•„¢Å:ãTƒj ™h’ñ‰ t1. ñð£<ÈT4y+té㹸œ×«¾~¸òKÉ%Ññ f—Ì‚Õù¦O<š“NÎuÏ™dجÝÂfõ®õ úyV!݉ŒP…xÉÅf5ãjß`èZˆñkLX  )] Lê20@V@séûöús¨ý¬xêR‘2€L­¾¥9¹’س—<`¶}÷ùýÎfÞÔ»»mÇ´Ýë¾ë]„dÁ/–ÀX,µïl‚X%òU"l˃‚dLæÊ×–..~ç=ÇV!̦l1åY0Y®£ûÿÚè*TÕUP¯€“½!ý¬ÞÅvdëa6-Œ*W5H0FRAME  œnj¬d‰ŠéÀæöw&Ƥ•áj2íáì鬿ÿƒßbh|NîuÞ_–:—CîpüÎy½V…ÃA7­Ÿ7¾Žæö=~O4óç›ëÃßGY~yìÔóO<‹‚ï¯÷~õ×½Z«_¿wUàú¶ºÕDþíö¯j€Øóí` exC'pGp*ÆpI†)¦|ßeÀ¸ <çèf(e@¬6À(fG AŠš$~ß­ø÷on§ªO)–ƒÍñøÀ›/ê×oÔÍ… ˜eòí©ÓN 9FèÏ'ž/*/¡Z7Ž¡¢MdVâø#%··®hæzõl@³è³Lxq–1Á|ÞãPɇ(qL°/êq™qP}çPZÊvo(rD–gæ[c(µD‰>z:~!ÙÓÔbÌ`• /®Ú~è= ÐJp¸èC:gUp_óÁ%ÇÀ¨†Æèu½|o¸Yöa^ |Û2 òvVîÎ[Ÿ î%¢Yv=ov5xþÜû}î#ïòá¿×·ê€~Ì8Ëq‹ɻâù„æ:õŽýË¡Eõ<¶ù ù ¾ûY¿/ÐüøTÜ*—oyè‚p´ÕZ  XP°ÆÂ‹F{t#H½â# ¬]NçㇷópÓã˜Ô ­ÿö=Z½ ´–È»'æ„ìùÀøÉŠÏ=¦ö‘uüz”Üþk/³‹8ðúõº]!²ÿ]ü™ÌAù°ãvdÿ˜~L¢9íB½[ô½·Å_¿ZœK«Ý|~¢¸œ}'î%q™Eáq"ÁØÓiµ·ušÖÞñ.±t@]ò Üz ~¶PQAè¼aOœÜìú>óÄ…JûQ&–vèZœc¤™Ì ëcç<ó³?º+?]ï= ¶‘ 1¹ ÎP¢ƒŒB,G›{¶œž7 ûþÖèÜIª¾kÓ;ýmê½K~Œ6ª[Ê[ÄU8hwÇ÷ Pϵ^W­ýô1ùØÓµEìxø×ɹb|KAèØ(Þo·ûÐsÞ 6@ôy°‚€4 §5Œr¼ûƒ¸ –Ø¥DÚ€6„ÆF5tŸcbPâWOèØÌ ãå²é¹%D”!qFÞê)»Œ}N‡¸4}8?wî¤àC…‘DÖµÃß—lÇØWRª‹D¥}¾8Â(µ$ üÙhÐjcÉ-¨?Ö’¦“Dnù=»7ï NzŸ—“Øø>ìjÕ¹¶ñ +7õÆ ƒÇõzÓÙóÿyµù§÷ŠÚøï•Ÿý=ÙC‰Ø Š*ÑQ|‹õt¿"ŸÄc¤~^>²(ƒo‘f®ÓiÞæ÷ã:k ·Ô#Ÿâ0huxO.#܉!ðNƯ‡ê?>Ñ=`-ºçQ‰h¾-¸ÊšºsÖ£L’º³£Ô£?æuØE(‰RoV.Ýù, •ŸßÏÔêHfç|¼(r‡¨ƒ¯‹Kï*5¸µ#æóLYœ0 «F3l”¿ ƒùù«ó`+Ÿò2çåÕjÙ þ[ïó³ªÚj0<èÕ?’62‡(~Pû–%¾ödÀM%ù™äÌäU,0Ìîî²~Ó130áu-»<ùwµšEÜ=§vw.¦yý³0’Ìa„o¼WÇo¾…ß›£Ùº_Ôyt\£hZ|ˆU&ë„4qYŸ(n™r¾ÊÕf£—M—-èqáx˜˜0!Á7\Û­ÐÙ}Pr£ÆÑY"Aü)´l/Æ‚hÒNƒZ-™bÔñÆÑü$“ž–s3~˜ž„w´*©×¦™ŠM¢¦(óZêûâL°—­´œÝXëXæa‹”o~Ø‘$Ö<Ç—-®8ܹkœWRøÐh*º¸…Z˜–ø …E*p¹YÑÑÖN9w°ó´¤Ê7… Þ¶•F0»3œ”eDS\¦*&——X½mwþ ¾7Z¼XÕ$ÓRPéµÊ4 ¤­»•åñB%ö ž–”-+¡Zj{Òz¸y¯X“¨‹ä–_ÃÝÄØ’×lKäçòöté‘£>ÖG×ôsI£ßT¬™û°‚£§yw×ÊjsÊ/ÉÂTÔTª¥.s¶q„Ýݸ¥š‡Umr†qĦÎIâæÙöF“I²4€œl’2ÎÕ`ÛÑêOcKyþÖ«îÒ®–lz¼>:9¿/”í«l;2°ÈÜ+y¦Žü'FôÑS@)ú꺮»mˆ¯Òíú"©_•t~¥§Ô*ÔWЇlñÁ‘èµKI ({ÙÄ" ˜”ûK^j–@0FRAME œnd¬J±‰5^žrlu%wr&MŸ3Íœß÷Ôë±7°ùu—×Üí^Ø}¥ìhëê¯ôú=vw49 ò'ƒ—>b{ç<ø{èêçÀûÎ_˜€gB0©ø­ùø[™»ƒ…|c·*ïíÜ/;~ë¼¾æßz¿Ùûªö÷K\£ÁÙ j©º  ÄpIz&¦<Þ3âº9²x³öšûž¹i¿½â|³ë;§‘–9ƒÃ‚¤N›=¿ëûŸºt“û4…|?†™\!9r Û´Ó‡Ÿ= g8ÍÁfÈbJZt$0œ¿E¼³çb/’œ1 ›Cs¦CÇŶhÛµ|P,Ì÷ä‘Å}pÜ“‰gÃUN–òt•ÄÀ*•#`àiœŠì5æ`Ôjxï­g¡Kòxú7ã<Ïèýó^•  Öx@øeŠYÀt§¤í¾gˆ;—øÛ—‘jq{0o÷Áœ'øˆzø?“ôÿ6ôÅsqá8÷RÀF==N—£<ÂÏÀÊÏ,ÉÃânqWŠ·!\/$oÈ ØA9ŽkÂÿa-÷…¡À|3À *}tsC³á”=Ó`³³`\î*؎ɶ³2–YhÊËœ 1:·ã¯u=²6î‹2>B*kƒMÿÛÇÙÆ™¢³Vé¯Jøe|AØaO¯ݤüæìÆþ>N¸×Ïñ‹§˜]/΄ 1ªþ>)ä(°X5?íôÌ>Ç\I¸FÌèÃÞƒŒPl=ìAòqî›î–ˆ……Wc×~:ÉÆnO¯•¾(Ô+ IÆÓÝyõpЫ­½÷š_%öW'‚”i;2b󃾺ÑUÖ·ì@ ­gwGg¬¡ÎŽøê,,4àkô/“¢€úˆt5!um«ZØOï| ¤»ä{ÆÏô!¤àÞn£z-‡²{9Æ1ýë- ‘,-GŸæ°„Þ==ÝõÞÇ•ÝêChÞsÏEÓp;3Ó‹·Ëμ3ß꫾˜ýäj+Ùœ­Ä%•Íñÿ©ÂîµëQû«'±˜EžÆ¡îpb0ÆE'~_ 2`5·Ùßî¿Í€mø@¶ oS7i1Fx[Àdz¾_@>l5ù¯no~±+hvïY}=¾†|Ú Ïoµ5ˆ.›ƒ¹®4ºÌðHhhó$BŸfû—À$Wú‚†}8ÅìUæ‚ùsúË)5§êpãk½ç3e\ömgÒU4ìT¿E®UŒà»Ùlî¶m&ƒ:â€q ;†PˆÕévýÿ^ƒ{ŽÇ|ï³Ï–öÕåŸe½dâqqn/=Äe»¹áÆv'ï]ÊõßÕmä}dÇåY2†oŒÉ:á8Î÷¯&,ÿkÉ'Q©¥5Øø_6F¼¢ïgäs9½:ó§Ró@yGÌiá*srô¤÷tÝæ…ð{›a¬æøiñƒ¼¼µ´ß‰ï;èÛCš9Mc§ãã;ÅQ5’jîÍy“¾0à}gG‡¤ÂÎwû3ú¡PåI<ˆ»#WÙ¢scCþå´EáAä<Ðm$„ÐDd¿žÖë¸ÔÑK­l¡£!IÛ=0`¬¿Ö&GâM ~ìÈÓ¿°FˆŒ9Ò~Ñêâü¿½x‰LÕë–LcùwÉ‘ïÜú¦‘7ä„Q“ S³E‹wÃk~Ó,ýßu`ó“k©4¥ë( gí3;?™½ öA.Š7<æßWWQÞó‡¿ Ú¬†ÏuˆåIi`N—–)bjT:?K030[°Ÿ1&‘äãJ™X5ãù’ÚG>.ÓÐ$¬¼F¡YxÜ™:rïó$~ÝÙ·ÉËå+wk¾V’ =hHÃå-@€ÄÍ­—†¯Ô–iâxñ¢á¤º2S#žÙXéΔ]~Õæ^°‹¬üŒÔÔë?šÇõ¬¸aâ)ðéÐtá´nPå`ëÁS@üš Ö½ wh4 ŒØvÖäâç O+€¢.丼 ·õ”×FÒ@— †•ÍæQ6Õ5 GGeDg;Êû‹•áQ ¯Ywt…DECKMO‰PéëÓP»ØÚÓm4ôÕ9•µÿU+EçUn7RRé¨hl®æ-5-B¢(h_¶ˆTžM"ØšÒfµna~p¦»ÚõëãyÍ^Õ©¯..ÏKFAÞUg¤öÕJˆ<•«Ðøª•&÷Ž:ƒ—±4³/›ãd¼Wk"ºkÿ42µ &µi6ÝÌÓR»[®†RS5‹dY—E²=®×1WÈ7„fªB¤tdë»"ñRFA,uiùÌ'léí—ßZ=ýZÎÑûl=.ÑçÝæØyÙ­w½tâNú ýN»;xÓƒâêyàÐõÎy㣹ŸiêgÆ ¡ÏʤºJ[’E%ÔIËUD¢¡Ix“°¤ÉEÔÚö—mHÄó¢¦ÖlÖ™¶™) ´öau `© @§ ¸ð)Sæ¹R²xS•d}Õ'‚‘/&ÐÓJÓ~o ;w–·_sÿ†² ðÏßw÷ûwpØ:ÒCC9ÎŽ¿7¶'Э$û°{#I)Ûi(›`óµGºzÒe†Ï΋âhM™8ó}ù4þÀ6a …-έ`û8v&r3…‘I•4~jÍ£XjUÑÂJ Ž ¢‘Â49ÃHÂÏ J…× âÖPÁ„Äšš}B£ÆÐ2M…T²ÛÉB­wP8:¨U;À—ÝyBœùÝ„À–ÓßM®nÃÃ’Á7ôòyÄ.õlÆa"è)ãìy'ãýü™‹²waHÆÜ9Mº)YüÔx5Âk2jQ°VjV*˜rÝ‹›Ð8*q>ððä‚A5öÜÑ龫Ò×—us‹‡~ Ë9£P·âåñø¿¨æ¶‘]AjñT#24~òªëÃýiGÕ;¬R^ÕõåW ¡ê/Ñ Â«øb#Ãw½å¡ôÂë@¤´ ƒ}u¢Àã‹ìËâlù=Hfï˿߲^“CËÖóý†n™MÜ¢ýÛÌ ¾O̧è2з9šî¯´ÝêC¯™¦{÷Q)p¼8©ý†öpBÏ&vüÐÚýï“íMÿ‰ïŽ›““ûù½©GÏ”¥¿ïÊǪ"ŸøÄZþ;˜~VÌÌzEE²gòÇÓLó1²ò¬ÌÝll˜•»O°E5B/ñ¦¬=SbŤÿƒÁùN¶{à…ì^Ç[fª)a8,[{ÅjˆL*cÿÛi6 ¢faœõâõ¯Í·Në¨PËd=–ó@KX–œ¨£uI:*æê¯]ËÔ¸7VKœAäüDÞ#!mË%½G×jw[m¶f§÷£™nÄfÈéHƒ”£t:Ã핪5%厸êõ*Ž£qP:Ô¾Tҭă»kÆË–óvæõì0Dûeëés7“„aC­|Ÿ!†0ÞyM&]1Âpv°º×Ì_ÈÛ¢-ˆ›-AJÚþåëݽ‰lÀ;hA^ÒVvÿÂ[ °ã2b‘»êpÀeÀZç­ûX°œyª´í‚7ÔZU½*^lñ³~Ù\fŠyL‰^«V¢ Ý÷D½•eÝÜÞý9àÞ¹ç´awWžÔþOqŒ(ÃlÞtLàË +Gçc}lâZ…´™Mٽ⨌ÌÖ›Ìܳr2ðZå›õÎó`[óÇ…u¦èœ(SGeh=ú¼ÖÝÎ"mî^¢}¬ŸòÞ³6ýµI4ëÿf° §ù‰•„+VÞì ïxp@&ñz¾€ƒ«Üd/ ™âIUè ï|Sßi ò'Ù hÎHqA WÜòãØŸ€ ãkªíôƒ.ž(g 4”ÓŠmœ6Je Kãù/n•Þõþ+k[Ч:‡ÆBYþŒ‘„œâÖìµ×å=ÃãÁUˆV6çô®kÕýžž™ú½è­ÃðŸÃœž8î½}7ù™nsW#Ü ó—í_‹Ö y{iö´¿%ÏÆ¿0õ¸t±¤ˆßœž1›·~éSÝ0žëªýú™»ëIØÑï3; ·„w¯ž_é¬á<#}âåH/w²ð½p'¥g,W *´À-fYžbU2ô\ê¡<ôWÃÚVP!yïy²UœÍÜÝŽ+ÞüØbJÍ|]Ôû£‰6J²jGçŒþ- þ<äu”ÕÞr½NAý>~Gñ©ÛJåÚÍ´Óþ<´ëMC¿©ôðc¾_X’‰ûké¦E]³þ~—Î7Ïçb£ñ¿_¡‘ˆéþÜÝüæv+˜í©ÇL<öÌÉé’½§Yi5LO|è}zvtÕ;J^þ_Ü öjPqéÙwáûã‡N?õ~áÚ…†0Ä jX P_QÀIý£QÉF“í‡ÂPI©¡{s@À NÏ9l—0ÍæsŠvžmL]·.^Øò¸°¿ù¹™›É‘X0/Y 9›_räá˜[íe3€È´h§}èA>×nòU÷¹GuëV­›Ô:Æ»7Ò`™ÇK‚ô6Â1!üxãü0÷Àçe¿ž?Ûß=v£í¥úÛØ™Ø<Š_.Ö€í=®š‚·?´^MO<6æ¦Ôñ™Y±Ûµg''&`ódw-zk\\à¦[qBŽÔ8YW²'oˆ]u¹f[I[…u^ ™ŒAŒÎ×Çâ¯{aƒì˜ï¾ YbbÎ0Þqœ¨.$Ž ŸSGx:ø8)Kèè'x7’ž¡ðpV”ëÇ[®Téò[I8vDH®ôÿ‡þ¿ý)ïÅ[=g ”½FRAME ¸œmáVIddŽœÎž¬›%^^6Ë2máËÁð3›þÞÅ>çò㎯gòèÔ¹õè43Ñ×`øè)ö:ìðp¯äÔóÁŸs’qÑÜϸәðÚëÊâªýU¨ ¯mõÕ©ê÷í÷ý_« ·wŽØóo«€Çj<°¨Íâ| ö¿‰òÞ‰ø–Oì¿ ¨N£àÆ~ÿìÀÛ-ðæfþN!n¯íÅoúÞIB:¾ÿïòÿïêþ.ß ßÊ^®îÏ­ñÛ·? àˆJ|Ãc‹bHæ6õ›A0}fˆ]t”0äAËþ½zE¬€&bJ‹Ý–Â\[Òp¦U©—ý3„s÷Ò*\Ä»Ñ&[V ÛŠ^’¼ˆ> TùèØÃ¶…ºm`p4Ûð}üç90©$ýÿø‡±tØxë”[™“¢‹. Ũås|´/~żSr=”ª—GoY•îžcjhôl´#sÆH)~ÙïÊW«(Ýfp3ÅИ̧õ>µïãE·åV[ËË›Ôús¬vS†ÓE_À;òàñûl8°‰yfUJ²ðÈýOG„<Ÿþ¼‰ôÞ¡âxo`àe*}B&Ü'õ Mßßù½„ý—l¿nàþ¢¥‡RÅþÑ›C*2h|–F€ kܗȹó*¼ˆ =øÒÔÄÁôÝí7ýeºå9£ÙE‹øXzŸ zÈts 97^Ü #*ï² #1·“´Ÿ&MÿN'Ð>˜‚¥amÌ ú [OéÏà ”å‚*ÅoëX>ˆ.òÁfk 2µhßû`÷kÏEµÏUö:«ü_ªogà)˜³è•·-e)C-“ÆLnk!{NqÆujŽJåâÈž`ëZ橘¨–í¾¯0†7«_¶`Æ‘¿·óå·û÷/ßþfoÉó0c9—í­îå?Ih´‚ðÅü)oHÛ‚Ó­xÆÜ%iû&_1tÉL_(f |¹Ôlb¢ä†ZÓ›\E5+Â¥ÚVº]ÍOmiO-ë “¶žäê³L“í1jVò"•^r˜ýã¢ÞËÏR»ë›Æ‹4léX@bÓû…Ͱý«šJc}vj‚Jã3jßÍÊ~Â]ë'SiíÖD4n&ñ*Ñâ‰6€¦~¬çž`PÓTÞEÏi­âÿTÐN—‰„{¢?gªuÂ:[2Üûk³Îiÿ8Ü@4¬~-õ_ tÄÛ %µÈ§ZÊñ~Üp^‚1'›‰¦à‡ø÷£Ð›Úý{?ÙMzø¯!½oÀ“k{øIzò;õ[WŒð^q/œ±8zÚõüZ§ãþ4h>ÿzzù.OƲ¼X°Û/YvRq¬Ûg³Ÿ_±—P¾uÔ1Æ´—RÓ7Û½2\ÄŽ¦¹»3†rÂË÷»ï;+-¼rV§|Ây: Ê„`ÿ ¯ÄÏ a¼>4 6ew#€x€gÉáKËk÷r"…9¹ðáã‹åkÖ?§ÌFýè¾c½_â‚9&ù­úúµ$ˆJ<‰ÈQUø×çhi¤ÝãÀ#ân£î¶Âs·nɆêjÊÒåÎe³ gåNì§ÒæH²×x¯¬÷^=ôƒ8’óÜM_³û¶ ‹Ø=rI&Á`+—S÷>‚¢…db=âÁÊv%‰GùOcpœ™›™žþ_û|TN»žÚm1g1;9´' ʵÆALXTS.±DV`UÈ÷$½KŒÁ†wÄšC·óÙô×~Ÿçñ„¾ÙxžÙžkhÈäí¬»ÆnLs{cYŸ3ÑœGùœš˜˜Œ#kI=˘ž]æúÛ¯7¶³xžó\ÁÜroÄØã>8l±˜o/4î*^–F¾yœ6G׬®#®E*ô»ÑL›‰ú]:K7‚Êè¦ñeJòÍÓRa^½¾Œ ‡[×»FRAME œmÙÌ’ÈÉŽgOÅ“d«ð¹,ɳç| æÿ¼v|’ï—³€ù†š—>¼Ï ÀgÚfxè;:ìðp«>‡ó¡ëœäœtw3ó‡3öƒÆùÁ~¯6 ¾ÎÛœuúÕö7çÍo½}§½íõÜì··ç. ŽGØMÄ”_[éh‹È|Áœƒ‡÷[ñ¾ŸÎÕ‘Õ-LŸô,+´Ùéêý_X˜\0æ>à Jùß½9àH-n!ú=I?ôN•†aXØF¶ ø&ßH#À1Ã÷¥ìø êÔõá¤]+ßÍHß’ÞlKr‡¸ßä@zHE÷Iâ6Ÿþñ´IзÝÙ;Ž%¨3‘™Qb¡ÿ¹ráÑ/Çz&åi»À›h ýÐ`ö¹hf— Iõ}@J,Cy ÞcÌc­îÖ5"º?ºí¶…Åö~€Ÿ.ó ¬zãðULF^.mFˆF,D#e.ÔfáC71µ>õÓ›?ˆ‹ï8¼4³M}k'cÃuþ »ni G…?âLòŒaŠßƒ“°k"w˜çgxûæç›²¿ý?ãSZ ËH[CHGjÃIßßiû3"W¿ö‚œþéyû™þ=øõ,Åþ†[¼0 \Ô0_Îwí hA| 2§€ÌVPG|W/ÿ7ù´€Ý w¡…úZtÁ>™0ÁråIÿ{aƒœ¤1ƒmÀ}…‚Èè&eÞˆ-¸b÷I+ãìP¼}ÿdE< žbÁÍç~7‡¸Œ®aL¢0`Å┿-ïás ÖJŒŸô 9÷µ‚¡–ùÃÌ0…㜠M‡o—©莅¤Çõ§ëÈÔh…e‘ê›&uÀß²Öß`ÛVK\Í­ÞdÓ2 7‚£_Ê[hÑÉlŒzˆŸÏ2ÖÞ·¥î®Ñ†D£*gºê÷™D‘ÇQP@í…gXu¨ÿŸDÛ'©åõ@‹ºŽ©æF±îÛðGÿ³ðÌSj”ÌÝ ¼¿`Ïß.昿¹¶ŠcH@R(_Æi>Ýú¼—Þ=eµÆ}j—º3«‚{€]³e„6þ~sé [ŸæG½/.${/š›ÜF¾m2È>ïÖMÜÛVû›¶’Ý0pnFšPõY±$¸m$¶§†MWü¥$ò6•M·¯kS|yÄA×;ÀöÀˆš•…Sš¾ÑÛwá·”Œöõ|˜ø±{Ô!9|øø©F»Üý—±¥Épø©…(YÃò'ñkËzѾ¶/ª!Ê|ùíîB²¹SúN]Q PæôÚ/ñÄdùNh T$ s^£Ë…¹q¼„»˜@Xìþ*þ¿©v¾_ãúb=ݯ¹ü z±/øþüµêdãÆ%Ã~{hCˆº] sÇe¢vq!Ƽ dù^ݦŸ»û“².‹]wvçÙ«#²N±ƒï´Ì¨#¿sÚ½û+Ü©'g >3µ? ^‚¯–_s*^Žg¸A…¬ ᕬ+ƒ—tMkpãŠóœ—r¥]ÊçrýsQ*·¿t߃³+•3ˆó˜Ñzþ5_‡Ñ¥æwæû¦ô<þ,€¤ºäÃõÚç~ñpÌ™_Èì%?e;7>áî“=íšØ±–nù‹¹w“}®¹‰¨„q®<¸‰è Ä9qˆ{ÿ³÷e>Þ}~ÁYº%%¦óÉÎ)¹ðO•r;9ŽI.zYFH0À©þ!s»ì_æju‹O©;y€aI©Ù‰ÍfmR¶,-hYÉ'­ÎÍ)Ù™• ÎmŠ×Ü­â‹Í©¡5[t`1¬œ_"jÚa2nÞ»¨q·¬L1ÿñþB;?l§Ó.Þ6æ°¦Z1ƒy¦µcØÌrÍÌLêx¯”f 2ÝŠ;;dÎÙßY sxæbµsº,ïÃÝ4Ì>ÞqþXüìcñt®]Î!æ¾% 3tº¯ }Ñw•ãè„ì…°_à©C[0FRAME xœmÙ$²2GNœÏÅ­’¯/ ’Ì›xŸÕœßÇÌ볯™À|Æoäà>a®%ϰgA¼†iÊçOqðuÙáÐìÝ(zLÎaÏ's?"MŸMÛiM²áI°i¦’iDë94I)ZJ›-H”¡¤Ã4š Tü •ÒU¹}§¡»û¿½óÞŒ|/QX!¡ßú—òãþ¿øO¥iºŸÔ?Kz»½Š;“ùx§¼ê,M%Ëà€“†ô|¶à…vâ ³£ä.¢ÜÐ&Ú*i hGËÝXõ§æ ÚüÖ•×ÃwÝ­ÚPM·ª–-Ј} ADœñ.€{u*—(ƒ¤›Š-÷V¬Zš°1øv/ä›ÐQºÈ N¯ð˜<ýæ:¶cG°÷Sk™ì†åÅ~|µ\"=ˆ$gvÅÖO×Q­2†øÆx™*÷aú0Äå‰ÐEëW†´R˜ŽÜ„ðÝÁÐk, Ä ‚±a¥ï|4NÚß_!‡(bnPýðkáYFPÂUÃýÆì5¼F¨Ãk¡¼ØþK¢r²‰èCýîÝà>áÇ×G=ýêª=_ñ±ïjT•¦… éÃ\x:ǰl!C%¿^mûf’ŸZ~Ç??>Æ{0ÚÿýÓ³ÿÙî™Çá7˜ÿÿ¼;€ï–±ÒŽþk¨«#ü»¾]ô¾oç}&îÍ€§Ï!1ž¨v:•:ÃVU] Mé9~Þ›me)dá}Ó¸1?-×eöP &´> ­±®çÝÝÌ6w7*°¡f¨n p ×½h~uÅ­&:"#»Ž#1ÂŽaôh¬ÝOo_zÒøS=xñx&èsßDnT*/»¶½0²aFºd*rÁ™§g·oE°rtõãû·wg›Ý'ÛçÒ}=LÜAIU³È¦BØl$¥´šÇd¬qmµÝŽ<Ù#mΛQNÔÍ»m–I†ù·Î:7íÈ꺓1aˆ>>î­Oû£¤¯Çõð~ýœàrëÅíÝ_ÿ²øü_:ØF!ì}Œ ¼-ßþ ËZõÄfY@žï† #ïÿ ÷6Ÿ^AaÍlÐüж¦ýk¨`§`¿ë˜Ì5 ÈPb{và|$s¤Oº®r}Y*ÉœæTq(ÅF^¬O{½ÀwŒe¹Pt§v_Ƭ?%EoضuVWA|‰üš›íUØ+Vw2,ïYÜåÙ¯-Ë˜Ç UE¹Ã7Ü^µ€SÎ:yëßþþ­G³Ýñø-¡’t§ì;ö‘ofpæUçOÜ$þýMu;:B·ÖÉÖÆØaœäOSLUЈ ,H +€®ørˆ…KSSš›uj¸«&‹ûfsÏÏ‹üFRAME „œlâFI,Œ‘ÔåÌðŒZÙ*òñ™,É·gÆõg7áÙ×aoÌà>Ó'ó t.~3¡™ðÐÍ9\èè>'ZCÁÀvOÉÀyCÒfhy¤;u>D³FgÀT\ÑÃU·Wnù[uoZ·¹íVúܤÿv]^·íׄPõ~•ÌþѯÞýü-yM×ÙMÖý_ݸßßÖ\ݘžò·„ÁéߟŠ>8ÙÙóA‰°¥gOܤ¾çõ"^#@ûB)‚kñ6`ñX]¿}úÁƒ%·Øx«B€ê0ÜWµè¥äYÔÌÞ¤?¼°¿s˜»úxD#þ“hÖóüf$ÔTh\™è}öÃûð5`rYiñÃlÌ9òMë*O`$ûDȬ×&~=à­ÿ6\ø‚¬âƒ3Ušo€Ó™Z¸±FåÎo«CÅË6Pèúë!~QÔªðÌÿ(¿r}Fc•ŠÃÞã/ÊvüúN×c¤Ã©¶“°>Kà.âyÀLöKý‰îâïÕxsœŸÿtcÒÚ}i»£k!—Htʺƒn=ÖL¿qz£ÜÌ\ÞMcÎÂK…I×øc?©½ Vê–-¨M0.îõ&ÁàáÔ?Ïêô×Þþ© µ€ïÙ,»3V­yÊÚ_Ç·#=_ýå¼lžžümû¨ Ò Søíû§r6Ía½OÇ}š¼÷OµÇ@»r-ý$Lö?ei¹|Yÿyè¬+:ÅŽ½¿ØT›ñ!çÜ~¸­íöAûÿM1Ì£X`3Á¬‚î›Ú‚ Ë@ò€)‰‡Øêýˆ ìÎ8#üáq?žðèn ü¶~õUà/Æ F²ºk#Ý»¨s4ûG˜åê—覎c¾ž9ÏþwŽ7±6°û†ÛƒÍˆÿûL"‡×._œEƧ¿ÿãɾÎ" ŘÏÍc™?õS¬ÇÇü÷ªWœ µK±…bG"9>öì¿UݱÐA– ¡ý«k·ð®Oñ_t²—:©²ŒM Eº˜†GýuéÈø·¼…¤··¶¨: A‡Cßcóò?ï§c¿ ª¤9” 1=+|?dÉ`zÅ,ä„™®ÉƒC_Z·ž?Øöi™žÚæÙelóýý;ý¹ÈÉ“3\þäãq0÷MO¸"7½m ³¸h{æéÞ@ÌI£² ܲÑ4ò]}è;Âg2夽˸ 'ÊñvK  Ñ»q¯àðÏÇ’BÕd½SpL`Û`–YüN*ðWlÏòkx]X~…ÑÀc’Î11L:º¶ƒâ¼UUU Ð.o«°ï EL‹Ø¶Û÷ñ½oåq¸6šeÄÊvTÆì[í+Ø-Ý-?i—ªP¢¥Ä9CE(4ËkM¦ÓP§ŠŠ-6™^ Ó,sV×3¤ÖF¹«TÖD׫K"9°œ¦³ºÑ÷Óhã¦Tåf”V¹¶Ôßð?™Íñ¶P+¾Ý5Ý'õ|æC™Hül‹&-nÎôè—³áËÀŒCp7¥'¢­A>®çW­)óŠ…L¡¤Ìé FRAME Äœlâs$–FÄâòðŒ 6J¼¼f²Y¯îÎo3€ì;8(}¥ìà>Ó>Ár?<ãëò™ÿà.}œè\ùôx!ÜÈPú 53sß'‚ }Àš.ü:6—RH¤cvÒR„œ-ÑØ¤šQ;h&Ù,æÛIºÄŸ Ó-2ö¿¬Ê/jø_JüßÏðÖÎd ­~ü"°~ºïêÏ/nÏçþ?îþÏC.+Ç ÏÖŒÄÏ£Ê “Ö$¬:8Oßêw£ä`…h<ÒFx‹kÝM–Ãýl¢ ‰Kv¿¯ÒMÛ<9þû0ø¾Ûj7‹„3ãÉñŒàuŠ1ª35Ñ©M€¶ßt¡Âmkɹ¾û¼å³Ÿ=üª*¦øÃá3”̸FûA.ƒ"ê6N;-ÔŽ¢›Ë?ïÝk”Κ,¼:õ|T*Î;Žûo¥æ˜-¦îÏÃbl.1´\~ o½½}n¹ÿ¸‰>Gn§¡|Õy.8¼Äß¹ûûOê®+¯Œ©ëËö1*ê¢DÛB3,1ÃbÓÿ±ß°€û@AÜÂ]Øc^m†·ÛøPZ-:mÏ4‹\Í¿Q"ÙÙ¸÷ë4 ~‡ŸÍþbwü ¯¯¤@Æ©€³¼Ý ©â‘XTdþ?ŽâÐ)d”ÆóÍÓíâ<ú)ôµÉº8õ'LÿŽ•Šè'¤ÉÇÿ°·åf2j29Ò͙̮XÑ5³M@±cö?¯¹ªâ‘‡cPƒ·õ)që5-&·àX9`¿`Û¦FÉS×iöÎ,ñ>YkÇ5” Æ1Ž£g¹wŒ¥hé4#¥xóâ¾YÇM!º` iüb–Á `€¦ LÞgòÚ Â¨=რ`ï|„0`¤¥ujO˜ÄDc÷:™°ËM HnåÌ0Æ+²éÉz;´´´•Úä'Ó4Z3~¬?{UfIOq–¤£ GŠ­YÕv¬çW¤±>ƒí\3Õü—³6rüÈ_¦~õj^îë}9Ð+ŒÎójÛ¶íÚ…FÝ@¤ ^RO‚xçá0I-È)|¤·ëòD.#)¼µD®¬šI!5Õ]x©´Ô:‚ bøc¯(ùh” ÑXMüq³j0ØÅéZánuÕ(’èù÷ñ¿åá§œK‘ºÆ¯öÀ‚ÕùL9çèTJúÍ+9Ál§ã^Þ=}´¸±n¥½^õ©ß- æõ ã³t1ËÄnÞ–zÃi?Ûï²úeXÓhŇï³+úW²Ÿì¬¶5ÛêdJeIÌÞšà«X¾)UjV›FRAME œlâ#$–I‰4œÎâ&ÉW—‹fK2kÜ{³~çZ@·æuõùœÚgØ.~f~>S?ž¦'¢Ï!ÂSêuاµò‰á£œŸO§Ü „x÷ɵÛ.Ô›%TÙTÚJMª”v´ZNœjv¥­ÆÙ6Ù±4••ã³û¾)ÃÒ‹· |£\»ZŸºv™†¿Ãô¡ëò—Óóë|A6&±7`Wþ/“eµZ¬+ÝðT)bu‚Õj@(ATüõƒ€%ôXo÷@Ìß”5Vceûéï¦Úxfô³ ˆï ÷!$CöàŸåèHÅˤÒÚpè_UŒy‹«Ôù !®0F‡ºÀƒ‡òÕiÿXjy¸p±ž~º†aá'Q»‰ æœ<—¸Ó&œ8âëü— ?M‹¸kÀFçæ1æ––e¸±èÄG,r]ñj«ÕÊRÕ/Oq­ê4îw÷A« G\pr|—Ç=±ÅV§®©Ýæ,Ç´Ê÷Ï„ÿ{ÿ$-ÔÔÐÆ+é…x¶‹~Ø£B?s2‡srÍ:¼bð¬$'ún”O¸aÊŸÌiìÓÌÐYÌÍB!°q¸ôMDï”Åæ%͆”³£y#ŽÂ:DA eZ‹múÓWÈÜÔ¹Þ¶”··† ƒÌ/÷å(w33ùÖ)KÑ*嬼p÷ñ‚—ï¿SÌn˜`·Ì_¿1°Ãž¦å2æýeÝ9—©­Ÿý}’¶)=ï{ÝKG&ÏÈÍf¯2Õ‡2;m]úZÄ­72×^«ö3qìG‚¯éFØ…ù—›«KYK^iS|4i›0cþýèv­ãcbˆœ‘ß•v»¡Ó°(Ÿ1ü”áK0¡ñoÿ‹ süá0ÆÛ¹—2çï|…þÍé],.^3sð˜C÷KÄ™OŠÙw[è1‹üíäbÓ±¢=¶Þ.\0He È &/”†åËèÁ˜Íï•¡øñ»@S™G)h eÓf ¶Tåªe.lô9µÏÜy—)[[ƒ£œùžñB¸Žw E<]ÂcÂÛ k;wó7ý °Ü(©Nm„{4m¶òÕ¶ì¬Þ¥¦æøîã"~°fªgö¶Ht“'Š©«ê}¶š7ɤe¹¨ž*ý=ñ^x2…1>Ú™µm¢¨ªíMùlO”gJhá­@÷/R„Ô ·5¬Þ8=ET„±w[énÏUêc›[meh^ ‚ 8%«©9är4ˆ=8Ô^Å IHHâÛËÒuDùÇ[-ÚÜÛÝq©üôôM}]§Vø-ú5Ïñðì½Nñik³Øïqˆš'?‰£’gÞ¯ÔËõ âïÇÛ·~Ý—æž½¦úyçfK³+É!yÿ}ØûýŸ¶S®øFáºRßâAD¯Èl®03:Uî¿8ü³Êðº~ó¨ÓÂ#ÜxÕibù45ÏŒîô-5·<œk’EްBSC­©ß³\ÃÕ>Ŷ§÷3ë»ÖŒ:ÉÙÙ{˜Üèïï¿ß|V )Ÿ6‹2vžè~I~Ú y÷V»ˆv}6%ï_º€'þŽ-¦ó²Œ’J¥“›™` f±|’Tái Ϲ â(‹³.~fh×;Z–åw<-fn Ú…¦¦f‹íUß–áKݼPTQ(Ö[÷`ä$$Ž6`žö{ô÷H®vòk æàV±’ÌÎEÜLÌæ]ÙÔO÷è­Õîó~mœG{#Ó²§:['©Ðõ0 ÀFRAME ôœk§S‰$æs:v–Y5d¼¼Ü¶d˳‰÷;8ÁožÎí.%Ïѩ笾ú˜ž_{:샧Ìë ðf—°Ð:3¸÷4<ñS$²Ú@ÆÓvšr$•Rµ$¡¦ÔËE&jA¸M&ÑÚ*¶‘RýÏ\´ÏÁ&¿.ÝéýI}-TõoµMºÒÍŸÛü¹¡Mc²Î=¨£''=j^ú«ôXܾ<Ç90óüýfÀbï\„Fµ´^0XôUÿK`¶ßFmçS²#$MG¾ê"òwíet¿ÌÈÙI2Q#I:ø÷kº*R4J)ߦüõ:ªÖ<ƒ©®tª~+ó;ü4(]måëàÛÕ¯Ásñ3iúÖçqþ ó"ûƒ ·&ÁÈûÑXÜï{uýL1G¨¨è€S…ƒuW™hQâ 3çE-¼RŸ6¿?<×Ò:/éè ªCˆ_ƾݥžD:Éõ]O©–²:Ü¿V†Ú/_ÏÇ„Z\8º ³ö™¾óý2öh¯)îU ä¼eûX$Ü”Ë|¼ý™]9žtJÙb` £uúø?? vëY¼«Êf/ï!/4! Žh,ô1ý³pÙÁÇý”¢wthù„5­nýµˆ›‡3\ŠÝÄhkïr”†­{; ~¬™ûöj~p¬«÷ŸëÜ 3¾[5îãñ©¡>Üwv»tÿþûâ 4åŽÑÞ9lÆG6®e»L˜…æÜôTÀPŒ·gÆ@?j Ó˜…¦´®wj1¿à#µOM~4q–f~zvuœ1~ò­^ub{–Å’Þå›…f·ã;ñ^àÒýÁÏæ+ÒóË‘fÙeý›é›^¦³Mjadö·+5Ý)=¯3yÞí“cuÂFRAME àœyÞ!²2IÌætí,«%åð¶d˳‰æwg]…¿3€úüÎën%Ïѩ糀óÔÄòøñ:ä ( út†©ç@Ò€øoäBÕª»ovÚ³kº­îÀµDíÀ"wëîà4¿÷?wçëGÇÿŽ7ggÖwâ ° p¿™ùÕ©CùíYeˆàg¿)¹ëä Ýù»O$¥ŠÖ‹ïyux¥‹<Ë] `¨ÔxiE@·À,©l$$mhú›Äü¶]x‚l²­Ö2”Š‘ƒ0&„И/I³7´c@i‰ùl BÐëú·Èò³è§k¡š?cew8éTô–PòÈ ©Î¿Ü•j\ ®^¾á­ãå=ÔàŸ'Âù”ahë¯UŠ“ÃK².„£}ÀgM3Ö zŸÏ'àÛ·Äí>ý| ôGZ÷­ã¾ý™gîÈ{÷%)»žêkë‘g¨Uù¬ÓMWd{ɆÖ|l‚ŽsëªÄå­z4÷ ˆÆâœæäÞÅ4ܼáhþ—û/1—60—Yy—ó)Ñ;)‡³^—Óeõöÿ~ÿ¾Œø3áMJ¼7 ùµ=’']FÇâg@†›ÑÐ|—¶ˆyõÉux”[km&ÖÛ¡«m”ÖêIŠKíýÕõŸÜýoÛ¬ªýøÃAoùüÙŽ>_—@HÆÀ´‹0C^ ‡—gQ[nœ›ú*2–{BÏ6·Xà$$Ëjv9`Ùú*:–’¤‘ !$‰©ÿöäÓ½:ìkÕ½õÔ¤ÂÅó8vs8À:7fÉ@G513Êà8Ëö¬söE¶÷½¬…hÿ½£Mvá›Þùfu¼? =âËàKÄóGýr<{£ÎZ¦1aŠ>láÔ½/¤¡ ÆÇ¿?f‡?mˆø¾vþ|°»y›åוë8‡çÕ»­t*",(@»»»¡ç“Ç=q£3ñË­ô U?d½MÛì[æ1©¿M(tí?‘Í~'ñ¤UÖŒdj×.+¦Ó9ð(º5öÖ2*šg\^ººØkS{®`Ɔèè1&³R\á¹+ÉÕkkµ÷«nòövšê ”‰Óò&‰‘ ©­„•’~=/ïnХ鋻~† SL4;Jb郙¦0Æ—jâÛŸ9”k¥ê L"LñRDa%ãßETFo*5¥H›&C˜ë‚ͯ«}ÄÇ®Uûâr¿ñ»[óö0rqTÄþ"xÁÀØ0·þ;t³>oœ²=äµ8›WTñ_¥ó^Ä£Õ3þî–w÷Lïuy¢* Q׺ªãhŠœBwÔVì–Ä·®cÌiãð‡·øzü=)ò»üYÝü|y%!×PNe¡ lVöi͸Ĺ„rI;½w—vò; v}&ÒN¾ÿ??p®Ü#!©/ˆ(JáÆÞorÏÞõòÃÙ…£ eüíÙ—¹ì»*ŒÕ¸Kffù¬Ì Ü€þ[Å Ý/<¸èyõ¨¾ïh¢T‘Y†ÊA^^ß#ö¾ø×§áû=»—í½#ºÈL ™ÅèŒÈÌ‘sîŽí:eÿ”¸bNÖ¤íÛáj7 0!{AÀ^E#y0¤²à e¸ä%B÷“Æ~juÎNÎMN‹N™™M»Rµ ­¬­^¶Å¹Áîh|ã‹ãpäbû2°ã,Åÿ´.KµSy"eË––ý:Ú¬÷±ëcÎFDz× apå-³3§ FRAME  œ|—ˆpW™å`“¹//©ÄÛÃã|NΞoÉà?9ú3ÂÁñ_‡Gž»¹ñ÷óN1Þrü‚< ÀyöÒRRâI1›l²-´umÈ‘´ƒXMH ¬Ž”^0}Ùà Kýþß”¸üex'üPï7ëµè$aè…ÀZ^¢ö£ÿ5Wÿ’«(Šö’s¤îI2\’wC÷£ôøb‘Fì ·zôÁCÿ;bÏææ¨é‚R$¾;4îæïì¥ß©ÝïÞ‚êp(ƒr±¬ŒÀEmÏŽ–¬)œ_Ø©i;&-Â"/Éëénö‘‘úð~ñ'ŸÑج>‰)W?Œx"ûÎPxo#ûqÛ­±aïžúžu ÁÿËæL½ù¾-ú9…FHÊdh2â-Âæ%áì?A®è;þ½²ƒu¦àêôšò±Óš…0bðeØeÌ! ¥ùHVdqýç`¢ wuãp¦þMŒ‚’¦)¦06¾`F8áû‚üçПëÊ;h^€ôšûƒÐ^ ÿl=»ÎgeE‘¬aëã»òÜ› òA²MSüe j“·«6m›TpZ£d»­bÊ*çnŠÄÙQֿшj'ç"€–Šô¶¾v?Á­Ü¡dJ‘Éé›}Œ†VÛ'ÌkÉÓù L!Lb1AQÕŠC1† fT2Ú†{òû»l¿Idé|޾©X•ârÛ%a>rK%]ÔôN•ôtVg *£«‚õqäÆþ'g_rDè%´þå–Û‹²» ~Mß7| C ç¡O9›À§âÉ<â×µYTQŒ¯ÑûÊ¥slŸÍÛ*hIWÃZj0/o±ŠšÜ¥Œë65Ùmd …")êå¾¥Ô¨¬÷¤å*xiOºS QÒËΠzïÁ"=lßQå$Ùq{ã sÈ¥ guwÖŒZ÷˱Aô_·œ—.‘Q¯Øä¹¤9‡8å@ã¸íD¤Œïõ7cÙL»}’λ÷˜Íw60ùŸPoÕ¸lß4žŒß3M5d¢HóoÖb¥éix|¼E‡¾#?:×;ÿ'…£BÓl¶ùrŽoìŠàˆºãpÎó½wv{§ÓÉ31(¿Ìn6xeCEfdfŸ»NïÇýáɾ©¿¯¾@äŽ×ö m»€»v€1°Û•æCéѹÜ3'2ŧ¦E§¦H­ÎΗ˜:ÕØ¦ùÂö½Çmí½„O\z–ÎAäΦ¬¥3yiéõ·ïܺº¥×)èFRAME œ}¹²;j8VY;’òü¦æÎ€§€üù½…ÏÐT|aðèS”ðuǃÇGx'Šz®„ðz  +©ç«­$Ö’œƒ ¦ÚM¶0… Ûl +cI!A (§ÀьϠŠÍí}ÕÈ×ÏžägÍýþ›Íx¼`Éÿ†ðOùä\Hå’K9,à&wØ•¨Ð\3šDŒ@Ø*ÂðŽ@a:U®àíã÷‹¼çäi Dy¿:¼IôÕéÙ9„A~do¸;é7Ê)!ÞŒüÀ}ÿ½R™E³wûpEw®\} qƒSø*½UºE7ŠRÞ×-¼R—ù™˜\¼_–ñ™„¼bkúvpEäR) ã7,šÑðSl–lË×ðŒÍ™™ŸÌÌÌþ™šá™1O¹lÌ Uÿ‰àèXò…Å`T§¸1úÚsW”\lüQý¾Ø}SGGÍö›-ãœS®!s2ý<óþwdeuÛì–YÔÇÝŒ>lIÂáxK?Ó?Õ'É.câýæù\ÜoWë™ê×íFÆŒ/2†Ýä/Ý4Ë’£dͤ–¯E–ÑÝ•xÁ— ùíïˆ/têÊîЇןAÓ¢i|ÎÂc%™põRär\p‘åâÚ]À§™Ÿ+?{Ôè®ëš"óÓ3¯¶Ôòñ=ÅšÇb­YîÞD÷R6+´gš(¼Ã]f«V;÷nxñï¨àsÇ!¸pákýFRAME 4œ}³˜|.žRË;YÓðqœ^'àéëž’çâ“zjÞ{…¡“Eà GžO· ‰çÔ5Y±BÍnŠUXЬ)öŸG#ßæóapô¾1h¯®çû£†Ãøù†×ÚÓîaÕÁ/¸=Á®Ÿîæeà4‘¼æ:Ž5ÃÔŽÍbgº'e˜Wªè¬DOÃü‚†6ì^|¿8@¿úÞƒñþ%bħŠVù¯ãë _wÙ m*_suxa b™÷úµDÔuY©·J5 ä­§^øìxìEgcå`YÏ÷àŒKtĬ_Ýœk„!©ÓD«²OùK:HÈ3%+±óhÑõiObÐ÷²¨È@Pµt~HÀ¹f üƒ z½µ|«:ËØI_¶s‡B¹¾g),Ðg‹ ÄÓŠƒO…ÏÈ ( <—Šø±!1¼–-²Dø4[\E¬Ü 2Ò¾UNQÏô{VÁ´¡ÇT¾è©™¡EF7µC»ŒóßÃÁ²ÕÕòˆ·Ô뤓º¥FRAME P }ÓŒéÜéæ³s§à9œO…ñ­ñž’çÂÞoIÏ>y2†I¬õ‹#{|.Ÿ‚“î‡gÌçWã!5:‡ÈŒ€FRAME ,¯eû߀<áŽ'³ðLvu¤oÉðtÌàÃÉØ? |«ª¯Mž•k-´„_Ù&FRAME 8­qvE~zÓÍø#oæd÷ö‰kîû:0öD<Q0öD<µGÁW¾á×ÔšíɵyS}ï€FRAME D­|¡Yøo¬OÊü 6äÞçê×à–ß3>?'£§ = àðôtS±<€>¯¨l’“–¨)\‰ÉŠHÊ]± 2ÂÏü£ FRAME 4­~´Ø~V=,kðGYêÔÏ™Î|ö8°Dö|NÎN4ùª#ýždw:-¼‰FRAME $­ß©ø1Û·£ðNaõ0O“O‰äø›Gœ‘Ré5Úÿd˜FRAME <­dBJü7×=_‚(NmüÛÍ{v¡ÏבÄÒt|E^ß°:)àUç*¨•_ö™‹æÇ®Cƒ­Ì\[ýؘFRAME H­|‹ßÀ7}wÁø!­·›o›ñ¼ÛÍ·ëÍ‚ÜJ)ð0 îp)ð _}+ê«ý™T­çBÝ‚•…ÖBÀÆXñ°ÅôÆ@FRAME 4­}Ž¥“#ðÃÒ¿7'ýo6óÏ?§è—êð (''‡ƒâ('$ʪ¨¿æ°”Ž‚FRAME (­~‹+ð‚<Á!æù¾m¶ù¶ð|RùïUUÿ§Ì°pFRAME ¬2þª ?N>.Šd1Hæ°™A¥€ÈM(Ö<ŠR `p#áèyKX¡æH|\iáLìyØÒ°ørM`QÒò/<°–ƒÌa1®ã_ÊnWVNXo«««X+OGüâ;žzê'ŸéÇKÑÉz;ÄiýrÆ7lqǾgÍ™ówÌNc Í>z9O•C€Ñp`ÍÇÍ™ófÍ›7âÌ~cĨ à¦ÓÄ\øÌ»y³q°-ï"6ÃÕÜbmû2ǹӵýÎÔ¢â=tÁgÎùö×;ðy…ÐIÕ•.a|p'ÑËú8·Ûú9_@>íäÚo!‹F¸¢«Gjaœ ñZOëk„&Žk…ï Ê/)÷@þxk¼ï'§'­ zÂvû½h¨ŽÊp‹:bi—¿ @§0-²Ðb‡'{ê–Y€FRAME ¼®~Ó©ñ¾~ ŸX©È”àUMêÕm¶/åpVtsã’@ÔBÈg~''1ØÜA”$»ì^t±NcQ´6SàÉ3#©Ó– 8åÆKwŒÞ–GÏ}Œg¼ñ7Ö¹K "6nfsWº»ˆjǽ¬†èWÊò*|äæòXB‘ã¨õ3 )¼äZ\¤wZ2É;ÏpOç©‚Ëžè'÷ÿ‡=W¦íì>Cáæiù™†¹Œ#¶¶¸¸3°ìbp`FRAME Ø®~“©ó z1‚ky¼Â3ëÎâå·PáÔÀ*ª ù™0â·ß¦¨05vzx±}mB¢€éwÎøb¹ša $@‰€hwBJÚæ¤M8sÞbµ$DœNòÁ²ÏÉ‹+N)ÏR‚“ˆžÞ³ö™Å¼ÿu0 ¾sÄNà9¨„¢1¸XZḠ·ô$xË9–+’®—Gé"b;Þ aºbñ ZiÍ ù/áSÉúbZ4ìf|Là€Ð:@hžã)뮺 »O$¸ÄZ•‹yJ«Ç‘Ôp“º‰ÏF²û½1$[Ûeg~€wÄÀ[ë`Ä‘/$rrrI¹Ø0‚aãŸ|¦O…H$~!ºF¬•ØÐWÁ¼Gw\½èÇÖ{o6…ä¶Å忼‹¬tVãáUÏ–»lòRžàíuãÃûá?a·ä’?eÜcÛ˜¬€ óÀÅé±ÍªÚjoX|?Õi…ªðD5QŒFRAME ð¿~S©ø>/Á@GêÅëž“í\ÊTª‹H¤ÍÁ’OžR%¨)Ë+ü–½à•‡¿É`ÀœfñcÜÝM@(ù Šýº?8KÑ[6óÐ Ð zˆñóï1»0a;ÌŸ,ºÁaý©œ:NsŠ#ÛÛ‹ åGÕÆ,~‹…t~ú|5nýÿfÉB®F9|‘ÜHW¶ÐÂÎw²”•ûFótú8A ñá7˜šm).Ú.X|±1²âÇo&E„­ª¦´Ò…Y>FSÎlú¦r›¤¶èO—Gºý}VD=f$…ŸÑ#¯¢EGÚO©Ë»„K/Á±‹=NÃÏUÿû`€†§Ð ÈeÂoÏ—ÓŒŽ0ö×b(?нCË¡42t¹T(nêÈ3)ͪ„¯væý¸9mó“¾ãE‡±Jaaš—õ6Ï2Pƒsäâ É¨ ¿WâDÙAJÂ?çŽyRméõÀדërZ(4í~¢â¨Ñ±MÔÞ¹šË³®ÛÊÎqŸÞh™¯]±.s_6>׆‘–¯Xî¡N£nÆ+ÎXgˆ{»Oà‹9qœ¸G;ÓíÝp®—hXõ}zh[½o`Þƒ[ך^É.¸€FRAME $¿~©ø±èÇ/Á8‡wÌչżÜܼÜܴ꪿Þõ‰7"tlNGÆ vrÈï–Ntúö /kB/[“&2µ`¦¬<”t_›b+ÐÇ£¢Rèéóºdy¶õÑÑE—£°݈v=œž&Ýçý¿vþ‡w¹kÓ…¾ß5'§ž£êsÁyÏoh"Ëz>øÕë£\ [´mÔÉdàz;¤àŸàuÍ·–ÀÊ]—–·†ÉôÞÎÊ^¼u·76î&­•I(ëä« Br¿n”€êMÛªJ#ÕUSj_‹USx›KëÄ=™¨ãÃ)-Í7V’'!Fÿ\{^3+ÏMí3ûÜ£.îû^ }~íRfO®¾›µ´ÁÅò+U“;h­æë’Lÿ°Æ2òJBJ²Ÿ#ªÈ9NõѸ³##ÉÒËss€G‰STVD' Á¥xùæNeEÝžr„"{(òÿsÆLÝç'ùð[ˆ?ýømWй?“ØtñEzý“›±¶Ë•&œ¨ê)î ¼åØ¯°zæpRé.‚>æt«cŸÍÿaïÊ™<õ49;Ä\K`pèW×sü[UH1’” Næ4ô¿OŠâ¹yמj‰9cÅAÐú¸×ãçD|¬~ésPrÿÐEÙ=ÅÍ“˜ÇÒÙó­&o†7Å9ym|éh“­èaûö,}"Õ¯d%¼È\5v"û_À‘ƒÍ{v!«L{©[Pú‡™FRAME ¿|ÓàŸ€;Œrû§àXļñ³ž}ù_$ò¾CïÕëUç‚ Û…`˜ÖO„6ILטT?FìóÈÆ©÷ýAhDçÝ Yo?c¹I:«òE `2zãZ)>òÚõèèq$Ìù¯B: `z4^´IÀج8´`°øÂŽŸ)]øŎ ÿ·È¯–x ŽÐÏ~a:&¹ YSMOfmhãÌÒ‹÷ˆ.]N?¼0BÚº€Òze>Ò¡Ú²ºÔ·X»RNr:{ÇŸaJý»¶-þø0E¨¾û@Ýt?0bîÀ‹‰Zjð˜‹öºÿE5+@ û¤mâA½Þ;Z6ÖŠsoø÷Äwy·q ?Ñ òtø»ZZeN’dŠº‚nå©xîŒ^‘µŽÅÕÅse)Ìçt+ˆpìλUn ×ÐÒ 1¯n¦¦§¢ó¾¬s©åÙ±› o`H½jk­‹-œ; P ñ罟5qY?ÑÄQf¨¹5¿ÇàzÖ›Îq›œ×pK7¡Ï ÊýÛšI„¸÷³4gç2è}:Ø$b×ïJøË;ݹ7g9,a.s¨a<œô]óÀÚ¯î¤9(Þ‰ Eùñ¹B‰ šŠ$£‡&¥¡¤4ƒHùAÚ:=õÎ,h_LpŒx (¼@iýðÏç…oªk4ôg»-ûûÙöìQ‘µ(`EËþ9öb¥”Üó×lä~—–µû·“@¢)þüÎòYØbß^5ɤQrNo!¾é°8Å0ØiZ•ðا}¯Uw»ì¡1}VO¾·Ð¡­GŸcÝD“`;Ùf 1Õ(³. 0øa²TÆ*~˜@‹rçôm£} ŸµöéÊ‘Š3_EÛŽu<Úg o;Fç®ë‘f"¦QÉæÕµhþ…³TvH°çÁ€æAå–ùË¢zFRAME H½z^Óð cÑ'Å?f%çž¹ƒôW-%Åró]*¤¤@,íMt\Á©ky“1Ã"r¤í„Y¡+>LŽY[m1ˆŸ >k^â¤>A-Yõ›íLÃØîî×rcÕŸ;Af •aª…Eí~aƒ}J^bñ)81IÌF•ÈIîK½q8ˆ¸Ü^'%¬Š\Qª‰ÊXט³$×Õ?‹”Õª÷#7wü½Ùe£¹ÏŠ+ «ÆˆÆýˆ(ãŠ99ÛwS·'\}ÁSÔ”'Yï9jUø…Ç“µ»®ýÁŽn¤„¬]–Ê'Kh|£N3‰“,ù‚\^åÇ´ó hÈVk8jutRÃ>8ž°[ŽäÌÄß›IK9O)ÍÔð#ºÚgæÍœÝ¦‰7mÙD“Ëg;Ã'“UÑ)mÄ 8Ü~wZ£D‚<¦ ʉHQm³)9”\œ zÐQ#°žwpL6Kù]§ôÒÈ i-ùÏ ›¤¯ºËúM4)8ÿµ©™-o°ÇïK÷_¸CCÞÉSÀBX[*L:ï;¦EòÈíÔ§˜jÑuLîŸ#ÖýÞCzòn)[4ײÞÓEJîO¾]9r÷ogÕ§]ÒïixD÷Ç{-”ÞA:!3½×³@dyªg{u AÖ +¸†]þàÆúî_ÊôTœ¸~‡LgæöC«u;àrþWõäP-{ºSÙ>¸ùe1ܲkÝL§Ô½‚›%{º“e5ÏŸ…zê×"Î8¿²- G‘ ,óçé/Ë:“X¥Ï~óg¢FRAME `¶z^Ìüù±äø§àfļóÑõŠž_7è¯Èuf}UËÍt•J£YUê^c\a‹c)µZr¾Ï2¹_jAº”i€¯ƒÎrÛœWMÓjõ&v³E¸ÊÂ;Í´Ä 4+ª¸=œŽœÇ‹òÐÑ‹‹´‹FéŒ`Àù¥)t,ÄÑØÑ¡€!]¨xÐí *D‘p¾®Mðâñ/kmsœ±q')ÊÍðédìV4ãrŒ·ø<óªÞîsT±Q?þB¦ÂõÍ$‘Ž‹îtAjaCumuš¹œ8CŽ1 LIÁÑþs—Áeª&úã°ƒLÁT¡-…CÖý‹ð¥® üõªËõ,-ëÍ‹„Û"ˆö“Ï5ÌxؼF1®t¶¼~Z«à°ö.bú@1“v{< · \În£ÔR`Á$ã΀)ì“çy2«û¶pㄸã7^¦)ÌÑ®"ÉéžrHº7žsŽ9rL¿S»cõÓ¼;Á÷® !×DD޽ˆê½(‘”H¢E;toöÓf|ë:‡NN ößV B¤fÈ¿·¶úõAGeRòÊBÉ‹ˆ_ÁE©¥{àG üïzºÓþ€¹S½ç‘ö«d¸’W¿0öKØg­2XÈÝ1Äop09m÷¾·Ó¥ˆ™ji§†Ca—•.do R-U8 ^¿vUä©OôI«î„Ûkð¨#®R1? 2D‘и€²߯‚Žu_I Ò‹°îl¨kÕS?‡Î$l²Üƒ¸±tlŸj›UÍu¨q…â!ayFáÖf#èì^Áö]"ÀFRAME à°z^Åüù±äø§àdļóÑõŠ¿¼çžÜWä:®§É\ÅqÊJ¥ML=¦ù¾ŒíŽ4'Ó:g)ßf žgó–`n‘„0yãáˆç(9v–Ir“IÚ«é‹4ÄÀ\¥z,ÿóA:·ðçá™9t3‹FÑŽÄÖ)òÞ¼¥Hjì•0c‹c_>Â`Ã]×uk¶`úw-FÇ^Ä÷¿g[¥­jÙוçÏ£4flqA³ÇŽw)·õU6ãïצc¥Ð»”‘ϺUlî`*8pNèÄ´ pá¾øÇ×8p·duãýÙ;ͼð¢TçûúQÂb8Ñ+ŠÑJ.£ ^ôñÃÿW6b5'¤AbÖ;Fö¢¬šD¢¤!@¤Ãu8p–<%²˜1|pë·2—¿šº$Ú_e;;;nÈñútH¢D[j$voÌ¢ERØër)79›þå4BÌÇé[(ªéç„|µ 0os_Ì3ÿ‚Â8 2 ÆÝöÌ+"´°[w2èïa׳º>{öº3Ý,ͰחÀ€Ø €ÑïM3½6ÐM@d ÈegŒ4•Û\k7Ö™ eòž'ìh`]3±£s•ƒ>‰áÂò»³\xüDôÏNØ1FRAME \®z^Æ~k|Øò|Sð1b^yèúÅgÜu^ÒçÕ_Šø5>Jæ+ê}*•5 ë®ú4ÆXÒv¶¶s}qÊyç}P,ƒ´£æ$Y[åCaPêƒÒ¢úÐñ¤Áþ‹Öùå—µ[.üÆèÐá ‘ôhÛd§/Ñ™¿Éäˆ.†ü¡xÉâ~¿ë ˜„Ûm³³ ]iWrkÕ?ß UAØ5˜ÆÌü W&\·çôÑÚ˜êîH(lÛâKí´ÓW4àǰˆ ¥øÏ_$äý⊠1r±~ßıᵦJîö¤‹=}ô(d‹—¯ _XÅd,œFàI·"ÕÇý/ä«öbr˜Ü¤ÒÅtáÍ„{ño2bií°¸Ívÿ«`œ¼JvP×?«µ}E4öZý}ißf¬êè™POýü²ÀIC‹ê…mf/öŠ!½€jU Âáˆ-»)daÞ àÔ~tfƒNѯUbÜ^<IÉä/™Ô¦ñÈ·’ÆÆñ»côH>l]AÛŠ;¸§#ãßDŽþ³ô(‘Þ6‰‹ŸtÇÝj$Ñ'ðëgÀâí§··NI³[ #zÑßÑý,ØZEêð_¼$--þ© ïéPK…ZO„Aÿ—PB( ÇvMÔWùvGv‚ÃÌ`\'DýÙ¥L=<–QÜIüj—9ʧÓ+wå×á±ÀdGìü&à˜dÀ].T­Ð„„z‚5’³²+³—P2t K4P­“v‡Ã¡—Cð}î7¢FRAME t­z^Á?µowÅ8~Ïw“BóÏGÖ+>±íÔù+ð_Џ%­öÛ3‰r@IF¼ruœk\ßGÐŽ‘¡ ï~ qÞ{'HÜÖ#û:è› Œ¬Å÷æÜòmݸ­Ÿµå¥Òl]|ª‡ŒŠ*5[ò˜WÈÁŠ0]jxèÂçÚ¦hǵ£ |ü½¨»bP.XsfÉêFç53k%KŠÅb¦Lc%±X¡ÇŒØE8Œ"C;YªÉv¹^;¨Ð)mû,+ñ]Ók–C( ªýp¸??þ ß<Pm§uz­ø•ŽìÇg^6?þ╎•È…Çä_I\¹s^¾£‡4qòèÃwÄÙ¾þ bæpáÊ«úz²R7ƒd ˆæÝ^¯´#ùV«Š” ë(«glÖoæŠ'j¥Þk½X¬ÅýX;´;Ýùè¾ógì?¯D.Om¾í“« m½¥ ÿ„Øôl$‡2»&l~žWD¯â}Êfi§>z 'Ƨ8Ä’žÅ;(¿«3 SzÄØ*Әㄧ;|ø¸ø¼^¬žY'ÌüU@M0û¯mDÓ½}¢E„û¸ù4H¢Bè/t[ÕilàèêíßœÀÐ6s=·@§Õ`¿E@Ä{ž²ûñ?DLÏŒ‡ô ÉôÜC4²…çöÀNtœýöK¥¡rÌ¡‰BÛÓM4Bi÷;¶í­?IkWu$@b œ@gˆL7 „Â4™@TcGu P²VÕJçIq*Ìä˜$þí¦%‡ªl–µSª0Ûã0FRAME „©z^Â8¿€‰;j¹|S‰ø½^§YŽ ›Ãšå4À—îH1[ìd±°É5FlÒåÔæÍš)L›¿æ§³2âlÊ×à–4¯€/ëñÞ¿’%¿š@k¤ÕƒÀ`FRAME °§|°áðù x|®'ÀèéÛŸ~?ˆ|Nï ϸç9úxŸ¬ç>ï©h©UJ”ûé+Œ2&žæ¦`D.D">#"²$¾lf¾UeJU¡Ú\­MÖÔH>ˆ–Ï|Í£®,%(‡<Õ¡ÏÇæD'Åò»#uSç]y¾*â¸*ÎŽí“ ü—Æ’_¡è§NMV:qxGÖÞg3AÅÞúçðöp{wFš±´m Ïÿ¶XùWg;Yó&ç2£„Tã~ñlqìGÀ;¹‚rÖ<2È0ç-¦…Ð[õIJ€Yœ\Øë¯2W<“æOnð›P€lÁ³Tw‹“‡2.œÙ,ŸØ^Ì(ã™æ—çܼnÀÄ÷;ŽXÈã$;œ×~á¶õ‚» <Ë·hçÉš3\¦*ï»T4”wB£;"€û6ùìv/‚×@BQÓ_u½úìla rFîèÐ,&OpYìµsñý”ø{àôî¯ð@ƒ¨èêÔέL÷¢õÍy+—«Ý~ ÛKÜÜÂ…îítÆâȆmà Ë»œš‚cspóKÍ¡bqÙ¼Û°®6ï’¿; jêfÍÍg©8ÒÒAÅåq[ol½sz?ðš Ùœa‘‰;hsû€yRi^a²C*yúËåÞÊ9hYŽýG¿ÐŽo$}2[ÌàäbYàg¡'—çÝ©ÇÈ;E ¼YD­ÝnîË3è ~`è.@Š%TÊfnè§Ôݪ§ì!ÝaÑ:ÏI%s¼çQý@/ûäˆÛ*|`G)Óß"ùñ:qÔwȾA÷Æ–iæêÆÛ’ã‘ôHIÆÈ{e856ð2¨£­àDá Ëúë†ôߨ“^‹iíBƒo%¾Õ 7»·/ô>†¼nƒÇ„®aeb÷ãŒØi&àFRAME ,¤|°á#‹ö |„¼>W‰ø=;8F‡Ÿ¬V|y=óÏgv};WSîñ>ãœây}JÄŠµ4>¥*Yª¨Ç”k%¼YeœÙЍMŠˆ¬šš8ÐHކøô“ SíZÖ§Yñ¶¶OC´ òÛÑÍèH¤]ö&$Ø Rü‹êU@B»¤’ì*r÷¸èÕhZ‡tÉcæçŸ¼.4uÍô‘©jBQÃ9KP›}¼OZ$mTT5immmm˜6ckyj}Z®õ+ZÚÍd7/­~ž†ôúw½´tŠdíØCûqä39õæh™œ¾Ë_ÍöÀ?it¢Jˆi™AAÖÃÊœç;›!v'h5†; j†&;’cú)^æç7ó¸FäÊ–“Iš)ªÔMm&’3Žt…w’ÜÜܹN{è7pqÞtûÒx&´Ð§XÚ`ÏÍ•)rɬg9':U7JzO«-ŒSÙTÀßU‚q1Å©¡ÃA6ê/ ô ç,¼ìÿæŸî` èH*Ô· 4¦J›™0@Ãæ‡›ö>~y÷Äb½Säl°ÂœºZ±Ç°»½ýãú¬*²V{oÌÌù¥š®Ò¶5÷Z…i×ãI‘´S)©ûþÈHOˆQ„ú (0/“ÐnSÃá=ò%:xSÃB4wvQ£•‰œ^¯O-…€¾¤~礘Éû§´{w¬?¹?Ô@$‘WÞÇ: ¥¹‘éÍ7$2Š^¢‹Æ¾-9TÖå¯ ðá‰áð“Ťì"|/cÀYäÞêñ¾6ÿ‚cbjý¼I|Ûý›éB/t‡Ò eO÷÷B;Ä€FRAME ð¢|°á#Œúì¾V^+‰ÄüÝvÏÖ+>•\Õí.~f|Mø‡Äà~ÎùÉö]WWÃúŠÚR©(¡_WÒÙTh(­§Ùëz˜h¦Œ-‡–•†špáÃn ±®­­¥k·}úòoÅÓwIë~–ÊÔ®¢£vÏÓˆN¼§_¥º}Â3ÉÒ€»À 1 `ð²ëùø}JïŸÇÄÞÏZûm¡ô8€ lrë3']m˜ «Y°nöW÷§óŨKŽ#Ç$ëŽúƒw™= û[eÑÚ+¢x,•уÿ Ì]³´7qGœµÛk3ç¨åË(R…ŸG-ÖÄ×úü&$ÆV_x¾ßönÝÅfÁêÌU‹øož×Ä@»•ƒ‡×x¼>×£‡g}_7®þÏ3èuö™ñ7ãëìUWÃúJ«J’•U*‰j¤©CŒáGœYÈÀ¦’ia¢je¨¹Ìœy È ˆ˜ª’ɨ¢ª,¥S™“÷;ñ8ñ¢êY‡ ®Š†,\Ê(B5,U\d0r)§1‡¹è§À&P 9!»ˆW2ñ$'5ËgVLE<@ÇDžÄTèS^FDÎV%‹–¬ÑÛÑi,$ÜFÍ G)$VË©¨·ÆxÈ øNâ2êäò ½½:uDª¹«J%XŠžbR2èñ†µï—ñ×)jˆÃ,oÛ”ôg{Óä<6ós5úùIÖ‰½¿Ûð‹c¢ûÛPLð,Û=õ“á·V$fF3¬]/€€€€a°HØÂÚE”‡M2úB‘sc€@1ÿ×IÀGŽ”XkÌ^zÓ´Þz ±üˆ«sbû6o£lß·lÉÙûÇÜÍM"8ýÉ> iÅV*Ãô<*¿ï®^Š(Ã’ú“^V¢•x—K§ÒP]›‡K¥¯ za¤^êâ “œ¿Ýìö{ûN±1â,€#Æ¢€x3¬ñ¢ˆ5 D#¨¤¿¯æùiNgÑ`]óñ[•äi(Õäqê§t¢óDîs®¿qÇä–Œq+vÇÂ` ¾âúÛöò®Ó÷—777$±¹¹Õ}æÏ£ÚÚù8:ñ¼Xõ„øHLçÐ §°àЏ¸…¸ ð°`0[ÐúnÓ1P¬÷§­((88KHЋ¯¡_”WZÙŽÍÆ¼8¼cÜûî9ú{“‰ˆ;>¼3cKÂ!ÖÎbÃဠ¡W yý©õ,çÊÕÆ…«bvÿêÃ’Ÿž "ÕºÒp¾·[­å·¯×ßÙ7Ù=:w­[ž‘]dVâf|¬|ÁõW¡°kÙ‚u˜ «ÈíOþ÷½Kί•*ùûñe˘Nyq3´šO±?å*þ¿ôÿx®a?ˆ ÂMWb;¯Y;‘ׯ^·¿Y߯~Q.«ñþ. . ?W©ýŠ¢`‚á7†O¥\ÕÕŽòòr|-Håþ—ðÏ‚dÃB=UèÚ}GÓÒ$ᜮ®£w¡žÛ=o ê¾ÃÓƒÇ ˆñ_Æû†£î%\4†XFRAME |¹Â±ŒWâ°IÕƒ‡×s2ýO'λæö=3ë?#©Šy¾o“¹Ÿ~>Ãé9{wÎgÄ)Àrû©f“V8êªnꪑV*¯«+ë]BPÃ!‡˜™G¤‹é ˆ¨«Ž¸l&³h&%Rb*"€ª)¦óL³åJ¢¡GœeÂ[ìªÉíF©’YãÀ6ät(­%”,[B6¶WX66Ó·µáÃu":êBJpüuDíÖ‰\Ð ¥A¾ì¾?À¾jÍ=~î–q®›rœö£ºA¨}ÔòÅ…¢g{d·›I¹7sž ø¶îKiÕø[“$aÛ}×L™û<Çí.ÿ¶ùtüÉG×kN‰áà®Dlº¥1¼Ûoßieü:|Ök+p^ ê|8y¢‡c½‡EÈaÑű!’äÊö.|½„µ…Å #¾GÏ_`ÎÆÆÄ,Šþ ÌkaŒioìllJw¶Gqì™Ç¼ü:Öþž_'¢§?Gåù==|º±/@Ë`j&תñNgé>:…í­Ç@U¿ø‘Uï]Q±ý&Áþ“b¨ç8ûØÏ8þpñÓ»‡œç à›D(ÞDDNô±öÓQ¯¥˜îfFÓ1Æ$ƒ‡¥@•ÄCzuí»Rå0¶–¯ ƲÓXJ” }p·“Ý~7“×;OJ–PÐÐ¥õmºZ\žPÐýþÕ§bõª†-¤µkoã¯À:õ@ÙÖ¡Ÿói/þ ÚÇç×ÃàðøûÀ×u(«-β<Î ³C¡–‚RÉht/¡,ØCôyc¾Í¨g³H7www`-ƒëöÈ›R›‚ †pP•Ï舖%prB ç sŸá&¬Ìæ’¨añÈ'3‚^Š@‘%%L…Äâ‰$ÑËÜC¹¹¸wŠ[¾î%ÝÃ9š œ†îæ Ø÷p›´$Ï™`ßf©æ_üËœÃ;ÍĘ—n º°TêæyNô?qôæµ³¶Ÿàøèþϯ9Ì×O©&'ñò’  ýÿê7Ruß»ÀúÁräí)¶ñ-2i£#ýƒæÐf\­ke¿ÿ"§?þg>Žpzáh `Û]/üqnoû[’fnB8í jñãù§™(¨Ìüüå!KÌ¡ææ4¾•/?2T¾ô½¼ÿÒó%gܹ€´}Ý`:“à 'Âñë›wñ'þe—£æŸÐwÿ»ñìfîý¯{]m1æÑANfbæ8ÕHäì;úÓOÚÏô¡tn4½èðØãŽ8ÚˆJÝ¡ÿæîænæù±­–µ­ÜÍnhˆvðD˜Ñ:£ è:ÀH#F:tèÑ£F4éÓê_ ¯‘|‹ä_ ïžo‘½Žù£Ò£FŽ ès.yÞ®RÏàÞ>ÀtQrB.à]¿µÌùÚÖŠW t=Lm_Îësþmü»×û6ÖÓ<ÇJª®ß¯×ê%âñßé7£À$š:<>ŸAð¾:ô“߉zl/O?ÕÀ/½îŸØïiF>0"E"ýA`A‰EB øþú¤ü~/\Èô sâèGã¦ÕÝÝú­ZšhãxÝ'8I%¡ùÆa<{¤§‡OKà@C wF0vãx4*B ˆ(FRAME ìœ|±2V1ŠâüB :°pùYs2ýòpêgÿ«Ÿ|ôYõøNyçžzš;„gÏ—œÏ9Ÿ"PSÝRÀ`ÜwÅ H &=¯xæÑB¬KAÅ»Eú0àÓŠýZŽJ³Q‚ª¡ªz©¢üZc[l:8´W‚œªÙß\½³MkÓn—ÛVÙÙŸTݧŠÝ:mÓ¦Ü\5o[çza·‚‚€ä–°&*Š£2ØÃ`ú1êó¢s% (¼éÖV$#FlXˆ[œ—9΋Yª å-Oj3<(94fŒÈê'ƒ€Ñ¹Òs':Ü ;¬ 5«Ò=vèF]%`¾Ê™ÍZ£ÞC(66Dl+F×n“6¯F„¼Üppðp´ Åæå+vZï2SCY „Ö^+!–MNcQq²=D§A…RÆöqhC£0 ’ X&E‰¤ƒï‹yʺ §ö_jßùiÅÜL[•»ŸøÞÕí¸¿CŒåÌ 4yŸpÅ}•£¸G~uÏ´‘0þ´äüÂfÄ{0e0üòtW€4.âÐЊ=hhhv&Ň;0|=ìà ‰z·O@e²gûÿºz^÷±tWýã{Û†GÊ ñœ?OOó¡‘ÌÈc9ÍÍØÇ2åÉ®[Óz:Ó]y¢\^hcv8Ê뙊› ?êgqÊPQpìlÎmùãE6ÙÈ2méaƒ(»œz†Î2 ä?Ø ‚¢‡88ñF)(ÚËÑ 6DÀ`™S2 A;™"HB% 훳ƒwÛm¶ßssübwrƒ)€H¿½ÿÁpsõ7lx¯~"óJæïJê_¿¿ßÛ ‘zpàÙ¦™OÍo=d,£@½}¸×©HÝ”.¡d`ªÿ4h‘õ0pJ¿ÑH|þygWCË«ò_œ™ïàX–ÏÄœæT"gã»»zyËnÛ ®>pPèûˆç÷/lž+ÙçDó!‰æËͳm˜Ìßð ü‹‹‹‚€\\\`Ì#5 ¤©iNe “R ð]³Pš’ì+Ýãv¹:‹ê¥€´ý2ʹ·æïPömë͆˜Æêjf¦¡u55?ŽÝvðj:ýMMMJXÔl.Õ "ýãŸÅÏâ‚ÀÎôuh2–æfkg†DêŒ1²ô×w¸½¤^µaé÷žÿìÔç®ü®]þž ÏyûÒ©QdÄQϘä|\!ªHÿµ¯Ýÿþ¼½úÝëªãë¯Ð­.¡Óˆ•ÄB\ú°šÿ}Mä„õAÁ‡z«#±§|Mš˜ÓfãJ•7ÅcccccccIúülný5:RQS-ÿÁ+vî‘Ø£ÔwvúLðÝ\¿¦;Î]þ.B×Õ>hvzý=Ç3±*Î*/fizi¦ši¦Ÿ7ªêªµ¡KT*XéÞ+ÒùÿóÖý õUUU¢ð€•IððÊWGeãÀŸ)k߇Ãáðø˜Ðéóâ“çÏýó7é+&GݯôÙ?6IéÜG>g+™™—ãGŠ´^Õí^ù¡ï'qYóÅoÐÔü‡ ö¯k7è¯oÓÄZ}*›Î_¦Èxy÷òÃÌæx‚¦âDÒZBI¸±`[@ 2Aåµyˆ©¶Rµ"U=bö4ÒAUq7dïG4 4ÂIp ±ª"“©:´±JTAEìA™C … @á"ä&`:TaÂCÄ{B¬YÇ„èšeº ´»k޹é¶Ù‡/ÉÇE§Ö›ÍõbÚXÖDÖŒ®Ásã§U¾G ×øqóA}D÷ï}<…Z)CQõ‰ÅªÂ£&óX¹@28ýü’ÍÄ|xÆ×ÝâLWŽíbøˆ(„=bx͆Ë6k fkªº`~‘gº„Q‡èyÁCTBkìáfײ¢å€*1ØPZμOº|ã Ÿ«ënõD»ºÜQN ˹o lÁ9D! Ù<ñ¢4VÛf#û‹AÙ¿rÈØTJ¸m·E”Œme/×ù<´m§Ò(Z5xXκö:ý…j[´†²¹³ˆelï0e\FÌwnæk.ýŽ+ˆa×Ásàî±ÕìaŸc®†²ê6¿m›6}ôô~là 7ïß·ömý°÷Øúì'VR÷BÃ_'ñ?ŽnÊ^lSy‡If³ÖBXꓯ"ýnªá¸¾PºuËÓA‹Ð™ê´—#×à+úÇè[÷iᯥì-PÔ”ƒR‚íoiof€ý} hÚznžïi7}Ói•ÔêóD™}¦Î”íÓmзÏw/%öäÀYŠÅ«TÓOÑâŠ(¢¢Ž4œëä®C–½«ž‰îÙÔ(W~¬³Ýîòœ´}.ßlšvû|qiZV—yc]ËM2ç»`»§AˆëßïÁ÷j#©ìƒD1ÀÓùï ¯ÚV*t c-•H;ĦîxY1Çq‰Ñ½$’]xf$€1ûÀOCÍæ…On»¦·lOÚÞ@ŸÅÑ—µ5ܪ‘¹ÅVbMv88'mÇ.ÁûÈ×NôÝBÔ‘.¦þ¤WŠž;•Õ׈kÐI%iäÉ\ÝEÿ޹³gÍ›íï·³fÎo™÷}§€‘bC|ºï™µVmàôƒCúfͼ|–§E®bŠK>qž|÷saœÎ;yÂ÷éφª©~6ñÀ¨ÒTP’tsÁÌ¢ìh…ÇògÙVÙz Eþý±XQyÚ£^8繩ƒ¹G°´yªŸë0;·Ñò!4£KÖIKÔ’ïp¥×³k0"¦# Úûë½n·[HõºÛ1µêÕ«¯»O[­¡åÖëuùÓ¥•I‡²/pq ZóÙ¢¶5V·~¹yÐa‚´Ã9»ÏÞ¯™QìÏ+ ™|Éoó¯ßœ -ue'÷˜Å/ EØ`‘°»ÅëõÅ ìúóòµZN¦Ÿˆ­²?_êiÆâÒŽ…1ØziÖ™¼Áô%y† ±_Õ>ÿ©ÄóÿüñM?æ‘ýÊóËŸ À˺œ¸á›z6˜ÕÔŸOMà¼=]\7†ë§¥ðãÖë ,Øñ¶ošWÝaZ¸6Zôe{PJ\ÁþàìÆÚ¹/"uCCÿÁdf€FRAME ¸œzNw8Î3yŸ­z9~îÎÔòª=©@ôëò#ó:ü FŸh6¨*ˆРŸ‹P9åò$aÛÉó>$=žÈa@ Ê† {ýÑáçÚ|„"ðG/æ=VïŠ}¾Y/]8ýñŒ?úÇÏã€h0ÑkØ€¦a\¶ÚŸ =ëâ¯ü´‰ÄH}sŽÅ,¥1@ €á)9Da&œ#õ#Ûð"€ˆ. PÑ:9:0Ûñ4Å`ñ@Æä¥)¹=K°Ðä¢Ç)á°¦èþ﫲=^²îÄEËÆ¹¯œ7Öí[*í+·§Îk v£]¨64WáñGyóhÞÕ„ÖÚÖñs^™×"ù½Æ…òº‘pÐH)êôÉ4ws銄6e°°;ÐN®Ô .v!£•Q[uHØQÑŠsòS†‹üv´g»tŽW¢:ë¢wòÐã Ûfìÿ¨ \ !Ž–}÷w[aX]æ<ÃÂyÚqÂİâ]RÔ,޵èyÌtí<ÇjáÑÙ;vì0A?­§Žå“ˆZrgÙ®|u—Þk>ÉÊ]qˆŒ”Žõ&ÐJHFRAME  ¬z^7"终c¦±Ãæ~ŽŸö§Éå¬ ¨!bÊÌ<æ|Ÿ*ýŒ9!äD>1K+0ú˜Ä%ø#ìêòù;g‡ÕÐR(ð Gtây i­ÖNxó®×Bžvòë8:£¨ÐŹQ®ï-FÊ×+wGóæNÿ]ËçnL%ÛÎpÆùòÇçˆBݨë®çw4-]×…Õ»¨mv×¶+—DŽ£Å3{Ô3npÊŽëÍÄkËwwQª÷¢¶cB”OoÑ÷^l—ì0ˆõȾs3W23WË™šÂûš¬b„™ñd3K–"0±0ÄGc Œòq©çÏÐ& B+‚ ~,2jE“K:Á„Ö0•ŠV?È•IE“ÖjA?&•Ú,¤‚G#8YhN ?¤bk5 ’*”NF&´Øû¥~ϯ’á‚ìõ˜]YYäFÏ'a€¹êÁˆÓ6ZF ÀÏÓì PÒ¸»YAh(M€»²”'i âÓgE²;arB`´¬á]«{Mæbø¤bìˆÙeì–âyZ\ªiÛ+2¶+J"1È+µefµ8T~À1âµÄí›*Vê±¾š,TŒ‰àçG‡Ä‘JΦug.ÙÔC<~ÎèðYÔ|ÁÏÁãן'¬ê#Ð{rëHÀÎ3©s§<êr½ùuãשíçõÿ†,z>¬9D$5¢3‹1‡!2X©ÄyÑŽ(ª.ÅJ'Ë@»nÅü?`yvÇ „è†8“þò Èâp˜Ù󹃶5ø¢\uÝI.è.aÉQ„áÖëw›™=¸ÇZ¦êÚÖª5ݯ„#]ÍÛQ“oÎpyyæ·{QÌ;›šÂ•e¶ž,WEäa‡´Ç5Öî+£y´œ<§Ñ¢Š–@ÖÉMÅ4/LæM¹³È” /öL ˆ,ò""Ð-<ŒÙ8Y„§âÜ9&,g¤Ù¤#Eu둉šÌ  +‡¹'+ZKCCOg²SÈÇ#EÒZt„´®iqq®A]§"+†y²qÂ@"­iØ´|“(<ˆò#ȈY|‰êÍ‚ö;5¦Ç±×ã)òܯkËk’û“rªþ¼xô¿ä)ƒLWS#w[º%Š¶Æ -´·þúSèFRAME Œ­z^78Î3w>9/Àåøº{}©ä-ò‚ÝC *Ç%~h\:ˆ±øÅ$¦IJ>MP‚/Î#aÉ„1Š€ iè òû0ì xêa)!ôÐÌ9çÚ[U ȊܬG²Ê–k™ÖùœÎ6Þf-9åx9Ñâ­¯‰ÛWÐùeëó,ÁzüË/–‡µñø1×=„NåTà¹ÿè j_9ˆÙ¯0y#æ®®2BÌÍ39³)]îËÍ©|¯•‚ %9³êaiù±õÈÓÚI$XxјkLÉÐ¥Vyeâ ¥iLÒe‡fŠ®­CäJ€æ¨xF'A••þE´‚±e¡£º„÷_#…Ôp‡Èˆ­gBÂX‡È‹&´‡bYúä{Œ –¿²ßýÔ[Ž†Í­yc[-YáÀÛ³³P™â ê#s©-‹/Ô^7»F9äçs£új¼~ÿf/ÇHwûP;^íÖDÓÙ–‹ ^8Ý9ýUŽ´ªß!*±+÷©¥ô¾€FRAME x­z^78Î3x¿—Í“‡àdéðC·àC™YEà"ÊÌ0ô Eì"<|X¨–¡U €t>0ÐÇFbpàèè {<•"ØŸAØ­>G@§ºñšº› z­Œ£;aLuÈ©v<DhÌîFRu9IhÜ7wBò9E[¡`»ËïvÞW ]­~—Šm©†gÞ!1½÷Çõ¹»yËãGŒQQÕQµdÑóFì5—OÊ ³ù‘Ë8x,×âË™Ö:ðæÉDD9 |ÆN Ë Óövjp±'î(Çak†ËÑÌrCȧ#®­+YRã‰ÀmŠÆÇƒ¼>I²N¹+¶Ht²Ž“hµ.u]XµOé`j–„¾GÖÑiá_-\[²WÔq}FSjxxÞ6s66‘%šÚZt\N?_!öu,Âô<-½ßb‰¿C›曨 u ][O>€¥FRAME įz^78Î3v—ÍoÀÁÑð{SÈZœaäì#ã“ø7T&‰ ¯È à0@äf!Ѳ0$NØB!ÁÀ_g`x;П1¥î|.'šÞµº÷­§¶£98;E¬[¶ïÈݤ\]v\…¸jã†ËæÞ^˜ºÂÆó»½ìH·p|.\;—Îí¨·»—Ű/wu¤è/^L#›Š3R£ªnç"#ó…¼}:íw8Z8Ãó‘øíÙ ù¹§4̵Ê™d¸ªÀ³¥"H^’QÁ8Ñ?7XÁ‡›9€Àä”A“Ky!qW¤ -Ú•&²ÇlP@°>Ä4I‹SÝ)TvY­œ“ärLÏ#°©i3)PµIJºbÅ™ #Ëš³b$LªKîv,Š8«]ärÆkæ¬ñãhû ½·R8Û:–´×­X3Üp'où^Õ‡«jl:ü†=fèocLáÓ”€—+N]~å_ž+1 œqìóxÕcœºçU³°Ð|Œã"gg 1®Å´òy›Î‹gáA€*@'^éêJ ù FRAME ذz^78Î3w>+/œ—‡à\ìì³È\ç.=E”¸yPÆQÀÑ’+ "==´‚Ä8Š >‰ÛÁñöÇ ;8p†óI‡ƒàSÁò¥<Ѐ¨”FÖ£¦@wšñ˜ÈȸyÝu½k¨ìÿ†åF p}nÞj.zϼZß>qk_9Ó 4mxªŽkܺ6åæA0­·:&/”o>^.ç-Õ èáMwkn»¯Æ 6±Å´lñkÄÀá·n·€AÆÏŠÌœÔÁ¦W!ÌäXXúA)ȹeÓ9¬U›êµ§$2›,â8®Bã‹)x¹E’”<>áýgáΣ"â30ÇqÓ&;D c_²ƒP´ÊïeCH8ãÝB(Q¶ŒV2Pm†`.5Ú­`AÕ1taaŠò/ìµdoX–i·k"Ø®³‡"޲^×±8&«3µÖµE(ÖjþÂõ©¡ÏóÿD?v¼¹UÒåßÀöYÒÔMù}‡ì>í×õMÖÏ+žb&þ  §æ­û(› s­—(Î'Á_s¯¸"Á›fC\éŸËàé)ÿeð‹¿§­rûtȉ(n’ëFÀ|ëš_}FRAME ¨°zNw8Î3x¾ÉtÉ/À¹ŠõCÈZš* šbŸ+hÉ]QØ„Å*é Ð ˆ|b†Œx ƒÐ4ÓÁm{tN°}°ø<€€Ĉ‰=Ó$€ Ñ“8‘K©k„Ïl,l7Ö$ hb]®í\†ï:ºïê5à¶Õ» Þ}î{î] šóƒ«o•»T²pû)0Ñ¢ŽnTëyFì¶0rã€;Û­¾ò»L&ÑÔTTv:ÖÀ »‘»gÓB޶ÌsÃôI6¶¶ÍcG¬ écHA¹¢Ñ¶?ò‡‘íCš.œqþ8§’ädËÅ¡Æ.äZ¸“Œ!Ïäu—>nÿäíqRɘqaU %„ò(l§d§‘Žî°×g²É¥”IES¯m]ÒajúóæO ¡cV Ú…¥ìzƱÖó]‡yµf–K XifÁ·,X½É1 ÂcúçP¦K”âvy ~¯¦ÕŽõË.ÜxÙË A€x¶uiãæîÙÜÆàÓŸ°}Û &IS[4gof.‹HÑ‘8ëªF4³%ô§Rñ})@FRAME ”°zÎ78Î3w=–k¥²ðü Ø—§à¬jJÐX?˜IhŒ°Þ ?ñû•‹Z.?s8,ù—ù¿ @Èndèpêê jŽDÀG[õý¬÷nÁÂd-U^͉¢u ø²­êÓ‹ :ÀFRAME L°zÎ77xÍÜô"Ûåk—à\éð/€Ç±¤!èL$úKR‰•Šq‡W–N©JÀbrt×ç9"B‡!ÀOÌ^\9>3©àèÓâk_¡‚¯/à5ä“”r*bËœæg …b©Ø¬óQ¨ZgŸ²«öáã- ¿2ùf¢~`ã*Æ\З îVðÉœ¶ÌŽ-0½Ÿ£ŸãÿˆŒÜ#™"ê¤Ñ nò7)y1nCö·{ À,óÆ‡ Ü`;Óò€´]žK…݈y‚G­Ì2†—^‘Ñ–Ÿ¶~JÖ¸e+jÐÄq/ „,Úxµ¦ÚbÏÎP¶gÚJˆ´Ø^¬¶Ìû"¬íÄö?üþ ç–[ÍâIO²GÒÓºv솶·` †q¬Æ5ß ïpMŒÊO#™2í×´(PÜF©%ǯN ÀbÈMzy¦+FRAME œ°z78Î3w=I<íœ?GÀò¢·A¬Gå.Æ[¤™)Xû*á‡Áé48"Yì^Aˆœ>çÉöw0ð!%‡Ô$äð @!èä„=`!€1ë ÷c1¢£#“HµQ“Œ?w\3pë­å“‡×Z(2²ÑÝkÎÛ[‡™uJ81ѵÕȺ¿.¼ÜÚâä!wˆìÇ~|ýy—sy[Ýy|Û0Š®ÑÑgudªk˜ÖÙÛ£Ñ3ícNáÚëæÝ®óðܤ?ÞÔO²\Õ¬U«•¤#CÏ‚RßìÑ;<úJÄÉÆî0"}””žˆÁwaùãßÇÆ/X?µyY¡[Ÿy-A³äZÒʼnâÔµóÙeõ;…›Â%;û€1¨W]£ Ÿd~ÏÝk¿¯Ùr•O²ëW°ÿ˜h]¿dû#8”Ûžzƒÿt[§~óyöm>Íÿölc‘  3E2w€}ER¼6á©#üM2ƒBÌždýéÒ']ƒ®ÒSÓË×Oááï#ªÓkäï}q,PFRAME X¯z:Ü‹œfî|V_+/¡ø º}<äàÁ …~9œ:°hš†üJñ@Ó§&€|b³°”æ~DøtS–Là)Ð#`Îs8P~(P9=àrÀýÏö+–æuâsÌ>y¨.9ƒ>RîKò¼r¡–W ð[òÜå…ËlÑò›ø+eæá.ø×Gÿ3‡Yû\üúWàs?_Ž:ÿ/?§VÉwŠËÕ1¬Íæ#ЛEòáHÊè@ÉI–ò ×}»-N}fðL }`w`-öE ói(òc‰¨L Á(³wJÅ“’Oô‚Ôo0ª… å,_qÁh ðEœC->xfvR³ßVÈa‡µy”Z¿« ưÏéµÖÔÌÅŠf|ýjZƒ,Qbó2Ïs©ç„ÒR“2s,ŸdaŽÀÔ<ÐÒ>#æYä‰VF>—êH ¦¤61µ ÁP°R˜ß¼=£Ö$¬a+Ó¬B©ƒäœ6o/P ”–e$`*A¤à&¢ SæF‚Ë×µ qP鸬É8&ä%Þ~;®ÞD¡Ìºƒ4~ÞÃïO¢IÀFRAME Ô¯z^78Î3Œß‚䓵µ[Dð¯j{µ dbaÀª|¥À4ø$)"§'È„l0ÅEÃP]æíƒ ¡U€£? •&+ŒYŸ3ò pœ‡G—Tàør"<¼¸ ÞéééÉÉ꼨NåTUi8a1¹ ­mŠ#¹öÆ»EÊãGs–ÇKZŠ „ñFí1ŸîÜÚëµ£n¶Øþ¯ŒÞb‰(æäMål‘·&(…E7\‘3®B{|¢®¼k£Nq:v8ãÚÐ Ü$v7Ôn[ŒtÒÚØõJU5ƒGTí10ÛdĬj7ü¸8ש²ñࣼÙÞ̨MÌ ˜9YŸ^=†ŽÌ`¸Ã˜U†þA÷(Å˾q ‹!…F‚Õ<- ÷;É…¯Õ«Ì ölÑßsš&t]OR³ÒrH-ÛóU¨§ÙVOkìhñ‰¾²ñ¬L‚y#”[þÏ'{¢˜Ì'næ,ÐwÄîûj÷dÓ+<<ì¤û#í'Mïxr4ÙB›Ð-s?{ö—^Öu•{Kµí>¹a8b8®*ü'_3ª“n v†bIUU…mj4ÓèþÝ‹åœFRAME ˜¯z¹Üã8ÍÜø«<­œ?öŸ¼Æ Ã$ C>Hp?C‚±`ÀP SE‚ ‰TÏ›Þ eaè×Èåö|@ðqÈØ>É. ôœ‘Z§S |àA‹‰í6¢ßTgøbЧázñ£·d|»ZˆS^ë–ÉÃgwÀ-VÞª/rÞs±xÖÅ·Ï—rùç‹ÀËÆ]s¿®Dh»›–,Ž_{p¹Œ˜æù¢··ZºÜ:ºÃ‡ƒGQŠ=*ªsšì‡} Sù†Œ›‘wW»Þ v#dÿ·ZXŸe½u˜qƒü9Ýß²äãÎGüœÜlðwÏ<‹‚` ‚ÄŽírŽžbÌ,jÎ~æ9üÕ>òQ‘½òWÏNަ©Õºf|óÏ|X眘éíSÃJS;R躮)…âê©IâëL*g.‹e±…7ŒóÞ?%Íì$âîmGÿ@Ú)Ó0:{ †\3+†Bn~¡„?Æ @HÔ¨Òèaµ¢ÎÇp_Œž&j³Bê‚p^a3_§ å€FRAME ¼¯z^78Î3w>—ÊYˆü ZCµ<)îàtØvrVgÅ  |]‘)Kãq°ô¤A6CxøúP¼±#ø ÌâYÅÙ:>(s=MŸ Éää0 ˆJftQ%6ª êf­n!®ço.¼ªÞV;ÜåpÒáùÄ®æ¨Q£—&ã1î<]Îxæç*Q\ êÝu¨d™B9Ž^}ÏœzÚøç9­ã#å×_T¤n­ëbNd ØÆÉc)Ѧ£B§yª‘©«Ò¾,[¾…å…3xãØžû%±—gR#£OÇ×flGå±Õ½’àqFÏÍÙÕùI:‚n‚£œØ’Ukn‘²üÄ7e"ªƒªËR¦) L¡?pe üÒûJ}ã±Ë³œ×vJJK~œý@·‡§h0§t^è“p˲:í|öÿ&â•ã莈¦YÂ}‹ÍŒGg¹‰»` ìp#ÚMÖζ=Úü샚Êüã祆ÇÍyÞÜ!ON„uu;¥Ôº¼¦;‡:hacÜ„¯Š9\èÏmÈäs}¿±r(<è¼0œ÷Ÿ:¡Á˜Ê°a`üà7‡TR€FRAME Œ®ÆçÆnç ¶_)oàS³À}ÎÈö|FÄÀ¦ ÉÉXÈ  C …¢q‰òál9; ´ä)>H cr“qe0aÊâiÖuCîC’ú†$ú}@O¼dϲR›Å¶á壆¢c0"îë¼[‘X½ºøÔv·¶¶º)8fŒñ[_ó^]yÏŸ.ѯ—n[T'sôq¼ùAñ@:Ònh¯4O¶×OkoruÄ×Xµ.Ù54Ô¤ª¦zU=²¾þØ„p•¡îßµÕÚm#©&ÜÂkZ+“ÎaíB[Äry$“+3ÅÙžÕ^ÆRÄäšf4zD‰)GHJ‘kvNÿuƒ+Ëá&%>ó´Z^ì᥇Ï]ï—ùûþgbŸö»PsYóüø86Prº¸´.†m<êk9t© ö}òÓç·‹i‚°!sÐÝ`Cli:rwµÎ¦!Ÿ,$h)-xð#qœ5c¯ÌvÒ]ÁÌJh¿MÑuuÜ–“ñ0FRAME „®@vãsŒã7sÖË/K,åø)ùA>GÄ3P*`<@Â)ò#ó˜ð  ôÎAo’0M ÁùÅ,g4HtðCƒÐ‹Ë^ZÎ'WðÑ!èù€Ì8<‰ø8!÷á€@ bŽufÛ_Qo,ÅÊþˆø 1zgËÚÖ¨·º§Y8a°óP'Ã:Þåœím®I9­×—e×T訙´yÍr:ÞGQ æ×uÿ—ˆ»àÛj]¹#SžF*8RêFÛ¶e×Fs[Ÿè”ÉëôYçî§Ù?8°ñ§Ùbms¶µ Ö.3¿,Wk²V=“*  ˜}™=‰$#4ñç•ÁÌ7ˆCÊs̬?ö4ç¸ ×=ÎÏ=õbæ8†:VŠSØ´Œ óV©ÀLKœ˜!•…9ró”ò žÝã~%Qña. 3J‰¯²‚©ögìŽ,dŒ¤djÇ ḧVÜÉæV‚/,}7¶§Y+ÙÂØöda•°¨tÚð}&D!7É^½8ÿèt`JÀFRAME 쮵f8Üã8ÍÜô„ úsDíðy¾NÏ!hñLCZ Gäq‡™N=QOœ‚Þ„¢ `a4 ‡Æ#bŠNÞD £Ë^ZóX? ÉõW£“ôñÎ@ Õ5°Áà¦ß«ZµŠ6a®·] sÿx“4¬¬½œ®ÉÂí³e¾8îN¾@‰3­¼…¯/œæ×G­Ôn|Ü·1ãžR”ðËæåÑgk´Qv·-ÚÜŽØTÍ+TçR:ǼïfR„Q@—wZ¨×[®7)ÿ(U|¹å%rar8ó^qE¡$ÿ‘.D³p}ÇEÂávvÛ,•úC°ìGa°"ØH4pÄ¢Âs9¡§3ŽˆJ‰#^'”Ó”1òÔ˜èÙ ,بF”!/ ›,Ú‡²Íitq>ß\¸ÆW)êÞY9³ð²ø,Vcö3 )dÉäQ‹XךÅg£“NO¨<"O0`$‰ñÉ÷C€@8É8è”zHÙ4ÿȱºìçrj}S8……÷Ä?ÔF†ÕZ7¾sõ¿<ñ æê2p»k8ÜÓ—k¢o\ÛšÞ|Úùw"¸wŽw!¨ôx=ºÛy¨ÌVñyÆÜ¦-×ÂPÕëÛT»#]‘®¨FÚ¢áMå}š Éè=~}öú_ó„ÀWs£Á™äYþg…G‚ŒR`$).¿lt]kzÖØtIys¾¾ýáåwv§¿þ¹OFÝQ­‡Pæíô©ØÞàõ¢E÷­wnÿñæü?®t{U®,Ì+ôÜÞ›‡qQ¥‰#ŸpGÃ’~ôtŒtuž}Ús už»NÀÇKÉ9Œ;È.ÑÒxù÷‹á©ì¦Ößaª¯¨‡ ‡¤<$Ò´Ä àas´ïÀŠyu]¿Âøì^zï÷X].ïIåïZ_0àG¯½|wðë–qý` Ò &’:b¥”–-úðåμ;Öw O«9¿Ç´ÝMªI^fºðõ׺îÓÄÁÿŠ”.GâÀqtfÜìhwXPê¹Àm­àÿk€`.\›³n"ç©[þ­xI\¤âÓNã‚Vêî믤Fç!.&õÑC²Äz¤`†»„·‹^;¨ÓÜåÆ0•Î7jíŠ$¸.S¶k½wôÊÌIÈt<\â1ç¨Ç°7]€™ )>ƧSM 2–œóõójo¥¹ÌyÀ–vÆT+«„ÍÉ`v\«˜ÎÒf¥'¯wØÒ¥h+¡·³xbßó›ŠÕûê_ƒìÁÇúëpö?„ºá'-[ ügñ÷§ÊýŒWtX¿x!žr¨ÀˆV-|©›¸€FRAME  °Þjñ¹†q›¹é2³‰’Þðg„ìîwÌüžˆžD çZRš‚CæQà~'&„Ð|¢€‚’L‚ƒ€'$y—àXá` VcõËàüƒ0ÀyŠÌ~:#çB !Þ¯{Õç <yÝ»`Û¸**>ÍSP#!ëJi=$ó¦µêÍ Æžeã^:s½N–צ’vrÛ¿¹õK#ÙË)a6ÕÈæN>F_Ž,П;‚€YeŸó‹ —³8¸ã/<àøï+ä[RàqýÇÄC0ÀTU=r©žƒªÐUøwÇrÑv@ªxN8¸)‚ðÎhB»ç–¢Þ½ÝigMŸÝ휘c'QóNN}ª7©m yÜ:µµ~~åNyE¬ªÔn¶úD¥)G%IS ƒ..*WÅW "t‡Ý‘æ aÐÂG‡cN/åÞBwà\Ÿ´ç§ât›rG=t@vzíº~}&“ËÏ7L¯nÀxÀæÿ´øôÇyá×G.òé_àÛ÷]€ˆ sÁæÀWþƘ¸ 蜾‘ç ʆ䗨.“éBSÅã¥é¢ß¤ÖüT“$ _¤I2Eî‡ é;Ë®ƒY÷=ÞÁåó0 ñ{üqzÆÿ¨G.ä_‰$0Òøˆf©bLYV&ø Iøè“Aº?¯žœê?tƒ|ߺÆ?}añßë¿ÑÝy9’7‹n~t ç_šBûM¥“âñ IÑp¸ªãÝ áð\¾ÿ¹Ðäø¼#£ÝÝ…{úÞÂ¥Sªvà~U„¸Ç¤\##L6±]6’p áccŸ_ŸºÿݳÖ^XcÚY3¬áªâírëšœƒºg0›¤’á†zÝ´(¹@Ð=Tƒ¯a’i9C%—v]¬u¹°¸­×N`w<Ü5Ñ1E:ôÙv[ô/ÇøãX]Iñ8±^Ná®ùiH_bÝ–è¶2¤êàškGK²|œúwrZw€›“–ïê°µ-Ed(z4>=°˜ì °¶»y„LŸ{—Á .OX[Ücsàrç„ØyÅÄâiI…Ñ’»3McßkàpUÏ ›²g›¼0Û»—ÎÒKv‡EnT®s´Göx§pçx™¸8.ÞÄý+‰ƒ,n]à (‘pNò÷3Û–ÖOnÕÝœZó²îrðDðOüûðâ½×+yö’Ø5rƒ†¾¡™½Ez¡¯8l¤•µ”ÓôŸÞ­]}?ðÖˆmbMƒúc‡x¿7ŸnLÄ7SwãŸJz£ÏIršm}¤2Ÿ¢üqf¾öøC÷uëÍ^äMÔi<·îûÈïF(æ¾6×;gcHgޤ£âª¢ã½û öÏBˆ„¹ì¬qÕÜ¿¥ 40=hUίÝFʯ/2yÖŠóîÐÅ#•Š‚€©¢‹AAVGÇc@ʺ¢»'”F8sXØÜ'–®Å,~jÒ<6/ÃCÕù> !e".aˆ…ßО†F FRAME ¤«Þjñ8Î3w=&Yx™eáøïŽ9ZNyÐû=«ÛðH˜rÐÈŠZZ¬€°ÇâÅ<¤‹ OÚŸ =´x–uÁÐ&D Cä% x¬ÇéB‚‚'Þ*H;ÕïOuxpàOB§¹u1†h:q¥´åukSIë¿\úó5ǯgWSÛ·Nóï:u-¯}µó®}]{q[m¶¨\W ,-·ü§òÃÙ×6”°Ñ¹`ˆ2® ù¯I*ˆ0#ñ¦Eç?[$ä@€>>&Ö¬.‰:‰äË u¸ãó§Z.uìÏ té6Ú®÷FìsÉIÄò½Üf.||µÄüDƈQgë ëœŒÄu–X ˆŠÑ~UöÑ+­]UËQʺ”à»ä½4ÝwÜ$¥õ/ŒtùBRãú‡Ä=&1Žçë¨|Lô“‰Ž®úKëéð„õÓñùÓ§„—dì)Mšë,6¾©ÿþºû=ïNîzltÞ÷'NF_Q°ÿ‚k×¾¾*_Ÿáøeü- y¨¥Â8ׯ剸_¸¸¨`~9V&*©(bãC.T«Wª/$=äGï^ŸôDýÔˆD­lX%¥šþì® ƒx!?Âcf1œ}ÆzÆ#sŒãäÊÆqZ͹>»n6·Í¦ÄT4ò|U'B‘ÈF¿13µ|ð»±Hw{EÈÂñtwÃ<>:$••¢¡Q±Þ,¹ÏQÚ¡yŽIøúóÆ.X¤°`Y^œÖëS®™D„d_Kœf›Ú°ò•À&úcS–ärby[ø½ŠÞëvM:ÜÓÝv‚ížTvˆ³‹NLòh¢_:ðHUöÿzµ?°õ¼ôJãøcýÂ@·ð"­0º½¡B—]÷Ϩbm¾GX5û÷>=)¥}Á©*Q³m ‹¼Ä{qÌFlÈy*P14‘ Í@¸ ¾±']âD<ñ±ÅÓ?õ0¬qPÒ™·õ : ˜Æ Øãþ ¹q_á°+Ì=«¸æ+5háÛ´#Ç@|®ÖžÌ=`Ëqýÿx #)C;×7¹ªQ¼­ƒççØÚCþf_Ûô«ÂàNçäo[HuÁÉ<1‡½˜ÈV”jVRxh{‘cÀëÿ3(k45¼¡‘¦ ¯YÀMúÂrÙÇÀVÍv7¾o¢ÒÅq7-ñ” 9&f¦×vÊ}'âü6ïÕ’v/ÂâP÷‹Fèù°W/¢e:=ï@ #:×IÜú=@g\¸0¼,7|D#×$Âz²¯Œ¸ˆ@çZ&véN!½„ÿêrì'l^È×ùþ]T=¥È>8œéÒ})ºJD¤»‡]«–¹íZ´ºØBàõK„do߃„kÜäléà*×:ØŒÍmk\tŽÂ°£ÌÅWp˜‡ÅÕOTÇ.ˆã³ˆÎú9‡+ÜNËó&AózŽkÌÖr‹n,ǬÒ}šð¢šµ,&oÈ>²=†ên”IogÙpžA7W¿ñ¼²ÇD¹_ÇïÏW±6$Ÿêsw,8GËH(Oùwµ2{X°FRAME §Þls¹8ÍÜô™eâe—‡àL}_œâÎhõ÷=LCìø>È…DÏBNL8#‚Jˆ‰œHâS³†ðF¯-zòl~Ç ú>Ĉ€ãÎ+?sƒÐøƒ” Ê;–(]î–J>¹Z <æš4Ç{Þø×þ8[‹¿Õ~LjU³&œŒºª•ã\MïÝfÚ§Ü_U†JK7ĦÀ¸?ì¥Õø»·ç7;pâxÒµ½{.Ž2]vðävÂÎn*œ3oÙ\xŸ_übÇÚ[9âüO#õã‹ÉVÔKE4£˜rWFT­Åû$1î ¶Úº;e9ÜN4g×}Q>ñ,CHÄœ½gc‚^Mˆ¸%á‘p|þx¹“Þ´;Jƒº1]Þßuîå´O.öî¢K]ÈH’¥¹ÁKÚZ«¼æn޵­I¹¢£qË[ÍÞfä­ÓZ‹c»åù¼¼´áþéëS ½ÎZËW6îšn3Gƒ¹‹öbÜp|Þƒ¢¹¾àB"kr[Ëž$ݸr_G˜}“bÆuæç0bÌïÝCV9h/Õ-Þ.g9öýÐx«mðÌ7FõQ÷"\Á¶±¢2•0I8ír Ãq”öŒ4µ"‚–á g#;V zò‘Ȱ‘¶®§¦&îœÜNö=ÂÕ85Ûpxœ¼°-³CÕµ¦s™Œ®ýÒÙ]Gëx›ídyeVÇÆÀ_úLÁ——ï h —‡ÃM÷obÙˆ*S‡v[ßk’ÉÔ§xUZ*¼2&ð/ÊŒEtb™¦× Ô¢½¨½Õ"*º®³òìË×x9xšõîk‘Ø ÍKp‡8ê°Rhí*^y¨Ôésa`Ø/9ƒ|û§Ém›Ìiw\¨CĽ=þúEÃràl—Æ¢]«¤£µG+6}­cqæfe¹–±è¾c;×löjsG<[¢ÙKòÀï #î…濹Çkì.Ilý½ˆÆË¹ÙÃ\_{=^ÞâXù¬=ýÆÛGæ+«¶/¥ão5žch2Ç–2ÂŒÏO@k{6÷`~´& lPøÿ0çöö— WVjË%ýÄ?y¨é,‚^˜FRAME H¡'5xÎ7 ÍÜõ\—‰¬s~Ϥúš‡¸½¦½«ÚŸ Ñ LRaFÌP1×ìÃŽRÅmüHÄÃR”蟡ykˇH<Ÿ@‡£â•<>SÔX¤8]z·¯u®÷åê€Pó<Ê@ˆ!Ìöoe\Äl i¯A³pÿ ð@4|Öò°<Ò3àZ¢Ì.òî@à[[´_økUYûÁoè{µÛóÍúnǤtti ¶aTú évo’L&§2ÏglÉjõÛe»±;+Øg=“_3OgÞ‚k3¶xKö#Eë#èÑêRžD¾•!-JDÀ„xßþ*ñ{|•·¶üÌ!["¯‘¥ì§OÏjìI†µ› ó`¡Íö Æ›A™'óâúzž:q”®&É9¢Sâ´¬ùµ¬»1®÷<Ï»²æšÓ`—·Àfµ>Âï rêÕÂòxê’Éëò«»ùNrÁ‡› / ²ëÑœÚT<¥áÈ¿ZFtЧ`¦‘9Q>ÇÞ`b¡"®#áø D@(àà ‘`(Ÿ2¬CHÓ@Ã'V|å¯-z¡ô9œA9  =>04ø ö£Dóª½÷½^«Õ½S,˜ 6À ‰ÅiåŽßbÜ«Jˆ J€¨KªÃh¤µÕ© YB²J`€%?'ʼ^^ì’zå§„rÀ±-Lkk[×yƒµ¨,¥„œ*ßq֜ϷváךÌEч[6§7–ýŽê9`wKB*ý/J/íÑÞüV¼Ù£ôröù½<~9QõÀ] @â?ɘWF³àQ¨ö}DâΛ¶,¡Ï(ƒÑ/aÞôX€¢ñOÚÒHÕãAú hOAÿÎsŒ}=Ìß/ç,uЬÉIÝnTÃ)K@ð%·F]\Ã>æ}— ]nË4;lØ;,ë•+H V)¯rÒaû<6 *q\„ªÕ꯾åµý°ÛȈ€á÷ŽlA€4(dã$·øÅØ A•¥˜õ1´K®Ÿý£b(Ý…Òüç\ÉÞÏéj®+e9Ÿh¾;ƒsÿº¨É ;‘rɦ…ìo 5°Tÿ,GÃa‘ÞÞ/æî†‹1(d´ ‰µŸ RR©³ìn&õfxð1Õ¹oaUšŽ²iÿñáb1ÆÉÃ1óBIoŸv,™ÿöq°^]YkAÊ2C¬¥^g_G:J ïzéeÑpØja²s rz¶s6|M m2å'sˆ~OU$º@ìkldAëäèÝ¥õúP,æ$žæZÑò²„ÎQS#Ó¼û»Ï>W.ïf#åÄ? “‰Ä\Yí¼Qdãc…Lç',º®Ð÷µRTÉN¿7öÃ¥È%81HBà ]=›êa„[xTèéУxkË —Df]UëåET&Æ8 ÎÜTUˆg5 ‘8ã $’ÚÊñb&÷?9'ŠD’OW*¸$bRLæRº]MÝiгÏ:·[SMø­H²g³9Zjæ”aZ¦ƒ)•EׂÒU<ôY×ÕDˆçßvÝû€wÔòtD" +ßÀêÈ+$ujûÅHºÁ.Ôw/áÒìT—­¿ëð @*”ÉÚ›Bd²œ˜ìfºD¯šâpôβ¥”9Ÿ:è "=¾m£À{ƒ'Ãݧàìhž·ÎŽÊ‘S¥ä¶‡XÓܹÒ[{«¢Q߀¸v±QÚaƒIªŸI èNJ°0銲™Y$ýJå‚4£¤Õµ9š½7BiÔT=m¨“˼OÓ FRAME МGdÈÍã Íâú­·‰Œœç3ð}?7©z{WOñÑÀMÈW£ 5èÓV%%@cñbªÕD '@/äLe%$§KJtؘV äör.Œ@ìMmÀ=CÉCâ|ã^«Þª«÷ºõhX€Ð;Œ ~Ê+Ž3^26Ɇv‡Li.ÃÏÎÞÕtl;7†ŸÉ/ºÚûÁ?Îû=½j3ÞÑ.–#v7g9ti÷^š õ÷ ~ÑN\¹søÅ, nbÕÑúåàò~qYvæ,YeZµs£´?C^5ün!B;P§íVß7µ¬Üöv ‚~f°%!#í9%EŠ–œ×®ÛööŠ]9`Ì$²*†}Ìè8Q¬ùýß´ŽÇ’rØØ†%I]<ÂA¸6!œÉ®6%›w˜ŒÖ†fî" >ôb)zEªD¹k==¨'î¿øŸ2)ü;Âi 7.® ½=Œ×àáp#»Ï!%Ž2<1Ïzsž ?uT‘¡´ŸšÇg5¦÷'ðm¡Ùò™¸¢­Ã‚ q*Óeüuþ6§†xíá¢E ñz‹ëñ"ŒHûýè^oŠ~¡·sϺœ%,÷Ì­c^ˆû Ø·áêðg‰[5J¼ÙµÏó° YÿAÛô, O¶môôÑ jF†X[8v¿uêµìú¹½CÌz¬{jÁ$ _H«ƒâzÃÀ´5å>ó^I™ù>ƒW/Î7<…–=ÜÜ>äöO$4f›®X9îÿ¤{ËCV;Czet\ÔË,Ê镜çEØc{1ýü‚þp–fÍÐIüÎÔÓ­æ\èþÿ÷T·°#žƒ°ìÆüfÇG¶Ì“­JÎY=9…5ˆ˜öcÏÆ±‰­çµÇ>­ –<$½äE’¼èYá¨V:™óÒè“™Ä&dG—¼†Å±7É?¯c;õÙÚÖD^ÓœàS0ÿŸŒÝ‡™œþp9G¬Lå„fÆE›` ð ãy¢ï:{ÓÞý'Ö$Ñ•ÂÎ8w¸ž6›Ö¹Ñcÿ»ßUÍ,ªXk‹Ÿ]èWÝ\‚qjÌÝÜLlwsÆÝóH¯î¹wqh(FRAME МGhÓwsŒÝÏUÉx™eã9Ÿ€3åüÛÓôtì y¤SÉÛó`( C#ûyaP±†Š§D>`'\£ª¡F‘¯-;¹=èL~ÀV…_Õ£¯5J{·Ú¿sè Ç Ï×@NâàŒÝÝêzû Q×¹Ê/Ü_}÷Þä#’B—Ή8(6…ÂêîóeÒ/w#®’/;<»gö‡ú÷G«Ûß’~V©´€ºk½a¹£Ø;þøµ­@AYÀâîR.-ÿ+&Ä5ï þ09•êšñÁÇã“ÞŽUïër¯ú§)x>§9³¡€¢Æ€cl(˜ VÎÞzö.ý°}v,û¬¯ÌÆI¿y®0EÜ×ø ¯==r,&µD—3¹Ã„¤éU ¥Wû%ã\ Œb×vWH°0Œ…™þÕÍD 8U’ØÉ J‚D,Zt"AȉÕ<"RT”;_O?ýô ž¿”u½ÜƤrü÷—£0¯Þ g£rûMõA¹Ëd½x!ø{Ôû®Ô8lÝÞAZÍP/,q4ûøšäI~%¯^¹Üix-?øN?{tßøOÐEÿæéþÊE ÝêžX‚µ›Ž}1Ç_Ùí{GBfdm{ÿR0œŸ%[ƒd×ø,÷øþÛfã6+Þ¸{*`ßöUB óHZÎU7òº §àÿxk]ÝJ’)/–æ”à=kl?*}º •} Ú?ü¬ 'o صvŠa03þ÷†Rîø)U\øKÑ?Zg´Y~0ŠLÿÆ8N8>•øBCúÁNðÔM?‘q áþñf—ÚÄûÍô·h)µªó¶|Ÿ"òýd3õÎÁÑú™w;MÆfOýn'Øér˜hç3Ï ¨æå39“û(Ì̇ñÓÎ9JWð ˆUÓs•\Â[&$æˆGó­éÃÑÞõ·ä:Z9>ÜßyÎôs©cÚ#}>ýÉßT€O¦øçšvJ>‰À‡÷¿&|é,?³ác‹®IÀôS™$Ëx˜9‘·¾r¦>uNXmAeN˜H/*‡ r$ÏbœÛÝ­ ïäÕ­4‰Ñja¾š?i§X˺ËöȤ‚fFRAME žIÔ3ÝÎ7sÕr^&Y9Î'à ù¿ {ìßɯ›Ø_©óœÐ@ú˜x!ƒ@R |vrID„@¼œYÑÉ'Ï€vW¡ê‹ØNr§Sêpù<ü C£Ùô)¡8Õ^zªµ}ï]V•V î0å¦ôWZ!ìö¤Z«W+Mï}J¬>ØT5n¼]m…ï¢=ìc3MBŸgˆwbI±ö­WiZ±V¯0ðšéM#yû4DË!±rõkFwª}â÷}ÝêM>…˜}ïÁ[°¾ÕY :ÿñð‰ßTqÂ#jªž8¨c¡–O–¿¾ )ù)/鋯Þé|,´Ý/QȶbƒèTŒO”JXñÉMñ/6Cÿcèpî‡PüÌ·dR$Ε&41D×Ùz^‹n‚wéžóîÓÆˆ;¢í>[L5Ã[:‘ÃÄëG%VlÞÌÞ*¿¦3¤×»Íº«ð(P^Kh«åÃhz:¸·ZþÕìZ¼ÆV+’¥$*Ÿ ïöðž5)Dê+Öx+œßݱ‹ùh‹¡¤ŠJ"¾/'é÷¸ûGý¯4þºû‡ª}K‚~Éç*c“:lïÏL×sf%ù˜ìZÆ"DFRAME ŒžIÔâ¯7ŒØŸ2ØŽ&±Îq?÷×øcßfüÞù`Ÿàu#¤ä &½‚tÓÙÙÄà S“Çp_7ðz9!屩ô=™«Ô«ÕªªjÚêèÌ9­#ÃFñE!œvºn[2é;]^«þ¬Á§][]JëcŸ²(ª²Ú-a÷%c¸Óh %µ}_~¼•Ô½îË>?×ý9v‘æ¶Ï,§ÄBs)O”ä§)Šð[x§GÞpÑÙ$ÕË4b˽GÍ­õ‚PhÿD¾@râéˆÑ(ò Ò“³wÞAÃÁ;øYÌ-dƒ~ê³"qœg…˜qNÄ,W‰¼‹b ø9÷ÀÄ΀͓V„¿Ï÷*”ÑYAUÄ Ö4ŒÀEöÊߺA›®’nÝ`¹s>˜ï¼ÌîØ¿#į]“ÞK¥8”çW¦³ÒýËFôœz”÷­<«-eôön|b0s‡cÓ!0®psÌdp’P_4œK§ü™³ÑyÐóÐd¶ ežB7ƒÙªÏ"{–:Umåê𚜋¤÷¿¸"å±>qÜ`<Í~èYêÒ°z-}¶gçEpZ³ü¤TÛmÙ{sëÛª+ý“ `³Šúýü-,:îé¦;; !‹ yáî–1¬lQ¾â <î޽…„ák•ìg¼bVgʵé?¸Nïð³s×9ZEýVî»x©»)z×¾º I·€5£}ç÷wÿýÞÁH?8?åKþêÏgÿ¹ãÖl å»ØË¦ö¼¡Ë®eCnOÎ_4’û¾TX)Yo¹šðð›%j.:}á7œ€²šŒÇ £‡ÍXò™Ÿ–{ƒÂÀSkí*'* Ìùß|ך“4(zNÿã*űù‘ƒIoGôÜH´fÏÅ/|XñGæS‚PU µ’nÎðy#Cº´æÒºÖ¾k³Bv[Ô¯€™²tVkÈ"³§&NÛ>® mMvºhõf¡?( ¿äD¡5ƒ4°±K“'^WÓ¥šþVnŽŠDJ0ÅQ÷Bq®üi3»)}”äü2pz'çÎLYÁÔ:YnóFŸúäù%çQ­êƒœ£d­›åNØ£6_í÷¯vbUÕUÑó³ÍØtóé.÷ýu`JŸëQÿÒ4²~»ï¤QÌ©U—:ÚèMÁsg^V X¼ö>/÷{—TÙÞ&YþY€FRAME ¤žIÖg"ÚRз½ê«ÿñÚîíw¤®mð¿[áp}l¤9ú%±“;U³s£¸ˆ§4ªÇÐ Õ›Çbî=v.?Ì N”¹TdtØj‘î¨ÁB€ÔØrž1|Ï|§ò©Ôg.9ÐuÁ‘ø_¨¦2v%äóŠ{ÙÊÑÌâ'd˜j˜G‹ØôÉð„œ¦mÓÒ ßò>+âø¤$à'¼YÚËÃ%“/u¢ægŽ|†ZÑÐT>5bí«öU*ÌÔ ´áâjú¶s>°2ùH¤ü@FòóŽúËp°÷ã±¹ÎUV…óÆr=W–vJ¨ yYð+v­ø™$¹´s¾ðg‡__ûð±Ú`açÄ ã“X•)xrM€È¥Æ 3 1 ¤ 4N q¾ˆÿ…ÒÌ‹…™Ti«;˜¸W‹J½Ã+¦>ApE¼Ç±imuû¯ÿݽ`f_?.S;NZñðÞ¨ò•§´n¤vïÿÅý¦¹1߯ÆËFÒÒ®ÒíÄ¿,_GJ>Û«sÃnŠL•TwEÏÝ(Ü>¨¾!$bõ‡À_¹>+AXEdÒ>`ÑŒÝ^>°¯<[UÖÜ×.r­?‰¢¶kÑØX÷ãÌU˜¸Ä²¦“«…\ÖÄ*ï!˜š™žùõ|±½$ýHõø¿Ê;ÝÒÈôºØÓü¨úlçó2C!Ì™Ï19Êj ?Øì&)ÿöWG©;Ш€FRAME PGeµxÎ3Œáî·ÊkË9Ÿ€[îüÌììø?|ñž¯ÐÃøcÈÀXC²Æ(†Î[…b¢}ß—\¾oÄöÌ0‰á‡½^×½uW¯=XJ1‚€wã¼Ï é.<Õ¥fã—’Mñz‚ž9qÈI-M|<«êJ£ºbéxšôaðqŠ8…æHtº’FAàñ>Kîw}³¥¾Ž´ì4á­vÖÍØX2Þ[Îi©³~šmºáT^™ä’AxMbC÷ÛÀ®qå®ò„åFñY“ RYÿæÜ]é¬m2Q]­xÞÄäÙÈ¢fKó+*Å]½Úø&3'ÎÔ½X{·°ÛQ¶Ö‘³Tužö«5™ÑU'•}F]5:¹Ö0.ð\yZH3JÞ`¹ü—g1±ï?—=qÈXÀN”jÌöoaMkÜ)ÕÖr"„uˆÇI$v»““ÂxnFó˜9ÓðØ ÈØ’®ewVC5®ôéÑ…Â|`Æ€lMy°%éë±§Ë™…áç4®¶a¢ÔÃŽSl %Ç`/„»-¹D5b§åØÆ…ýÜÆË§X@±/Kr¿EkÂÿ:tÄæÛv•™&4µúƒ"Ü?ؼý«§â_qøÙ™ óàý*e¹æ¯¯ßoùm ‹tÊã÷v _Â:¢@†cï0cȵ‘˜rµÁ!ÇY”1Ÿa&ËÕÎ-Ìú4n±ÀÍüþ.ß"€#qžØ£Þ”ü/çÒJ¬}Ïò~/0ßñî®ø3Ûo·q“í žåšŒáÇYbäW¹# üRÏ‹?‰f¤Ç­s8€ü$,Ï'ü~nÝ›¨Ð}G…eOñ+|ÜÑKùÏØ:j—¨NIü3­ßTÕöýéÂIÉK„‘—ÑÊÈdÍvT)òYM`pž4‚ lŽ ïŸm>¢Bˆkñgü¥<Ùfép]x´=¢Õ`ReNi3˜[U1“M>nõü÷’3wø¬Òþ2TàÙç°×€÷‚±…ârÞßEÎ3 [ßä’1p¸ÐPår|Ñ¿dY»¥KJ7]ïN¯M–réò²´ÌÝg»î‘Èw´l‰Z¦œ$0FRAME 8G%,^7wwæV;šòÎ_€Sïü > 8üŸ}§o$¼úad5Vû‰¦d …Až©Ýr‘Ɖ®O/¡ÇµöyÕï^ÕíÕZ·+€Ù›lhÃÎ'?òèõ.ÎÕ»fϳ ËÖe2üµ–ax´»l­.PùC8Q22¡ª‚¢²Ík0Cj[fÕ}P”Jý0ìóHÒw/è”ô8ÓœØéÎï) O´™Þj„ûßàãÔT˜­=iÒ½%åß›t€¶Ó›RÞ7‹;ÎÕ:snt¢ÿâw¤ìº»\†‘ÇT[>UÕóñC¦àšŒ’Í~£bDZãõþùž}T¡jºÕG_¨Í$øFLj¤¡ø9÷;«ucøšÀåúÇxÐ_¹¸,}–=!ÂbQÅ5Ǽ×ßôHt62œ:VY'Í̤ƒÍ’–->v&µS,ð¶äƒ'Ãz—©Z͟ꤜ­î¶3ïõ&u*p`¶òõXëÚä.YmÜBckÃí~Éö¯œäЂ$Ž]c\èVÄOœÁìÚÿ g£t 3صûvŸsUÊÔ7É[¦`Ž7Y¹S('"÷þ·ýëž_•›´P$"а%­ fïÅ»Ÿq{ŸKx7ìC•q,ñ@$¨$o2­Ed 9D…>•)úò‡éÓGMÍì÷´á ¶é½6²ÚwtÑË:á[¥¶Â¸vÍÔWMÐ)1ÑÄ>åÔAx$?”ï6…‹ÄÖ’59ZØ!)þl÷£E¹ÑÐoá9Îį1¶Ôåu|I$±)åå® œ³WŸb,ÈjÒñUM¥ôŽYà: õ_\Üî v®Þ§™ôñêÒO6‘êñ1Pâ»+àÁ?ã¼°Ø<²'Ør fÆ^x6=”¾e*¤ÍΆèßAëùH\båé/{ˆôX^Å™Éö‹ïæ^EÅÙ¨{«—T¡zžã“›:ð¥ò¥…±=…êQþ>Jro¶ç”V®žÿÓØ@¯HŠd¶NÙuV¥ëØRâïdM¯”fèO«!úŸ@JõᛕE[|Cµ+¸"äVÉVHVû•õú¹ˆJcäeáJ´0½}£XŒ3}Ÿü~†ÐvxUßPý ^`><ý´™#i2£° Qý¹ÿ;Mõ >R’)aû\C1íhÇÿò¨#òáp=—»÷ýó/èVç‡þ¸°¾qåËA ch’14ÎÈs>Ã,~ú4Ž h®x¹ÁUßÀüLÔ9–nWR'«ñ÷9 d 1déÔOøñtñm˜^ŒŒeZºWÞ³…—Žö0Ћ,`îQõN_·-w²Ž´»dö‡^ñ–ÿ³LàÀ&¿4/å× .9²_Îôs™?ÒÉ¡óùü{FܺN/ëºÑ—%‘™ã­£{R|gVyÎÙÇï›>®’&[fÕšþ·£_íööld¢º?[q¯ªYò]µJñY8´ që$ÈΕèYH‹ÛúÑ[ì–ÕþXº6]÷Ñx°‡åŒ«­Ù.=“¯ðÒ•Wÿ¯¯üϹD´¥¿¾}.[XtŸ“†“µ®þËÓà¸ÞN±j$¨Å i>™¥S3Øìu@nsªkñúÛ¦Ì ±BU¾þó~¯› ã]Ó ð Ð6!:å‡rÌDoúObþ)hmDI´¿àA·sÌ}p Dßç}×wx¾4.´‚Žw( Ó%öNî[¥F%9ÕW./ _+œTĤ×ÈÇþï®;ŠØÛH(ô]Veb "”… *šöÔ7¦o}Kõ•ªJö  Aj Éù&Yô¢pÂ)i¬“²XæS‚§ŸçÌrâéž NÆÖtøCÂYV‡ÔFóèÓt‚FÁ„a#cˆí³ yŒï¶–Ë_GÄ&"r­Ð~ ·æX_ii€‚W‡Êv½ò¨E¬Oñ759àj;Ò|u(¨µ^Ý7æÙÈ ùûu¬Õÿïw 4øÉÔ§d!ø€yòQÈܬ€qNè&Š»È¸\Uš“¼_ÅføÅªâ®”/¤$,Ò´qïÖ >#b; ‰xrØÅ‡Þ*Ñ,+âòõy»Ãß]°ù÷Éöº/î¡dTÝäJý^kßû´Ó"Û© ‰g£±äø­ÒCÈ£í}Eq ×ïÓi ó_R”±ò'ùˆþK›æ}X˜yK‘ä²å9"!gçÍ'(ìÃó >ˆû¤FRAME PŽG<îîîñ}%žs^W/À§‡ésægÞïà§eyCèv"8™éúL ¢ÅF@(Ÿr”¯i4JS·à{<éóèó>-Ó ì†j¨¯{ª^{ÞõÈ@ðâ€Mæ69Á9n¼ÈÖ9ˆÖzg2Nó{¦Ü’GFÄHÚ£‘u”§,è;Æúè-c‹]ÎsËW\ÞuÚù8lR°øÇEOD1—Ó‹ÎÃe9é« q”í:sûiÌpáÞžIâÈ}q¦(ÅŽmÓ3 6ðÑy“ ¨RÄ·1qÛ#WŒ‰.ÍS5|tþ ÂÚÅê»þ„©¬ö×äë ÕñÃ9å¸øÙ•óã©r_O6:ç$fk½bÍsTWMqH×bFá1¿8ýª¹Ï®| JZé#×|qáîfa6'©Mƒ«H$]&Rû½-QNzÇóùÂÖ.õJîÛË9ÖOA‹0vƒzÌì÷6ƒöPe§%årÈqI##c2½ð-p©¼‚. ì*bƒ`ßó%¬:áánL“ñdßþ‹p†ÚT•+’—8ZSRB_ñ?ìzá€lã'/€è ‘@÷=¡±iáÚ5¿¬Üm¤*yœÛhxÅЊ´€·ÞfЀÜ01µXí€ÿøóΘ¢Av¥uBú ±ÅŸÿÓààa_£ÿb‹oZäbã”ÕÆþÕœ‰É¤Ã8xþ8ñ±ýúq¾¼¶´õ–Wî¸X¨Çñ2í>ˆÜñIj¸|¬\?f¬8;XŸù¿hDn}=Ï·÷Ã%hÜÅ W­_Á®QÝ ›3r?Ÿñõ-3û¢Ù™×a$®aÕ%œù­°ÿ—é~— Ë]s뽚Þ²ìÓ'Dà³ÿÓè5Ç©è@"=(¾æm„Åã5òßò‡\üO<°áßýk¼;C?‡)€¹)¹zŽ»MÍÉ×ʪµÀÅôó$Ndë½K2muÎG4(Ù´=c@²ßë'u€Í7À*â-Ï£û3ÎLöÎf“N¯ÂœÖ2‚‚Ik눡ҙD1ìá@ùË‚»Æßñþoi\¢;ïúÞf.ö7UÏG¡Ôô½·è§Y‘Å›lšç„"~ÆÄŽ N‘A"¯€FRAME pž£‚sÇÆné=%•Üñqœ?¡Nëöøð½ÏÑà³³•8€Œ4§³¶Zc é"E6Óúypó@ùÒ>'Äø4‹×£½W§«{Ü—žîõRp#À`Æ8ìP8ÔÓVâoLÌÓQض\ª; få<Ÿ&` Ñ€(Íp¶³1>Ä_Ás&oR!ž¢¼ 5yà¼ÉÒîYˆÂɆ[fVßL³¢õfÏõ¿ô‹ý›>löhQäUý}3^²ZÛ½mmÑïœáøÁ’n¼ËèÌ$vs_ŽÞωÙ,Úÿüæ• ó߉œg8ÿÇÝ?›ŽkÉÿf¨³À ,M¹žº;»›];:¹së³ûdÑ„H¡3Ù"ÓgËqÍÆ"m¢­c4#c2ƒïÜÐÃ÷y®+‚þÖbâ}H©½zñáÐhä#é3åh?¼å¿K:kVpøaBk[½}ÜÉ#% ‰ƒèˆ=×ëPq ¥É x ˆ¯~iÿÈIR@ÿ»¾Õ­€ŽØf³›’a¦k„·ôŠcDb܉§q£%W<{óÔgN×o$yÞ$D÷Hp[ƒ¼ï;k.— „ðÆ ¿B’¼c·ÂÕ²Žlt#»Xõ¢ü `¼šîÐ¥Žæ(Á»=œ:_ÐØFP+Þ 9=»áåx.‰ú2,|.Þc=iÄЂ¤ÔTÖÖLHÜ0Ôîdsôö¨YÌá¹ÉÌK$Îä~z¿:Ït,ã ‰²$žª÷;1$»qð w¼¾¢÷†¼t= ¢UîYÁ,«šm$•YÂò*®|Š’“}®ƒŒ( ±2Ï$“–gÓ'œí-Ó)îYI ©}ÒƒS«ªê¹€€…ø0I}‡ƒ”ǧÓ^ØVwÜ^©ܨBJ¼•¬¥[[x¹¨ÏÆp °yrµD´­ZÿB;»VµP˜[Ÿ'Ï_-$´Ö¼¤ÚXìI,u«ͦQá„Ñ ÍB:GF‰Mú–œ|î±ÇÐuØ¡î—{lYÁ‘ÚÐö ð òfË“À9™©ÜTz}LGzŽì‡lé¢ZA· s›yBÍ¶ÍæÔ)íß)µï£Rõ’ ›¬bŠ\¯ÌL­X¹z>#n‘¤ëˆF2µM©ƒ¥ÓÀFRAME |ž£„s¼oœæzZóœÎs³x©»ÇÊ9KÛn䉦µ^ÿXÃÊV%ÝÃwRQŽÞ·+¼:¶¯‡-°éç\µÝá×}>¡¼53$!¬;eC<÷Ýò±Îsdô&_Ä ¯ï¨Ô³ x?ÿørÃ#v§€âµcvvÐg´ƒÃ²áÿÄàÓá>¸ægn-l•²K^D:d”»Ee瓨F[|ˆllçš"ð»R¤oÅ‘°L}7!ò@ÛE™8ÃÃ$‰šµ{ÙŽ5i?ð½÷íÔˆ‹ùGùHýo—é”÷~;-Oõé>y-ø–&¦ïâÌöñÑ?ïKø¼ç޵-Ê•o·Þz´uiz"éãÙ^°×ø²n9"r3”@ÜòZ#s¸ó 2lcWv`#¬ÆŒ^&?æD/ÜqZøÇ×öUí÷ÁþÅFÈbã@ÿc¨Åp|ß‹~m’ë—?ú¼µÖdÑò´ ö•ô{>Ãøå³ì%¬ÚædÅÌb¼É7òŸ˜Î)úXŸ•ÕïÿÄFcÿ?ÉåÕ)¼¦sy?!b±y˜¸9—ùr×ñÒ0FRAME \£„s¼ç»Ìô²pâcÏ8ŸZ‡‡:48_Œü€ÓÈ@ŒÀˆDÓJ‡ƒè`š"¤`ò:>$§Ö)ýŸ#íóøj¢½½½¯”õï{uЃ€¬1ÀCCe­ ŠÍéó:wÕŠÜ,ak̯2ÉPÝO¹‰#„%¶€†Æb0Ò¦"CŒÁšßsEÝÝg¬ž˜V-Ùî”íe¢!!ÔG!Ók,èùo’Ó$àúrœò–œ‡GßCÎÌQǶà…F5R…IÅ•Ÿ7¶w¢~ñÙº°:mM€ äP*rRý˜¬õ–¥Hÿ¸‚ß÷³MR&Äù@¨O,^ÂêË–züª«èªÉg•UCFqÄ[’yu:ý“f•™âG¸Ȳõ Ír¾ÌƒAÄÂW±†ýÖÞcŸ+kŠn^¡ýȳŒ6X¾ï9y±œÓà¹û©­†ç7l¼¿k¹®ù ×±²V6x;Ó)‹âõOBpÉ»Ÿ²î(0¿k?s„XÆÄÿÅ‘7@»a/#%Ø6Läb…Y«Ðp'¤Çéi~°*"rkôv>ÃTJçÏù;lÂýw?t”Œ×ñýÑóäHƒÙñŒõø ö^›©?…^?ÇÕnÒ°Ùxßx=HD†v¹€zñ“úÇQ¹Ò1p09po¼ÖW56Š¢{ ÝòÛºß`y*J)äͨ£úƒv„Oa5yAnI¡WE˜uÕ8¾”+§ŽUÎ}ñ7£š¯’°.úïñÓºòåÖÊÖ‡Ólu“]xÝ"ÖNÖJµQ4“rõq%sä¹+éß9¾ñp–¾Ý$!­#Н€FRAME xž£„o¹Æü²Ï9<â~ÊhçÄ<}MC³ÁÑ'³ÉÙ¦íBtú=€±¢0 °¢A1a…)ÒýcñŸŠx¨|5OWµï^^ö»Þ*æ%°lÎî7_<ào–f¢Ì—¶ÓÄØ™wà§%>1+#­W«)Év¥Õ8â^ŽT©ÄLÿ¢Ðh NüxY/wé—ù¡1ya޼²ã ¶a#~­þgÉ„·LiVhQnñÕ¿gÕëæo_³ÕŠj›Ä¸I©D=ÞaÏ¢•¿EUmY2F2A6ÍvM’$.Í…ÓkØo­ªårûccÕËÊ–Ù‹ `µy6 `̸ öØÁ'™ëò¯µ|gµu.¬#=Ì4¯p¨£ˆ°Ž$Ýæ~Èò ˜UƒYVÂõ€¿o!ååÜdz^ìf)Fš JŠØ,¤è|\:GvU‚&’ȆÀ—e²ÜåI¯EÄdÖrÿ©¬œ”Q.YàôÈ'InWúAVRkQ¥°;6;õÉkéŠ"v=5ìüù(=â7wÏ9`56škçZÔ\ >nGvå~ÖÞ5ëë4âÓ;¹ëö1Ü´¦¯PÁw nNÞ ™X Ýæg€<ãàócØž±fätî7#Æ7@†yËhñáÀ\vƒm±¼Ÿ»V¦2àö†=¿‡]ûÔÇ ¼ïíÁžÆTÀlfÎè "ŽóÀ^ö?zà>¶2”9•ëU"]©`Òýö?úÒû%víJì4pÇUÙU‘MS X˜2 L¥¬m³!ÿ½ŸõZR¶Ÿ¹$?¨¿¿§øÊ€±¡–‘¤9cßÓaH.\ÑûµÚz¶NcÚw¸¢Rõk÷€?ËÅèï?·s\{m_꾩¸`4~‹ùŒGÕ(ÿöDeaaôx8Éà,þæ–˜bóü )¿ÅÀš ›=_“*nÊZo£¾3?îC§{C%Še?ÉØ êWQ*QÊ# ÚGÁ'Æ.øÇG£–+¯îÊBr dœìwû÷ÿO<üpÌÞõœgôôLÞpÙa¶ÐÊ<ÜÀVPWUÖ ÷ ›‚‡7Ð ·‰ˆ;Ä=qò„Rî`é>sÚO^&ë&1/²2x—5®»«öé§u©™)tc}úo hyó{³–àñ–ùp"ª«€­9¾Â´V{ªä FRAME l£„»âóyž²Ï9ðgð/sŠo/>NÞÈ}8ìHðÖèà †$Š€|Ê`š-B€¢Ìûšz@ú—ØOÅ,F&¨¼[ÕóE2$ °§á#XwÕz–½ÓµP|áõ26+ÓWl˜·çQƒ¥rô4†¦%‹òAÑ÷f„ÕhÛ'°ë+xá‹§fc›-¹ëÅë‡&?@ˆbŠLT¿¼Vº Hž¦J½ý<ƒë¼×¹ÌЪ"ÍÀîZ«ÏÇÏÁŒhÈâ çܼcLyÝÊdwˆ¤$ˆÊp~ö7=çó⫪üðàrœfŸuÍÌ÷"šñ@„‰‚=šW3sAù6)ÀƒrEZç?å){ÐÿÀf°O~Ùá¬Ï–sXä_rЦ»ñmïôˆQ2´«{«Èxñh– °úblNfv_TèwW<é´î?^¢{$Ü` ,µµà¶ÑJk>ûƒ*â¢0½×íóønKI'h¡'Œº×ü1äX0=£õ™Æ¼0‘õм phœMˆ>áú€,çåqYÙ–sƒðÁúÏГûWài0³Þn}Õ&ßjjªÉé î{H) ±k6,á£4eüW‡j6B‰åcšXÌJÕ˜¸rýW=HG&½c',EE"9§dÄ™æìЇAc¦‹ûúïz¿=gòoÇ·½+³òºήpsü­ã‡å¹Æ`¾w[&˜ôÉ’«¤¨SwȯŸOëx sÕÑt9ÓÉ^ŽõföM‰®Šßö¥¯g˜¿¶u$»³¾ºëtîŸ$ë*ûå/‘ã&YƒA}?ùPë_±b» ,3~·öFRAME @œ6œçÅåí,®æ5Èáø}¾i@ùãàùñÙÙåééá€@‘>'@ãˆIñq&©ÊèëƒÁ~3ÉÑò¦”?e‹Þô§«zó´0 î5œ©g Vo~³©aG[ϺÍþP?ï( $–Gâ €’#ë WHxãP¡YÀ[ƒ´z>´BRšriB€,=0›„›7to¯Fœ³…e¼NEoMÒÏp­j!Y.ç ßàÀ»òšOè ÛÑWb=Zm$¤¯ÄçÅâóÙ—v6ÃÊl¯%õLõ:º !¼›\÷ ó^ÆÇ¶d¸õÊœ¿*ëUU+º*¾U…jq€Ç·ìÒLÒ#’Γ3V¿E¯‹»Ú¤D`ŸRömK×Ó>8Λ©­–Uèj¬:çßóµˆ3 Úå+ç(¥ d:ØõD©ÄRT½ÆfsþT?t¤.vÀ©,7Ü™µê×jezµêyvæÖSížþÞlÏ6Cµ®¸§:IÏ Ì\ìLxùïœÄu-O¿ÛG4”×/ýäÕæW¨e÷h×”Œð2ŸØa«ànžRæÙ5 ³ Ê~-ª8Ó$¹HædÙ%ç¬f.'Ð…$ȱâ_Rä\Xð¼2»?1F‚¸a'{Gþ€žÅÁɬݴÝà ;‹²!É ŸÛ ipþÅ¿ -cÿ%{‘Qæ³#{w!þx}hïB";\²>'-NµHvÆ n=¡œ/"•!A*G¸(õÜ÷=ígþgwÕHÚ£^tn{Hú²A¯nìZ(3oõ1Ž h²Šw?÷Çán†ð`—^™7'ÇCßÝt9˜¹F1‘`úÿ¡SËÏ7w¹ôÔ~7g46§lȱÆ÷þWÞGkKÕ÷¼è؈™§G£H™€7³ÒyªêLÞ³ gÝó‹¥ý\=¬»ßϵßÁ˜U³²ëMH®¾7|»ÕÞ˜ª]ÒUaZÍZ9ÇxX7ŠBaý#«û¡H0Vh FRAME ´žÃˆÌÞ7Œâò=œ8žn€Síve~Éí4úYÙð=œ=ñÜéÁ OG&´hœ)ðy!Xa$thìÊD°ò|…½p}ï““ê0J_%ÔQ^÷JjÚ½ÛUC0B`¶îØ!•_7t#¸í~:Ù*~Ykô…µäV©–ÍkS1QU¦óÆ´Þ>Y Ëñ=¯lxÑo%è,§¢&¶¬²º©õI^&‡«´Ï×…áî@ãŽï{µ§»BŒ-‹Öݬ„ Ý“ÅÜwuïvûÎ=Bt~ܧ•+É&°³CU†DÄ­ÿàÛ…âîíÄÝXÁz ×®úP Y± o1ä½=üþ™VjC—áËéï÷3 †è5ÊgœÇåÃ?£&³ñA“€nÐ >¸:ìo]_Ø~~1 ›kŠ’¯¢v<Ëlú4¼ ö}“jæF®Þ­AˆóI¢?ý’îýú뮲‡\£—Ï,f¦¾äìGî 5fÀŸEŸÇ½®{ ëöùóþ¹fQmhå$×ÒW‚%Ûj•êØ>µ¨Þ»õçç”Õ;=Ÿ ¸mzæ=ó^U»ëv’Ebˆ:|$¼ôàVù.käÚ’òÉÁí +A6×ï%ªô’Ü‘Àní4ðrBÙeñîÚïý«­ »ªú¿¯×5¶ŠùúÞ¿Ç29ŠI<Ûgàÿhw5ÏíûZ?÷˜(›Ë™_µdÑ)‰'ùD™n-†ó¯ÝrCw 0¸5µWõðÀaØHOÊõÚwŸ#=KbÈÙ÷zc[maëS•ú*4KL{ò¤†SØ`Ïî~¦gãÖ t3œŠ·éÈ@H9öÁþå†ý§W‚xoðð¢(C™;ª}Ì®y熱×=Õ\ÿ:™ŽüOàñž 2:wí=éc@s®ÑD<øÙÑÓ„¿<+}sÉ­ÁQ˜\ùÏbØ hãw&™º]&î€Ð–}ÉßíÏ€x?Eà×ú7¿‰…9”kƒg–̇º{ØÍ.#pè:{ò.IôîÂð@Dß½Ï6ó©±Ë¼ÚWìWg“pzbB}<>*É¿ôOšÅ‚8@`°+¢å¼c8Þ÷úÙÎGâ6‹˜oegeÔÄNñ…®3'ð0+¤ó·X`PoHúBöMÆ®”> ±W‰Ç ñ¤ £3Õ\äÝfãgÝß}1÷£NÒ.öÖìi‘.öꥊæÙ¥KF\3®]î4žé;`ýd†ë»»¾n‡¥Msõp…i €@FRAME 0œÃˆ¼g»ÃÙ“Îx¸¸~o½Ù•û‡À ŸVéö ë)Кx!ñp‚X€äìgLUƒÙ§'Ð'“ ‘_“ì¡ÇÂy<Ì3ƒEïzQ^õyulư…ñUò¬|8ém¤\Àz‡ÁR‚ôrBc7¤ï &ô¶ïÃî¬r©´!×@åÄ‚ÃN•˜¯SßÓ»¦tϦŽ4›|+špRô$Y¡›µ×]ÒÛ¥½5Þ¼}J@ ã‹|… Âua£oHÒEZeësM웸 0‡bú.Æ,PKô…]šÂ’+< €áTó^Âñð¿á¡T ª³èª€Œšø Œ¾È ûâÏ‘Iý-Í·H¹Éx:µâ¢7s÷®ãëNe^Äì.{ Vjî7¡pÌqb+*Àÿkå2ó%g32 d¶$÷OáïµßOgÖÃþð/'xp~Ïð[Fö Æ~Ø;V¹‡-A×ÃÔÚ¤ž+Û"¯^?5Át‘0Š¡³RÙÆðš%bì7)+R¥?oÜaÕ7’ƯNByòŸ Ñ\¾RIIÿ´ çæ^bŽàÏ•f {ü,g¾ð´Ã¢×¥À;žÿ‡\«‘|@í€ýnèö½j8î?Áé7Ïÿßwu£T Œ†ã^ ?Oç„_Û«Y੟ÛËM_ØÉ‚úz«0¨ŸMC˜-ŠŽƒ@aZYÑÝc MjÇâe­céÿ´Á*]©_Š %¯Åª1ûåœFe®3O\ÿÃ||8y ß²IåøªPÐææÕý-«½»AèCbðZàP$HÞ¦m>ŒðQ·ÂKØuÿ‘ _ú°=Ôø&]Mˆ÷[þŽgÔuÎAÉ­…SÐ,cŽ]þyÆÆ/…£'hk C¥ÚŒ5¦˜å&40Æ?rJ‰^Ž|ø§y%“ɾLǶSÊD‰÷¯(±“þGgšO³OÉÓy=}›%)‰³«X™£Yboê6iWhÁ¡fÊnðƒè‚â ­Õ¹†<ò¤÷¹Æ úN–ûü‰Ç7³X”:cK,WÕôb˱Êi¸peó…ªøzÝu„1FRAME œ Á8ço»¯q ߇àú…?ZwoÌßàPñ9x ì†>˜”¸ÄøŸ)F‰‡Ü„4¨…P„¦ù9Áîy!O©ó<CÔ~g:(§½äõî×ZÎaA¼vÛ†¹ã¿Ÿ­ä™›-´ÙÐ(VQÙ- rŠÞ‚MîA“®˜>{Œ>™ÁmÕéø”ënâC ¬%×1Ô.<ßRQ¢Š~¦ÎšÁY³dãfvnËmíšÛ0ž¬ïëvDËfb·ãO-Q’šÞ´f~—«4Öеþ1àë„d""fŠ¿W€–†gÚµzÕ7ÊÇå’åÞ)»##•¶ß¬üº•!e ã§.r<<#²2 ÆÛƒˆr´.}6/Ã/ц©¬B?ª:Œ—ôN惨À@¹ªLYxH<ÔÒgí"Gë1ð‹»›RÔ5äúœ¿‰žtôfs3ÀnbÔ£ž 0’ª~ã(ºnÖ>wþû¥g¶ÀäéL7gW’A¿‚ÿú¢}ýj +÷Yþ\#…ÙªYŽ%p;òfµÎ)ÐÜóÚ’ö=¢•‘ Œoa~ ÓmJÊ›S¦h¸¦öf!öõĬãhð7RTâÍgW¤¥® Ý—ƒn^%b B ×2pøï¹žgh¨Ïÿ¨É¾¡ìò—›ÜKuÖÑ?!`` ¥ÊN¼ÖƆæà'—ëV,z¼5c>&Bw¯f-X;aËm~зýÆÕ¼e­zÿtŽ0Î Æ«=ѵvUJÁA0,B  r¼cwèÛÒ<ÆðÞ/~ mr%J®–3ûwZžóð_œ.w-5x wüZÿ„I™Û5±Îù¶ÃÞëKT°@Ï‚«¸þ@mT3ýh¦Ð!ÊöíSðb#à5¨SƇÜÕì=UÒnS èÜü¯Ç=Ç3`¬9¶a¯æÓâ4nÏèYÉÿ(ct±¡ËY\½$á´v†¹‰ÌC±Pù áà[ÜQšæHÍ;_YÍcÓM jfJÉ_‚Ò‰ølkÜd„f±ô5ºÃÖ^€ÍéAFqOÞÕ͵݋ړí íꊮ¸õxì˜ —7ò'?IÀ7Ö¶b'òàc‡¹úÛÉÇÌϙʎk#Cý1ôÊ5|²T÷ǪôwÎ5ùD@2“N[1§ZüöóN]U‡¦V;£MÄcf–¡Q†î-ܧu}º_D\»$zø†TFRAME lœÁ9Þ3wwQè$ôžäáø>ñ ¯ƒ~f¯‹Í˜ñ<à E‹Z'äLkÀ™!LSêpÒ H0¾@_ذùÁ“õ<˜øÑOV÷¼ž­^½¬€Ü̺¬ãDVwà¹_SÂBGÓÄ^_cf™vg›Hñtý E´»¡úÿ¡uç'J?;§õ±HN×È£B*©é(,•zƒ•ºÊ±S†”qxÈëÜ  ù8|H0á=µ÷xØ|ãg³/ªù®ƒTUsÈ¡$Ý”iDÝe©’ø•q¡`M¿þáøa¹aFÛíÉ~A)dï£Bñ?ÀH³uÎÈæ«_‘W &\±^ø=ªC%"*Ë—Z^Þn TÍš@¿L‡3'5ë’×I¯ÞÌŒXIà;QÂLéñ0ñbË5ëP†R Ú<Àw„l\AÊ)šÎaš½ucrôüsá<_´ï\Ö£ôÚ⌯óT'+~ åÒõΉ&HÈ•öÃy8/²¾]ÁÌöÖ®ò)’°,³^â;µ–8>_È/Ó-4ûr“k‰V>uð¦CE¾àÕÄ©N{bL”X2‚ï†+ïÙÃX÷ ÌôPfWTßÝöxüËJ»ÀR!›*HEf&«Pg3Ÿþç±–Õww†X (¬Z±&•´ÿŒìεŒžj>×߬üÿǤA虥½å'¼W}º]ˆ`S!ÐF°iRzÍÃKá‰ØÙ>@A¢¬eõQ3.×@JÓ‡öµ¥òiºÛ©¢`®ÍMR`ïìHÝ´ñåë W÷šáÐTI Õ4FRAME xœÂ9‡7œÝæz óµæN'àû‰ÃŸ8QñyвÉñ ˆx4M!NNO‰€pª,´»OÇ íòù9#;=”S×¼7½ïWªœÄ€ìh ÁÝpìóHñè¾RÏ·©N2öfŠž3€ IÖýÂI =cƒ0¨.YÔw²‡ÝEh®{`IÚä$¿ø)Ðë…â —¥_L£œ¾Jq‡ØsùŽž%†8úb¥ƒÅðQËæ9üý×Mb ÊVª*Ú¢¬,dæW0·ºÄxÆH™ºõûÌ?"b Ä(¯g²œµ¯ÀU±óFW‡‰ÔºäÛ›|\ó/a³!˜ç3²2&¬Uhì†zŒ®•äì:¥¢AbÃìT“ͤ"êYÝχ×\µÜÖ¿¢jbûÇ9P&1¸õúY€Ë8¦"MTÞTÒÄk¹Hˆª–{bÇ%¯]©^³ò·!g½.9ÙX2”YvËðzNxt‚©ÜYÝØv¡f|'9†eÜÚõõ̞ؔp‰½œ°3Õ­wÐo:Ýß¾+t§‰» ]+RšýU—×ø~\]éº{²Xˆþ2.†½½dútnµ, g$8úM$;`;ƒ\>ÁcÞAÀCÞ‰˜#àü-ßžBÜJHý!ÿÂ.8¢cžÿÿíƒ=•ãîÆþæÏ‚à 8ApfzÁ·ÿÃÌ‚âã<ÚÁù•Ô¼.Ùã=ºKª§`Àj@gî…ýƒ Î?@ýià%00)•ª3û<¥ÐV/{ŸãÇ©SiÖãÙ¼©îz§€“a#µ¢¯ãƧ¼ BØÀÄ”~|Á_p-&{?{}ÈÜÐ$ó¹ò Ëç¹ñÕŽçÆÐð¹Iæ(aHÿ%ÔûÏ‘‘ànW5J>7ù5ÏŸ˜ŠcIíœl¼ÃŸÉ¦Mètw¤÷hóÛ ·U` g@†ÇLT¹6«¤æÆsò²Zoz 1_æ‹8Ý ¢8#/¡¡fG/ø~Ú!›…Ï•Ëf£‚ ¿dI³hOS“ ­ÆÂfö<1¬Øß]çyýjœs¼¼:YšôÀÿ¹ø#49+ÝøŸ%°ÑS ³ué‡öý™ªˆ|.¹îíÉ|bãË åïѤ´õ½¸Ýit(õK«+-`Œcþ÷öíÊ‚¶]|Z¯Z¸‚FRAME LœÂ9Þ3ww—¨¯I^dâ~o½ÊkÉ´ç“Ðofôrrq*­± úœº B@ô}Œ°(&©àÃôybPèò‰Ø³òE{ÞïH·½[ÕPpÞ!±±9Î9·`¤«ÇŒy¤¯¤jÚHEPö/qv3f=bU5re+e=V¨ÔÚI.˜Ì&¸ðî¤/ þ¶,×b¹bÍçY54,”L{–Ͷ?‡xõ0õ¥ô…ÓÏü¤\{(7›Hy¿N~þøÕϺÅIÝàÉfÂEf‡ØuçW~õö¨Ìû°&m7þ¥dRðÇH¬³²PÆâÃë—Ç㼨oÆeÈÖ©]®G„ÙôRöõr¨J¯•Blš¾U¤ÿñûTƒ¢míWÀ=ùÒeI=dwü–  #Ú¤µÙ>·4P™O`ûª(i<Õ)·‘Kެ׺.´dè—ñˆ%x¿kÙ w`ž–¼ _ÏÛ²Õs™þÀW¶lI_8dÕI87š|Ä.  Z×­]’šõÆÜò) ƒ°2î°¹)K5SÂŒXTfyexyþrïÀ­“m™þ¹ÙË='ÒÔAȺ¸8ƒp ÈNkê ÜßÂV¸Þ‰Ì3Ü•c™ãðýÏ*#ýyŸcÂõž4›·~¨Š+§£µ—ð8ØítUÕ¿^ð®åçßÏÏ?Û´ä½eÁ=ýÍÖ¡!>A±±¿wyªjÐ#êZü!FÏÿÈäÿu®nÑî¥9r×ÿ z´·½ ÜžâŸxůàe.›“œƒ­2NÀ =Ì6t¼ájãpVgržçæ‹»ÌXgÓ•ÏxIF=Ù“\––5ß6ù‰?­Û-ÏòR)‘ci€ê|‘h¸T®55þs ‹†¦wô9?–žòºkwîòà™‘üŽÌŒÍÁÚ«¯þ0Ö0w àw‚A? n–.åcâ3ãºÊ¶íG¹ ‰ÛåDÙB–T\ƒ7AçLǽ|J¶âü]”úãC§û&˜ÞàoÓÙ¿à¾tø:UO[¤ŽW¡¢)µ¤š™\N…ÉùDwœ>55NÏS{X°;á^ÝÑzßl]n¬ûc8–ðùé†áíÅúèvz¾uR B€FRAME lÄ9Î7w‹ÓÔW¤¯2pü_{øû Sê‹è7TI=ò4äœh” #©ÑƒUNe:99q(ðØò”:< h”?(õíuè§«w=Nl0M€6Ûf>²²¢1”F£Ÿe8. ²Þ²²Ã„õEWÇB¶kXI{uà>¼-*#ùŠÊ8ãòM2/‰‰‚Þ€…Û£Þ*û?O‰µ>wŽn²ß6?«|*x-l¦Òy<°D5;éÄ>\~+¸l>œC–z?ÀšÛl!— jë9“eu'vœ±Žœ›C^©Ð~Û‘ä= K÷ØØœKˆå´×·¬ãgMøÉ™K&M¿kQ×éŸ9g?5@ª´•HªªJ8gñ«ÅPv´ƒÍ¤I<ìâ7Iµ¨íïåòù±È$HÏ1«'as>êù¥«MÂ(²ªlë Õé æM£=`ižÞÏŠhgû˜QB¹5‡¹‰‘¯P_£^™³þõŽÔNÂQƒÏîF„æµz4Зc7iÑ \¦àϹÛR’Óª^Dœ ~^š¤d„µ“qŸï?,Mëð÷6.ý…`œBjWAŠð(xÐ7Y5’Àý¡hlV¸Ê¼-wéŸ&ج1ÍŒÏÿÂEHaöz¿6ή4áþ}Œ*!±ùùû+¢ ám)”Y…õèn¥ ¿žêüÄ.\ý_ÕÆýÏÍŠ6þ½A(¯¦Gç¬1s×:oy=ìõ'¤c_g²©øhê “$'à{þzÂpÿû­VŸïx0r×Rš º!Šë_ÜÌ^_¯F߆ԿUЀ`‹KMzÈÿ Ú~·GLßIR”žV x×™-¯î÷íÚ^sƒÉ•é6´êrÀñ%*óÞªcÿ‹2CëÅÖPrpA™²dþ#øÎH¸7ô§ÁÆŠ6鮫åÅ' ¬‰~Œ}й:®â¯Ê»ùó5\Mjh­rnM9zçïã0 ÒjiÂ4u¾žTëXx˜8{‘”>ø.ÃdýNÍÞæo`cÁ÷{Ö~¦«ø9;ÁãÂèpýë;ÐåçÕ1¸œ@þ?¼6{hž|?BÜE1;ztí‹£N®^µ¯h°¶â¦¢ëK¼ö‘ó¥q‰aì‹É|~½¼!0„ôØVÀFRAME DœÄN!ÍæóœOQgœ÷'À=÷»òƒ‰õÉѯ»È  )ü xð(A Ħ”ù€ðž€øFä9Ê(«Úh¯uå8î{!|£øÞ†Ä!J9€³‡9Þó«¹XaF9#"•%8ü‹§rêÁ/Ë\OaÎå}ïE={ÖzŽÌc<÷¡Ç¸¬e•1ùy³üÙ”Æ.(!Ì Ë6›ZhíU£¼ kìÞ´êÝ¥Kž bÉRñ:áÖãYðl«¬–`ÝìÉt†³4Ù²ŠÜÅž–L;g¤[³öÏn£¦YízI8¯ka˜/[‚)HÌjªÛ ½Í‘ô÷ uÎp‘dubþ{ÉÁ)ê×劽¹k>Ìî%¬S.ò R5S£M¡½¦O•1«¯¢íkõö”“ÎüL»üíçõ…x$©›µbZKáÖsû÷2× ‡Ô.%M„`¯cKO¨ øå‰O–yù5Íù§-¯t®¸q4/þƒöÅõqÃS[ÜeRpŸ¢«847ÞEŸ)„¿íäø•Œ¯s‡ƒ€ÂO& ‹ Ã*bÕ/¤µÊVLqý|X'»]2ž,çœr®e„Ô÷Z±cCðVá—ËHšvâ´÷‡ÀÏM\.'ŒäÉ~DÝoðÐ@÷—±–Üt°R{Õ&°Ý0ØK±f³í34êeßò؃ñ؆ïP0× qáqðÖgä6£÷Õ©#ÂsfõûÖMЙoƒÒý2ïéãûÏš"cž(ó7øø=ûBæ|>ä înäÈ8?‹'ùÑвgŒmˤi®v~ßð|¤÷'\Ãïýe3"Mð±e»Ïbs7d훣¼ˆþq³ß5Þ¦õÐïë'oððUÅ\ÈOyø67×J¯¦ ãË¡f⼟;÷áÍŠþ)§›¢üçmK»×úvKÚ©\û`Ömâ¸k>–920 î5¿ˆ¯•Ï@FRAME dœ"pNoÆqŸ5³Îc\sÁl¾žÃƒÉ¿–FA>@ð%0‰@>„V¶A§£¡Ha€yd~´ù?ëâŸOUïuçx!Ð@ O &¥Q2£Y#­&ÞÄÝv 7’„À*è…LzÆ,µñÔëú´ðPí|Ý.¢¥H‘ÊÀÀÝo*oˤ£C…kf·ÿšñZ.ñöœžáÍDHš‹„Û6èÛ°Ü+zSڌĸj-1Q’¿A/R½h­¡/‘¶Í¾UŠTгÓ"¼‘žÁØœüú6[¦MNåŸÞ‘àa{CT§LÏXZl¸åW]ÿg…jûh ‘¸¾-*~ˆ’d¢s×5ËÊ•\BS˜ÉÈõCÍ…ì{_fNwbJ=ãÖ};‘k 1A;#'`ÁIÖ¦Ô[,ØîÏNtq>ü`2úV¾ê²VGTؤ`j—pY/ŠáwšíC~“jAKíçßñw› s%±©gÈ)°\z€{—í³ÒR;^ ä~‚Êù' þ‚âÕžÀpò Ì%Ϥo}r-Gøðäÿ{¿Á\×i0Geßf±À*ýx€! Ø‹8 yÿ $̆ì_µw2(«¢w'9=S§—àfnRÑŒ‡À¼”?Âú¤aíÛÅMÑܳ*ïÄ"àÁKË„Ò×Áõuý ,¾Ÿ´»ÿ¿[G¬xvºÁv_V³/\ò,<²ïØ$<RÃÏ a ‡žšýñöýÿ•p>Å»À$h²Xeäƒ$û´?å½GÇ7ÁF¥§û‘Ü) ]Êfo‰BËÖ×Î×3?@ïêHã‹j´nD$4©É•—1¡“µ›‰ÑÐkÀï;Nx¹LOÌÆùÁ`žj¬Fñaãoç“&k½HÍÁ éäx3$ø¾ŽæÖ…—…wKˆ9¨)çèšùC¼ïÏ'®`l†¥âá!r$O>ŽS`¼™;;yο¬ÈÁÎ÷®Žfsƒˆ4)>P¼Œaã%¨WaÈäCÍÆWcADˆxô·l&¸êûëSIûÝ]œZq°X»í¡Øjýöú»Fªºh‰²–.Ø!Ý]oS&]}’ùó±aIëZ½|C´FRAME ˆDpŽ3Œã8Î!ë,óžq?ÌGšø^…?:€$H`Ÿ3ð„*?Cƒ‚lÄNZ !Wµ$!'À‡èaö§Æ|M¢uMÚ2iO¥ï$†Ld“`ìñV' œ=%!ÇT·ší²ýk­pÑÉÿo„wí½²Ú[f×­Ò'±dÖ¯êõ’³Û;?úsolDйì×ëI& SÄÐ)X›‘§­tO`Ãì”Û#™AW×±y2;—9O¤®õûÉjŸ€¨ÞUóá› ‡çGÂ}j^Ç ^fÇ·°~UI³Öj]S¢zïʯŸþiócØ@r ;¶'i6yŸÀ5ÄA»€bý=˜™·ìß°~jt6ªùŠõƒnij£ê×£±û飀Œ»t¬ðóœêfÅ= µ›Ë½Yw:ü/Â)_ú¶'Ùd°œê/QêˆÊJ´#„nÏ!Ç-HA,â§­¶‹Sõ®ZcªÛS\‰Xx½‰…ά–ÔsŠ ç2PÇØ¯r[Ï"ánfïô6y šüžP,=¸8¿`¤Uéþ'•!ýÛG‡Çþ6:áíú°pxÖG–vÃÌ®døq`‡)l'#2ª¿ƒ±ðîS¹.—Ç–;iÁmø1ïy*(I}ÌÚy2:‘´^«±•èT%aϧÆoÕ¢/?~ž(_ê·èeÍx9á§ÿ§WÇF0ÁWmR6ú=`µÏiú½ú¶~å‚eiÌ—¿Õîg×ÁÀçä¡zuaÏ_¸¹ÀðòN„Ÿ•7Ê«Ÿ XM³•|®$­s ÌÆ|îaWèVPøA[à=ÀÐk©*„³]‡ø!¾8õÿµžÖPy€â¦›ìƒü—ÐÖwº°[ðfÏ:ãsUãºÚmôKå"=|åh8+7€°¨%•à|ÙO:-# _ãL›Üš¿ƒÎÆ"‡,ñ‘”G÷†¦Ðñáã§ž)>õ1ú2“ÒïƒÖS”AÇ>–&šÍ\—¬wðÓÞ®®²M™ëvDòÌnöi‡A×dK !ÎüÒäÆ+±k—Ô{"ßYtvuÀAŒÀï³Ú%`ñJ=ÿ|¸ðvž´¶tsŠ½ÖˆÇªÌ'nX•FpëG‹ÿ`˜8Šü“¡ "FRAME ˆ$q3œã79²Ís1äNc³ƒeøq!óý@Òb–§@7DF âu"H{!úS@‚""p Ä~ÑO7äzrO1‡c’ŠõïzŠz×»ª;`Œ0›`ß—^<© æÙ`†©©”Ng}ž$£eŒ™*šVÓ‘ˆuúÝ-/¦¦®HÆ¿FiCæ$Ø)êtæ³Ïœ…½BT;C´­*JÅiæíô+Ç/Œ>ÿøÃáÆû"Øî6¬ïQÝ—ßqÁÑ^ç”w°…7h„Jt¤ mã}â—«¢¢o’Õëy·J³þ@ÀN«‹ëŒY‚ýõÎ/Ætg´rzü—÷ ªíZÇ'1ÛöÆ'a¹|¼ª¿Mÿ³•Pª¹T Ñtà` €Øk‰:H_ß§ÑJ͆¥6/Æåõù>'¯qÁðmJÖgIÍE‚ðb‡hYI ±ÄÑ‹FÕÐÊÌg=â$?ø'(:4v/ܪʱ{J¦<òxüÆ&6UõöÌ~r&SÖʪàúO> ƒ?È«·5r7wHSqǾ¨–]­Ì®&ËÚ¾Ôˆ·¬ÚIó¦Ò‘çù´|©ãÛ]¸—€éf`ÿúl-j©n ñ?xf)ņEPøAu¿áåèq¹º¯i ¯w‘£uŽ—ÑÝÃs7À{5yDAÐū׺½Ê¸Áu*Ãü ¶;Œ?¸ŸJ·ÙY ?Î~,óú(‘Á܇ˆÓ?_ÞΆµÀìF¨ÿk½(ÔVžþ5¤µº¾÷%ÂÓ~ù[ˆúêCôjã¡dŸáNž(Ÿ]=?ˆTg[ò)‹öWš×‹ì²ÌMñ:F&2o*'??”Ç| ”!Œè­rNoÄ[™º3s¯|»¹äìÈM‘[%p~AÖVG,Ì{“äO¡¾^¯®ôžÖSªç{^Ç}R+qg»®Iîž· :Nš¶”À+ï 8=ðàÅryÊž‰MsíT FRAME „2$½#³˜î†3χ¾Ì–#÷÷­öÚ«$‰t›%й`%ÚhOHónÇ.™’„ŠI„#2óÙ& €/ŸÁ’Ùß[–í–³¢}x4F83,8ncSçœ/Æl4Éy&ñ(Æ´kE·+y2ð¬“:ˆèû*$É@ž€SÀ]Áù6ò½è»Žƒ2\ÙþÄ™håè;ÊW„\¸7þOQ;È—™þòmä;‡7o-ÞÜn ÞiŸÁ1Ά¯EŽóæî¼Áy¶Xu»¡Îƒ­µu»k»¶¡ÖRÛ]û…ÆKŒ—–o,ÞX¸Çq¦ð¤qÚã­5pã9{Íׄ†²Å‘&+Ž×ã ¸ÅpBãUç?¸§p:âEékÑ—\½ yçâë‘÷.\•!°ü©€¸„Äp¬ÿxšð= Âòq[ÇkxŒÍä'¯\+¸ƒx à2ò•æÙ`ƒ¸nÍmÆK‡w‚¯&^X¸ÅqŽòÍÁ™zàÜÓ9O÷‰®Ü 9,øˆ «€÷®x²:öþÔmÚÜ{–8ûaG…ž”Íp~LÆ¢÷‚¡‚oW¼¹x×Yàýà‹Ê¸oÞdzˆ¶X!vÎFC/ Ümžîœ¼bÓוog×=Å«‹÷„/Þx¼õqZⱆ´Áš´ÅÅ[Š·žï>Þ¼÷q~ⱆÄ?y`•g»€WŒeëÉ×ˆŠ€læñ¹ –²õ…,׫×óÝÝYãPÅô` rùc zþ ü>­˜C€8RôݽU眒εòÄΛ1ÏYLP«EXðß(·̕þ"üÉ#uˆBƒ'w Ÿáÿð:~ÓÄ?1>‰Wef´åeò¨ÀUVŸ7éñ)ÔCêåð–]žÌÆ?6ß«¿ˆ6ü&Z¡TA¨È|T£òÿKL¤;—VŸ”Ëõi¥úŽÚ*/¢‹c¢˜Ùqb¬šÍU‘'–d©ÁâÚ_Lq½ý®ºGöQ¯p $^6 èR™~J7§Ï‰§„ˆ yE—ÉGÛù|…@6æäÁ}É"svÂz ›Ë§5mçÛ«ÿŒœc]?Ižš|åü/¯`íCr4¼¶GkíÍer’{dZ…Å¢LýîÔ^”›£Ÿ ™¼÷Aõ—Ëhƃ¡ºËíÐj{£ÎöÁÇ×¹±†q§$½.Kåì¨PÑ&–x7ï ôÑYŸwÇŽF™›äúÆœf † ô%èèKDt 0žW¶¬²Ë/V%j pœ‹Ž|â,Zx‘…\e¶ôt.·£££=ÑÑЋz:®èèèèèè$GŒ0ÃÔ +ÁÎÔfx2‘ˆÆ*6=”¨)D^ų̀é@©îéNÜÏŸÞr¡¼¨ºƒ6d‹m¶ÛU*Á{J Cúi-´—b×¥P" 9QŠ£Eø,Êë``DßT·¢e…ìPv¨,PTuG‚… eê”E—½bYþõó—Êâq8œÑìa~* T÷ºåBÎÂP\ ÒÇPj¨+T¨mP¢ÍX'%AØ=JW(0ðš:zäÃ4P¨µQÊ1F® f?#b€Üiûêŧʀ£ARƒõ@*‹ëPz¢>¾‘9ú¨Ñ@¹‰‰Êå1 ‡ôo?vÇ ¦dOÏû»¬±ú::,XïбgGElX²Ç÷ÕE¶xJýì v> ú^ØÏ#3úg‚LÐRÍЗ££¡èèèèèKÑЗ£££££ ;::ÈËÖÃ>Íh½°0g¢¾:5/™çÚ'G2ëû»ÐePè§ !¬•ô"~k_3V¥q »ôHèЬ|*•ó££££¢Í-®xCwOó­/KÖkX}û9<«H–¨Êê ¶¬lèÞt•I·ªC¹³T‹»-çùâ?t0Eé{Ö÷gá™Þ„øE“o[΃Q«::5¥¶¾Ývø"7†ÖÇÚ ¨ÙPA-sþkÿüŽçÊ% ·o¿ß—û{óPüVùÎg9þxT{‡fyÝÕ É³ñP‡Îӣ譯ž_™òĪ =ƒ ƒ³ß¼þÕ‡/Ê üŽÀëÂÊhá5N @ ”¨óÒ!¤0eçY¡“Ãjð8Ùû·!pc7P2}*BT‚©Uª?TE•j 0ŸÿÊ…r'†üAꨥQR¢¶µAúƒª ZÕEŠ‹ª+kT¨*PP ¨•U |ªÝBƒoó³÷$khäãºËgLñ6k$  ð4ë’ɪGØ e¦¿Tkêz1@CM¾¯}_¹,^(‰@€-'Ê€cØÿ•Îü)¿ÉÉÕÕÕÔ]]]]]WÝö]]]Iúººº“—]]]LÈàpP ã¾ã«©þOE¨i@ ]Qî àj¡¬‚3†&G«2|d ÄÏ>aªP„M_‡1±¨Ã¾úº† 3ªgMÕÔêµbe3jŠT !P¡ß ” €…#F1@R€¥fˆä•ŠuPoà|ŒhT«ÌÄÀùÓªP+!€f™ÊŒ•ióôTf¨ÌÎ3ŒÓ5Q¢£OOOIU*43qÜb”0¶GBh„‚Œ[¢BåmªßJãUEY¨Ñ#¡ªmjç•´q5û”JV/éܶEà“vͽûç–ÈÞÑå……’Å„–@Bz¡é«ªÈïsÆ•‹Cí£e­.é«V¸h:¼È5f¡צŒñ颤 NíÛÒ+Óêê” mXÝî[Íæèn!è–ÉhßM`ya)WÙhƒ^£H)_¸gì>£/x·ãOÈ‹U=t´woð??#Ëh²{%|W9zVh§8L`ƒÕ…7'Åbq8ˆÄbpúovÑ¥<ö¢A‹óÀäײT¿Ÿ©)OL6 J~#óõ/í)†Ãað±: ÔÒÝ:óÚcuŠœÉ·ÀgóZú9ÀãÃí“Ï^ïE "Ú[ÅÉ—D€ŸGÿÍîg'–žŒy͘\©Ä]{«Ñ0#ç?J:l ££]˜B~šgðaóŸ˜ÿ-à÷Æ>Ì8:<%Õ½uhÊQG ŽÙ–ÀÚ¾œÅë/•½Üöy.{>ˆKm—¹Ÿ8çÿ™*oœÕë;¥‚*ŒØA¦Ÿ~@<²ŒòôôÊå¸Ñ£)•ôôôôÈäôéÓäyd¼üY'æì¾Œ«k=wæìœHc—òÞnO"óàºD‡ÖKý–:~½÷™QOq¯úk™<Þù{¼ ?ƒÌüÔ‚$xü^ÄuC‡k>H¢à»82f¿9ËÃc„8l*²ªÄކÀàcWóù½aèÁ†D,µ® LÓï(:«]ÞM{°[²voᇠaöo×ì÷óýIãà'[ÄIÍ4àûmYã!bÖtæÎ9²:¡gge;-È} Æ'!˜öŒr¡,¡s³³³³²‘ÙÙÙÙÙÙÙÙÙÙÙÙØ÷‘f_{wå‰@nkñ@vFi2Øê0½sgO€7cG˜ý­äÍŸl˜ f±Ý„pduvjýÃvq–/à6\¶Ž0Ú%ÊèbÏ®vbrcOL©„smÆœØo‹&$d`eiÙÂ×÷ÿ^+>Cuä6|ôî‚Èvvvv#³²<0œoבòðÁ}eü2ÿê²Üâ±ÜÍÙÙÙìììììììììììììã>‘ÙÇ,¶0úð‡~`ziÓ6IÉ–’>6i”ôát—<‡KMöKˆììæ³¢læÎ—{ñÑÑÃc÷õWõxòŽXÂ6Ìq|twüÍý\ßÑ…Ññññú?.îEshŠkÎÿO—å±?æOŸf…>ǧfü_µ(¸g`'Ñó9w~Í€(ß³*>8– ÔòóÈ…˜püàt ˆÐWÙ?É—ÆØ}µ³mKŒÀ} |}ÿ•tA²O­;µZÙ×R¤ÒG7øk=°ž½¯, ÍåwåÿM2K—>^°ùï|Òsó寎>f-úð ùäâÚི9\—˱’j×­Q¢/ooeDJ„}õœg¹B9Žd÷f#‘Ââ&ßæŒžWÓuc°[è›OÞS-ºOÏOomŽx3íó£ƒÃ–ñÁ×!.^©úà=}Uª"ögöâ霕j"–ì§ahÉ…¦C³šÇ§â/Û»ôzn£¿ô·TI¸ƒ¤ÉaÖ±§¹;MÓôÒ{b/´6÷A;×·»OPyY“h1#›…$eE“à(§q%*uÜ 0°&C…CL#ýÅXÐ;öu NÆê)¾ÙƒîÇ×m‰¡Ý‹XÍ®¥û†#ö©©Ô´oLð¹r]ÿÊ?"öo}¾»ê0@ üŸmµY뛂óQʾ—äù6Màß‘œ]Æ:yJµ5åìÿ³¥-fÿ …ÞT8¾ÃníÆ–Ÿø† XEŒÌ¼BRÑë5®ëàÄ8Ýóß}è Æë­01œäùš!${onI…‰&ˆF8^ÍË­+gÆ'ç1 aðC&Z¾ý«Ž7Nh{oÙó¥Õ‡3+)±'J+5úyY„$HñoœÆqËâä/`øp72Í“uí˜òö„ ›€íAi‰òJäSpý’q[ôyؼÛ7zàm Ø-¬ž_¯Þ )}ˆÞŒWOpן×mu”˜]kkËÿ<ÈKa… 4ÅYŠ=¾ ÉÅügÍäëSÁ ©!S{袜âc÷ÛM7˜ý›W^õèù¢å˜„ÈKÚ‚Ã._þÌiGåe*eE£ºhýÚ‹YÂ1tÞÉbîk×ËOË43=ž÷fèHXÊK,X"X°D"ÑbÅ‹T-h(,X"æ!t÷‹,X±a±%ÛW‹-î²f†«vK4Më¼n!ÿ¶!rØé¦´€à5‰bÎÔÓùŒ°F㡌yª{Ÿ:\“Ô8»ÇÏz±©møpH‹›L¾û£nÏ͆k?œ/ãïx§Ý’O¤8ûÆÇkíÈ]|uX¹3öôñctÒd™OU´Ào#ß?h,mÝÃàÙÉ…Ós;‰ ßÄužU/—Díf’t!²/åúá}aRA¡¢Ÿ£} ¤ÕîT›çB¹wëQõ~Ûi©²Á3Å¿_L‚~Ïæ®ÔYj!kÿòD#Ì)èmÎÌ{ŒZ³%~?q8JجKC1]É?M ”ˤDZ`´–²Ó5ZpãÛ_°Ùµ]‹çb¤Q”ï³}¿P&œ¶ž˜|m@2Ž}ÞÖ"5É‚3¹§tKïa‡I}ؤŸÛÓœŽw)þI5Ýÿt¤›Ó¸ø u'Í:Í5(ˆ… F†—ÐÕÍ+ÛÇ®w} F?ƒcŒðw¹ˆïÓ8”q–¶•ÝiÔ=šŠŽ/÷F«:™ðSŽ›nú°‡l‘Òmm-- ~µIvŒÒYôh,íÄbÍ«Q íÛˆµjݦN3KëÑÝgÓþ9¤¼Ó ޶Ÿ„ ƒ1//Òúó䕼hZžåÜJÞƒ¬Î-Æ#'þl2{'‡Hñ •‰!Êï!îì°“Jï¿L{Ãx»j»>yÕqª †÷yå:† Í ûÙU‘þcrU«!V@]g …ÂêÕd*ÈU«!X_m¶òä?‹Ù ä$†'|d$ƒÌz)ñáN}´6Ч ê²1”6Ðy‚åïË¥b…“Ù‘u>÷¿\L~»—U«!VB¬…Y ²dt‡ÌÐC—W#ÿŽÑ…a=²\Ëyhw ò¤zÇÿÍÙ#ÙѰh”köPÔ.û kõPš7#ƒùçÄzÓ3ÃÌÇ5tèYöÎ]$hÊvë÷&OÔ{Fã¦uùùî?ô‰éÒ²A4åãK§áòû¡õ4îõ„¸çÄ=y æ}¯ÝŽŠìÛ›©“>&D:¢» zÊ^åêQ‚ç1ç0š=O;KŸ¯b#S&ì¹Bq<²íV)lEƒ¤½‡C3òËqïÔÏPhÜËøQïš¾Zor1öŸB‚ò#syö"&QKi3]Ëb”1™š ÇÊ”(þ]%T$¡Q¬ ó•Ø-¶Îé&듨óH÷úÍ(ŸÊ+ ÍË‚yÞ‡Íî9‹Fž¦Góö£*"3äûauôßÍì›ÛõÃÎ $Ö˯ÐùPê`Œ´øþÊ—­™—R›“ƒ%ÜSÓ W#ûùMYýKSSSS»½‹9/Q±éK¾úI.ºÎøóÃÕV.o@Ù™c–ôÒó6š1òK3¼òˮŌï{°MMJ`¦6gäÉÍLÙ}tÝ>ßÈÁûAÿñç_ù™}‚Üh9ö;Ð?¨:ÈÛ  òøÁ?ûbh?‚?„!ð‹ÐôÏ` ý¬ÉüçýÁøm' –õÄáïqçnÎïDø`äÛ9ÿƒ'ýíl…Hwü©oW|ý ç£ÿ7œ8E—8Æ,…O²Æ_d+Àü/Â?=ÆpsŠç:33{’}CöAÄÛjÙ œx6 QAÌ*P\È©_L©[$ @‘$IHŠ"|©eK J”T£$*VÊÍëˆö\ٲȒ&žÞÃ_ZúDsƒ7øòÔŸoUÏCßùSðØìÇy8ùñIZ™Ô<Âåó<\º‚|hÞh|åïÚñî4ÑûŸß©0ˆü»×Æù{¦÷%s÷‡¼.\½÷ùÿîܤs˜÷ÛŠo ×hð*F·UÐä¡«qç;Ér— š›æÔóãµÒåà€ü—¶¨ÒóÏÍç³n ì¡8þݶÊRÚˆÊ=Î=Ÿ›oÓß§¨MîBXw!š‡;zÑrž%w6»üÆv|ŠªK5´¾¢›ýËá­;íŒÍ¾7.í1GM Ä}d0ïò¾ ¯YâÓ¹í·Bª;è×¼ž ô—zwàç–5—ÚG¹h31!¼|ŠñëŽðOà<`ÒHi„#ß\5uqîK–³O4¼jD{t†É/ða}Œrz‹ý=O:RÃ3[Ÿ…>ê ¯š­"s’zÿ±ä£ÜÝûý`šø9À+yéþ×)mÙà}Ûœ6㔥¶ÛerÝúÈÕß}ó}÷ßrÌ×ó­^¹|þ.É4e§Ô5Oºe„‹ÿý}!ÿì¬>_½H»)RˆªèËý£ Ø7ß}÷ßvßÞÁkdý„ð ²9ácãÿ¦·¸çúî—Z>Í„z5¡Z°dˆB×°=å³33tÿÿÎÿÿÿÿñr+W?89ň…‹„Å‘ç+šî]ÝÝÜ«ü\D½uÎ=cZ¸{b׌ºëÁƒ‚¼9‡ÿqEŒƒ È2 ~‰ MžhŠÀXbÏœ,ooIßêÎÿÀ:,g½ÿ°î gÿ÷âxx}¿~8LH¢KÆWâE߯ï²l‚ñÕ°3ðë×—ÅoŸ¼ªŠ, ‘ Ú¾s•ܹه—òèÔô섾¹Ù_pP<½ÈÏÈ¥üˆ¶E«XånJxïÌðkÁå뿨?åúåâ¶*2d§C¾N ŸÈáæ^ƒóN¨I° Ô AóZÉlÞõº¬‰þŽJôŽð?Ò‡‰—ÇÍ4dÃMåÖ€ñaÑúƒÓ;´eôËyá:˜ ëzÏ[dV—ÇHƒ"ÜðdYpzý??-ß$åIì'ûi.>{ýx õÿÿ˜'ƒ9v;\f.½–­Œ¬=ñ‹+¤Öä߆þ³zҤܚÿ·«2ÏN"ÝÞŒÛ|“–­¬a7Ú… CòÐüÄ»{IK™Ú‚fb;ÝS¡¼ƒ‡ó-Ý~šÎ‹ùàPµñ“ {}¯ú¶´ãÀ¿ê.``~jË¥§­~?Ëòü¿¿âÿŸáe‡ƒÍövÙšÛƒÞÈv^&Ü —ä›adØÀ߆·0w²Jë_á/…n#! QN«ƒOíjïëüŠ ï>´7ª>L}¦R–ý­íyeÉkÑËÄ ²ëß*yaß›Ûmmçˆ.Y_¥ª¶øŠÓp)Ëù’Ÿ{Îì{½Nÿ[5/A ËÖv ~bA7|¿“‚=–pZ–FŸ(Rœ÷ïýï$OI¢à›ƒÓ$)ë{éiÅ)XëÒ‚0­^ gñËC1ù0øµàHçFRAME tžHpŽo$âu~ygœÇ’8Ÿ£ÏGר3¬GÌöa÷8<‚ûzÃÀ|ËðCòZáa蜻ÑMºÑFÚڹijëʺwæ*Ö‰ F<¡Q§UV,ÑÛÙ;›Ù;ô²2Í  ý˜„]ïá叨Xù,¬·Iz¯ãù¸ò“[Ëãþ*ÔQµ½;MôÈnùþv,ls"4§©ãÓšä8„·M ¶,j>ÁÌÛ!Çßð-oð9ÄZ’§fþ8íIY±â–Ë“Ð÷„Qæ4˜y,Ë“Öǰ.{WZª´þŸÀUÀ,µ‘³J±ÀcȽÔW™j³0»E%ùɺzN¤ ’Û;Ìô S ˆ + K€c¸hFò-yÜØ‹`TÌQ™Ã€ælmå$3¿–rö.Gcc%äŒA¦¥”À˜P˜ ^©ºÅ•îl/VÂÇ- «‹ð×µÍZ¸ÀäÔè‘åµKHú°O¡?Ì+`x±~Rœ¹ŒlíR°@°ïµ®mÊ/e>}{´Qáñ®Ù Ǿv„GdZ<,*T_® JQƒ+Ó_f· Kêsâo¿úÁz ÈëëžóóÂŽîíW+±qp2ñ^× 4ÿÄ@å“3K;¡D_Q…ú»e“|"a7o@ýØ¡B«¤æ·l"ÂÎLŽvV ÐköØæ~2Rá– ×þ°ý囬ÀD©°ÿ \#_ÝJ{Ìx{á³gÁXesM£ÓðƯVyˆØÜQˆ4€õ\ÖSb%ŸB™÷ת€|ÙøÇçÃÖó4êÌÁ˜YîAøº d—œþ;úèüƒ¯‡7èt{ÎéÐÜ@p“§làW¶ü šM!ñº ²XÔ‘¦˜Ú¯j'£B ÐF.¹Êtž““X¾*G#@hÖÎ[ÄCŸÚ˜; Ô“©›÷„w­žn·œgf»(½Uœ•‹Pîƒú0Hã‹e{ …€r†3© Ýl@yhè®æEoç1s²g‰ÏU쯟~ÎWfk¸탬:»ªÙŽîµ(èK:j ¥:¨ì´jóp_#¯'Yó|õfþzõÞõÑJ ¿ÚaÀFRAME ˆŸDpŽgPâu>‰gœ÷IÄü Þ~!òîÏhvB ô'£¡0àáåD8} øùì§:‚AG( ,²Š-Z· ŸsŒtî¨{µ`¾”¿a¡êvqÖhÓ“Û(Úw:ýùŠQ1;~¸¯µ‰Q öÁçg‚±ÑB¢I)ˆ£Gtú»õÒß×Q_h¤®Ö26”ÖÓ°tSUþ…cöÇXVñuD“±—·H-Æø2÷%›w¥ŒŠü †8ŒD†ï9ýC寳s­†ôÅ9´dT[FIJÿ`Oïys|SÚÐ'É6G^À CíY×ëþØŠÄgÏkhƒVWÆÃQO*€M+§þ•òçáVldÔª#»]ÑÖ'Ó:]=óþÙû­üö`Œ l ç8Ȱ:5¦Ýï&Îiíøé ¢Y¿Ï$Oš-"ˆé¡¢êÍßÁR=»¾¸¬ë‚ï³Ð1›vgÿE6îõˆ-khŒ¯ˆ­{®à³œò^æLUÎûEUˆ1 ‚ÖbItÙœ6=¡nEiVÐJàæqþ†; œ'¡N¡¦M>1çÈH ¼ø…ñ2=ë*x“ÝK¢Í¾AyH5˜µ[]3õW”·è:dÊè0<&Æ¥%ŠX«ˆÑ}/Uö <Ë5j=(N³²•®3#1ôUe`I ½®"P¬çõÎÂ8êæ‡)qt|:§(¤å1x¬˜L‰‡ÉE-_ɤÜÜ™:*|ggœ'J…Ùì$œ+j`s“ %`"W+Û»„t&øl#Ôn „nÕçE{5o¶§+,°P² ksªtrxÎ[¦N0(çVÛ1¹xÍ.´¹ÂÌ~59v…R“¬áFfQKåVmu‘M_5˜" ±ÔX ¿¸p¤ê!C#Ô´À®²X9š;­ÍNºÆPCÏ Ë}öª>ë:ñiÒ¬Þôö'Dª[ºóƒì½lò®(~ÑD’•;)_àG²;º â»óøO™Þa=œR9žh<° ²Ÿu+%¡°~ÅÔo±ÔÝQ¥Z.³ûìyZqºEû¦]! {ï8yX÷Â>ƒ×H~ ë&m`Õ;ÛµŒæÖÁfÙ,³gAF1YÌDpÆ–ÐÖÞC¡ÏV=³}4†0œê7«#Tõ¨ÕzB/·fËÔVØNÆ‹lºhÙ€FRAME DDœsˆns~q^o'ÀEì÷y'àìCêï&½„û¢"§Ö{)dR¯ì­ ÛÔ<¾O`o¾Ÿ}í÷ß½é÷=½ïžð¡HJˆl Üã8ñ¡#̼ßZ1ˆÃGÊlÒµUöÆ" ±:éßÒÎ%·“¿[ïÇÎåšÔŠó !ÕjÔ¸¤¬«.Õ½êÙðàçÄû„ŠW[%”B1GzÉèañ‡¬°èè£ÞãóTÿG 'ÃÀ»‰U¹­Ø½·­mõ³b*Kº;Æ›¿.ž`ÇÂ÷tPc) Y²Ð~êÃÝ=Œn–Ä3Ÿ„ ⣎æ0ùAW!¿[Æe®šìk¶¼s¢isoG삈ž/ÆÊm½áf¶¼ÞÌÒ)˜’+Ä^J^d¸P#•‘éŠü㿺P=?âCŒÙóÜæs™ùÇ7-Š4ööÃé \`K‰"9Ù;Ì9 ¢ú{x ÿ±'ÿÛY<ðoBWÿÖ°î\iî)‰°È1ý‰biP)\f+KlÀ$bÇÛ8dј–!"°ÜDZ^¹!xý@؉ /ŽÐÌ€ß.Ó>pRÉIð.LÀWËA?Ùóã1x¡GqóÁ9šœÏƒP{»”ÕúZèÛÊ*êíQÍè ÙBh½ÇGÙÂ^+xFRAME <œlàœgÅæüâO;쳇à û }nþˆàÀ(ÄN"ph˜x>(#Zvs À¢‡ßˆþç“Ð× €°ïÓ¹»m³¾7í§g¹^¨B«‰âÏ¿Þ3©œ«]Èy„xó"ˆÁ2Ë)ö«)ŽtŠv/glç¼­J£ J;¡ àÁ³H┟åÑRó˜©xax®§§ÇsÞ86AÛ…>ð0" Ï*Ö’Ù=p|ƒñòš=1Éç ­ô2>l6ô*Ú/ú« ¸GÀBkíÁÅþÖhŸNÔSuQ®õ¾»ì®Îbø±;•Ê ‰ [F_J¬‰IÑs÷R¶.ÆÆÆ0¼ ª 0¹OáPî0<[tÞ¼=ù•¿›øÁþr[ÉÝ÷XõÖÒš›S„”0÷öYåV½eJϘFI:«0=YEº=B¨t؜̥™žËÈ;õ˜¢Ír_2[ Á½…ÞÇæ Eˆ?ÌA—(ŒÏ“ßX7†„1rö2ñM©g<Å&q€@;6©ìn`“á‚4û5äÔ{xeƒÁ‘ôŽùa¯ ±sH¿Í¼.bZÑkäã Îk£D{dö‡þ¦[ùΠùÚÎ ¦ÙñCØU {3¢E¸~á¨ò–=ùÚ€ð®ö ×$¿qŸV*¸ 6ALôZ ^¸Ýàö×éxÉóÛû)VƒÙK‘çþ¨\a ‰ð«Qiñ—¹–˜ßóý劤]MsðÑ'¨… òc|ó}ì *ÕŸåžáOaôtùˆz÷CÄ}•¾æmAKò¥ÕÝ"H3<+3ÞÍ023u1{ü›î{X;Ÿj$løÆæ±µ} é4]¤ûþ„€ÉQÓ w4ÿIïè­ÈpÇsE1ÚI9‡“ù#¿¥ë_ÏÑY3æc§—ÁÞï&L‚ÁaísJä²–Ù ç[,;ÃßÄf5ù¦è*àYC‚g'$¶~?èdô4°ï˜Oô  ¹Ó;xÉæüÎììûûߌÛàaü7†#·bžÔ»øñj!3„ˆG¿oæÇwÕ8”OD9Ö5ßa}xêx lmtnšiÿhÃÝKó^¾È>r=4Éú†`FRAME TœRpŽ/9ÆqŸ0“Îû+‰ø¾ÜÄúÛñØÕ¦„‡¨„Âø "C6%px9iF‚ÐgTŒýäøÀ¯óï¾÷½ÞûãÏj½3¶’%´ |1³ö¹éγØFº‘„`“¼ï°ä8Ó²­ÄÊ…ä“OÒ@À—éË™%7í/•krò+Õ¸ï7ïrÏõNeŒ6‘µ8F"M{Ÿ7Cièž‘^U¦(åòú'’Qôî;%œ:"a3P«l¦^³&dd}^Ñq'ÃáñCQë‚5³"JmŸÃŠDò.ZMIWcarZÖ1µ,9qr¨ÒöË£BòBÎÂܪÕw- Õ’Œ Œ®<ò v„±Ú:¶ I™’n¤ƒØîdYko[wªp{SòkÿigvÁlúdeR>š¼? £1âšK=!²‹ù+äþlñqÉJ‹³ <<ÉëñSmZ¹øTH—Y=âÀ#Y@O âÉ韬å,lpÈ+\¦«_ËÆ¼>ÚÈì!¢4\âàË.à™*Ô©^µÈX_nÂ`ý®9µ)›î@éÏ×”Zø—ön©M@7ö•¦{Æ`êƒø6»€ÞùŽ3âµç?ëÇæÄø8ˆˆ¡ãÃÅhÀ¯oøŠ§W[‡Ô9øÌyïË`àa£k0yI(‡ÑûwqÁù"kÎÿ·øÁdØŸ :Óäè q«ý¾1µÆ ž3Çùeñ׸ÝûLØÄÒÒžt(!N?àÞÿx±Bm(ù_ª~Óu™wð›þ~3t=ãÞà;CÛ‹p÷4¸7 à•÷ž\×pàdM_ûŽE®ûõ£Ç¨Ã©út`Ga¢^¢è;ã´½v¨~×@Wس{`ãgáI}‘ÇùÜ…ÅÁÇÕ:³IçgoxÆ›îb …oÐHŸìÜïyÙ¬½ùlÝÔ÷!ãÙÚ€NPÜíeHdiKãOûÏ]›¼™Âç',ÈJ¨ñs‘M@uÈó)|‰÷â‹òšøËcù'ÏŸKëûæs'?ª‘; è²ÄÍn4èï¸ð›‘ -¦4ÿ†¤ÖDÂú:à¸[H{u:½·¯h7[_óm“½E¦™—ås5b*åÁ‡)à{ºU^¬ßeFRAME ¬žTpŽ/»¹ËÜW¯%œOÀ1ö¹ægÄ õy¡ø;‰@|:ú~Š¢y1ÂÏg` !EM>瘬íò|pL#?!Ÿ|}ó×½ñûÍúÞð±(Zb%Ø}°ŒgÇ™ Bù¬+s{šIëO CÃÜíЖýO’à~=׋ù· ޼ÀñÈqdÝ¡¯“w¤ªr?~¤¾ KÙ ËF!˜QAà©æhçݸ r-š<ò%»‰Ón·MôÛ;£R›Ú2¹£ /U-Îe ƒ¤ [qÄCQ\7{a¯™Ü §–©´'û¨ãU©h/‰Š£îê¿ú✌#öJA¨ÂŒUT.RùÉbjO«zvÓÍåÁ%GSîP …Ì“HlŸïv]}ÞÖe¸ÚR$ k"­þõ«h)µ£]h]´†Ú¹'ÚxªjëÞ­‰c@ x*·¡r¸³Š±sÇŽ%~Àù©CÜ鿆‚P߬A+'·z›þ)2«+¾Þ—)Ë‘œ)þGj û+xÀì©Áùb^V‹ó7µaÙ+=œ‰AZ|fÕè$õ…€|îG«ŒA΋D6fÇ]5Ö, Ϙ²EÍ Â „÷›AºðèæÞxyÌYÄGð±¬ÞÞÚŒô†xä¹j –£i"(@JU†A¢[?£*¤;|ÐÔßR'žè‡¨eÁ4'g ^¸¿f¯Þø ñJÊ%)qäw…è~k^:÷†%Çä§Çæ·UÚÛ ßßzÆ~¹ÏCóHÕ¦ö£ï½Tw¢II#ÿÓùÓ-ä²XŠ»U¼/;ç˜]™Y6CÈöÈØoßeqÝ !Ñ Zz‘K4ð…õò#ˆðö=üt£Å ˆ¶í/ÕßO‡‘ñ~·,™¸Í{äŠCîÏ"Ö«ÕßN;ÿ©3¯söïH±‰‘ì’nê•\>AUüÌNîXÖÊ)VƸ¥.®¬Æ¾ vŠ7õø£³éòÌÿ"¨ŒÿŸ¨LI$ýÉiê¨ôfÉ’dFlƒ5bþÒ9«ÖOÌ ''ø“Éû49ñ=FRAME dœXqg9»Æq=…zOepü_{°åðh{CØi€Ä¡ìˆP¹èà'.ú8B^Á0ììå¯Þ)C£È:9Ͼ>ýí{Ûà{×zñJRª’(G‡ß¸1Œ¬o;•F½ià›®µ7W¶*—PèŽUŒ>fuÄBf•È-‰¡i[]Û*?Ýr´¡÷%¡„d X#¾<“‚`sLLXø½ TVÐþÞ#×§…ž' d ©‘FqÜàyì!ÝæñE·ÓÑGa©Å§aç{7:úçbÖ5^¤B3-Mu7Ýó”÷Râž/šõ ×MÈÅ.ô1u‚áôú½.|×7`whCW[ü×)Ô–µQf}C=ûP n­koÔ©ßì.††:œ,+Œ¥5:kWMX]Òè—TÝ´¤ÅªtŠSÑÓ*×$7ç)m|¤bÆ”Rî%»`w+ß_,z™w­ÇkZMò(ARþuÕʼn•Oç_Šk19*}Å…*Ë`„OsVDYs1.*T‹ Üâë‚”ÕP )0@o¥ í¹AžgâG£ü¿ñÄaã)LÐúfø‡É/!#ÀÙU–QšB&ß&!˜7—€ã+’ŽU¥z`Ü"@l3ÖÔ„ÂŒ 7ÖÍÁ¬Ç©[$–¿Ëå†àëü[ø}Éþ |T«_ÄôLγ}ÍT…»Žñ*‘e@ r7uì•*ƒðõà>ÒßÂýAŒˆ<fîVX‘¬>+;Q]âÿW ÉC±&<Èsþßöˆ½C÷ïVx©ol‰ÝS;)¾AY‘|éØ &6~•mH¢>Íå‘(O·7lEã¬UèÖ rÿþm’VEâ—€ß-ÇæQoäÿGïüÆbneÿÍ̾¾ &=Y¿|+†/ ÑiÓ-z×ùýãÄK+­³¼*Ô†ÆK¡Ï‚‰,-ë«)WLF?P7H ‹ Ës?kïÇúÑgÉ»/G¡ïÞOX‚‡9÷Ï}÷½{½ï]®òQ(%U¥÷g]8ÊYÅòŒ+g‚0×¢K/™¥[-²ÙµunŽßCÑ™g`æ«>ÌL&TtaŸ·f”¥6ÔntÎÿn}Õ,ÚÁqDQx‡Þ®/.S©ï‘SÑøEéµ¾ ž˜q«YW¾rÆÚl“FHi"JôÓúñÝžw­²ë£¯Qx]Gkì5 F.S±äTè HŒk Þ·ßñÔeݯƄ§Š­åPu®…áßé>ó´ùR™ISfÐõ@ãÙ±ëöJÇØ­\A¦u5R?Üý ¥‘ ïüq*}JHerèO)®h€ZÙíiÐÏ܃sT¼Hòa•,J] |VàhÅű¬íŠ¥‹Xd¿rOgÓ „Gb}F³õÓ®w™MÒ¯pNF¾øôÉ“ Çpu)ÉIpÝ­»Š`Á”‹À¥],QBÖŽxÞ,S¶Õ–‡ò¥¶-M¨dÉÄUVœ;µ¤*>˜…yà7ðRGúeY™o…jŸö“=Ÿ&`رðÿ­×¼µ9'‹ÞGDq&$òÀ8XÜÆ“AD‘€xF>…P'Ö”pùlE#Ë™S°Œ"R¹X­«Þ®Ãf¾¬;› ?gßåò~¨¼ã7— Y‘ª”î¬yRø^ìEP~O˜}mã@ü`ÂR\¥Y7žC§ëQ‚(4E[ èN.NsŒÅð»xÁL@^{²GlpXÿvº¤äÇ€FA¸ ´‘½¤D%ø$º~&ϼ°‰}ém"Qþf¿žAWÌÇþ'êYüÇ õ&ÇC@ÛÿÙœlkÄÿe¢b¬V(ŸÖ–·Ûÿ®ÕÇrü© Ç×W“Ep˜LšÇ‡å~«Äÿ(ý'› }i.ôGÿ׫1fxú²¿cìß4H娉ä7)UÏD†8ã T]‰ÄQþÖ`ñ0À®,-,#ã-X‹ ²X1õTs94W‡%Îß±‡M¾s~™Yž|PÀŠ¨È«ô˜© (_y—å ÁÐ%ÞîXÝÖ”¸Ø|e¹ØÇßú}ãèÏñžÒäÊ”&ó½+Ð’´ŸL°÷FRAME tœXq3Šnîhö¶yÏepü ÞP ?PöEûY¢x,4%§  Ÿ¶Ÿš‡¢=ÊIà€Ó §Ä^•>½Ÿ‰ NC÷Çßž­èáúÝ=¨J¥H#¥*p|•­ô pÌËlàŸZÊ$-fÍš'y(ÉNé¥Á¸®hño­bÚô¬YG´n³ 0©ˆ‘¸úB}’\ŠŠtÁmúþ£V[}تû­#RÎÈb:³rZµ }Ìõ ì"B1vÐñp_CvA >|F¡¨ÞRGSnÈaq«b œ…mû…¾µ;oeäÉ€‘š¹È$LÚïÃkÁÎ(úx PYåSÔdñd»n1À@ qQö)n¼3¢çŸæ/$¹,]©^FƒÄÿF†µ(•š‹z€ô›F“)UÑiQ!—Ó-ÐK <<â»<Á#«³êT×í,\ÃW[TøÙš_µÌ8Ur×<Ç%¸³O¼p4°ƒn*m!Òx8¹Xš Ã~͹Ž9\’Ť¿¿„táràøêDLÄtûZòA–8;8°Z…å7½’¿nlj9¥W½ Œ`S€p¿Ç®‡‡åMß@#øÝí ý?Ç¿ÐË¿lÞåà|Ä y„ÁŒs‡KØ÷û7i 2W6=Å‚Á ÇŸÖÂö¯Ýz!À̲õ(¼‹é£²×û`}ĺ¨uæ^¿n #²C6 „³ÅzÄÿlÜý»ôÏËL"qü„r¹2Ÿð¹ šÎ×:L3›öº½±=eÑÒù»tÝ¡9ütôs13!6f2Ó΀¾ÐÍCðïA®öþ)Âù“8bžOÄæ1ªùˆ%-7í:†–Ÿ¿HKkùùs©øw‡0þAѱº8ÑÏêà,G¿†‹cw#yÞu½¬”ç.wÁ¾1v݀Λ zùõqÁð: 𦅽¢‚üNi^¹kµ÷Ö·Ökœãw·q.úÅUît+ÿ¸>͆yû°„wOÆšFRAME „œa8&çÅ6=­žsÙŽ`gëO&ÂgäèÐä+<(ŽÎ\@ j Áú 'HÀA8?g—Ñkô¢zŸŒ9;ãï={½ïééï*¨$š‰*äç^âk¾6po¿@ûZÎŒ#QU±7³Æb0Ã…’”PKtèÐG²%àœ‚†i#F-çv}A%´pÛsRwíÏ"ˆËs’ÐȆ§d§NÞž…>«é±°üp8„S­èŠÜa§¯‚¾“¤œ•©êy5génØ;¥’›g1 *ƒ$¦£ŠÉˆ^Äüþ+6 ã@}¤?ý=&s°šð߇$ÚýÎ@Mµ Q—ÊÈÂ|¤‰ÖnÍX€÷öi¼ƒþ:ÉŒìÝö1uì.cÉv°ë ƒFÝ%ž•F¬ô§Ó'íçÄ™8ýÄ(r²…™û½¹4aÁ)l5ì—§ä¡Ø+û˜™CÃÓ5J€ ᔋ,“0o«©úÏU5X1ˆ‚¼-ãµl -=»#øÐNPOoÌÛ Ø"H8:Ý–éˆÁt,ß*Cȶ’µ]ÅÐýZ8Ð5*"וÎײPªLü³èS€{F’Gǽ^°–>ú„xt9ÿ›ü/ªrË8`P…,÷63Ÿ$Ýðœ/h ²Ïù*65(£ÜÝIø'x䢾 R+ÆZ£ômê•p9'#ÉOgðnÿÿã#>œ@ð¥}”|ávóÓ„{aRNŸ— –•ßÿH¼0N-ª”ùôË`µþ R²IÅ §þ7çÁ—©PSRR¼e¦gùþDbGâþæôvÄUÈñ?±‰ìxp;'Äù"}ÿÃ÷k;ùøÏ°‚æèpÏY¸,'Œºîû{î~|LŠ’“î *l Wž$ÆžçúÖ  ½LÌž¶âçyÛ ž†årÑæfõœÓ¿úÅâÇã $0pgÓÿþ¦cÃ$¶mNì×c±O¥X|³óœíòº§:éüïÈ“_Oé. ?¹¨¡®l“w×­)0{ö`Ï£ð‘=0£p—94GYÜÜ™¹•$ß;Ð&c¾@*Ç;‘µ»ôt/”[” Ïõ‚#qÛþdü@}ÀP‡a៥§ÖŸ>,@÷G|ûç«gŸM]Bª‘""n î1®pÍmœʉŠÞ¸BqÇÞȑ‰¾PîQ®d·—fOƒ½Q­°œF¥®cÙ0QÌáïý׺¸¢Œ}½ßÏAs×Þ¡YœÇ5o‘%#e˜)ÇYèjÙujÐÙòÞµË+`œ%jy(‚ dGØe›æFßWG^¦ÙÀ/Ëïû:¬È幫Õx—¬£õ9«‹Îì‰lZ§Üñ·@a‚ºñ™[Z¼5}.R*šõÑœWæB@1E ‰35$šF#÷EݨH<_‘^.»BÓŽ“.IVr 4¯OAA•D÷źÝ—†¹RÀÄJDþž5ƒ›3™[smavùð)žé9!!œ×k%}Áz¥*´¨JÙWØzó‰ŸìÊ}R»Ë¶ÏŽÍúv<ºß¯ºîæW€|NɳwųtJ¹³Ÿ‡²çmŒò §Â3(‘y‚.lKT‹˜=PÑ^=>@Y;¸e×Õk±ð ¾ŠD|n¼ZÖ‰®t1E ¥NÖbfyÃÔ)õ$õ¼ìMààd[GæÝûÕx 1´æƒµ%`DçéÏ öNæoÑyªÝ‰€ýWqzlÝø0©YÛ\Óè(ã2è¨Ñ¾¸„ rSédg »®­}HóSÊй˜´•÷z€´ï©bXL}?ŸúçS9õÉóëu7G‚W¼$•¹ªnkþiÛÞö2ñ¯=õÚo½SÁ"öìœ-ýý,¨<Ü’1ñ;¥K1—Œ¾(]tR¯Ð Ÿ¸7~–éÏÏçØ7ûO(gÿÞ/³42Ɉªîmfeí¦Kådç5?Î}F_¿Ô¤p¢ËïðŽß4·)ø/ ¯ïsÝ ‚ ñ™ Ä9PïC–A ùߢOƒ½ê¨B%M› ŸnÀûl&»S4}©Ï>=Ùø.Où&_ù`Bf…#þÍX3ÏÎÜÚƒqó²(«¬:žut:{^Ó¾À —½uß_N á$M'ØZÆÌ/½ î¼QÝvwº]põ³Q“qŠé\Kd¢i"Ž²ã»«Ú|œž?¼Í"•íˆW\DFRAME ˆœb8Fînñ›Å÷Y]ÏfN'à ûCœÌò)T~ç&È`^ Sìtr`±|‘ìää 4 ö­8>l¼ êCêaOѧžãð¾Ï™Œ§7Ïb¼»ßÓÕïbJDŠè4¾n”‡sÿÇîs¿óHã(â0LÅqxùV‹­b•¥2"I¡Iƹìé@F™P4Ç=Z§hÿUcTœ)ľ'ãqƒ3@§/ÇN°ÙÉhøËYšÅ˜ì9db©©ØLIä"ù7Bc5¸Î¾¾4¨s*i 53tóÕXÆj9]‹c…Ðò6Û[žt‘AdzsØ0U5mwjÉmgˆÌlm¯elluxm.ß`yÁ1Û•ý8›Ÿ<’vÙNÒP{€þ ¨õH r«ÉÜïÑ¡-¨ƒ?w¡v¬ØËÿ—¦«iا=„«ªŸQHüÒ ‹ô¸\¿ý^aJÇÍÁãýÊýSfÉ®g›ØÊТ€D”“£Ý^1­fœÇN”$VÆdÁ½yÇðu ÑÌY¦K¹•~Â=w€9ùð–=îp•‘nD¸þÒ£þ-t¥?õX`«oº³Œñ™·äb¸5µÍ<ί+‚Ôõ¯^,ñªÐ‹ðö<÷Ü |…ûùì•¡ä8àöþSDÿ£f,z߯ý#=Lœf_‚n Ýý`ÇtÆ{90X?GRC žà½ò<’õÂPðѱæ±\)Ï‡ÆøüõØFU# ˆ1cLJ1Å`fëdþ· ¯ïÍL+Ý1›øOE]º?ɾ‹ÃÙïKŒL†ÈwõÆwt޹t"ÛÀ"÷ƒ:$ÙeðõÌŠ´à~-ÇGËùÙüvQzx‹áઠRlŸú~[Ç(MÆ.µõdúÕ˜!7ÿ²Õ¹ÛÞÂËV2UtœÂ«ëdz#2fï^;ÚäɃ€ èSKe©¦#§-ari¸Æ ¾ªì¶~ÖŽœ-W>Â\äU«Ý#µÃ ìy¦,Z¦äÍâeÕ;ãN 'c´FRAME ˆœb8F“xÜÝà{K<ç³'ð*h¸”œry,…>oG¡¨ éÑx~!¢iø>¢p´ÐAý¾M=/Ø¿~ð*ãïžõÞž÷Ãôõm¥Ê‰t¯ Ë÷䬫ÜFǾ´‚e^ö!€1‹/îÑxÅ.ô$‚AšéÝÇ ž ¬rã–Q¤¼oujCH ÜH,™Õ·l Gsý%–0OŠÙ|AÐÊaòS ÄB:´Åž‰XåñŽ×™[ñUËs"©"¾!˜«Q"·ïV¨¨„¶m›û•uÞ­Szn/¾~•çH`KWäŠ H¶ “ ¨CÞ‚Fâ2h¿ „ß‘»ò«Ðggê =nUZ&yZ®½nóú­~ ÀXàÑ÷€ 8m>êI½ëÒç§Ö&=Úoa¥‰xÞÂOÏó6F°chò#«Á°/_©•½¡Ëå }=ÙQ0-^‘û\\ÌçÃM{5„+¸|óWÜ~rúÙšºKØnvÜóXd¸zNíØ([zn♂G À5Œöxk•ç>YWsbðë£3kÝ^(|û‹t àhWP$9~"Z­yíÖŸ£~Éi¹g€tC®ïA‰ÑYQ÷W‚•èáϽE¡˜¯q/I-Ï¥&·(Àãuà7ñ´ÉŠmHq+ž?x6´8Àô'éw‘Â…~£-=æe™‘OoÍÿß*²=0z.%Vpý øö1yìŒ?%úÊûLýÉÈÚÌgkÈ’?µùLž5y;œLñ?† 4­{Ëé°^<_ºãÐÊuüÍ÷ý÷œÇØf>,$ž{¹*úhÊÌž•XÈ }†êŒnl15ò\îâ·€Ïu+èÃß¢ÃØ¾Á›ë÷(k;][˜#ÚäצŒ(cÀlKÿÙæ~ÿëWÿÍ|ÌÕÌø`óƒ‡=~:ÚMðÆ<' Èñ˜ïép³—ÓÛÀèo9Á߀§ Í 9FN~ÝÑÏŒ¤Ì³¸ŽBbw†gm§ŒÐŠ*î!á¾¾ƒòiaÎÚ<ùô‚Ù|ÓˆÓSÎ×*!?Ïì¤p “/>LßÇîyþqvw::|7yhä¸`ªrUÎäïdAwÈœfNÒ1jx¹b%;ÂÌ ñü?lå¯vuÐιÕïñóþ»½*öKò:1sèÓ9ó^Ç8îXLSàò8>ÞO» ¡4FRAME tœd8†ç3xδ²»˜ñc‡àR≧ƒžJŽCäðv{¥©À¡Z-9ƒp~ð y˜rû”Aò 'g¦¾‘>…øìO¸ú(|1÷Å{W½÷Âz·¶WWJ¨¨6we¬çŸµ\£_,1'É`çÑ €(’{‘„lœÙ5å»?¾Ò›oÇ:ŽãË2ÉEÕ«V£wÀüìÿ“àqzãŒ6[[”QˆiS—BGÚ̼k1&›YN9-8}µç„:aÛ}‰ Ìr@"ý9GÊ/ÅjÌÍßÍUÿ$a'%D$Ó~×›­Zµɦû¯Yçfñ¶©ÿ䩉±íæ» 7éȤa€ŒÎv­ðü‘’ßýÇ̬fÅá4óà¾È¤O}ZõËÂ1‰\ºlŒÌ„åµ~ ¶mU@žKwä1°O@ÓsõâŒüäz&rÇJβlá‘NIÆš3ô—)5UþDüøï/s눃›Y–Á°ÝÏa}fו›ØçÿDVÞlzO1­vçà‰éa€”èôlß5B4‹É…)AFH~íÒßz³if½X|ûš½w ¼ ¹I˜¸»E;™`Ül|ÿ.à¶½ºm•¨Ç•÷©¢*øê6œ2×Q¾ã„¿ÖÆv‚§ØY¤md&Žì¼ø®-Ê»Ðd3ÇèÝmX·,¡ÚXªwLr-È¡rºw²»ý ZÎÈüy×ûf(~æ`ö·73íõI›¬9#[8jѯë“ãó—öázNvƛߊp-žg–[¡€óng4®*z cƒÀXÿø®†àÉè¿Q‘T|â±'¼b2ßspeOÆEE òw^yBh)ß#»6'þÏ *T"ÿ•ø?&.y: úÀG{ÃÐ:'A×F³~žûó8 3dÌÌÕZè3Õþ×.Bõ€eçàбÔ,š J~Ð Œc^s\œ½9cBÎÐh£¬r¿yfbt§ r B;9øgÚ8IÇ'˜æ­ û<ÿ`OòiâÂtfdÁç?£G¨¨{“ï¹t0œš™kÞ!š¦«þX<§ç*'… _ o‰®Ž À¡c8ýt3Ùkê¢ÖªCw¸õ¡US]J5ÜwQÄ•ÉñɄܸ0|чÆñ,•ïÆéþFRAME „œb;q™Æo°ö–yÌx²s?rtžÐÉPú§öaD …!O„ÓÁøð”O£!¯‚ˆô4äÃÓ¿3>ÉÛj‰ï}÷Å={½çè¥yRŠ¢*Ù"!Ç í×ü0Ë"VÙÁ,Lk{6r/)à+}h-BqÄ* È–"ãÌ3çoMwô°¿–3—¸ø$m M 56¬·V‡hXšÚb‘0ihª~§+ƒ ©\†§f·v¢¥ŠKWÔVó©Ò‹ý–0…H¬ë#³"© Õ¿½LÛV‹h>È–níù!pYßdÛZþÃ|Lø|€¾úÑ×¹›MwôìNÃ&ÄÔ$gˆÇùN™të˜w»2îÆõ>­ «X×LÒnÓû‹ï:#þÖÖÞØFm‚¿Ôgg¿ÁŒ ¼¨ vŨ™6öãrNu @•k”1õë—Ú;÷ûr€ŠW¸?ÆJ9BþÓ¾2ƶ^t”…¥ÍÜûTW"b4Ù5×öߪ €3ÝpkVÑ#é–‚œÌÀñòlƒLKé»–Òby‘õï¬öä »œør.v­)]°‡\æâ c™–ZÙÈ)DW@ù^«5³LV™¯9Óe곃Oå'?ÛÊ%"¤(”PV˜8*ßá–N9˜ntÎõ’ +kttò®ÆrPT–b6–a: ÅXO `·™ex£ìT %¿ä‡Ô"d8©‹‰TÉ1¼žQÀ`:$\UæQÒÜ Ä”ÕÔ½©"¾œ0/Žf9µž¬›îOk‘Ì)“̸̅gDN‚³RRrש‚;ÁÉàÛ`} Á 0ä€á‡³¢Ó^L•€žÍëÒGmöÿÛ:„ûxGTŒYÍဠy×ìî»Úþ8øAüÙBÀ.ÍÂí@5:dAç†qÓä™EyyÔYó‰ÄݧnQµÙ©Ò+«q_ç×p9œU¼è ?Öu®HЋÒôƒöC(ÅJn„)µ;EÆ0³s.ó:}˃]s±,ôÖ}‹o~³Ç޲9ÏÞÊ©/ÓTý €ìcöýáª9TqŸêžU"­FUgã"¯¿“×»˜P‡aq'!/£x”‘Nû–¥¨Íy?.¢U-¥+úA%“˜5-Yíž)I®[a”Ùw9ÕñÞûÃÈûûXÌç¡S]×.U¬eÉ{¼²mr,“X¬>UPÿвeØ;Í+Q¿ùØ×mLREÉË_§¶£KÄ1l©ejÕw€ÚíÐ@hsƒù|D„8­RÑr_Ù-Šüžã§så,Ïh^PWzrBØÕÄãïûKÞAÍ(ž¡( ?ƒâǽšfÊ£}žTΙù³pÛÔlåâ,†…) Â¾—âÌgù~½üãÆ¿‘~Þ~& TòOüö²8 •7BbŸØ›rtxnœÓ£ß‰qƈ`ņëI̦á M…pâTqîa·ÊÓÿ¢ãAâ‘W?;{Úhæ÷J³ C ÖƒwwÅ6š˜rȨªOÕO—’‚–EåìçÎyZ?¿ÁSÖcý_+¶‘æGñCã=ºTäyƒ šgÿ_ɱ_ú£m¡WïÚ5Xç줤\õ” QŸÝ"›§P3e†µÍêN}ž£Ý°ã„OÐiÝyyºå÷¶ÁÓÞ’ÀZ»&K¾DÖ{ühçჟ®¨üêçzÅÌÎó„JøgáLze·Ë}5ϨMàPMŸLe©@QC¦úÏ“®TÈñ*ˆ1f'ó)ê‹Ð×E¿hòàj˜ñÞMÜÜsë~}žxx€¿“É„6†BÉ™A‚ĵ‡÷Šé¬çlJ7Ï']Ôu;«Ìú¿РTà h˜NMvwíøùq¯}¸Ð\ÙW:Ø™ëq8nG»ØojïÿÁæ=‘A ¸DFRAME lœj6&nq±3~qUØõl×àõzˆ‡5û•Ï™©ö>ÐOO¡¦(ääìäj{0E„P–Ÿ=À aä3àcäøŸ‚‘ñ¾)êÞ½ò+Ú÷ÞbA!¢‘¹‚ZÎY'ƒŸ~äQ$}—õªÀ‰ª3X ‘J—ŒwAE“Öpx‚àç—äa2ÅÍo(¡\›FySÎsŠa_¶€ÀPÆ;çQ*ЇLŠrdÖË 5È |ìo:Ÿ:ÞSâõ¡¥‡Ãü.w2÷ ]gAæX*%kÄí¬ì-<Ù×LÛ¥\'È€'ËڠرI™IHµì^¯+eC¬©Ã13 ÿàTä¥8¤}†ÑE‚ÕU~ÏRªUÄdWFOwWÝüîÔv@#îV=¤ÝæÍÿŽÀ*žºkœš {7­wÚ[퀜“Kñg+ø=ZD•=@yÊ¡° \éº]Ca!»+Øí'á¨)&~pô ‘5“öv6.DæQA*†¨îyÈ"±5dò3°&¥l5maO"›ÃÀ/QØ&>˜úß»Ul T@`F¬üï;w9ûftËjwdjóÁ“’[ìíµK}z¦ßˆÔÓéàñSXÓ¥qHF W7ûÂÛÞòfãУ|ü‰ÌýåßiÔ‹x 9ÐýŒåì$ hÃ;AãJBŒckÜ2tÞŽ*æ*€ÏÖº‹üÞ‡¼ÄË ¨ heýÿÀ®×®ë]íhªxú4w¥´ l=áø±}J?;‡·ózç× œ“$\—ëð©H=ýÇ $˜ìož¼^F¨ôëNû‹ èè“SÆóá°¡åoÏK‹ ­Ä¢«ßîÿΞJ–°ãŽPàÂüÁHxŠR‹›®øcVÌFýØûþÄð/2VlÍåóǧÂ~!Âh;y@Dý™âòq„ßû‰kEi¨ÿ9×u¡šn¦³Œã„T§ãlà8Ø ˜îôX1«ÁñÎó¤Qg+·kW½eÁú„ÅÃÀXx JÄÐ×;<›Ùñ»%7è‰}dG÷ý×ÞO“ïÞ·twd49aÌ™.úÊ»º|hWr…p„P,o?bw%ælÄ~qávcÌÝšmàzÓš«EÓ¬C²¾ÜÙ=ŸW.Ž÷£¢(u–þ£HSMÎDFRAME °œj6&nîq›£ÜT½_VÍ~ϨIK3êS~gõ<‹èNˆk‡S¬0àé C³è€¬I |ÎϱDA&€ѳàæœ3À=>gÕ¾ âóÕ½o|Šï^{6± D„ª D…;ळ¡vìyÊ»O‰ Í ÁË=Þ¯|ÎñÂûo{ÇÀxoÕ'á$Í:—óíFÉöÕê(Pö7ŒLRð 'J@v‚K>"tàç´"Âmq0üE’Û·æZDk&I1íõºlÑm]ÝɽÁ—›úÒQaç§2 é"i,TFp¶=; Èâïø|Ò ðR 6Ï~#½ÃŸFnå 6%9ìg—ÞqãÏðxÉázÓ‚„sŸø ƒÈS!¢N¦Õæô;^›Eý_*‘Uö¨AU~ŒŽ³¼–¬Ë‘£7À#°týÞÿq Ý^mÚB$'ÎæÛfrÔÜïdŒç?–‰¶Ìµ 4©Þ4’ê‹Ñ½³¬Ob&6z`õÌ&€u6à‘•ÞÛx`è?gîOòW˜#Ì–g®ÑT•\R·rªKnc#ÚÿP ™„£ä²ypÛev5{T • –^.×±ª""Ƨ²Z«bw6êÆõϺgüô»Ân~ÑK6pŸo{Ðò“H5pÄÒ ¥NÕè¥x5>Ç©¸»j¬òS¡¡ë•†2A¬ V2+Û<7oM¨÷†B¤‡Ò¦G•;z²­XÑ@Áæ1ÝÝ®/ÜÝbBM|XV¤fìèÍ)ÿ«å°Fçè»’££ç»Lõ±€‰†•#y± “Î.+Áçïñý§«iû»ÏX`×ׯ#Áø-¦ßÈòaàL Þg·‡°81‡ÀOàáÃÁBYч/%0÷¤gê'J|Ϲ$ðÏÈo”Wµï|¢½½w±:ªÊ!K,\˜á ×_,•mœò_ÄÄG˜ •™è'$ƒ²zëÀ<çÃÝfªÚ>»6Ee1‰¶Ê&‘A ³ßDAœ\ɵ’Q'bùArçÙ%¨8Ý[¶"ŠÙ/0ËÙ4HÁêV Èµ}˜æ‰?×!7SjèDqq¨ 1(Ò[IiÁâÇÑGÏ*³Û.Öï,Â%¹kÀ¶n [}oV¦õrX){°'IûåE7}oý55!VøòÁí=EㄲÝ0ìY’½™y0ìr ðë¾vî"«15êØÍxX3ôÇcÙ3˜‹eMfjöSĨf–AýÞgH·øL.?/£I‰¿®=UA»ûôDØn) ‡£©åh0r‹Ð{?"àòt`k"m£³ÚZ3å`t“¤Çâ©ãÁ}k|Þï5aÁk'Šåí/˜r’¹…иFRAME œœj8Fnq•6ýJî׋gð }N}iÈiПIå/G™2|Eì«” Ó̧`tD:ûX=O@~L„)ƒ"‰íE=zîó•0A f4RŒé”X¯=ã´Â!§‘h_®,\´ÂÛ‹0HÞl²Ê_ÖÛÅŠDŒ!1’#e¨n|ØqÛ¯M…4Ë…4DØÍ!ký¶hN¬Í´DÂ"RßC8ù9¥+ Ylú¢Ío[»;Ã`€¯H®KÞ‰Ž89¡ê,,òýÓ°¬Ûß»dÝ9ïv.e{Øn מíêð㉓ýç;)Tr=¸; ÏͯȼÖäuÓI«¬YM}ÁÎÀI@€^Ñ©$ßOé\c_D¤×=sžur7Çÿ½÷œ+Ã<> CÄÛ¢’TìÔŸŸW Ðk¦à6rÎὟ¹¦OÝ­fmÝìddw¦¼–¹ç?Í$” QH«`Ϊßä mJÔRî öÜ#¶½½ªRÉE‚?Mr9zîd;P°¼ìkœüØÒÈ8 €ïÝ´©‘}o ý€Lë‚vEÿÑ6ð8©lôìsP±u°ÛZü?ù.êƒr˜Ø® Wå’nE£ÛãO,¿þnÕ8È~‘úŒ·âk^ˆKdVš—Êõƒ³ ,Œ õï1‚ÃAÍVµ,û§þÆá™ìœè”M?pÉ‘ÞuÌüÈýÎØisØÕÐ?ójW÷®ìÕ^ùû»pSr卨Þ7™Áã¾ç ¸óôOöxgƒÉú Ò¬½x2-vh/kËfØå¥…0æU©šßå£u‘æg»úõÞB‚+ýáñð4fµæZ=¨ÕâœÏ£ãŽsòÞÝ•õ–ËØýÅÁ¿"Àœ'‹=‡ªdIT'óƬ/gÚqi¿Äáãùó7žpðtrÿ=€Yi 3äâ._¯‰ÓèígÍùã{ú ™.²QD >êŽõÛ‚o]&¼–Bçt?œPÀï4zps9@®f? ¶Ò–>WÐý#ŽÎh §çQNL"ó祇uç§\û)*§v¬Ü“\ëóûSx ùXÌÑ|Ô:ÎPûF,.ôšbê¥]œÆãp!1­íA‘“6çDðÀ‰øê7„.KZs+­”¤¥ÎúétôÑ.ÞËrê:ÚÑÛfÇ*iSˆcQ9üÖŠŒÿ:ÂÕ¯‰Ø ¤ FRAME xœl8†nÄÊ™ºøEYܬp×À%õ<ŽŽøcõÉÔèäðdà/z‰];4Ù÷H’!ø=Hò}O±Ü‰C—Êc–y(~yÔWµîõÚ¶¼âT@€ ˜Df쫳%æ¿È#9 Ïœ¡"ûŽ’ù¹@«º Š­ôA¨uÇiøÙòam¦ÚTÛD-v-Å›®…¸JÀëÕÆ¤å;qÕ³élC«lÑW6—ûéÑí²J–[j„¬¦ØŒZ?FëVsÒ¦Û pñq€½F•ªÉøˆY°2&E1Ôé·˜1¡qSwc;𬩫fÇ—Ü.¯DÍÁwvW äDÓE~h:8pJ¯œ~3Ú§êÕEjüzÕO^ÏâAbp :¢wQ„͘ɴü¤r϶5[Z¯€ý†RŠaÇZ†œÍ¨·"xÑ×s·€{Áf8­Ü{_±aHT:–¨¢¦—{˜a¿Í¯5,ÐaÐH´2ü¹”øxŒ­çfŒ=mý’'>'6g¤š¿N€ƒ[—œ*úd{ x¦£ñ®~ÏØ˜}jJØäªðëÛ¤á _¶_òØ–«›Ù ’]›~ùÎßÎA÷-Œ˜9ä=h·<§Æû4Á”U\mxÉ=0_™äN•Zàmªâ¾µ}ôøH^þ. ÀÝò¨ÝWqüû€f€ïµÍÌq`ƒGsþçøÿ«Ž5€èa ±±?ïø"ÝÏiGx¯)úùçO¼ëíÞ5Êädµë?–3ÀilJùé©#PÌuž½î4Çà¶ýQ½¶žŒÕë6'tìûý8Ÿ«MÍõxLYoàØÃ‘tm!æ:|~f7üw„õ¹Ÿ0íÃÓIû[ùà …ËnB Ø™´ôUñTP(ž¢qü]'[·¼N” zØ9Ö«Ðß Y¦½%YqÎjá““}týhžõ.¨y?ޏèsˆNxÀδ7çYømút­ð’nËÍj×GþÍ.Î 7_¼äýhnÈÑŸ˜Ü#½œs³†d+™|ïvŸgV«®ôíïµuÿºM]4ŸEusw혔žb¬ß7]Ÿu]S×Ùu@FRAME ¸œl8†íãsw‰î'rO¸~ïätû;>¹0ÃÙ’ âþÚp"G؇£|Pi§G°k„;1sÀöÞèz5ó>  =/±©ÓÁ¨§©ïQOz÷½Æ©pŠ"HnÄ”MfØ΢1·N¦t»¬¡Y‘ ?ônEŸwÜÜÈ—9hwÕÀ`O*Ÿ­ž³g¬¬"W”á¾8£Ï36‚ͧ_FŸuá+êÌ"][z96‘ÃòM‚wfe”~k±q5¢¡‡”ÄUT-vû¥³ñLrµV`º§³<±ƒIÍu÷øAðm!lŠ7†ý"mù‹µ‘ÉôÖ¶²*÷뉶ͷ8Ÿæº•*ãŸå…Ü>šÆÇIÉN¨þ¨,Ö¬*ÐÔçã„duž¿lÏRŸÁõ t;´ÐîîíÝÖ›eCûH´ôœ ®Çy>\›þjÙ÷²ºrð+2›«™”˜¹ûz{5ñ%¿ÅQ­ €° tµÙ¤ÎŽRRYUÞ4Ds`æA©BÉkÐsL- ²Ö³ßÃw¤ªK;ééì:xÎÍ›‰R ßùþÛn<-k^ ¬½‰8Ié¾ØËÆæ­jnq-—(À@k† ^/<ˆ “Ïɲߴ¦¥Ñk« ³Û–I©p‘r} G˜ã7Šbá©1~¸ÜÝ ûÉoìNƒH£ðäZ?~JŒúž3ŸÛÿ$DÚéöw7swq`^88-ÏË3X ')Á3°2QFÕa.$ƒ kÙ¾æ0}]¨uë Gò~NFWæ¦2QÇÆÖFdòøèË_amC¥AžõpåÊò$¬-º{¢#5ûMÓŒH ¶á]ñ) a¾ÂN$9⯊Ҁ˜ü}“Ä/@××Þ›¥€ðÁüõ×X:Ë#XåÉ$Öõû½®f¬T™§æc›-f¯%e¶ôP=ÏlµœìÁ¼À“bÝ‹§ÞÊzi=|»r¾ýÙW ŸâkèN+†ë§7 éúÿ±C“è?¦“d›¿¶ÍÎWT«µ‚K¼â: QæAΣWqA½}W97TÞf!}w #¿ÔUêSrÄÁDçz_®ýà}˜ún²©+ïÚíë¤/u:~–·Þ»s"é£ï7,ºÌP!{¾pdÁùÏ•Ýé UÕPdFRAME œœl8†››Æpø,²w=Záø¼’¿®­8ÃĽ? ϑ“J“ƒÌé}DðIXr i§•^Šv i‡'¦cóòa§™ðaä£ðçQ{Ú·½"ÞÕîJ¨êˆ%p7vÌøÂ½hÈòª+ÑûÛ~=u·C`ÇÌN ˆ„^9SòV¹|Œ±F>@þêbØA~°Qâ…ü¨=O)®ÜW£éÐöËjÙHlð<Ðh-háæé¯:bnœ-:vš(ïd…}ŠŒ8²0nà8@k‡ïžÛeN²ïºhÓ@çyÖï°/Ôµ{ìAS2žÄ޲GYå`od8çy±w±ézçåØç2¶g¯š¨åP_þ¹zïYë—!ùTŠ£•ô%ô×ð{”3m9o½ #[:GmÝÇ™þ‚ìLEÌÉ´&g±’õ9æ“Ͻ¼&5x­£ëèÔšÎëÔ§5_þ¶(ÆPóMGöÀtÿ ]䨓CØç—@ß‘µÌ.s=¨T'ô’Ks4žtNøÁŠªñ}@;ÀV—Cþs$â´öüpoäžÇº0H} °è¯»Ú…ê®ØWoŒÿÒ0ÜfÚ“i!ñçó+²õs¦GôC[W ‹Dtä(þPj›õÝqw¥Qþ²ì²@þÎÐ"ÃHiÖøÌ˜ÅLùÆ÷å˵ϥ31ã5äÈpüˆ±’˜ÍØ”!dš*0L'1jc7&`ã¯&Ý(·õ;'Mü|sìAøü7$øâ.÷³tå+¤Ü‡&aþ²yÞ\<¿Æ>ˆ€ŒÁKŒiéž5ÊéÿpŸŽ¹3Ìë®ûÿù¥]û7Ö¡c«zšVlðUÇQh%V XZ gû ‹œA¦õ¶i FRAME Œœp‰bæq»›> %w=\M~º'8}Ï3Sæ@8~‡­ü 1DÓà>F¤V”¡Bˆc™_E¯ÒžM=?â`veSר¥u”ªù 0ƒgxï¶èÙŒMÆ8 žJ‚òj·›Ý 1/…1Ç>£h è`·Ó«h†!{[¾åW½3ÔV¸HÉû¹þßCÓ[ á‹M[Ï’Aëä>±†ŠPeä¢éÌç“ÑM«)Ó~óSÜqœ#´±N­¡cëÌlûo.“î Û=Q‹»9‰Ü‚gú™Â”šlNŽ˜ôã›ÈÀf2£Ñd¤®s3q¬œ `o.¯M—n7{·Ý8÷[€ãœ É› \ç‘‘ÇíQÎu—¯ ­æ„Gåtu¥[e„Öœ0¬ì3ÿ $ À¦s‰™¥ŠôªÝ-É–¬U½zàúz÷Ú `ŸxíÍù#§DG[(žïh'ôoÖ*VCïœHùÿ1¥;‚ä¶!ü󽪷ó³o쀊l};$bj‚#ë]Ó¼+—†M¢.¸V1ÎF8T°u`\H·¤c88È?ËmO±O°òaó3Ð9£Ô§ãCƒü˜çX`rÉ{Q¨êB@¹WÜŸ>&û—w °“ä ¯Å­NWʯ¨W¯TžU5ãùîj:ëÉÖ ØGh7ê„õi&i¿·´ºÍvTbköi¦6üžmbïú E[$tËÑv¦îF¥/Ž©‹¶ §ú¬Z^ʳtªë·¢úcÚýÑ­jiÖ‰X\±‘= Û­mU89»¹¹rWww'ƒwò±ö¾4Ó@FRAME Üœp‘x»Æq=ãÂF¸q6~N;yÓî ã—·¥}Ÿêàâ"ƒžN€‚"Ep‚àS—ƒ¼Cäƒ1ø‚|Ëàù7þx|ü‹ä§Ãõ{]{¢·ª÷¼n€Z(ŒõæÇWxVKm:Š÷àksï!hÞÀ0jŽÀ³—A™AƒÔFJ/’Ï·–Ù³JÓmà•˜º1…’œØˆ€{µŠôœ—AÙ¶½-*À‘k\׬LvcI&ÀÎ^7ÓWM™­‚ åñ¸% \hpL~3`4$Ö°E¯˜gd>A¶Ù{˱~cÕ•«¾ø ÏÍÚôü䔊:‡©›ìÄ ÇLL¸8Ó^ƒƒS|œù{½‰OÃé±vSƒÈ»ÆÊŸžúj:¡+—Bó€ø;XcÑ·pýÀÌk~WçÖ|{§ö'â1ëû ­)´"9ÅÄ„…ñXæ}‡ÇâôægýKM1[À¬ý=cŸŒÌciÕ#ç¹û*m Åsk’ý1íÌü½œÄîS\Ÿs=»O` Ó[Š GÚƒÉ*~s}´[]ÍŽ,>HB=sdnScc„áÓÑþˆ¼SW?ÕØîöÿŒÌÌJAHL‹ÒÿÍÿÀ¼Ü—‚X&ed,];rèn74)}Y(‚]ØðتBAiò³Tþ)MÌy£ÕF·ð•á_•PBR³ggÂ*7WWu†«M•|ñíðÐâÐ!Î8J œú9Ð97&¦OœÉ¡OˆM aøX—é1X2ò¸‡ûô"2eõ›û¤Iåpö²o ÷ðÄ_Ö …«œÈ9‚r;ÉQôUZMEòsá˜ò!SM÷–ä^– ah6)Õ<Ð]£ÚsQÄ>¿Ýe¹^$Áh™ö_ç?œl2>•)sýay9öjçÐP®±ŸÄËôHˆ1 & 4W2béT\âÏÃeßÞfž¬L¬9`xlhÓßÛ­']e^ÝÿLC¸iñ¯mR¬z&ªŽ]ß;ékë5h…Ü•ƒ#›M^Ã4‹G…wðFRAME äœqbæq»œ>*xI|8Ÿ0“É߇!“—Áñ:BžN'ä*p*%}‚rx0³£ä…8Õ~¥§ÎþφÓÉ|Ÿ9ðÅï^ÞŠzõ^r­ BA€‚yJ“ÖU·è퉺ìÃo6Z„=÷ôk”³Œö9IF¯VùµëÌuƒÔ$¨,Á;(fš†^rsÊõ¥ %»¥ô蜙ïU~±Å…fô‚xªÐzÝØ´zÐÖS!p¢àKho‰7 M Õ}Ç:z'Ý’ŒÍê"•_Vg›ï_°V ²û‹hO<±Y±¨*,Ø÷öô1ÎÙK€¿x'ÙX¸ÁúJ€^Ê×϶ï~cTÉ*ë:OÇÑqÔ’‰0¢–ªÁ Ï0¹÷•O ?û|‡‡Ö{63­/³»[Z¤Òçü`Ðð/T¶0 ‡›^­j…¿Wë+ÑÅÀ#†;!~ÿÞž‚¨}›šÈ‘^lj×²×¿ÙøÑ€jåõê ×#+ÕéV`I Z 19ÕN醶-A½kUú/bô~?NûÌfºyA_–»hù‘‘‚p8iU­dpJyÜ' éþNmK(V%k²C}–MmDàbüYÆÜÚ×<•ßv*âîiSsNËüõ›®F#{„|X^u]÷²¶»NÿUã8[‘HÑè Cœ™غ—Ã|nhÑeOÅ YºøQ`zÿ÷E9ñk¹Úäé7ÛîìÿŒÎ ð ïˆ3.øÖ V•¡¦œSšhÏ/ôj±…·™]¹\wëö”Ìœ|CøÓ‘îžëµ8ÈX4êû”hÀ«´jžÝÔÊrÜ@æ;ÁÐÒ}~ y>†ô9šàŸÑóŸ.ë·:6O]ܹӑìi?Í&Q¥ê« ‚ÅYÇI¡Šú̓5Íñ¯7Iïw«®¼ýâÿ´„FRAME ôœq׌ͩ»Ãà–G„«8pæ~dçÉõ›tò}AèÂï•4“Ð=ð9¤ .ˆžÏ,!ggaP(O“æ_¡ê~Œ8g“)öi§:QëÚÕå:9ÙÂSŒ0à‰Z\v4Ö•šIÆF—­ú¹Œ88Pt¯Eyn¡YL~ƒ3Òº›w6Ýa£%ýþxMv häÞ©>VsOBsÞFÅÛ»¦Ô[\(î{¨åî–‘‚ÒGÎ(´Ýg|XWßY±šš¢0KÁZ$–€8¾SÁNÂÊÇ)Y‘«ÖJ?Rõ6ý¿´‰E“ž¶¥àÏFï¸%pkÔ.+9¥påÅäÊìB`˜Éf¥˜3`ãªWåÁT9þª¯V\Ug¼Ù¢à[t{wlBÆ-4;«çd›¿·´ÇâÅÝË2Z¼¼’ûÕß·•°ý<‘Ø3‹–q©µžÞž ÃéáÆ™êOû·!9ù²zÚðϵ«`³yì v6»]“†Z¹Æ­¨Êp\?D©Œ÷±™ã3ò=ß„â+ÿÝó%¶=hàÜ´ã3`l…\¿i ¹Ð°õà sòÁY­½ zÓÞ«ûhíHÝŽ7†ë±H@}œža)ÜsBÌù^v*ø» ¶g ú07[N ÔV ®ýåøÖûM?ñ¯·ê3ØÀ¤ÀHX~±YUñàÏô W˜OYf-¾²’¾Açý™ïЪkf@€àÞÃ7i´±Ì§Z(óÅ™ªßÆ7cDFÆ›b'"÷<„˜H?ÿws-ì¬ÁROx78f¿(æ—›ÆÿwÈýˆ‡p˜Š®ž2' Ñò=oúê~º%¿äÏÏÀéŸû_oöˆâg;Ã:ÂÁNâëÛó¯—JúUÂH±ë23 Íßg_@®;x9l²,~3¹:¯zì¹ tpßGÝÖÔh’MRgŠ5' ÅØ0KšŒÇŸžö$¨gÉ nfD,9gŸ# Žäõ ÌÚº… gogk­ùú{ýúúŽ8.Ë 2¯‚aÃÛ0a†P¢y/ô.rŒ7…ÊÐò{x#¯ëµWã³dÈß圾v‰2uzëµÆG/z¹ãòðºa:ôŸµÛWN0VÝëÓŽ‰À«Û±rs~ï.§c‚ár6~sa;¥ëàFRAME ´œq!yœeM'Є"PýŪ½[0ò`PîPCg~òy<ãO4û—IOUQOWV‹*éÂØœ80K%X®ËoLx‘géá؜뎚 ¸RbÉøÚcy<{\*_B üm_t$g ¦¤{Ú¼lØ/‡}Û…Q8ÞO¸÷»àÁ‡aš)Pe/_‡òçÅ#]5qãµ>àqƒC,s3Þ‘ #>Q]és¼Úí=awÄïtu•¥+×&eâ~ÊÿT&ø½.Ù7OX/ø{Ÿ.™ß"‚5E1‚ð_En#4—Éy;>R%0ŸJï ®Õ¶Ûߨ«§$Ü4>Ÿœž^UëkI5öÅto˜ÐþÏL¯éØÍÉ›üq߬Ÿ°È®–Ös›A¶oÿ_ŒÑ¦îFßó§5•¯4ž|Å.²Áx()ÁÖθ]çu¥ÿªé/¿¼©Â”®î¯‘"jvìšî¸u6IZzfëKäX;Ù¸QÆ{¸—ÔÇâ®ô(!¨FRAME „œq!c&îîý ‘á,®8~œžªC^vr|@M0ÎzÏÑn@O›E‡@i‡býNŠ}P0¢qχƒ÷<ŸaâÐNµõTQ^½¨Ñb _ýV¯ÔdiþÀýâGßåAMÇ×ÀÕ‡BïaK]ì dôŠ.õó¥Xdf¢§jV²â¨Gw‘ÔÓkjƒw#´–rÎ\3îIXc]‘ÿç×8§¹jЇ•° kaœ~U¬Có艴'üXº+œ”3ŽÏFñ†w…b-ŽÏ£õ²#«ÌÈÉI®<õEQ :  \Üç’±ø%ZÄü z/—8bÃ</¥ˆKÑVÉÃϪ>AGÊ•ƒÛžþæ¯.3ãw}¼H4ÝŸvAþ~pF÷Y,Þð4‚>ƒH¢’È?ÇYñ¤üò~‡j¼m°´ôƒ=Œý‘²B¤ß m Yüø˜Æ6GÆ=ù¡@©ÿ+7À¸—AÝ~xði—ò†æý¿Y­2л€ó·þ^·À3ñ~‡‹á\¿À‘ìHe,ILŽÙÌßÓ"¿Dg§¿B†—’ÌY{Þz÷g<œ°Í>¿šªøŒÿxûRS=LJ>È~x™ÿî,2’+ ò}í.ÞkðeþÔ|Ìîî€Íé)Ü”8ÎxzC©¿ÃÚ'ŒL“©´ €E÷£–ßÕ0Ç`Ì̃®·œ…‰Ùs«ðÃåŽ÷ ÇG©ƒAÞÃÝ8ȃåUQ6Œg÷–çb†±wÂ*˜“pvÉÅ71úGÞòDY3@!ĸ â›Â㫊{Ö!½Lîn³ôÆE¹7Î"܃­¤Ã“k0â{ÉÞw°¦ì#GFRAME 0œrí¼ÝÎ3~„Èð–x9œÏÀôަhh›|?`Þ°=<ªhžh àìထø„B3 ìC@‡À‚.))¼žO‰Ìòv|KXvù U^ªeP ­°ÎÇP4×dˆnP,ÑÙÁ‰³(Áãy¹À5õ:Ûë¡Ö™÷©hE(ó€æ_8¾¹PhGù5™›>dxìöÛmƨ«l'_ÔÛa®Ë+ä¶­÷?VB}#Ç+ꄾô‚„ÜÖanàÃ/ö×öK±vÄ—¨ÖhFƒÔðÐ?Ù¿©CŸ“4‚;7°ˆ œÛ_‡cZ‹=fM› øßgí6Ù³'mÌ?jÓdÿTV¬É%ÖEÑ‘tWðñªšYP`=ý”“·VšI]Ú¬`ˆ¸eÕ²‘3•ü™>—Ip…cS k5êËÔ'£÷wlIGÐèÙÏcNšydšÊOþY¼»œ¿±#`Ï'˜(3PxúO¹2vnêš’µÇž)tSR/§/[²’ârdA+ËúwEÞ'jgP([òe—Ñ5¶nÆ#­Ÿ¸¢k3¥v&ÿßVÙ/J%ŽžÍtR¡ûdÎï4 ?~À‹û ’yË÷¿Ç½ôW1Ì©vH§aSùþ€ßkÖàW*ÓcêÑý2ß5ÁþÃÃ#ó±ÃönžmÙ#D½%ëκ?d¼{)ñâÖÇ=^^1Ÿä{¸LØ3ù Pª|Z+ý]žG]ÂXu€õÃpÁ+½§ûâ<Édá‘´®í‰Aã±)X rO|º#pNtËÔ9¹Ä|ÿÞÝæÒÓyHÊ,?«ïÀv6Œƒ$\ ©\Èᙣf"÷nÓ_Èâ*%Té6ÍÂÑë:°èó‘úÕ7ÆÀÚ›Ipc’S´àÍ·:~neCM—ñÈ p*8î@ ë³à$A÷½€%ÁŲ‚¢~ÎáUÑØ…¥åŽÎ×(c6c­áèjw ŠäR#ìt٨˼€îð;†¡ ¨å×hð€6zšöÆÂ JÃHÐG·X©ÛÐçm7ª€fŸ«¤C›Ãt7XÔÒŠ¾Ð* U611®¬ûdbµ)  ]ÑÐÅìNar@Á™µá?3hX R)Zqs&“ô¨Q’މŸÿsÍzÑð,l!È ç°ûòU3±h"´WÈ¡!ç|Dó1‡žc‘ˆyÇÏ.>¤Ãùp’ûY"}颥&]Aø‰™\­æ=J×ý-„¾dƒh«D¿«RÿQ%b®~¨Õn¯¥ä%ûÝ;ALÊ[v2½¾`d;å/…â~5ÂA%‰ðþîÁêê½­@×ȵ­ï]â[Ö‹Þ]_˜·v€FÀò‡0=ùÐñ³°8õGp~HÉP‡Íä­¿#¢g .¿‘S‚#ÉäýO/Á‡ˆ§?J*ô)T P@W=Ýôèx¥ øð§‹EÅØÅ.c" “’b¿~Ász•î¥ß“}Un-b&þê™ÙÊß¿þåMçIÜ9Ú@ò‘åõ㟤{Çó äiÒç{.¥€™ÃŒã¬ÌMŽ …õÁ§ƒ€{¼+0:‰q*»Ýýûˆaº£¿¨¡Ü§Ç² î÷á–ñî++]ÞýWSKE§ÚrÊŠuy«c÷n4&ÊÐw 0›Ê—‘@RA³]A,ÕNùÊ XóÈ$~Œ²€>›S”Œ{íͺ- @MU)å^u`šk«Z‘×oS®ÒtÜ…ÅT+»rZ&náüù¾úšQ‘EÈøÖø@*4…“ŸºÜ=Š”;7ùÅ&å †Á4O0!õfÒ´dP“]cæB’š’–|A3+h ’­5j ÈY§9RÒ|'¿â Öm.9÷ù|XóïìæüègC•ò’švÔ)q PÔGÜUTÊXIrˆû­®îÂûw5~_­ £–V×Êð‹sýS–ÓÚ šŠ;úŸsth;Í{<ŒÇ€(…D¥ñnð=:¿Ë"ÚÞý<ùþ·Ó¹º Ÿ¥£óçêg1ÐÈmŒÁµjQêïó¯uˆ Í¡F+±pLø ž`Y’UÑWæÃ‰`Û`úyÞÈ¢°ÓGƒË1\¹d’\ñ@“9 ú,jæu‰FF ”‡¹?<Ø –œÊ|H¤a˜êЫƒüè0#ê‚S®Ÿ†g±á:8ir•ÖòÖ$x"yY_·ƒè ]èý½«/ƒûX²ßÄUÿ£û®¥Ù½Ü?~Š?u:ä.õzÚ®à–ÉK蹩zWräý%X(¿ï¶¡1eFRAME ð¡fçÌãw7ŒöZ½ÀŽ˜¯À ó1ú2 P)}ƒìÀðÌ:ðr'Ôä§`ýo·Áª„>D5 8;1Aí' ’3£‡’”(‚’>ßgÄÔOFG&œžO˜5½öx^)U0h|L`fŸÜòÙø0éþtðàÚ`™ fá‘·ôR7ÃL¤ŸÙW!’÷³Ïó™BÈ'Џ“ï/²–ĦdBâ­Ú}GßšÈñ_,‘]mÛvúÒÿxñêÚãjØù1‡ïýùøæ·ã*bæ0:`^?ógG§¼ã1 V 3˜h´Úif›QRÅ{„Î]G Û³IµrØf^- ÍW1ݬlÕT´êA͵€H®E‹åà ¢ÅpŸäÈèPýz|ð€ƒ,;³cæðò.üÀõàÔÛXd—èò~tµ¢àg8¼3©ŸNCy,œËïóš~ÁbÈa›a8IŒŸgAÓ÷]ê[íaâ±i×ä_4:e© ¡@ tû•_$÷hÏú‚ØÔ¾¼xÜ8Äÿò•À°ê7Kùʸހȓ1àÒÁ¤Ÿ’¢/¡A#H'Ô`rÍeNÏ‘äÓ“£Cƒ£ÑäÒœ0ðç:þ («ÔJU@2 ßQ ¾. ‡Ÿ ÷Íå`fO ¯ïþ­E µvËë½kžt¥nNð°³ ïˆ¼Ú …7øWD@ËÊ E¾†3;‡Q¤­œ¶p1°¨Ú†\ õb‚ß²eÚzëÛÝÞuãïÔyHÊà%ÖæãpI»›ID;^êi]Fì…*Þz ¾ŽÓªÒ 2°ž^žÎÚ®Ôm˜Ìm¨¬­2öE,¨Ô¼Ÿˆõî±È´®¬Ùm&£—"õ׃dÃV$ˆbW—í)e ‹0pk£‡#nÁ\·$ùxûÃÒk /§ÈÈ\ë°0‡Ìñ<åñ;r%DÁùjSN†FÁHÁ;D#Рò% 4ù ìøšÌžù>@Ä'‡ðy>½J€¥P €€µN¼bJë"Sq)#Ǻá\H‚k‰@¶$Ü‘‰ùÃþÙD¼v+ Œ¥ËßD5˜˜À¬$Ú.S4w¯§ŽÀö£kíÁ÷3äV­©wË÷.櫨Ìýú³Ñ¾+íö¯é?è矻pè}ª~³¶à8°RŒÇ*õmÓÐQ&ulÖiBrêBÕ_"¯ßh~Ž¢SËr%GÈ™ÀÛLÙm†‰‡GKO X™Z1á< ,Ù:äYÍW;"\öDÂmB>ì­cxAÔZ¨ä¹ñžDëovÛ/FQÆÐ°[µu`À‘¯·þȸV'[t_Õ©þEXdùÚÖ'‘=C[Hk³±»ˆÎDÜ „oz—*¢gñ>ÕÛž›IÖi…QçGª =g|⮂Â8YØoÓ™ûzœÓ潿êªÏ˜v$@žBßTì`wZ@¤ÀNªØ~úFRAME §NsŒÒqœdMG¦±|“„Wà4èð3´ÀÐÞø|<Àà»æt(r7™Ð!Htr¨‡êt%¦à@ê@´à„.@B ‰HÑeCäÂ1‘FR`?ÐiJӣ̾Aè§Sòw<Qù`z=šyÐET‰T D±•åéò(7‰Ö-äØ]©ÀwÇžzP°·='ÑÞ†k—aÞ#Šy0¤ûaL1A€@‘ŠÂËã·ÒÞ¼ZÃ6Ïož5þ9D˹Ÿ4oÞGmi¡ì;Þ×£P¹ö¢ÑÞÉ@ª5ElŒá3“‰FœKUåþIBE ŒËC}™áB[ àyàŽ±À.`]j5‹'Ä-ØxºÌ‘»Š‡nVïô¡ÌÍ×Äök|N„ .Ö“IõyH)O²ÛcBš( Åû#u§gä¡pÃØâlw¤ÂÕ®ÝÞw†pÜŸc4%kc²BÒ¿ó¬Å¶>IÕTÕ}/šxz¯¬î›8³Q6ÆM Ä!gŒÉÜéõ—ã§oâN£¨[4÷¿UY!ÚW Éa¸| ¡YïcÈ£g0ÆNJ°™P;iY¾Ó.ž"”ôy¯iµì·ê?ÍòÐàFRAME 8¨N§WIÆq›¹é¬_KÃðsy‹ãy”ìg(."j,ïá;C‰89`Àì4ï@L½„Ö#ËâvÐTÄ“ÄDCO»E´©|ƒáiŒ¹ˆr§¤RËðÉò;’ñ0€Iœò‡%zŸ‡‘MO¸'Üø€°çP*  @@€…õ\¯~!oÕû~ÉóÎbu(¡ìÏCWkmae~KÜO>p5ÕÉO_áPÌo)ë¤ÒñÓ)åCÈ#LJ“ ëè]‘LÄž\ò•8þ Ýb¬‹Ð&ão;¶8µny˜ÔÉÇ BÀ£[†Øò×Ío&y£ÏÛ^2Ýu¨a7¾h#¦.º.8~Òùãœq&4ÅáÛÞº®‘ÿ‘P%dƒȽCo ÇÔ!Ð[ÌW•71Ñýá_Ä<Ä §V*@äDÃU™NÍØäb……âR¸×PÑ-6xúá›É$3jm˜É]’j¦CÍ„Èiyò#d!‹ÙäZÙ¥6mtÑäe higE-5G=i¨YJÓBä`çI<ˆ¦×"z–W5²,{7‘ú.j,‘l5ÍXðίvw#o Ú¸ìm›-F‚ªuÈŽÝm^(^®–š!­Ô¿F­ò9j"òý®ŠÁjª»?(CYºÞgN¸>%¸Þ´Þa>q„& Æ+<üÿþÎøÀ|ØfÏ>8ÜXkX3ˆ:·û…uÒ`-l«`}òýÿ©@FRAME t«;wt›¼fëßX¾³‡à8èî/iz„çžayŒë^Aø^´2;× Nàô^ô iÁND Äz?DHNf%£ˆ>ÈP C²k +>“,˜Ã „¿įãâõÙð:'¦î'Ôôvz=)ÞPU@UÀ"V}lp­à ½‡^øzëç˜]ëÇ<è1â F y{ˆÏ#z‰Þú½,žbâ˜ø+ä(õ³ ÆiŽt /O‘øx…ˆX<Á’kÞaPåá•»°­ ðµ ¸dl^.Ö $ËÞÂÒåËâÛ <]£Ô^6E­{·a]* ­hîZøû1^8† ·ü D+™}3'öXîQ£{»Ä\ ç-óÉãòaT à ¡iéöú>GrcãO‡ç§¸„ÌoK› ûÛ\Ì,ÅyN_ØÎ¸DÒò2 ˆùŸºK6CÈù!h-rÈ–<_%(fËÒ\ÊlZXC‚«¨péªRº¯#–jÑ)JÃ\dò>µª²À|ŠY˦\(¹6E—È"šÌ,Ò1ÙȪÝlç°…ckÜwK?K¶Ì>FÃÕöIÇ[žÝ=åÍgI•›ý0ü6y†u¨|')ï9½ >šÙÄâx„ËΗ{Ćâ{beÞÏbugWòå5賫ÄÙüNÔçWبH3£0˜ö™Nìpfg0ÐDd¨€úÍŸ„.µ>wöþ6$úñа¹ÍT]ˆI ôìæšÿ‰^v¶¯)®‰U‰ÍëWõ'ôÒ_¥hÕ‘Ô¦”¶FRAME ܬ;u››¼fëßd—ÑgÀ‰¯Éð9€<ÆrÈÀöz½„LÏÐ<ñààÓîxÊÇë2G›H* ì¢pôA8*%pTäàŠ@<P"ð<taÙ@àÉÅÃà|Îg©GÌèõT @×_"ïxy>GÔv0T,€¹ð Ä‚¼‚ÌC@)ìd ô·¡ ×èý°$ÃÜ\…>‚³/¸ó ^ ‘@°ª ‚"è `RÕ¨©˜XFz‹j Ñs\  j׸o¬)¿åjFõÔ^øGXSºîÞ4+údÄop®Š+ê‡o>jàëçµ ÀÔyá^ó±t2`ÀUò­šðö<ˆØU²5`ÄíÈÊÂÌ`š; ÐÙ…®Ñ§€®8ÆiÈÃv‚û'…fÌG#|‹~À¢ý€9cRìs…©9ezÛ%k›?Vc¬,Ý–ì§í–¯.Õ¥ožE-Ń[,» bÉv4XñüçS:íÏ”2Å{tÃøt×3¾±lg£]Kp„@Ÿ4˃cU÷ë<7ïòl~”S“#r†i~Û­îP ,ñcjÓZÚ©öÕòÒš+kï FRAME Ü­;u›œg»MK}/À…Éèö3¨NøëŽRxW¡,NÂ{|L2ê…M ê‡`pdraöš°ƒŽˆ B &¸|,4Xh‘ d :¢y>Bð%ø ûç-iNŽÞ€èøžˆÃàÌëT €ÄBþ°´dËËàôûÝ 0£Þ=óxóß&v¼}Õ2i Ü }x….¾#TF÷«ò¨Ö(S{…"žá^-€Qèa+Q·]Ê{ºëÎ# 4v®9avåÊ6èT…Dä_s›YT>^TQ©»k€; Öæ«¨ê7/†ÕñàSã<ùä0:ÿ+íϱnÎóŽÃŒlI‰YÁï8K öE«Û½h4[Ê;þh·q9í-‹DYSrü-Ýù[ä4~è³ý‘‹áNØý‘˜Õçe‰ð'°GŽùÕ„öœñ0's9lôö-}«Â,iÚ4ZÙß¶<àWuíçë/ܹâDѱ&“pDj£ˆÿ® ™Nñâ ^ŒÌq˜zÀ¡`=±j¸™L ÊÜ-UGk™‹8ù“¹”¸‹0ƒpRN&^¬¨ƒ¨_ƒAY¨(ÓÇ)ùÝÀбÃÇÞR‘úŒ>k¸ hƒ—!дFRAME p­^]fçÆoÓV_)“‡à@Å{YÖ÷¨^·ä¢>g€¼‡€CÁìN‰ò9Læ†O•µƒÁˆA R@º~X˜aD)’ `#\>ƒP¢µ?g³NM>Üäù¿p4ìÁ§'£“Öu¾g羿"0Æ}¨ðÞl+¿r08Ûê"BÖ|ëÛ×tpËå:30£¼Ã*(òëú¯_.ì)1t(¿a¼vîÜ4zÖõG6׆â·]n|kZâ6Ö£Q U4o¯.¯vã¨@6DÇ@^r°uZÝßמGc´»>RZ/ª"#ÿ/Ðÿ?—dˆƒŽ@ññ2‰8»áb»ü’ê¸â‹‹t{?ëË×aÿf‹óñØœË WÅ…¤´´´Siç{Ý–øyí.ƒ‡>KÛøí{/ÇÕ;5΢ƒs©øêo¬ÇÙÕøðx#€áŽÑ—Jxoëô<÷ÄsàFRAME L®:fçÆn£ÓV_+gÀyÓÛÖuÏ=qÏ<ó‡›äÐïYÙçCt¤:89)X§Ì ‡Ld°@\AI>BRм‚ycã0 á<‚%gÄô{1áÆ”ìè¡ÑFrýÀàÇòy!Áõ9=`@Œ>.½ïy´iDo»w¾tx1=ïyÍØb3ÌÍQOŸ0³LFeF»š0QQç]vrùŸc€õðœ ÔJŽ!“ ê;Üûß)1£ˆÇbìT …-Ãn­Ï6ó qãaÀ[ót /#1åÝí Ä\„µBÒZݹʵnïšœ„D„ç<ó²`ÉŸR´äiç|ñ¡i+koJsŽ}BVϳŠÊ¬ ÉŪÕàö[ìöbzû'm(Z¤:ÒO+„§¦zžûÊb'Ù=Òæ"̳qÇÙŽ9û#0°0JÇÚ醆wßo»À8ûžñ™SpQð½F¶æG¨ÝèØM™ª72`zuÀb*ë>¸ÿ.’¶ œ±Þ¹žÌ¥Ìµ>*||½€¿³ÕppËB†e*Œ°CC犊ˆ£¤§x9Q׿W#>÷â^„¾ŸÂŸç˜¼Œ0³­k5Ÿ]FRAME ¤®:fæï»i|årü X¯8¤ê/@u½Rvèô™ÉHùIÖz9t@ùž(!+ 4 +¤ŽœŠ4KЬ@ÃêáÉÉÉN£…‚|/À¦ßð;91öiÙõ7#S’zE;Sƒ¼¾ ×ÎîOcò æÔçw£žj#s¨Þ_.Øž_i„w†czFÜó¸öòùª|åŒ<èêgo5»’ŠMwdžå¬\4iŽeÙûjóËçÂP)Ê)vŠo{¸Ž¾õ ®w†_ÔoŸ.JoŽâ±f¶/‡½í`#ÖWùã‰å{ý™• ìºÂiöMÿX“Þ4<~ø~L. iÌiICöGÏ'cûçZš}žZš‡+>ûÅS±‰öWìš[\ ˜ñÑÅyÀ0D[üIÇì°°KE¿û²NZ>5Ú¼ñm‚}‘LfMPs#P" Aãéyì7 ]ÄVQs1.Q™ózðæG¤ÌàšàrÁ—P›6NÄ"˜¢˜pûÐÓO=ûËx’µ€FRAME Ô¯:fçÆDÜõ±—ÑgÀƒ;ãžyçšNi9Ðæ“7Íï½ë<çyäànà_•øZ€³— x• "Ùàå…E)œ€9@¢}ÁÂи/ÀôW£à|Jttx~¢!O™ò)O†€˜ƒ­ÛXÁ[^÷=>v™|Úäk¡jì|Éçƒ/(Û=]Û°Ü<óç°¦cGsãà0 ×?Š:0åX$D  `‚|të1 ð=~f?ðp;>g'À÷€@€1êeànðŒ » h7¦5NÚß;]¸Ÿη¨˜x|Iˆ÷Œ®îB¸6$dõ—#Ÿáaç”A÷G¼ª5ì/¾ä=]»oƒw­h¨ÄšÂÛW¯8ay÷šŠëF=ž.…Þ°„×VŠê=E¯TZy¹St-§:žÈ°pV±kɯkû€Ešð H-b:YYˆ‹vKÇa*‡ñŠ"~^Ô§Öœn…ÉZU~×½yvÁ?‡õçd ?]˜YvbØ>ŸÁËö'´ìX0V^=¬æ'jZå^²Ò-„ ––¡qe-e¢ËIÚ_tøÁ_Ï­î¿yAïô&à@Žcýûo Çz¹×ây ú´‡EãPFRAME \°:fæï»ž¶Y|…œ?£Ð#×<ÒsÏ<óƒÏ8xÏ ÷¼;ÞƒyIååÔ~‚r Rú6¡xš ÐÈQó91ÁI¡Ó¥(añˆºáá´ äQ‡ƒøC“tÂ>/Bø~G&œO‘Ñó)_tx&#GÎmn1ö(QN¹ó]û]uç;¯sÊbS³¹¬x ò>_#g½ >LÇ ºã/½}{KÈ1_á|籃L>°žíÑçžWДx…``8ÃÐó—Z7<Ñ@&%ï‡ß6Å“ƒîT£Grö/r§¡Mòº×ó@X÷A^-ΦÐF¾«=T׈޲²½hW~|ˆ ÀËk@´™s*á¹+Ö&1Ç‘]µxŠãd§‘UÜJãÃbâàˆ‹"Æ_|Š²Åœœq‹,ð®™0éÃ/ú¤®¬½‚^+ÛZì•ü™ZDÕmábÆ‘M“É=„l¶—=›N4^ Ê< °æ°mNEZÈ{v.YgÚXÑÉ`Uìt±yì]¹…›8l—µ.‰äqqvÃXä5iag1¼§=–'éÔàsªÙt¨Ó÷Qü_ÙÓž&á}ÅÙÝáf}›…¥€ÎùÐÔ]<ýcǸ4õ±¸"é»gv)˜6-ƒNpÿ ¾Í{ºBΔѱ·ñû«¦yÎÅÿzHVaéô”Cw]%H~›H¢´à*ͨÿñ¼˜¶sÚM=ËÖ•X¢€TÜD¯'‹°Uî?‡­; œ¤5㉿tÿOþä*OëÊYýpbSª]š‡÷»&Ö'-x„=ÙiËý8Z‰U¨r®Ž¢ ù’™e!laöÇ/vb¾—fop˜^°I"/_SáϬÌL§­Î[qŠ`2ýí|×Xÿ ŽÌgG3‡QÈ5(=iá€8¹/ƒï ¯á<ÉFRAME ø°:aswŒÝ‡¦K/Mc‡àDĽ"Âô—žyÁè3žmäóÁäÂ?D2AP{Dä+ȃ (Bh c CähârcÈŸ <žÝ¾°ÉGØ×¨¿â|pb3ËÖFñÔÔÝÝA\Ñòá½Úç­y²C.…=¼‹Æ îshw<Ýòéð=tBž x"!Ä$þM!dÃòö8Ã[3þ/>GGȆ=‡ƒÞFŽ>W22ã“Û\´33ê©Ã,Ã%™îä\³@üÂé—&<òÞ8¨Y£Ofhç1ÃûÇÄz“ …øªÈ…ÃæGå$6 ?:áËã«Kà#žQ ¸÷mïˆRº÷mŸ»”ÊoåNþ'*fêÂG&V©’›¢øCÍ’H,@í®\:-Ù-ÑeÇw Ý‘0öø—æ|>ä:QÑÂv覒"}ïØ¾ú‚ÌKIÿ$˜¯_?uÄ'±#‰}U~Ìè—Œ°ìø>L´Å”íAC˜ÁaÀõos­CLuž¡7Þ 0P¨lß岆ڃám' NÕÍFRAME À°:f绚i%½1äü ÚT<%ëŽyæPhYâùÆp]9ØAñ·@ðh˜™Í ÃìhD‡ÄoÅE‡×‚žˆ ‘•ìH&œ00¡ÀЄ+_°RÉõ~F`@v|OŽ¾Ý¯z Û_8öL{š7Ín~ì{S;Xöóµó®MÚ½ÂÎ3v2ÿ H©}€8Þð#š;á9ï•ó[…uŒš= Ëì*ss\6ïA3™ú+º×,„ð…{o-ûr9½Áho5Ø…>¶%v< ñµ‹Åç0(æ¼Ø&ܹÔep“yÀ H\×i8Gç°¥aslr& C²t 䇓#ˆÒêäh"‹v.ÌW9:Á¥®Ø6@:ÂÀ¯#š3S²ŒËö Ö)e-ì@š9äKXíàF¿¥Ô±Ä RdVˆ ÍrÕÕ.J5®FËÙ/‘2Ói Õž×8x,ö’‡@¹+pË1’/@þÅGSb—ÙÓ¯?>¸+”4YÔoëµüX§2ç9¿øæ4óuP®Ñ²„ì'æ5ìxÎ2Οa¹žta Œ„m& ZA4ñß!¦”FRAME Ȱ:fçÆn£ÚF^™<_*Âô“ªNyåuÇ,AÓ°¾o{Ás°žsÅôrðr¦©ØšÂ#Èà¶kG4èIÀTð r Aü šC™¡ÙË> Ðöx:ÀÄw<¾s&Å·#ЧywÈ&½ë¯vóuÉÖ1Æ5¨Æ9¶|y×]uÆt)Ð&¾P‡¿\ó!KC¿ó\ôb3&b…«HôÊ𣮽ç„D¸ÅÓ+»®]¼‘¬/25¶ê±w.·›—#&¼ë©ŽÂ¶j7rëà×QGjÖ÷$Ãø 7k¯wAãÆ[Ù쫞'npû;ÏŸf}Âo çÜìÎ;b{wÓG7¸ÁjÅ+µß9&ðˆðÕ¿ €ÎVÈg¡Gp##C±âÓϰGÿÉÏ´ýþÌùâ-JÝ‚Ù6Ñn¸Åhi۔ظÞ-¢2øÿœ(î''|À\-‹~ ä»bqp­ø×ZÉ¿³IŒ—«†U™œÈÇûUÒæVõò¬ â®2¢ÖŽórëqJ&–>XˆÌ¤Ö{ˆeš3=ÃñŠQÛ"&¡Æ%ÁáªH‰!Ôzö§yÅ׎”`FRAME |°:qsÜÝG¼“ÑY8~-:I×<Âv—šRuºw¾o{ç;Ȩrg“‘;y8>¥˜‡Ä¢ Zà ñ,#Œb@>GD1ð)„G>£ÃÉú4ø>|n0 àrŒ‹¡v¸ø§ ¾¡íªcÔ.Úw–ðªzÞeTüÌ»Î{,+œ«ìÊè(,ùû§)ƒ@ì»•Š¢rj•í®~h‹—3Ê®æÃÒéE=Á4-ËÉ×ç\ùŸ2J©ln…ÌgýLâüC: ¥ánqáǘӀKÿZsß|>@ÌkÍk^Ý–Æ;asÁo^ :­¬œîfRw+[q;#ÓØWc£³û0¦B×+=óßiûJJ˜|CDzùs73_‹þÎ/‹H˜r½…hL+¦.D´o‡óÝÍÁXaOâ鿌ɫ‚‚Q¤zu€s'Ö3+}™mÌœÀ˯«ä ,WæXšy˜õë!–6õ*iã¯y„FRAME L¯:ÝÍãs{z!,ñTœ¿f<ÂóÔ')œÆu½so!|¾PøgwÍ <Þ}‰ð<”ôtÌà¤Ó@Òb N@p :$pú¸‡ìMå(?#æÀô|@HrwžO‘ôÀªÊÌ~^}Î ·+¡ø|Ê¡ÊÁtÎéXü>‡Ë!YôZõ3Ÿ\gfgª]-Å]sJ„×ê3Ðü‘zÐ+œº|ø×Ú\‚Ì¿ó>P³q0½ŸŸõf2qŠËõq|I£.5÷ß¶*òÚ¶ó»¬Z¯Ÿ×~áÊÅãŠÔg}’Bµ@°ô– Ý™1UWì0NƒÝ‘¬á8~ØJú Rv‚sý;WjÁJ¹:ùûŠÒùz'ƒú (uÇg¼¬ÌYñ~}Ç*ý®ñÇ dùð0£æºÇñ ¾u1ygx×8áÃ>•@#óFRAME X¯:fîoœÏŠ[ðNSs¸N–s Ö‡8sÎÀõçë; å'G·Á/(“Éx%  …Ç“x (™-! )Å`O‰è_ôSä~€‡šàb.¸SqŒb¾dù¦08Œþî¹;x÷Í1Ë´W›ËÎ0‹µNBçG¼%âzŽóÍÆül˜‘P‹uÙGÓf8·-M•ç‘"펓ƒÕn©¶'z<£¡k ~)žk·—2G^Ûs©Dz¾Ößjžà¶$Gg°îþ¯wÛÍÙîÉ»?+ü¦¶Uí¨cF÷Ž\wxâTBek¨ Ò{{’”áÐD6ÊO¥iUÝå|›ý¼>ˆÀ ë)•°~ÏŽÊçý›áÔ"Y`á-˜ šƒ0¿1,¼,íÙ¤)¡ñŠÀà |Lã~§×0Ú Oq=FRAME ä¯:gÜÞg«1|ìrüšª=¤ëži9祜ó^Âù½…õ#ØPîù{˜…À•à —žoÀÕ+ÓLHÀØq@ø>HA1:(dA‰ÉÉñ51§2ù~x~P)A‡"'Øò''ƒ‹DOë}@x`»2£nUœ…k+ÕÑÄWàæï3·F+¡m§d¸]»Vº ù£.æTopgeVßm…¡•PùÝ2Rø—þÍhkíßÝÑ"ëâw|°õ]*{ûRèÇŒ×æHör÷^§ ©˜R×¹£šÇ‘­ÕÝãh’޾yMž]qABœmÊÅÎùg.xçvðž¼Öåó¶¾£ªŽÕ)霾µ”ŠR£Fê4nîñ„óÆÕ§8ö<ºÜï'5© Ì\0D®ãq©ˆ5ŠÕa „‘/Šå…Œ[f§‘& ÅQ¯Ò æÀà—£¥ç »c\xã#™HqeoØÍÙ$4B\ÛdX°‡Z9E+F%ηV-î–*b¿eÂÆ&—¬pÒ\ŵP9T8v25¶M¢Vö±±‘g²é€‡ƒÂʇ'R¼ùø·‹ÔÁá[wC$Ó /±~½>¼›-÷³¨îx ®Rû‚8bÞÁíü@±¯‰ÊPFRAME Я:fçÆoOu’ú%áø´^÷®yçžyçšNwç¾o{ç ¬ÅõC³;1õ:!èù8 aNlP¥ Ãøù+Bò„àëžHö°°@ôtr|O‰Ì뛀|B˜G‘0@10µ®¼Û]ãÆï]Ú§Ç{ŒG·75×TëŸ5NÑÆ`Â6ºèõFÆnŒÂ5ÕcÃ…ós¶=pÑY†FÖ£ çë† ]Ë€žlW;S uóËjmåeÀλ½êü]kõN·Ä^kÇ)‹&‹¢æ­níãµ4xêµÔÅð1Õßà`c/x¦üÿ©š÷‹³I Åš§F+[v´. ‚¬;5díÇmœW(1ªDVy,ÆMbœWÙ,Ùv›1á—Fdò3Ñ£W8C\/”Æ?äE‰—IÔ@(Iÿ Q`3 £X£]EŠŒÚ‹J5NF4‡`¦Ù=žÍNÛsk x˜qÏs‚ ql]kvíÂ¥@ZÃ]bÄäWiv,jt—†Ž-gE„Xé¢ýÈ–Ësú{ÿΌ¾÷±ºvγ6\“þI2 ž‹´ÎŸ6ï{q³æP[ÂtTÜlU`ØÑ¯ˆ$q¼/ékâufm¬JºÒ¸ÉFRAME ”¯:nnq›Sê#,zX¯™ø³{„瞸çCšNyæ“‚ù½ó¸[ç{¾ZiÈé§'…à…x²ÞC $ëg2 ¥g`q%æÛ§…0ùžOÐq£@úA ¬*9yÜ>@9äñ[¹Q»R ÆyÝõÎV3®åsŽ=¼E–g¢NrÊ¿9“âk?g2åß\¨YcšîOÖJÌ>'Çs첨të¬þXÿ™Oö ß Ìsç[æh*†‡ÑÂë/þVõúâëâÛí_³jˆ§ YÃî•û¬ãI¿ •óka=¢1+bJö ‘52v”šFÑ(Æb g‘‡2jÔMƒŽ¨]–ŒÖue¬Ã3LqÑ%›e—<B+âÉTh„G¢@\E”ãœBv!X@j¤pC°4Õ•iîVÊL¹±gSfC C8ެ[ÈÄËØO^Ú0QžA)³šv;AßtZkOÚ… ÕKZ|Înœáâ›ís¦ÙÒ€aG!ó1·8î<,$L3Nòú’ÆšFRAME ¬®:nni™»¿ É/½?W7˜Îay…çži:K×ñžoyëzG°¡ÊO"rtP9‰L=„ œP`ÀŸs4aådDú8†R”œÜ fÄäìÅäòz>‡ `m¡Ø(Ô¼E Èå$áÜ\ µi\ª¤g˜ÂЯÊÖŽ*…ÂÇ2r9ºw•"Ëm5O[ðÌËØ]»ë{ÖÝ<è ‰¬Ð]gWÇ?æsòÏÝÌqÿ&2??Öœèùƒ‘ óÿ,éüpëX>(¬úÃÃXcœ²ÊaÅÖšùuíüq½‹úA^„hô0öÔ¯“öõYÿwð¯&Äñ¹7ï¤9å9ú¡ÿEù?úS•‰Z¹XèlVœMðüŽ_°GkU–ýŠ$ú5‰VQ¸ø?k üsN{Kï±yJwiL‹²4EEµÅ¤*õQ8Ãbe¡ñb!‡‹OžìºZÚRnȾïÖ{šþVkðöPÍßÅ´æ¾[—3ûuoÜ6½?¿oUçN†ß:x9:{ôçGŽ÷õvq[×JK}`0ù%Ì!¿y¤~FRAME ¼¯ä³­ÌÝã ÓÓcï®~®m¦x}ò=»Ø_7½ä˜œgC°|›ç¤)H|€AÈDxåôvX*2H|Ÿ¡W›°­ñž3Æ}O'³Åì7®9ç΢øûãï¾(¢ˆêc‡ÈiK¤o­ZÛ}zcœ®S<»Àiÿÿ<Îéƒ'ž˜´ÌõŠ`Ê·»Vi£¾ƒ»•Ó‡¯\üÌîK¥ÞZ®W¤u5þP¹Î¥ñg>_?¹=cõeªÑøýsìÄwÅ þ| w<ÈÇ2‰…’ê}Å?C•×óïÿÿÏòR÷­ ôý6½CE»ŒS÷„w3Æ÷X¼­çµ¹ï•~õç0jy¿¯ÇÙ6•iÆ;Õ¹â4ya£N#:ÀhÐýš¤´ËDî9çºa§3ßãFN.3Æ„™ÆÙÂJDžGÅÌã8ÍééEƒ‰GOÀy¢xW¨^a:…ê½æVß?¿y&÷c½×—}šÙÅh ?cŠv:% Ê!#óB,Â4YÁ Ò‡Ðû@PFI'È‚ž iàyÔ>E!öÜé  ìÀ(>ø)mDË>]+gí §ÒG¹*¡v£t:àáÆTá\ôÇÍÆn•lîRéùfsû¥@ÎÐÿXrÑXh"«Z˜»cO—戳û-,Ï™¸¬ã:õ´YÏe¿Fèß”süýåsXZzÖóÔ+Vç™ÿ õˆ°^Þc%Å‘ÇeÌ=\9ƒtߎaóè»0\÷+ÑY’Œ1aÅÕ|ãfWpÝÔ'‘1²¶6J)Œï⵬Dò&KŠ˜[.'å•¢K‡W÷Dò&¼·-/qbð^ ÄȰ®š%‡-<)ˆüN8BÂC"¿,̇KKì»)íiK°šÃK4tk} W¶kì`b°±ÚãU¶t–]¸†,,¹Âu,ˆ ÈÙŒ.YÚÇBÛ||{9: …ÂÊõŽËÄ®h1lN7 ×Κø{áôø;^PŸOc×:UgO„?ìq|!‹gJ…P ¼ßÕßþã_ há îÉ“L¦–e'Ð7ˆ¶±µFRAME ¯³­ÌÝã8ÍóÉe•IEütO"C’žÇ¸…ó|#Át8ÎÁ'wÔ{ƒÛ‡|€ÕiÀPäörUZ"òB'<ÂÀÑè&K͵<¿-áñ|…ó|ß'G—Ûò8Š DÁ2›æù¾@@A¢""‡Ì‡z/¾>øû⊠*¹­-²©”)töÖ눦9˜|P.ˆí?þ±¡“šc"ÞÍPõ¹X¹^Â-q£JÙæ/Ê,ªâB|ûâ6V2÷-í»âeïˆÖÍñ÷ËÛkŽŒhü[óË<Ë‹-~>&{îqEltåÊ?Í΄¯ÊÕœÓóªe‘‘ÿÈ¿.­·¯Ô|ZrØ:÷ÿ‡FniÂæ€ã@if߃gm¼}kpû±”vdá0^ÆtcÜÛÁÏ.cŽhKÖà«ÐyQöH•¢®V7Ÿf\ùàZý5ˆÁ §6·[·0—¿N¥ÖV¸ïi|ŒY`4di Ÿ9f|IN9X¾Ëùîgš¦¼;Ü[ýøžû=§þÞÙHáo²È´¬´ò¾N?7LY¥ž9FAOoàB±Ò ÄYÖØÂö$ :U5§3XëÖà‰"TQ‚ Ä܇Òô FÌ“xbûHI»\:ÌŽfÅ#¸‹ÕD©öåiý&­ÛÞÂå–O?Ë=úÝgXFRAME ¼®9xÒîçÆ#Ò"Ë'(ü¨žô—šNxÌ;·ë§F~Ìóä9΢<Ûó^Ž@ä‚z ¨:hT)ò „0@€”Ò mô%z S’[ð¶üPâû~˜¡O†‘x9y }¿K§ÈÃî@:ÀT ûàP€)˨äLøUýs#ù?ð= ÒÐî i‡!mŽ ©Ì˜9us–Òéöf9ÑD¹ÑY•t·:…Ž, pÊí§=Gš@ú¡ÑñÑóp¾9c‹½+rj_]gø/üËû,€ 3ëîð‡ôÆV˜ÿÙú¶ï=Ë´Æ}À1ÄAŠ‹ª2S¹¼ì1B𥤠›ì.ô¹Ø®tÚž-oø\ë^ï¹€«cœÑ‚þ| FRAME ð®ôÌÎ3ŒÝIç²KkKø ®Ÿ“à|Îmúîòp÷ë;°ÐÞï¿J¤¼ÐèOœìª ¦È0!ÉòOjOH0H!žÀ§ R±q ¤mãÁä_º2ù¾n”À)Ùó8Ñ…!óÝeó|Ý)Á÷!àå;–666(¢Šl€æïu¥.‘¾ª\È2Θ»—Ö—CÓ–Ý´rÓÿÃ?vèSŽzþ˜=\=ÚbéŸ9N Ÿº9åZ[ÙgvÐçºXä´2ªÝ.襑Ãà ödgrå{•;?ªT¹ÕÂÂø<Ú FE,f3¯–F„è^x~²üÿèEüœSr»G%¾ØVÛ’«óG+4p|VÃèj׈Çešdî.÷ð uV„íJgã¼!þ~¼ñU^~ñøµßcmÄœD&¶†r›ÑDÝh»¹ECÿ3•i*‰`œ ³\nIÛûR/8:b:‘x¯´^^–7ÛTRÓï«}?á!çø1ÚÏó—ø=ñvaè¼[ñòSuk`– 8HÅbaÑÞÍ#‰Û´>Sq»$R‰ÜË¢NÒö^’?ÑúšÜHc¿ö s©GcO%µÎ¼è:ýNCÀ~"ìåÞñàïåü®‡‡ðë#õxû‚¦~Ÿ[ôFRAME À®(®òîé˜^ž›ÅãzpOÀ‹àú 94öe¼ÛÙ›‡%õ¬†„óÎü ”ùQàË@*B ؘP‡‰P[éÁF@Dlôl„Œ©À_5!NΑÑè²—Íót§²œ§rÆÆÆÅQH€šààÒ—Hß–wnóÓjáêS ´SšÇiÿávèSrç ´Á¹ bÒáìʘν–4Ë!]Ë&•[®lÎ[òåžï- çpW4U.rÞø§±ñ]Ê¡¢¡t!d³ý̳Yc;¢ÈËŸŸèž¬ùsÙ—… 8»âáóãBª¬h÷ü[}ÊÁtü¢ÝO¾Û¯¼v3' JßÀ3c§¼ëp,nÏ_'+ åS¼€i\JÖ6œ{0ýiõ»Qc…l= ÃV1û5ö0£>¢pzìe3ßzÖ†½bàZ–$kžÿCr³Ç¡1ãGNyoÌ ÜLU¿KwS “4"í[ü;ØiネÈL(ÓÄ 2*Ï™I&æ\LOP™T(ïšä*áÝÃØ]°¸û<&p`.p½>Žà0ƒœFRAME Ô®0Gw8Íãs§¦Å¼oN ø±!äNO¡ð<[z—×ßœ‚›ÁiÐÆýo<àÒtCp@z'†¡¾GI!¢`˜Ä+Ë ‘ÁVàž€ì³†TѼ2éLæQòz,á—L¼2éN Êw,lllQEƒ`B4¸äÉ¥.‘¼*<¯L„ºS…ܧÿð´¯—¦m@»LeT*¶–Ui€»t¦C´³¸¶ÁÍÕ-ò³Žmº¹ .YeÌ­?å¥oLrî~¡“M¢ã¯õ†°èÿ­a2u^º®eJÿQÑ'ü€ ²þ¾w>4Aÿ?Ï×ès¢}HЇi¡î俵ÿ‹WQ}SàúñcoÁ§ˆßnÎÝ,.zÝ™+át¥õÜ Z/'ŠóCvWÉÈáHæÚS„ãu`œõÙ? æÕ+ÚcGTˆã´‹²Sþ+ ^ÐD£ñvb©>"SXá^’Èv—LfGž9Eƒ°qÏ?`ùûÉ~Õ>tÚЮƒ-…¥%¦-!ÅÙ(a>{tUìî’Ò/lÆç8DõÄüE–H"v9ÌyÁÄ/`½ :ñôQÌMs¢g:Žý‚ó©¾<ëN¶rë'ÿ yúÙìË*ˆ†Sÿ¾F΀FRAME œ°:fä“*dÏR%îž3?Œëz[Ï<óÏ<óÎðvÍïxf*¹CyãÁÀdò×–´†ü¬ÃÙàYñb³ðz;ŒRÏ¡Ÿx•¤eâù4öý_ÌŒ>çxŒ€hB"ÚfÞy^L-·GÊŽ_Z‰ŠaµÛ0ùÚ„[ fmìÅH/÷ÎÙÌ Ë¯mäç<驆F»µf¶ËßþA;ÍéË‹¨¡NT *¹“”Q0£1E)¢Vn,X…øÊ»*2¦²µ]®ÃFбU·Å³‹G\7ó/ÅýR6Œæ×e×¶þý|Ü»[Â|å×ýˇ·ÊÅYŠ6ö÷¯uWfZ¢¬£»”»‰n.¿­VŸ¹ªØXø¬¹lÂëêuÖŠèmÕ\m`•{]k¶­m­hÖÈ¢ëY§5¿ž9uºìØ'TÂq¬áXªdìX#vH]lÖ›2e\…É'.E”ÉÍภ켟äJr[€}c§þ÷ ¿Zƒepâ5ûÜÚLêFb¼¾¬ÞæÆòïÿþk´kå†hÒîH¥à=Bü‡Ílk6¦x¤9—9³p-1™kÂCÈrdŒ³“,É÷âL q­C•š.È 3Ôõ—ïr0‚¼ È÷ÃÀÙét?LvPšlgå®àPŒÁ.kjÆ.Ê?÷eŒl#`H'Ï P,“o™ðaià6H*@¬LS‘€&Ÿj`1dBË Jå¥qØîÇ\cd\‡È¶€%¤–Ipº–)ƒ.ÍŠ»WV-“°²Ë$µÂÏËLžDô\q`DS`À“6rû¢h6Rvpr$ÿ¶ÏÃÛvØÅÕ’ö‹? m$GÛ®5õí Rц†”>ÈŒ(¹@…ÐyµhµÄ5ÀÒ .§‘ zq!\ˆvþò ;+:Q tŸ“ذòU0ö¯ÏðLZ¸ÿjO <*é›ÑSàÏãÛçú€ÀGfÓ[>a0ü [„Òqd£$–}ÅΦ,"ŸÔp™ÓÂ>M„ÛãŽsŽJ+ÒqˆÑœÍ' 8¼qœÌaôâΘaNfRœUqÎïLx²3XçqX¦œ0Jñ„øºçKõ˜Äï¦p'xЊu¸ñ€¬f–:Wz1§Ššó˜Íçf´G4N@˜köjþªÇŸ¶‚8ÀC{{oJEuîx êdž8lÌ·¨i)^/ FRAME „ª:f䬒d“3â²ùYxxÜ™?Æ…çžayçžyç®9Þ‚ù¾2‹1VX¬¡Ýòp<µå¯G>90ùüY}ŽÃáT³ç3ø:¬5]"ÙÝ«Î!óŽ? ú#Dü8vw€#͘ØÀ µ±By­ðÕ©•—L5ÆälíMVæÅ{®Í›^jÚòÓ/÷u·Nqu<å¶îòéf6m¦6éÚ½×5ræZÄf[R6=ð‡,µ¹Zs-ڑؤ—©s¦8¼Å#-fÎÏ­ò²Ebfk‡ÓKÖßxJ×·ƒ–­ßóf½éuè ¹®¼Àùœ¸+CímÆ©‘7»Ê½Ì‘V[¹oˆ[Ç:µã¾k­jîS”©çMÙu˜*Dó\©-¹ŠUÖyd­­´Ê˺»[HJîÉr½Åóf§¶¶«ÞUÈ^Çc‚ûê7ÎýqBèçýO|¬c¾$<4ˆ‚»%r%w£H7D$(cHÚ*ª,-+F€ª´hœñÿ ¡KG&•¼ˆÕÛ¶¶#H­" jA©œ ÉùQ¶£I˜[xÖ§L\ jà  Äx'9îÌ]JÌ¿Mq§Ghuø¬)¢LÅI“œ’ÖšC¨Ù\í"Eô‘TDÊ­ôY#eXˆèŠ­ªŽ6r\_!ÿç_~a: h’i*0A‡ñQ>ó7ÔÚB”ÿŽ1Ç›Ìù¢>üháGƸüŠÞG÷—Éri…‡aî³íl¤¯Î+(Ø ÛìñZË *—´$àN|“‚aˆK‚ž ›Ÿ|'&% u‡ÈÑñ«G.F6›¦é©¾oq½éÃàï›ñÀð`„½zj[àÍ`¹o/,ßšËGšÌ]lîòFRAME ”§:f䬒dßI2+/“'ÀÇÄÝçžazãžyçžyã÷Íñ”YŠ®E-'–¼µ „7㓟MèØ¦ÇÌú7ÈA‹%VJ—>äñ ÷ÍüMøü~01ψr"œà @U@÷°…²‘[~øWpÿwN¯±öÂõ·¸ô-…ªöx˓LJ¡þÝÂ;Ž  #q`€÷HòQö¤_‡È¿8ñ³êÂ```g¬Ÿ† {¼DgdK¡»»vÈ÷¥Þ6“VÕ«)‘:ZçzÙ,s Þ°:¢7Ò§?~‘¡/ÏîìÖ&Á˜Ñ­EúÊ+ÏS^Rlûĵ÷§Õ,mÙ ­¿‡Æ»¼#ºR„gkÌ}NçÚ†ÿÖûÓ‚=èc><¢ßTW6ô¡vÛîâ‘­Ž>ÇÛ³çfþØtn@èiiÙ§1=Sв$a÷Μpyqç°ü ÿ0ÒóÐç=|}¢ÿ?_}ù;âa‰m¼Ÿ” E)ÕHRÀÐ»Š½~VÈЪ´ DQ¶?F’ƒätiaÀSø ­dfòI4Ògè¾êÛÀÔÈ‹Lƒ ò!"wd]x0çH`Ts?A†ÑL 4&šBalèêëå}(=+EhÑUb"À¤ #8èYÏB ¶yJýÍ©ü?`ÿ’`É9> €“•óyûÿçb”\ü¿¯2“çÿ±yv¯È.?$N0a{Íæ  iÂU@%]Q\V,ƒÍ„°õðJì?½¦à{Ö*¹‹“ 0nqà"$EWãL$ð´ÀÅÂz`Z"ú>Ç­ìG“±6õ¢çÁ–<ýüœhgcläy…PÍI´FRAME ü§:fä“%d“3Ó…u`áã2äøžn—žyçžyçšNyçŒó{ÞŠ®ª½g—C'¢½àçÇ&ϧNS_||ÏœÏàlY*²T͸aj]!<õÜ>r÷Íö½ƒ¾qúto8€€€3ù­¼çꦭÝmËc»òÞUÓuÕ¹Ýf XÚýØÕÖíßçÍ83wÌ^ñ1tƺf&&6Öþ¨ÏÃÞÕ´ºêÒŠù‹YnœœœÕišÖVW­0»k]7V Y"ñÊFÙŠo.©¤Ì•ã6[æZ½zzq³f!›¦ª\¶óœ ¼ýRå|×>g¡T"É[:k-$ß uÙzììɱ3µªÄ.9µl]Ÿ…àU›¯!Å~þÅ+lÄe͓ľþï-ºÏiêÝUWN;n­ØŽ^¹iÏtÁ-sžša*Ûf¦fŸCѰÓÓ0tÓðñ=|÷ôÎQCOO<çŽOž`@ñ‚çׯdô{¥üØ‘dbp³¥ý剨9iÚ BÒ³ää¢îâ(^ È ¥V;š4ŠD*¡Ut‰ 4—íF‘³HŽÑ[6hè…² 9ÐSò•Ôh¿+oOÏ&,úŠ…AœæçI5!'ZÔÉ®~œ}5¨?‹(£Œ’di?:…³´L6ö¸ @Ñ ¤DU©hª¥#½ËK-»Ü[­pº ~ÁäÑÐÊP~@Ëü &•ŸÍOÄO¾í]¯±NÈ;WŽ?þv'úó>Ž'ß`è?NyRGün„O÷â™ÌÊO¦ÉqLðÞrØ3¾Á9—24#™Ÿ’\ƒ˜'ga«Ë'8×.~ƒ“òœ8Í4“ß‚kFc¹ x,ضۻ7*€º×î"ѸÃ#.$ÎiÊY¬=8qœßãté3i¸ú°ló~Ëíô±Á§›â_KÿÆty… ŠB)™fuD‡ùÈX$>­K³®oíÜ.®býÉN»Ñ¸ïçu~»&?Áÿy3ÛÓ_Ç<Š7s÷:s}~k³Tu&Bƒž5õÔ.ë;;_µ·T³YïaÔXÅÂö,ÕÂ`í*³ ™ 8‚êqÔ±3™æY“’d¸É9r *‘%’L e{‹FyͬºÊàhxš|I7¸>¯Ù:éüãuÇ?µ}ý:¦ÜÙ±ôd^ðÌÈ i ü8f_°Ýÿ÷0å¸\ÀŠ3ÞéÑ€> DƒáãpgçùOôOÉÿ¨³p@ÐÏ'’ZAs—&¢frdšê2Jd„õÇ%|þBDæÇØå ‰«%%%þk%({=ïxóБÓ×D‘Ñ+ôË‹iÁ¬Û,ZEœêÙØtGþ8i“˜yím$èè0Ñ<v-Û·n¶íÛ­»Y˜X¢Øk:\Xáj1if¸.ƒQú”‘KGêIhN…HiB„‚á#ÆÝ¨.—ópèÃ÷V&®ÝÀ;ÉÐö©¤Rlêv'² vÀ0åAÿ9¸€–-ÖF(à<[®u—9ÓãÆ›Ø·9þçG1²y‚s¤ëÈ–_êË 0âdbq8œ}0{¿;™Ê©’«¶ n÷¹‰þß¿²cö åÒÙ QªdÍ3ŒlqÕU&¤'úFRAME ¢:f䬒dßN™]Ë8xÜ™>=™Ç<ó ×óÏ<óÏ÷¾s¼¢ÌU–*õžN'—ÙŽ¡ ö8áô¯=³°éÏOÐÏ#‘aªÃS3ärx²²>^ù° B"ÁYG‹ú 2 '“‚ä(è HWÇßï…­€Ð3øý²( Iç¨'¨ÉÍ<ÒC€æœQ"…* D‡Ph  <€RøšFò¢N¤ØŽ¡AÅ3Ô~¤×*Nsk ãlçùÊÌ~:•;÷áMöý(ÑM,Sç1üLãÓ92ü /‰Î0vK̶ËZ·–·¦gù³òJš—ŠT㊠âd˜Ðî;™~,8>Ÿ8¶Û1ÆÔ¶ ÏùsóXÉõ†;žL/79Ìëq“†ÉãÈHÜÙÆ¸ùrwKÛö™›²üÞÜ2bå3‡÷óç¾Ý,ÇÎòù±³ðF—àS%ÙÓ„•+)&?™Á*Güú¹ë¿·|?(ýou…Þ ‹A³%å~ú%Dêð×?pçD(ŸÜÈêbÑÐâ…ùbv©å~ÅßÂpl n‰É":#¢`‰iU*«Ul TE*Ñ£¬]üª®ÐÃy—í]³l5uhí>POÎs4(bƽ#SÖª|tÖ@×Ò g:ÐÍ Ö `$«^¬ã= k¤Dvºš™ ’ƒ]8 3$A“ð} Á$Í6Zm›6W (3! ƉYDŠªÑ¢¢*ƒòûž÷cnFÍñà >0à4zŸÍ ž¹Qï7œŽyH‰8û^o3ï¥Ù‡û±þ³>溭b$| ‡eæ}˜7:*ûvÕö< ÇŽß‹µQ?´ÉÀ9‹WXPMik¨‡îI‚+ÏûÁ1R#‹GDÀ:0¹;°K“€N p¨Äú8ІÇ{ÙyâK˜&ñ½÷ù; Sàøçóã™ñòg½1v¿´8Q$hìa±¯±v) pý¯û^É>±xb²;ùTÝFRAME p¢:dL•’LY™èIY]Yj9eÉ—ðgóÏ<óÏ<óÏ<óo;æ÷´YŠ®Ee³ËœÏE0†‡×ŸdôýÏ8C>†ÿ Xj¶D·“§Ù‹<  ˆ@‰[¥u‚‡Ãì'–£øp1 šx ªª@Hå ,‚ª*•÷ÀEÊ}÷È› ð@ü4fþð×ûUͰ…¾ßÉ|[Eø-²ßîØÞVbô½ä–7Å·ºEfõ«}¬hÐ÷^!¸y„oȬ–„~žÿü1÷M žÛÛÞüãÎÆz÷¿àdzÝùßWÚ"3Åëèík>{ÓÌf·^¾°)‰ZËχխ–‰û–ˆÓÔóÍwÝ»Î5Û‹ö‹»á2Iî߯Ö6#?•š1î\Þê‘C;±ÿxk3矄¦ÙÙ»îò5C}±äñßµç3µEýº¢þù´ú$Ä6’‹—[}¨þO+[]¡WçYü1±'ú´ êžÃÿµ5½õŸ†TVŒÜȉ~¾ÀÁ»ÎÏ{<8øÂ°F÷†ÉcLÓ=Ó>wKÂE/`G!Òªa‡Ñß×`5×<´êúÇ÷”ãí‘Ò U¾BÚø›å[}Z¶ÜkPµ¬BmSQBº«F£ýÍQ?,1I†"­0pÑÒ*£€[Q 9Öo" n…¤gño…èkï¸] ±ÃFßí s ~uÌÖ¡é#>®Ìäk]0Ó§9éB$& šÓ§jŸ–ð~µü4ÖtÔºêçʮų¨ðŽ‚øh±£L$V‘"u8kz½-ñ’èf£år\@ €¿Ðž‚ñ¬’ i8¡€Tä’€}÷ßÿ;ÏŸ?ÿ}yûèã‰÷ÝŒšŸ¿ûðu¸8äÎ>ãÓ༸ÏTӊņ¨¥«ñUlœ)iÚéä¹W0Þ\EæÂÀ "˜¤m¤ˆë(M`É+ Q(!T Z Çi•2’¥÷’\“k ”;ÞÒÆÓИ:g£ƒëvë Þ»pÆ÷Þ YiåDíŽD>Hß¿|.Èu)o)YGµvÐ1ivKÁì0üO’[áû·ñ¦øšîq§=ïïáC ^¤¨Ñ;—? ´E„µ  ÃÎ UüÖÌ{ª, 8ÚÁñskj%Jã×>ÙÿF ú0ÑFRAME Р:fâÌ•’7|ì„Ye¨ñ¹r|H÷góÏ<óÏBõÇ<×½ó|puUȨ;¾] S¦¼µàçÇ%4óÓž_ˆvOsç/ƒ8¯i—áÉÙÉÐ{æ’ºuàû.'r‡f°HyèÜí@?€þ¯§ÂØBCîèɇÛÅX{ì!l-rŸ Ÿ}¨[aRaqWSLJ]Æ=_#o‡  #„ pø BõÛßw§…0Ô5º°D‘ød^<·ßáá‹¶â+/ô7ö¨j"ü;§á­†<2¦í÷¿;+¨N¾ñ=Ÿ&¶LŽa÷¥Ñ™MÉÚ²Rcô¾¯sRQ™¶Ó†^õna÷Óìt©ÑÓwdáÁU3F}¯É/=4mþ;£lù’zxjS.òʦ$Sy ö÷§½³"¹.þúž5gÔçô”ýá—Ø%2bß²„-Q½òó;êwˆÉ=±;¥¥Ý#ÇIÙ„ôƒ”ßÉwcÁ÷B{a<:"z.}²MƒOÛÛ‘0ûï÷Ä0¢Fœ"{X³ùÚÕ'XEŠÚB±Z(U°áH]Rò<¶UÂ;Eléçúë7’[z³¯Å¿ƒ­drL†¦pª’'w=:C՜굨).‡èÖ§‰òðb¡à@s¬’:5]jÍO…ô®¾R,EU ­Z4•UD­j'ÏDày5™ÈæÐºìü€µC ?ìF¤H›ÉÌóÌûìÏçbs¯?ÿÚ¯?KÍï”ÿÿŸ¿ÿ\þ„ÑÍGÿSø%A{Íæþs¨Î¢y¤TóWT”\q€èäAám¬evõ­UИ£âTø Ì=E\’I/YG0¨6‡& Û3º`Šö›©ãyð7íÛó ˜½0(•ú›ü1iŠÖ¥Ï‡ƒà{<ιš'¹½ñø‘àï3ÆçÇ£z;˜E¨O³¡‡Pµþœ> üu®˜B'³¹0y€ aªõ5.ØÌD@€²|ÀEŽwüG¨åš}™hÜJ™Æ1(g”Ä8˜bb¯-.ÇçÌH± 'f~Ð-§k\Âî¬×@1fÿº Dㆽï~ŠùâÇ8˜©TÆ÷ÉV0ÿµ„:ÅpܨÝâ<šòÖ‚ߎNz3£úr<¿I|„±Åbg!ŠCh%¨*SÇ!)äô1ÁKõø æ}™æñðàö NhÂ"B ‚”PR¡@UB¡T…sÓŠ…‘Y¡­óÿý#dl-»öÃýÛ{» 8…œ K™Zµ'úÌiC}÷l@@¸´a³E3jÑ®}öwküÕäÙº·¸«P°`øµ} vH¤Ä5ÞU d6õûKÊááÀ:šÆÜq÷%N#)Ÿƒ«o]þÎ-ëFÈѵåÚ”¥·Ù›C3ö³ljKè‹íñé7|‘V§Š}¶k£}/Ñ“¶v¼Š$Ín×Õ‰k¶#·¸=°H3ü­ÜýþïëêwÝÿÕ¼yx¯É©Â$¬åŒ{37õò½Åü^3™ÜìvøqÿsõíKÇ ÛGo”uý¼ÁBöŒÇŒ") ÄAÉ]SoÁ”,á×øç{”wá81 ˆé?Ñ,-$ùnìÐÆ%G`8½s†@”FRAME „2'½+³„¤PZaªlâ˜q×ùýœ G6Î2w‚=‹pÇwwEJBq¦3ßðÅW´Ó‹Ã¼¶ϸƒkŒ8:¦/-Lƒƒ;8Îggý³¬qM§Þƒ2ÀoU¡ÑîåL‘pKaÈfŒÀ[8à9èNC1»là¼}ÃNP©µÑƒE’˜¨%˜EÌ/ˆÙ”ƒ8®a "%ãàùcµ /ˆWAw>’—ìbÙç[ þ·AÛ8Ú¶uÝvΡRƒÉ·$RÀòÕäIbàa²’qm䦛ÆqmRËDëSV÷/ÆÚ¸|Aáñ*ˆI“Ùæá¾á1˲pØÔ3û,¿og]ýwÁÛpmÃwtð\–¤+wË¥|׋.e %1ÌMÜ l¸dëÁ99ï;²~#ð…ogG-’n@mUÎûwk3Ç*‚åÄ[qÎ"CC¤Æ™£ïÃ?›e2ílÊ¢Cnƒ®äÊgÜUßZ^ ü'¯œÜФ® û’É¡Çóä‹ß׿wŪU”§°ö2Yvc›²„5†¤iLxFð89hdelë­Û]níœwCn‡AUÀfO®L.啃å1Ù†x?%j¦\>plWŒZ&÷W—{{á ½ÿUÿÞv¼ÕŠB9‰8À§ |{R¢×€äº.›8M– ‡og®ž‘ ^\Ídjö‰4fŽ&F«Wž‹HõÕpD÷Pæ®ZM¼92Ox™x9ÝœƒSe„ï¨YÅöÐÙØúÉj ìŸ—âXE*TrR¥GÄâ•D‚9ò:³óùïúu£ŠmÂIP—)vo­¨TR›u§?³Ýw¥Ô³)îÄÚM!B¿Ôì+¼w¨Ñê?Õç¤ÓI››W|$¯ñ TÉT,$Sê…mHœÅjO[Ž­±„p˜¡óÔÿõŸ7±/­EbmODi¦Š;„ EÅ?Ÿ~:p4x 4Ñ‹ÉÊ(57`Ây¯òÛ~õ¼™›ïâ‘-NÍZf½+.ÝÅcŠAdž‰¤ŠeÄBí¨]€™ð×פ½Ee9)”‚iò ÝÇAë%nfð4Ž¢£I¶2¯L’^ÙK °tbÃbݹތLgè±À3å„TסàÁç’ÓCÂß>/}1¼ý±ñDK³/àFàL<´½Þ"_}€XêÁÑ­îàÄmÝ…ùŽäÙƒ˜0…Ó-b±ù»­àlaË8ñÙ0ÀpÚÇ/ï¾Ø&[ïxR½,·å­UJÿû#?ÙŠ0a `Áƒ»u„>l«»†-÷ˆ†ËtÀ?€+A‚Àe ³s‹-ˆÁ…Òp  ÌqÕTY8pW.î)ÉI†¶H#–ËÎ%‰ôƒmÊf l„•DBå"‘@ h Úi«ŒöVvw% ` ¶7æÜäp3ΠI‡$EýøÊ&£<»BF<~ôùÊçïõˆ/KÖµ…³¦æí¡Nttt-ñî@«,¯KÖ^÷D÷qÃdoHÈ¡¶}ú¿½(\ðP.mé¬DÖR÷ƒ£££qè‚/Y¯;ðZðÛ^÷Z\Õ—ÑÑœ5!·ÑÑ 9Ïç]·‚Òô¶œSÚ!r€ÔñŸ¿/÷üÏ–Ô=ûðPïq[ß—¢Ùs#˅ܦX$ÒÑlqåWæPFYÊÀ+•ÀR <à·A+c)tºÛ ¨¨jÀ‚.d.—n0ÐSb+¥B. EãÀ` kå˜ í¨· Ê À)=À%~Aà:´" È9Yl€9Ô¼ ¸€àq(%PA“`9dvÔPÜ‚°Q;À| . v @° PIc¥.À½ÕûWd>úð EÀ /®@)h–· ¿mºÔ@Hx W†$BHiV»4'{L;v6W¤™LÕï,g9 †Í4,š4hÑ£F^4hÒf°°ØnÆ,Ñ£F½)©[»/øhÖÍxA¾’÷w“ Fš¼ä™V%nÛ_‘¨Ñ¼oIN³4jŒ‘ 5FH'bÕÌ“ÐZªE&ª‰DŠªÜÎçdr6äˆÆÂmå"):ßÇX]3áÁBðFÝnF#Àxï< èŒE"‘¸9óÁ,RšXòñ‡¶ôï\{÷Ͼç{.{Üî]œºŸU,ßÙo%ü¶²D²Ï¿ožQ‰)% $”)M.ÑÌ=Lô‰wi™ùâÍe§£NáÎÃ\–wL\qÃW53Ï'ÝÔ±±ËJ-eÜËj÷ìQ‰ã¦yÊeS«î0”œ¦)È$O!FX®ñ8êò‘Ôˆ®áœdUà$<ÇÐ.v.ÿ |½ÀæàLê$Ð.ffnt~3 |€<)ØZß¶X?e­‚ÄÑòE‰ß 4(‘ÑðØRc‹¦œýB‘;¯ï¿HŸàÅïžøÒJ×¢êšFó³î/ xõD¸1êdTÉtŒº}²jÄs}=gÄî4ëg9ep«Ã‡2µrûnXñ{”ÃðaKYe¾Ån 1‚ÂÃ’8pä`ä`áÇ)¾êíÕ –€c««¶ÄLwm•™jÛ³‹–½Tœ“ÁW¾9§;£Ç=ÆóŠïÇX¹.¹õز$gJá¸õ›0ܬذc2a¹WXYëÁyr6©±.S‡8r˜?¹¶+ÌàFï¶„ôáÇ$áÇ8páÇrøáÎ&¬ÊbÜŠw“¨ãŠW¥î(¯gX?ɶG‚#ãü¾£¾MYô,ð/±ù×q—_š/ oc£–éÏÆeÒeß—£òöx§ÔG,2ú¾èчB{ ñ«‚&š‰ënv ”ëy—ÉO5kÿ#^`iêþ¿žyC_ãHƒLÎ ÊÙÜöàZÛ¥Ê˹‘‰•®`{7/>òÁìµå%#ÜÃ>øT`Ú|i0#Bc6X±*àÁ™<㯹ÖY4m¼m4Î ŒÁöãP+Z$ ¨ù?¬u$ú3hu} }~ çWU)Ká€@˜ˆâ+ÎPk+fBL®)—Ô]ÍÝäY.C»šEˆÒ·Õý9ocâ+•UTƒ=C1bÍ«ýj2ØUŒÑµŒovwOC³vÏLwNÐ!¸$P}Ô€µÆ­0ðB&'¦0Àé=H[a*(×.òW‹Ž8“½Ì£{šG×ÖÛ—­¼ïcY…°žç4­ÂKŽ8` .N#éN, ȵ2^Ë6#é~«§¾³ÖìY,|ûM÷÷ká#‰{ |ùóí„Âa/ŸP¾ñ „¾} èÊùóçÏŸt²Çóî°É¾¢â²E³}<ù>«”&Õ•“£„¾} ŽWuƒyN.ãß]X¯ÝÝi¦j=EòÎ:=¿aîqÚí²à™6:-wqcq=žàQÊdíÓîšOu6ã'³‹2¢1¨¬ñ’ˆ±XúÎà½q9z±Òg¤vq Yvãá©úoö¿Æ<ݨ ¤W‡±§²ö¬¼“8“C<’}°Œ1Þ‘åú‘þwyËÛÈ›u8©ÍySõÝÂ2¡/97˜>b,rõŒÇ|]teMÀ—ÙûÓWSêòIØe-;šÿWÑüþ–ëº2cT|S›EЬåèïgî¯ÑpþÒÖ%,êt—,ï¶bs®Ò¾ôÑ=—':fRÎ…É–s;fñvî•Ï …§I]ÑËÚ‰$Bì„$€ôôÃÌïÚy¶”ÝÔDº„AÔŒ ;ABvó4 Nš¢Å—¢ UØv;ÕݽX‡3EÕÞw«‡ÊXϬֺ8¢ˆ‘“Ë^³éß\óâŽÂïãù,âø®îþ/ŠîЪø®û§}§ÄúŸ[OGuΕ•g`[‘ÝØS\ºju1°ëƒƒ–â¸w-Ô;¹ÐDÁNænnþns9 Æ‹;fÎËÎîîîîîîî…±^ÎÖ3{–w/nÔÉ9W–ªÍÌ6Ý®nvÅÛøµÇ»f«fòljÕü¶å†ÁâxƒÄ ñ‚0íÊæ¤|®wn4àá^û»×¨8AÀú?]Üâ>6vr°þÙK´/™––r–xܵŽ5Ã@7:öÙC‹Û‚"„³ÝíìFüó‹‚"È" ˆ‡Ãáÿáðø|cŽ àI#м½ì ,ÒÄ`ˆo!–hÿ`s73FT > ‚"CÒ‚"~›Ý›¹£›Ö çcy!”&I#è´xš=~'GÃàcÏã;àgȽµçÒ…ùÂêÙÜüŒý¸k…Év^vO Zä7³aÙ+Kåãcßí2®ËÌC0û˜tMïýÊž›Æ~õ†öÃ8–ïø«ÚÆÿ„“¼¢£ýýí?Ê(emŸ = oü=o£¢üÈ{pãñ!¯‹ÍãÒØQç{F…÷î¥*,âÝèÛÃÞý?Ú)2‰ç#,†§¥xîŒ÷‹°Øq?Çt œ³NSjN*Mƒš”Ðf«Ô¯ðéõ:Y™IïgSÞVòŸB–húŸeR\sÑÜì{\÷~Ï à®ft¥g´_Šß¯^½ùóçŽïŒDlFéêªä¬û¬îýL1[áãñäw¨©,®SÇnôEì"/v Úö,§ñ–DGÕ\eAËy¶Ú>«{uV®6Ö®øZõUsH.H"Ùï“ö¼»Éû^ /a{)àF9p-û¿{yŒý/ª€¬½vV@ P“eEC hÜ—°ˆumu2¯  Ò¿wL¸÷—Æ2Æ^G6¤2ÇHµù—«Ç¸_Žý¸—íøÜ~‡Þ\7hil‘ã§¢ ]|˸Ï}´Z^Ñ"Ýç½¶þ4ùö–ΰ¢š >e²ÞË…Áàíè mˆµœ¹µ¸kçÈ ââ|ímû†‡ßÛº Ú@RÚDhñ?U +/”¥*R•^Iý¥º7t2f²‰þ€ÆºX~Y<6ßÃ5V+«ëQVZþ«û…n¨z¾ŸM[)d hÈ–VˆJ#º(ÅßÏØþÏ9ÿ~ËÈC nA0Û˜<B!Ø>~8?(5!7AR‚ÕtàFRAME ¼£:f䬩’7=øB^l¼‚hVâ?€'ÀÍÿr(PPNÄ“ù³çO: P 8 FÈ¡FýpAÁODñN”£Šf QÍêT”¢”~;êy¡žo2³cLðQ²– P )RRÎOð½Æ3+4†°±™ªq¼Ó1Ç™¿ÏÀâ˜Ù¤3¦ÏŸ¤éÁTUª|8#=ɧ 3¤N£±;’8ÎÿÃO§’{˜¤•IœÆ<©žÝõ.ˆÔ©z“GgM?ßlbþ¡|ô£)E(}bžÚ{p`Àyp‡‰èû†ÁÃæRVÕ<F¢ô¨"¥DTTTe3532&§ÒdO§§ ˜œ&eEE0}Qíí¯h¨©¯Ãȱú*bTàI¢PZAXÀŒc¹`HUbi ÔENs8ÿMôô†ˆ¨ðèõ}Õð@øu¤²KŸJ—jY,×BìBÖµº@FRAME ¤:f䬕’LßqáŒAœ~#=b‹u 22±›õìwƒ²lnÈýv?‡ýuý½»X[®¹Ð/lJWë ÝX.~ŒÇg™å˜?;Ý'„iÇ–‘¦¦(L+ªª¶ŠˆÑUZ4haSb¶…ÏÃàí#fØm!l‰€:Í T]#Iš+l©9€Ÿ@¢@”99Çw;±¨Kæ4K¤8TtðK¤û 9ÑÈ9ši +QÕbâ”òŽ 8†‚"ª¢:4YFŽ43ŽF1ˆf+˜ß´ A¢A “ô÷ÐŒÇÿ}ã‹ÌûࢠÿòäÀ9#À&°°à£…Šæ $@0Å~UU!pWéÀØsÃÔ¹0ÂJ&Œ’`rLÝ‘Ý7mÆ‹ß~ýûæ÷ß‘ÅAõ­iújNb8œA`<ÎFRAME 0¦:fã$É&ož1+É“áz8góÏ<óÏ<óÏ<óo:ç\k4UȨÖyw‰åÖº„7㓞™ìû‡Ny~“?,+…KŸEðF³¶†Üàï/moÇN®ð\ÏFó€ €ÎäØÕLj×U5n»VÓo-˜Ì¶b¶§mª³öÙ…)¹Z`Ûº©Þpÿ¯u·3ìÝÓ„·«I1115ºörjcd§(];fzåÌ´ºêQÅ%©ê·Niç¶´ÂÓN]91[.!JD‡‚å.(âó……*u›çT3xRZKÉxþk™y×¶õhÐêæe­£µ° [ÚUÜæíÌJÀ)‰n¡Z¡q®=inmåÔîØ·]m¬åSì¬pÎ]Bf)<ËÞó•Šž&)çɆ…ª³±ü‹Q¢[©ì[mË—=nȈòôÄ2Gµœ³éí"¤Ì})Ù¤>ÈF"Yÿ7>'c!u×:ü_½Ve«œÎ ÃSÏù}zÉË3Mת;·-_»mÁEM€§ýç”~WAz6øL.ò‰Á¶-J£H4sò,hÒ"Fˆ¥ ƒFÙ³oàl[FKhª!UVÃDÂuxѤhÙ²4v‘³g@[PD9εx§E&j­±¢¥s§ª¤`ÖˆÀäéõ]"×3€ut3Ë „¸ˆ¡@#ZÎzdi!štñE®Ä@bµk6l­J´hÙA Â*1HE1• Šd”ÂÛž-h¼¶hÄQÊ+p¦ê5©¢²X@ΧÂÄt N hˆI}÷¤3Ž1÷×»ÛÞé÷È“‰óŸˆ•ЧԆŸÆãAZ‚÷›Ïð ä@5œ‘‰¨8-^¾¸uðžÂ ”D%ì*p¨XM"ª"€¤Á±ÀÞ‹T^À­& eL)ä!8Oø§uP×> @K’LC¢!0Xð: Øž×Æ†ŸŒdB!ôQæÃ$ ûì7¾øw¿abë`vô"àM8‡ˆ\óh‚ª>È!¨ÿp0cïA†¡;ë=l‹Īá8œjIs(âFRAME ì¡:aqfI2Fç¦,[`¨å—&O‡ÇZÎ9çžyçžyçžyæÎ´;ζ‹1UÕP7¬òèd^Lh!øä§Ó¦z?aÓpäú·ÈA‹,V8³>€T0 0¼À+ÁñÌ sÉ ‹Ð ð ûCW@ñ€€öf6¶Y!*ÿ+„gøN*Áꟊœ]×íOößSñmºk%߉îàáL;”þÆÁ†7ì'³7ÕLJøãÚ6ã ‡NÒÃüÕÉY¯¶ÕaVÙø¾ãÝôxvȧıMPÔydm¡ïÓèørTÙÖ7IY÷>¡÷ÚMÚ±Þ‡ô öqèîè~hÔÐcï®ôh}™R7 ÿ>’\wÕ›Åô=ÉïM:nlôÙ]›ÞæÝ—½lÖ6ÿ•­ìb†ÿ¼«}s¾=Ÿps8:·ûoûczÞ¢Ÿ²ô÷ÓÒ8Â8@G„^¬þ–9!¸ mÚGƒc"4‘ð/ò<@ñÄtý÷¸÷ô€éñ¢ÿ7yÄ'‡€xRAð;¨Ïê:€{Ì$¾‰ÓKœë磺|1MF¡ç‡×›±sœåRõÓÔ>û„æôztõyþ~Cßy–G¯æ4v i¤iF‰8ˆ‘" OâDP‘T†Æ*©*b´hб£HVŠUIrOÒòèŽ+etÃeTp j£‘Ð^IT´™Šç[àÂøŸ ¤ç$¿wÝò “+©þFy}Dr!‰ $$XÚ ˆrtdîi!Âá)´Uôް…U¤V’#¶uŒc®0ÛÀ¡sS8Îs›3"{Ì/™MdR} Ô9$1Ø0$¯¢GÓÿ¸ýøâ^o8gÿJ_âDãÿÈ—eæœ_f‡Að(äÕbâÉC⸠à€ ô]a"ƒè=`õG§pIsƒ¼a0BNKšÝ»Ð>€†& Œãß~ý¹„ãZñ¨i^Ãù²Óó„ ÚFRAME ´£:arVJÉ&ož0‹Ø8rË—'Ã;p¼óÏ<óÏ<óÏ<óͼïœëh¯®ENzÏ.s“ì2aóìžÏtç“ë3øX®1f|O49¨†Î{êz:Ä€§Ãƒ‚sàp"{ËèaÏ’4tÕTuò @W€@ø()ÇõfÍÂØB}‚+|þïø’ýòPô6ý…ðœ#÷ÝÜ!má›xÃÛÃŒ1ؘß!óžá’H!ô Û¢o[ï£jmiXÿK:ÖX}©³ƒm_Šw¬P0?OŸ¶ô“æ~Y¦mùÉXbýëöµ=µþ<Üo¥P¥ïCÊðÚû×Ñ }ß}„»ÃkØ×ùN&ìöc%FgÚ›ge?–üwn õ’8z—ÆôÔgcÒøïY¾!»¼° ïÚùå{ýŒ‰PÓà‡›lßVsí¾¯½j æ‹úþžÈ—‰çï a<1樄 ~q1~NÐøëωógÇ\ó ÀóΜ\‚|iŒ—]ùÏjð¼µäxŸyáGÏõ–W;±Hÿoç?3‘NÏ’»Ét™`’-ñžvOäÀJž;U¢å€»áDIÉhˆ€!(ѹXDhРV!@Ñ¥@× [XØ…hÖPZ´DXà)lØ/ú4… Ê4hí"Û$DŠ‘!" ò:Ítê]™ûöÞ”ºˆbà0'Š”Hç$ç3»ÙêTê6Låòü“p@t…ÿ `1@#'Y ºg Žu¡‰êžm–/¥ Bh6V•hÑZEÐA:œ&z£I•”Qˆ=ªt²b(ÌNDj'éSQ#cДÿÊþ~ZÖ–s¡)éQœ€™ÎD:$‚2IÍtH@¹'ùÿÈÿýóî0ñÇbŸÿÇ·§ÿ|÷Ÿ‰‡Yÿði÷Ä‚Gßü8 ÿG¼Þâj€d EÉOІ‘þ‰`aX¥H|ô‹ŠØK `SÍ]<"ãá,@I%A°‹Z…«‹}Ô’T%jb—È$¹t‹yX„Ä-L=«¡„:µØlÔÄâ‚èPMË@‰sh"ÐlˆÒ­¦”ã8 ‡cºZAii¸Áq¸MMûüè"ŸAìHÓå“êÒÖX@S”/Ë릇ެϹÃeˆÔîÜË·)aÔ½ $øM#1ÃÔ“i#lOy­¹²  ÐB‹Úœ&½˜°NÖ¢¢Åðcâ‰i^:hï}LJ2FRAME èŸ:fâÌ’dÏP"L– O“'Ã¥góÏ<óÏ<óÏ<óo<÷¼è ÌU4@޳ˡ“Ë^Š`8ç°ÉO§Ny>矇%~­òbÉU–-Ó’ü1üÍü4~?C“â{xB|ø~œ¾€s;EŽTRb3öI=Å={ny­ãÂ0@ý'íO…ÏÜŽAÜÿ¸î=:Ž»øF}õ÷’/e½Ãs#8Vul ¸¿ÛÓ×>ÏÎäϳI ¨ƒ9ÅQ-7W|ârÏø»Ïä”á¤F‘ÚO°"#´BœD¤b¬YøâÄhÑUZ4jåcAR±UJ¨úh¿hí›D‰À…Ñ‚ò~R&‹J«oìV`À-"rI@A)ö¢Ì¾K’é“G.°éÄø(#9Ö„¦yÒ>¡XÐøUu]’¨ˆ ª«UhÑR¤du1QS1ÈÆ¶éA ±Øú7Ïn…ñM5£¨fà25Iör5ª’L̨zC ЊG¢>Ÿÿë±^ÿ—›ËýôûÑÆœ‰Ä©ào;€ÉrA ðf+Šíl6g ‚LC €Tø°‡®|I#Â9íܤUÑX–ø\ºL>)ÛT®- 'Á´Ñz§bÎ!ÙnÝ€5°Bÿ{ÞX¡r©à¾±Ò Ïòc üÉÇÔ3Z‡-NÍ\ÄFRAME  ž5'DÙqÚ[3}RÇy,99—ß×Î9çžy瞟\óo<òÎÅfž¦óÔÃáÌòü&šïyæó¡Î?Økô™ü1qŠáRï¿O¥>'ÄÁôW‰€Ð0@ëQów£~<ž1g}URî®ê•)yllº€|fÝsBÖÕ«m¹Æ6ÒJÖu6À‹µU)þ±üZ‘xn–iK)gð¿8ŽJ“Ò]²uFï: óK´Š#3áÆÀ縅é5çŽ6[²Ì©ÌE©lJ“îíïæ©5‡¥Štú tŒy'-v\çñš¿åx"W¨½œ¾”gB–Í‘@IÌ©"”Nþçb'+2ÜÅóÇp¬<Ùm›^èHWU]›ÿŸƒÉ.Þ³vº’,óeòìÚÇò~_ »Šwct’œH„VÈCåTŸIÍü¦O7Ì#3¡:bÌŠvæð!¼±Àqæ-œ‘ã7ÿäÜÓ‹/Íé²9'¶oñ S.‚CMâ“yô ‡dß:hüO|·syçãÚíµp¤˜óJ”Ϥ$³V™!hœ¯bY¦Kãתv. /¯Ïœ>wJÒãÇ·gKâCÎdƹ†°¤÷Áá€ëçŸ É„cÎèþ.—7Éë¥í8Ó|0yÞ4ùï–G¾§Ã>ž¬iü“…þŸò4'°sÌ+ ë»Ç-¢ç¸ncnà•[¶ç¸˜œÆøî ·Nàén½Â‰”P‡mÜ#– ¬XFZù´\,lº(Qª‡_Æ$4ŸÝ#FÍ›:Dv’±¶ÚLçÉéù,Ò4™ú‹Ë„Öºõšò‰,Qà ƒvDÓ¬m3˜59¦‰Árarà´qCPgPMdw}ØÓHpb§‹h«é4ÃhÐëQu>—ÐѵU£Wj±£G-+±c•ž“”@GdTwLÒ•”@KµdÆwуԤH?#8Í/lã>½t¬ÙÆyû¯^¥˜ûþ tïõøÑRàŸÅà]Kßo·Ÿ¯¿Á©y¼Þo7™yýê>úW¬¼ÓD†F¿ûâ?ù é£ #5ÝO¯“±«¯Ëÿ ”BØ— ÅBOƒ ¡$r-<„ÄP‹œÊ@`‹ WQ¾-)•]É*áI…ÀHš ii‚m&àœÚ¿øYE‹ƒà ¡°ÈÝŸVžwãã{˜0ÿSï_¿/H¤ƒiÉó]kS˜[¿Nãý€Ð’C¥Š[ù4.ïVÎ.µ¦´ FRAME ¤i7Q²ã©2Lß\„ d°TðÂdâO l{}sÍNfžŽÎwž uÛì«ð; ø^{´<qøÎÃ_õ7ø+ڱśï³"rkíúáAÁèÿE~F€%9ä7zsãóAU½kScc`0ª(°UU€UU«€þ3ãA|àÊDr“ÇÓ$ôFí>ééú\‰ÑÈÃlñ˜ëdiii† - ¸ò$÷®heNó‚wž?&Ÿ¥±ÐÌÒàó ÓÏææÇ76°…ÜžH–?ŸŸÎt:zyÓáæâÓ yç‡y¹º‘šx‡'’*xy€ò›[æ΂1Ý  =?Lð4ôÁÓ#§Æn–Üå·ppçOlKw±[W!m|\p¤Ë)÷Þ¾9_N¾7m¬ !hôG,0t/ØòÓøg55:™©©Âju:ŠDF¢"bTÔaŽ˜Â#ÑZ8EkDVŒó1œôÇ€“FRAME ì¦i/(Ùq&I›ë£%–Yxð„Ë’{ßXõG®y©ñ=¡“N z7®:×o°>¯· C~²Ÿ!Ç­3›àóÆy×à}Mþ ÓŽ,ß}–£%ÞlQA@cQò|  b^Pòþ‘ÞÚ@ ýiOP*ÜQE5(ªbj)ªªª¥[` TQUU•T¬U­ET•OùIÕ¡¬q¬âkà.Ržk‰H¡¬Éï†[Ó!,:uÍ)¶LoèxyáçK@Dið}0è å;€{Óiô bŸAJõ`ðÀlibtheora-1.2.0/win32/experimental/transcoder/avi2vp3/avi2vp3.c0000644000175000017500000000422714771706724022712 0ustar perepere#include #include #ifdef _WIN32 #include #else typedef long DWORD; #endif /*extremely crude app to dump vp3 frames from an avi file*/ /*filenames are hardcoded*/ #include "avilib.h" int main(int argc, const char **argv) { FILE * f = fopen("outfile.vp3", "wb"); char * buffer; int olength; int length; avi_t *avifile; int chunksize; int frame; int frames; int keyframegap = 0; int maxkeyframegap = 0; DWORD initialticks; int framew = 0; int frameh = 0; double framerate = 0.0f; double fps_numerator, fps_denominator; avifile = AVI_open_input_file("vp31.avi", 1); frames = AVI_video_frames(avifile); framew = AVI_video_width(avifile); frameh = AVI_video_height(avifile); framerate = AVI_frame_rate(avifile); chunksize = AVI_max_video_chunk(avifile); /* avilib only reports the max video chunk size if the file has an idx table. We fall back to an arbitrary limit otherwise. Better would be just to handle the chunks dynamically */ if (chunksize <= 0) chunksize = 131072; buffer = malloc(chunksize); printf("Frames(%d) Video(%dx%d) %3.2f fps\n",frames,framew, frameh,framerate); printf("Video Compressor: %s", AVI_video_compressor(avifile)); fps_denominator = 1000000.0F; fps_numerator = framerate * fps_denominator; sprintf(buffer,"AVI2VP31R W%d H%d F%.0f:%.0f Ip A0:0\n", framew, frameh, fps_numerator, fps_denominator); fwrite(buffer, strlen(buffer), 1, f); for (frame = 0; frame < frames;) { int keyframe; olength = length; length = AVI_frame_size(avifile, frame++); if( !length ) { length = olength; } AVI_read_frame(avifile, (char *) buffer, &keyframe); fwrite("FRAME\n", 6, 1, f); fwrite(&length, sizeof(int), 1, f); fwrite(&keyframe, sizeof(int), 1, f); printf("Frame size(%d) IsKeyframe(%d)\n", length, keyframe); fwrite(buffer, 1, length, f); if (!keyframe){ keyframegap++; } else { if (keyframegap>maxkeyframegap) maxkeyframegap=keyframegap; keyframegap = 0; } } fclose(f); printf("Max keyframegap (%d)\n", maxkeyframegap); free(buffer); exit(0); } libtheora-1.2.0/win32/experimental/transcoder/transcoder_example.c0000644000175000017500000006414414771706724024011 0ustar perepere/******************************************************************** * * * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. * * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2004 * * by the Xiph.Org Foundation https://www.xiph.org/ * * * ******************************************************************** function: example encoder application; makes an Ogg Theora/Vorbis file from YUV4MPEG2 and WAV input ********************************************************************/ #define _GNU_SOURCE #define _REENTRANT #define _LARGEFILE_SOURCE #define _LARGEFILE64_SOURCE #define _FILE_OFFSET_BITS 64 #include #include #include #include #include #include #include #include "theora/theora.h" #include "vorbis/codec.h" #include "vorbis/vorbisenc.h" #ifdef _WIN32 /*supply missing headers and functions to Win32. going to hell, I know*/ #include #include static double rint(double x) { if (x < 0.0) return (double)(int)(x - 0.5); else return (double)(int)(x + 0.5); } #endif /*Copied from vorbis/sharedbook.c*/ static int _ilog(unsigned int v){ int ret=0; while(v){ ret++; v>>=1; } return(ret); } const char *optstring = "o:a:A:v:V:"; struct option options [] = { {"output",required_argument,NULL,'o'}, {"audio-rate-target",required_argument,NULL,'A'}, {"video-rate-target",required_argument,NULL,'V'}, {"audio-quality",required_argument,NULL,'a'}, {"video-quality",required_argument,NULL,'v'}, {NULL,0,NULL,0} }; typedef struct TC_INSTANCE { ogg_uint32_t LastKeyFrame ; ogg_int64_t KeyFrameCount; int ThisIsFirstFrame; int ThisIsKeyFrame; ogg_uint32_t CurrentFrame; ogg_int64_t granulepos; int keyframe_granule_shift; char * in_bytes; long in_bytecount; ogg_uint32_t fps_denominator; ogg_uint32_t fps_numerator; oggpack_buffer opb_in; oggpack_buffer opb_out; } TC_INSTANCE; /* You'll go to Hell for using globals. */ FILE *audio=NULL; FILE *video=NULL; int audio_ch=0; int audio_hz=0; float audio_q=.1; int audio_r=-1; int video_x=0; int video_y=0; int frame_x=0; int frame_y=0; int frame_x_offset=0; int frame_y_offset=0; int video_hzn=0; int video_hzd=0; int video_an=0; int video_ad=0; int video_r=-1; int video_q=16; char *vp3frame[2]; int framebytecount[2]; int frameiskey[2]; ogg_page audiopage; ogg_page videopage; static void usage(void){ fprintf(stderr, "Usage: encoder_example [options] [audio_file] video_file\n\n" "Options: \n\n" " -o --output file name for encoded output;\n" " If this option is not given, the\n" " compressed data is sent to stdout.\n\n" " -A --audio-rate-target bitrate target for Vorbis audio;\n" " use -a and not -A if at all possible,\n" " as -a gives higher quality for a given\n" " bitrate.\n\n" " -V --video-rate-target bitrate target for Theora video\n\n" " -a --audio-quality Vorbis quality selector from -1 to 10\n" " (-1 yields smallest files but lowest\n" " fidelity; 10 yields highest fidelity\n" " but large files. '2' is a reasonable\n" " default).\n\n" " -v --video-quality Theora quality selector from 0 to 10\n" " (0 yields smallest files but lowest\n" " video quality. 10 yields highest\n" " fidelity but large files).\n\n" "encoder_example accepts only uncompressed RIFF WAV format audio and\n" "YUV4MPEG2 uncompressed video.\n\n"); exit(1); } static void id_file(char *f){ FILE *test; unsigned char buffer[80]; int ret; /* open it, look for magic */ if(!strcmp(f,"-")){ /* stdin */ test=stdin; }else{ test=fopen(f,"rb"); if(!test){ fprintf(stderr,"Unable to open file %s.\n",f); exit(1); } } ret=fread(buffer,1,4,test); if(ret<4){ fprintf(stderr,"EOF determining file type of file %s.\n",f); exit(1); } if(!memcmp(buffer,"RIFF",4)){ /* possible WAV file */ if(audio){ /* umm, we already have one */ fprintf(stderr,"Multiple RIFF WAVE files specified on command line.\n"); exit(1); } /* Parse the rest of the header */ ret=fread(buffer,1,4,test); ret=fread(buffer,1,4,test); if(ret<4)goto riff_err; if(!memcmp(buffer,"WAVE",4)){ while(!feof(test)){ ret=fread(buffer,1,4,test); if(ret<4)goto riff_err; if(!memcmp("fmt",buffer,3)){ /* OK, this is our audio specs chunk. Slurp it up. */ ret=fread(buffer,1,20,test); if(ret<20)goto riff_err; if(memcmp(buffer+4,"\001\000",2)){ fprintf(stderr,"The WAV file %s is in a compressed format; " "can't read it.\n",f); exit(1); } audio=test; audio_ch=buffer[6]+(buffer[7]<<8); audio_hz=buffer[8]+(buffer[9]<<8)+ (buffer[10]<<16)+(buffer[11]<<24); if(buffer[18]+(buffer[19]<<8)!=16){ fprintf(stderr,"Can only read 16 bit WAV files for now.\n"); exit(1); } /* Now, align things to the beginning of the data */ /* Look for 'dataxxxx' */ while(!feof(test)){ ret=fread(buffer,1,4,test); if(ret<4)goto riff_err; if(!memcmp("data",buffer,4)){ /* We're there. Ignore the declared size for now. */ ret=fread(buffer,1,4,test); if(ret<4)goto riff_err; fprintf(stderr,"File %s is 16 bit %d channel %d Hz RIFF WAV audio.\n", f,audio_ch,audio_hz); return; } } } } } fprintf(stderr,"Couldn't find WAVE data in RIFF file %s.\n",f); exit(1); } if(!memcmp(buffer,"AVI2",4)){ /* possible AVI2VP31 format file */ /* read until newline, or 80 cols, whichever happens first */ int i; for(i=0;i<79;i++){ ret=fread(buffer+i,1,1,test); if(ret<1)goto yuv_err; if(buffer[i]=='\n')break; } if(i==79){ fprintf(stderr,"Error parsing %s header; not a VP31 raw frames file?\n",f); } buffer[i]='\0'; if(!memcmp(buffer,"VP31",4)){ char interlace; if(video){ /* umm, we already have one */ fprintf(stderr,"Multiple video files specified on command line.\n"); exit(1); } if(buffer[4]!='R'){ fprintf(stderr,"Incorrect file ; VP31 raw frames required.\n"); } ret=sscanf(buffer,"VP31R W%d H%d F%d:%d I%c A%d:%d", &frame_x,&frame_y,&video_hzn,&video_hzd,&interlace, &video_an,&video_ad); if(ret<7){ fprintf(stderr,"Error parsing AVI2VP31R header in file %s.\n",f); exit(1); } if(interlace!='p'){ fprintf(stderr,"Input video is interlaced; Theora handles only progressive scan\n"); exit(1); } video=test; fprintf(stderr,"File %s is %dx%d %.02f fps VP31 video.\n", f,frame_x,frame_y,(double)video_hzn/video_hzd); return; } } fprintf(stderr,"Input file %s is neither a WAV nor VP31 file.\n",f); exit(1); riff_err: fprintf(stderr,"EOF parsing RIFF file %s.\n",f); exit(1); yuv_err: fprintf(stderr,"EOF parsing VP31 file %s.\n",f); exit(1); } int spinner=0; char *spinascii="|/-\\"; void spinnit(void){ spinner++; if(spinner==4)spinner=0; fprintf(stderr,"\r%c",spinascii[spinner]); } int fetch_and_process_audio(FILE *audio,ogg_page *audiopage, ogg_stream_state *vo, vorbis_dsp_state *vd, vorbis_block *vb, int audioflag){ ogg_packet op; int i,j; while(audio && !audioflag){ /* process any audio already buffered */ spinnit(); if(ogg_stream_pageout(vo,audiopage)>0) return 1; if(ogg_stream_eos(vo))return 0; { /* read and process more audio */ signed char readbuffer[4096]; int toread=4096/2/audio_ch; int bytesread=fread(readbuffer,1,toread*2*audio_ch,audio); int sampread=bytesread/2/audio_ch; float **vorbis_buffer; int count=0; if(bytesread<=0){ /* end of file. this can be done implicitly, but it's easier to see here in non-clever fashion. Tell the library we're at end of stream so that it can handle the last frame and mark end of stream in the output properly */ vorbis_analysis_wrote(vd,0); }else{ vorbis_buffer=vorbis_analysis_buffer(vd,sampread); /* uninterleave samples */ for(i=0;iin_bytecount; if(!bytes)return(0); op->packet=ttc->in_bytes; op->bytes=bytes; op->b_o_s=0; op->e_o_s=last_p; op->packetno=ttc->CurrentFrame; op->granulepos=ttc->granulepos; return 1; } void TranscodeKeyFrame(TC_INSTANCE *ttc){ /* Keep track of the total number of Key Frames Coded */ ttc->KeyFrameCount += 1; ttc->LastKeyFrame = 1; } void TranscodeFrame(TC_INSTANCE *ttc){ ttc->LastKeyFrame++; } void TranscodeFirstFrame(TC_INSTANCE *ttc){ /* Keep track of the total number of Key Frames Coded. */ ttc->KeyFrameCount = 1; ttc->LastKeyFrame = 1; } int theora_transcode_bufferin( TC_INSTANCE *ttc, int isKeyFrame, char * bytes, int bytecount){ /*transcode: record keyframe flag*/ ttc->ThisIsKeyFrame = isKeyFrame; /* Special case for first frame */ if ( ttc->ThisIsFirstFrame ){ ttc->ThisIsFirstFrame = 0; ttc->ThisIsKeyFrame = 0; } else if ( ttc->ThisIsKeyFrame ) { TranscodeKeyFrame(ttc); ttc->ThisIsKeyFrame = 0; } else { /* Compress the frame. */ TranscodeFrame( ttc ); } /*need to pack info here*/ { int frame_type; long total_bits; long total_words; int frac_bits; oggpackB_readinit(&ttc->opb_in,bytes,bytecount); oggpackB_reset(&ttc->opb_out); /*Mark as video frame.*/ oggpackB_write(&ttc->opb_out,0,1); /*Copy frame type.*/ frame_type=oggpackB_read1(&ttc->opb_in); oggpackB_write(&ttc->opb_out,frame_type,1); /*Skip an unused bit in the VP32 header.*/ oggpackB_adv1(&ttc->opb_in); /*Copy Q multiplier.*/ oggpackB_write(&ttc->opb_out,oggpackB_read(&ttc->opb_in,6),6); /*VP3 has no per-block Q multipliers*/ oggpackB_write(&ttc->opb_out,0,1); /*If the frame is a base/key/golden frame, copy a few extra bits.*/ if(frame_type==0){ /*These 13 bits are not included in a Theora frame header. They were 0's and VP3 version info in VP32.*/ oggpackB_adv(&ttc->opb_in,13); /*Copy the key frame type and the spare configuration bits.*/ oggpackB_write(&ttc->opb_out,oggpackB_read(&ttc->opb_in,3),3); } /*Copy the rest of the bits over.*/ total_bits=bytecount*8-oggpack_bits(&ttc->opb_in); frac_bits=(int)(total_bits&31); if(frac_bits){ oggpackB_write(&ttc->opb_out,oggpackB_read(&ttc->opb_in,frac_bits), frac_bits); } total_words=total_bits>>5; while(total_words-->0){ oggpackB_write(&ttc->opb_out,oggpackB_read(&ttc->opb_in,32),32); } ttc->in_bytecount = oggpackB_bytes(&ttc->opb_out); ttc->in_bytes = oggpackB_get_buffer(&ttc->opb_out); } /* Update stats variables. */ ttc->CurrentFrame++; ttc->granulepos= ((ttc->CurrentFrame-ttc->LastKeyFrame-1)<keyframe_granule_shift)+ ttc->LastKeyFrame-1; return 0; } //static void _tp_writebuffer(oggpack_buffer *opb, const char *buf, const long len) int theora_transcoder_init(theora_info * ti, TC_INSTANCE * ttc){ memset(ttc, 0, sizeof(*ttc)); ttc->granulepos = -1; ttc->keyframe_granule_shift=_ilog(ti->keyframe_frequency_force-1); ttc->LastKeyFrame = 0; ttc->KeyFrameCount = 0; ttc->ThisIsFirstFrame = 1; ttc->ThisIsKeyFrame = 0; ttc->CurrentFrame = 1; ttc->in_bytes = 0; ttc->in_bytecount = 0; ttc->fps_denominator = ti->fps_denominator; ttc->fps_numerator = ti->fps_numerator; oggpackB_writeinit(&ttc->opb_out); return 0; } int fetch_and_process_video(FILE *video,ogg_page *videopage, ogg_stream_state *to, TC_INSTANCE *ttc, int videoflag){ /* You'll go to Hell for using static variables */ static int state=-1; ogg_packet op; int i; int keyframeflag, framelength; if(state==-1){ /* initialize the double frame buffer */ state=0; } /* is there a video page flushed? If not, work until there is. */ while(!videoflag){ spinnit(); if(ogg_stream_pageout(to,videopage)>0) return 1; if(ogg_stream_eos(to)) return 0; { /* read and process more video */ /* video strategy reads one frame ahead so we know when we're at end of stream and can mark last video frame as such (vorbis audio has to flush one frame past last video frame due to overlap and thus doesn't need this extra work */ /* have two frame buffers full (if possible) before proceeding. after first pass and until eos, one will always be full when we get here */ for(i=state;i<2;i++){ char c,frame[6]; int ret=fread(frame,1,6,video); /* match and skip the frame header */ if(ret<6)break; if(memcmp(frame,"FRAME",5)){ fprintf(stderr,"Loss of framing in VP31 input data\n"); exit(1); } if(frame[5]!='\n'){ int j; for(j=0;j<79;j++) if(fread(&c,1,1,video)&&c=='\n')break; if(j==79){ fprintf(stderr,"Error parsing VP31 frame header\n"); exit(1); } } /*read the length*/ ret=fread(&framelength, sizeof(int), 1, video); /*read the keyframeflag*/ ret=fread(&keyframeflag, sizeof(int), 1, video); vp3frame[i] = malloc(framelength); framebytecount[i] = framelength; frameiskey[i] = keyframeflag; /* read the frame */ ret=fread((char *) vp3frame[i], sizeof(char), framelength, video); if(ret!=framelength) break; state++; } if(state<1){ /* can't get here unless VP31 stream has no video */ fprintf(stderr,"Video input contains no frames.\n"); exit(1); } /* Theora is a one-frame-in,one-frame-out system; submit a frame for compression and pull out the packet */ //theora_encode_YUVin(td,&yuv); theora_transcode_bufferin( ttc, frameiskey[0], vp3frame[0], framebytecount[0]); /* if there's only one frame, it's the last in the stream */ if(state<2) theora_transcode_packetout(ttc,1,&op); else theora_transcode_packetout(ttc,0,&op); ogg_stream_packetin(to,&op); { signed char *temp=vp3frame[0]; vp3frame[0]=vp3frame[1]; vp3frame[1] = temp; free(temp); framebytecount[0]= framebytecount[1]; frameiskey[0] = frameiskey[1]; state--; } } } return videoflag; } /* returns, in seconds, absolute time of current packet in given logical stream */ double transcode_granule_time(TC_INSTANCE *ttc,ogg_int64_t granulepos){ if(granulepos>=0){ ogg_int64_t iframe=granulepos>>ttc->keyframe_granule_shift; ogg_int64_t pframe=granulepos-(iframe<keyframe_granule_shift); return (iframe+pframe)* ((double)ttc->fps_denominator/ttc->fps_numerator); } return(-1); } int main(int argc,char *argv[]){ int c,long_option_index,ret; ogg_stream_state to; /* take physical pages, weld into a logical stream of packets */ ogg_stream_state vo; /* take physical pages, weld into a logical stream of packets */ ogg_page og; /* one Ogg bitstream page. Vorbis packets are inside */ ogg_packet op; /* one raw packet of data for decode */ theora_state td; theora_info ti; theora_comment tc; vorbis_info vi; /* struct that stores all the static vorbis bitstream settings */ vorbis_comment vc; /* struct that stores all the user comments */ vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ vorbis_block vb; /* local working space for packet->PCM decode */ int audioflag=0; int videoflag=0; int akbps=0; int vkbps=0; ogg_int64_t audio_bytesout=0; ogg_int64_t video_bytesout=0; double timebase; FILE* outfile = stdout; TC_INSTANCE ttc; #ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */ /* if we were reading/writing a file, it would also need to in binary mode, eg, fopen("file.wav","wb"); */ /* Beware the evil ifdef. We avoid these where we can, but this one we cannot. Don't add any more, you'll probably go to hell if you do. */ _setmode( _fileno( stdin ), _O_BINARY ); _setmode( _fileno( stdout ), _O_BINARY ); #endif while((c=getopt_long(argc,argv,optstring,options,&long_option_index))!=EOF){ switch(c){ case 'o': outfile=fopen(optarg,"wb"); if(outfile==NULL){ fprintf(stderr,"Unable to open output file '%s'\n", optarg); exit(1); } break;; case 'a': audio_q=atof(optarg)*.099; if(audio_q<-.1 || audio_q>1){ fprintf(stderr,"Illegal audio quality (choose -1 through 10)\n"); exit(1); } audio_r=-1; break; case 'v': video_q=rint(atof(optarg)*6.3); if(video_q<0 || video_q>63){ fprintf(stderr,"Illegal video quality (choose 0 through 10)\n"); exit(1); } video_r=0; break; case 'A': audio_r=atof(optarg)*1000; if(audio_q<0){ fprintf(stderr,"Illegal audio quality (choose > 0 please)\n"); exit(1); } audio_q=-99; break; case 'V': video_r=rint(atof(optarg)*1000); if(video_r<45000 || video_r>2000000){ fprintf(stderr,"Illegal video bitrate (choose 45kbps through 2000kbps)\n"); exit(1); } video_q=0; break; default: usage(); } } while(optind>4)<<4; video_y=((frame_y + 15) >>4)<<4; frame_x_offset=(video_x-frame_x)/2; frame_y_offset=(video_y-frame_y)/2; theora_info_init(&ti); ti.width=video_x; ti.height=video_y; ti.frame_width=frame_x; ti.frame_height=frame_y; ti.offset_x=frame_x_offset; ti.offset_y=frame_y_offset; ti.fps_numerator=video_hzn; ti.fps_denominator=video_hzd; ti.aspect_numerator=video_an; ti.aspect_denominator=video_ad; ti.colorspace=OC_CS_UNSPECIFIED; ti.target_bitrate=video_r; ti.quality=video_q; ti.dropframes_p=0; ti.quick_p=1; ti.keyframe_auto_p=1; ti.keyframe_frequency=32768; ti.keyframe_frequency_force=32768; ti.keyframe_data_target_bitrate=video_r*1.5; ti.keyframe_auto_threshold=80; ti.keyframe_mindistance=8; ti.noise_sensitivity=1; theora_encode_init(&td,&ti); theora_transcoder_init(&ti, &ttc); theora_info_clear(&ti); /* initialize Vorbis too, assuming we have audio to compress. */ if(audio){ vorbis_info_init(&vi); if(audio_q>-99) ret = vorbis_encode_init_vbr(&vi,audio_ch,audio_hz,audio_q); else ret = vorbis_encode_init(&vi,audio_ch,audio_hz,-1,audio_r,-1); if(ret){ fprintf(stderr,"The Vorbis encoder could not set up a mode according to\n" "the requested quality or bitrate.\n\n"); exit(1); } vorbis_comment_init(&vc); vorbis_analysis_init(&vd,&vi); vorbis_block_init(&vd,&vb); } /* write the bitstream header packets with proper page interleave */ /* first packet will get its own page automatically */ theora_encode_header(&td,&op); ogg_stream_packetin(&to,&op); if(ogg_stream_pageout(&to,&og)!=1){ fprintf(stderr,"Internal Ogg library error.\n"); exit(1); } fwrite(og.header,1,og.header_len,outfile); fwrite(og.body,1,og.body_len,outfile); /* create the remaining theora headers */ theora_comment_init(&tc); theora_encode_comment(&tc,&op); ogg_stream_packetin(&to,&op); theora_encode_tables(&td,&op); ogg_stream_packetin(&to,&op); if(audio){ /* vorbis streams start with three header packets */ ogg_packet id; ogg_packet comment; ogg_packet code; if(vorbis_analysis_headerout(&vd,&vc,&id,&comment,&code)<0){ fprint(stderr,"Internal Vorbis library error.\n"); exit(1); } /* id header is automatically placed in its own page */ ogg_stream_packetin(&vo,&id); if(ogg_stream_pageout(&vo,&og)!=1){ fprintf(stderr,"Internal Ogg library error.\n"); exit(1); } fwrite(og.header,1,og.header_len,outfile); fwrite(og.body,1,og.body_len,outfile); /* append remaining vorbis header packets */ ogg_stream_packetin(&vo,&comment); ogg_stream_packetin(&vo,&code); } /* Flush the rest of our headers. This ensures the actual data in each stream will start on a new page, as per spec. */ while(1){ int result = ogg_stream_flush(&to,&og); if(result<0){ /* can't get here */ fprintf(stderr,"Internal Ogg library error.\n"); exit(1); } if(result==0)break; fwrite(og.header,1,og.header_len,outfile); fwrite(og.body,1,og.body_len,outfile); } if(audio){ while(1){ int result=ogg_stream_flush(&vo,&og); if(result<0){ /* can't get here */ fprintf(stderr,"Internal Ogg library error.\n"); exit(1); } if(result==0)break; fwrite(og.header,1,og.header_len,outfile); fwrite(og.body,1,og.body_len,outfile); } } /* setup complete. Raw processing loop */ fprintf(stderr,"Compressing....\n"); while(1){ /* is there an audio page flushed? If not, fetch one if possible */ audioflag=fetch_and_process_audio(audio,&audiopage,&vo,&vd,&vb,audioflag); /* is there a video page flushed? If not, fetch one if possible */ videoflag=fetch_and_process_video(video,&videopage,&to,&ttc,videoflag); /* no pages of either? Must be end of stream. */ if(!audioflag && !videoflag)break; /* which is earlier; the end of the audio page or the end of the video page? Flush the earlier to stream */ { int audio_or_video=-1; double audiotime= audioflag?vorbis_granule_time(&vd,ogg_page_granulepos(&audiopage)):-1; double videotime= videoflag?transcode_granule_time(&ttc,ogg_page_granulepos(&videopage)):-1; if(!audioflag){ audio_or_video=1; } else if(!videoflag) { audio_or_video=0; } else { if(audiotime /*See "VERSIONINFO Resource" in MSDN, https://msdn2.microsoft.com/en-us/library/Aa381058.aspx */ VS_VERSION_INFO VERSIONINFO FILEVERSION TH_VERSION_FIELD PRODUCTVERSION TH_VERSION_FIELD FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #if defined(_DEBUG) FILEFLAGS VS_FF_DEBUG #else FILEFLAGS 0 #endif FILEOS VOS__WINDOWS32 FILETYPE VFT_DLL FILESUBTYPE 0 BEGIN BLOCK "StringFileInfo" BEGIN /*0x040904B0 == US English, Unicode*/ BLOCK "0x040904B0" BEGIN VALUE "Comments","Xiph.Org " TH_DEC_INTERNAL_NAME ".dll" VALUE "CompanyName","The Xiph.Org Foundation" VALUE "FileDescription","Xiph.Org Theora Decoder Library" VALUE "FileVersion",TH_VERSION_STRING VALUE "InternalName",TH_DEC_INTERNAL_NAME VALUE "LegalCopyright","Copyright (C) 2002-2007 Xiph.Org Foundation" VALUE "OriginalFilename",TH_DEC_INTERNAL_NAME ".dll" VALUE "ProductName","libtheora" VALUE "ProductVersion",TH_VERSION_STRING END END BLOCK "VarFileInfo" BEGIN /*0x0409, 1200 == US English, Unicode*/ VALUE "Translation",0x0409,1200 END END libtheora-1.2.0/win32/xmingw32/libtheoraenc71d.rc0000644000175000017500000000014114771706724020067 0ustar perepere#define TH_ENC_INTERNAL_NAME "libtheoraenc71d" #define _DEBUG (1) #include "libtheoraenc-all.rc" libtheora-1.2.0/win32/xmingw32/libtheoradec80d.rc0000644000175000017500000000014114771706724020055 0ustar perepere#define TH_DEC_INTERNAL_NAME "libtheoradec80d" #define _DEBUG (1) #include "libtheoradec-all.rc" libtheora-1.2.0/win32/xmingw32/libtheoraenc71.rc0000644000175000017500000000013314771706724017724 0ustar perepere#define TH_ENC_INTERNAL_NAME "libtheoraenc71" #undef _DEBUG #include "libtheoraenc-all.rc" libtheora-1.2.0/win32/xmingw32/libtheoraencd.rc0000644000175000017500000000013714771706724017724 0ustar perepere#define TH_ENC_INTERNAL_NAME "libtheoraencd" #define _DEBUG (1) #include "libtheoraenc-all.rc" libtheora-1.2.0/win32/xmingw32/Makefile0000644000175000017500000003656314771706724016247 0ustar perepere# NOTE: This Makefile requires GNU make # Location to put the targets. TARGETBINDIR = . TARGETLIBDIR = . # DLL version information. Currently this must be updated manually. # Fields are: major, minor, build number, QFE version VERSION_FIELD = 1,0,0,0 VERSION_STRING = \\\"1.0\\\" # Name of the targets # Hooray for Windows DLL hell. LIBTHEORAENC_TARGET = libtheoraenc.dll LIBTHEORAENCD_TARGET = libtheoraencd.dll LIBTHEORAENC70_TARGET = libtheoraenc70.dll LIBTHEORAENC70D_TARGET = libtheoraenc70d.dll LIBTHEORAENC71_TARGET = libtheoraenc71.dll LIBTHEORAENC71D_TARGET = libtheoraenc71d.dll LIBTHEORAENC80_TARGET = libtheoraenc80.dll LIBTHEORAENC80D_TARGET = libtheoraenc80d.dll LIBTHEORADEC_TARGET = libtheoradec.dll LIBTHEORADECD_TARGET = libtheoradecd.dll LIBTHEORADEC70_TARGET = libtheoradec70.dll LIBTHEORADEC70D_TARGET = libtheoradec70d.dll LIBTHEORADEC71_TARGET = libtheoradec71.dll LIBTHEORADEC71D_TARGET = libtheoradec71d.dll LIBTHEORADEC80_TARGET = libtheoradec80.dll LIBTHEORADEC80D_TARGET = libtheoradec80d.dll DUMP_VIDEO_TARGET = dump_video.exe PLAYER_EXAMPLE_TARGET = player_example.exe ENCODER_EXAMPLE_TARGET = encoder_example.exe # The compiler tools to use # The is no standard mingw prefix, so try to guess MINGW_PREFIX := $(or $(strip $(foreach exeprefix, \ i686-mingw32 i686-pc-mingw32 i586-mingw32msvc i386-mingw32 \ no-mingw32, \ $(if $(shell which $(exeprefix)-gcc 2>/dev/null), $(exeprefix) )))) CC = $(MINGW_PREFIX)-gcc RC = $(MINGW_PREFIX)-windres DLLTOOL = $(MINGW_PREFIX)-dlltool LD = $(MINGW_PREFIX)-ld SDLCONFIG = $(MINGW_PREFIX)-sdl-config # The command to use to generate dependency information MAKEDEPEND = ${CC} -MM #MAKEDEPEND = makedepend -f- -Y -- # The location of include files. # Modify these to point to your Ogg and Vorbis include directories if they are # not installed in a standard location. CINCLUDE = -D_REENTRANT # Extra compilation flags. # You may get speed increases by including flags such as -O2 or -O3 or # -ffast-math, or additional flags, depending on your system and compiler. # The correct -march= flag will also generate much better code # on newer architectures. CFLAGS = -Wall -Wno-parentheses -DOC_X86_ASM RELEASE_CFLAGS = ${CFLAGS} -mtune=native -O3 -fomit-frame-pointer -fforce-addr \ -finline-functions # The -g flag will generally include debugging information. DEBUG_CFLAGS = ${CFLAGS} -g # Libraries to link with, and the location of library files. LIBS = -logg -lvorbis -lvorbisenc # ANYTHING BELOW THIS LINE PROBABLY DOES NOT NEED EDITING CINCLUDE := -I../../include ${CINCLUDE} LIBSRCDIR = ../../lib BINSRCDIR = ../../examples WORKDIR = objs # C source file lists LIBTHEORADEC_CSOURCES = \ apiwrapper.c \ bitpack.c \ decapiwrapper.c \ decinfo.c \ decode.c \ dequant.c \ fragment.c \ huffdec.c \ idct.c \ info.c \ internal.c \ quant.c \ state.c \ $(if $(findstring -DOC_X86_ASM,${CFLAGS}), \ x86/mmxidct.c \ x86/mmxfrag.c \ x86/mmxstate.c \ x86/x86state.c \ ) LIBTHEORAENC_CSOURCES = \ apiwrapper.c \ fragment.c \ idct.c \ internal.c \ state.c \ quant.c \ analyze.c \ fdct.c \ encfrag.c \ encapiwrapper.c \ encinfo.c \ encode.c \ enquant.c \ huffenc.c \ mathops.c \ mcenc.c \ rate.c \ tokenize.c \ $(if $(findstring -DOC_X86_ASM,${CFLAGS}), \ x86/mmxfrag.c \ x86/mmxidct.c \ x86/mmxstate.c \ x86/x86state.c \ x86/mmxencfrag.c \ x86/mmxfdct.c \ x86/x86enc.c \ ) DUMP_VIDEO_CSOURCES = dump_video.c ENCODER_EXAMPLE_CSOURCES = encoder_example.c PLAYER_EXAMPLE_CSOURCES = player_example.c # Create object file list. LIBTHEORADEC_OBJS:= ${LIBTHEORADEC_CSOURCES:%.c=${WORKDIR}/%.o} LIBTHEORADECD_OBJS:= ${LIBTHEORADEC_CSOURCES:%.c=${WORKDIR}/%.do} LIBTHEORAENC_OBJS:= ${LIBTHEORAENC_CSOURCES:%.c=${WORKDIR}/%.o} LIBTHEORAENCD_OBJS:= ${LIBTHEORAENC_CSOURCES:%.c=${WORKDIR}/%.do} DUMP_VIDEO_OBJS:= ${DUMP_VIDEO_CSOURCES:%.c=${WORKDIR}/%.o} ENCODER_EXAMPLE_OBJS:= ${ENCODER_EXAMPLE_CSOURCES:%.c=${WORKDIR}/%.o} PLAYER_EXAMPLE_OBJS:= ${PLAYER_EXAMPLE_CSOURCES:%.c=${WORKDIR}/%.o} RC_OBJS:= ${LIBTHEORADEC_TARGET} ${LIBTHEORAENC_TARGET} \ ${LIBTHEORADECD_TARGET} ${LIBTHEORAENCD_TARGET} \ ${LIBTHEORADEC70_TARGET} ${LIBTHEORAENC70_TARGET} \ ${LIBTHEORADEC70D_TARGET} ${LIBTHEORAENC70D_TARGET} \ ${LIBTHEORADEC71_TARGET} ${LIBTHEORAENC71_TARGET} \ ${LIBTHEORADEC71D_TARGET} ${LIBTHEORAENC71D_TARGET} \ ${LIBTHEORADEC80_TARGET} ${LIBTHEORAENC80_TARGET} \ ${LIBTHEORADEC80D_TARGET} ${LIBTHEORAENC80D_TARGET} RC_OBJS:= ${RC_OBJS:%.dll=${WORKDIR}/%.rco} ALL_OBJS:= ${LIBTHEORADEC_OBJS} ${LIBTHEORAENC_OBJS} \ ${LIBTHEORADECD_OBJS} ${LIBTHEORAENCD_OBJS} ${RC_OBJS} \ ${DUMP_VIDEO_OBJS} ${ENCODER_EXAMPLE_OBJS} #${PLAYER_EXAMPLE_OBJS} # Create the dependency file list ALL_DEPS:= ${ALL_OBJS:%.o=%.d} ALL_DEPS:= ${ALL_DEPS:%.do=%.dd} ALL_DEPS:= ${ALL_DEPS:%.rco=%.d} # Prepend source path to file names. LIBTHEORADEC_CSOURCES:= ${LIBTHEORADEC_CSOURCES:%=${LIBSRCDIR}/%} LIBTHEORAENC_CSOURCES:= ${LIBTHEORAENC_CSOURCES:%=${LIBSRCDIR}/%} DUMP_VIDEO_CSOURCES:= ${DUMP_VIDEO_CSOURCES:%=${BINSRCDIR}/%} ENCODER_EXAMPLE_CSOURCES:= ${ENCODER_EXAMPLE_CSOURCES:%=${BINSRCDIR}/%} PLAYER_EXAMPLE_CSOURCES:= ${PLAYER_EXAMPLE_CSOURCES:%=${BINSRCDIR}/%} ALL_CSOURCES:= ${LIBTHEORADEC_CSOURCES} ${LIBTHEORAENC_CSOURCES} \ ${DUMP_VIDEO_CSOURCES} ${PLAYER_EXAMPLE_CSOURCES} \ ${ENCODER_EXAMPLE_CSOURCES} LIBTHEORAENC_RCO:= ${WORKDIR}/${LIBTHEORAENC_TARGET:%.dll=%.rco} LIBTHEORAENCD_RCO:= ${WORKDIR}/${LIBTHEORAENCD_TARGET:%.dll=%.rco} LIBTHEORAENC70_RCO:= ${WORKDIR}/${LIBTHEORAENC70_TARGET:%.dll=%.rco} LIBTHEORAENC70D_RCO:= ${WORKDIR}/${LIBTHEORAENC70D_TARGET:%.dll=%.rco} LIBTHEORAENC71_RCO:= ${WORKDIR}/${LIBTHEORAENC71_TARGET:%.dll=%.rco} LIBTHEORAENC71D_RCO:= ${WORKDIR}/${LIBTHEORAENC71D_TARGET:%.dll=%.rco} LIBTHEORAENC80_RCO:= ${WORKDIR}/${LIBTHEORAENC80_TARGET:%.dll=%.rco} LIBTHEORAENC80D_RCO:= ${WORKDIR}/${LIBTHEORAENC80D_TARGET:%.dll=%.rco} LIBTHEORADEC_RCO:= ${WORKDIR}/${LIBTHEORADEC_TARGET:%.dll=%.rco} LIBTHEORADECD_RCO:= ${WORKDIR}/${LIBTHEORADECD_TARGET:%.dll=%.rco} LIBTHEORADEC70_RCO:= ${WORKDIR}/${LIBTHEORADEC70_TARGET:%.dll=%.rco} LIBTHEORADEC70D_RCO:= ${WORKDIR}/${LIBTHEORADEC70D_TARGET:%.dll=%.rco} LIBTHEORADEC71_RCO:= ${WORKDIR}/${LIBTHEORADEC71_TARGET:%.dll=%.rco} LIBTHEORADEC71D_RCO:= ${WORKDIR}/${LIBTHEORADEC71D_TARGET:%.dll=%.rco} LIBTHEORADEC80_RCO:= ${WORKDIR}/${LIBTHEORADEC80_TARGET:%.dll=%.rco} LIBTHEORADEC80D_RCO:= ${WORKDIR}/${LIBTHEORADEC80D_TARGET:%.dll=%.rco} # Prepend target path to file names. LIBTHEORAENC_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENC_TARGET} LIBTHEORAENCD_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENCD_TARGET} LIBTHEORAENC70_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENC70_TARGET} LIBTHEORAENC70D_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENC70D_TARGET} LIBTHEORAENC71_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENC71_TARGET} LIBTHEORAENC71D_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENC71D_TARGET} LIBTHEORAENC80_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENC80_TARGET} LIBTHEORAENC80D_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENC80D_TARGET} LIBTHEORADEC_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADEC_TARGET} LIBTHEORADECD_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADECD_TARGET} LIBTHEORADEC70_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADEC70_TARGET} LIBTHEORADEC70D_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADEC70D_TARGET} LIBTHEORADEC71_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADEC71_TARGET} LIBTHEORADEC71D_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADEC71D_TARGET} LIBTHEORADEC80_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADEC80_TARGET} LIBTHEORADEC80D_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADEC80D_TARGET} DUMP_VIDEO_TARGET:= ${TARGETBINDIR}/${DUMP_VIDEO_TARGET} ENCODER_EXAMPLE_TARGET:= ${TARGETBINDIR}/${ENCODER_EXAMPLE_TARGET} PLAYER_EXAMPLE_TARGET:= ${TARGETBINDIR}/${PLAYER_EXAMPLE_TARGET} DLL_TARGETS:= ${LIBTHEORADEC_TARGET} ${LIBTHEORAENC_TARGET} \ ${LIBTHEORADECD_TARGET} ${LIBTHEORAENCD_TARGET} \ ${LIBTHEORADEC70_TARGET} ${LIBTHEORAENC70_TARGET} \ ${LIBTHEORADEC70D_TARGET} ${LIBTHEORAENC70D_TARGET} \ ${LIBTHEORADEC71_TARGET} ${LIBTHEORAENC71_TARGET} \ ${LIBTHEORADEC71D_TARGET} ${LIBTHEORAENC71D_TARGET} \ ${LIBTHEORADEC80_TARGET} ${LIBTHEORAENC80_TARGET} \ ${LIBTHEORADEC80D_TARGET} ${LIBTHEORAENC80D_TARGET} ALL_TARGETS:= ${DLL_TARGETS} ${DLL_TARGETS:%.dll=%.dll.a} \ ${DUMP_VIDEO_TARGET} ${ENCODER_EXAMPLE_TARGET} #${PLAYER_EXAMPLE_TARGET} IMPLIB_TARGETS:= ${DLL_TARGETS:%.dll=%.def} ${DLL_TARGETS:%.dll=%.lib} \ ${DLL_TARGETS:%.dll=%.exp} # Targets: # Everything (default) all: ${ALL_TARGETS} # These require Microsoft's lib.exe to build, and so are not made by default. implibs: ${IMPLIB_TARGETS} # libtheoradec ${LIBTHEORADEC_TARGET}: ${LIBTHEORADEC_OBJS} ${LIBTHEORADEC_RCO} \ libtheoradec-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ ${LIBTHEORADEC_OBJS} -logg -lmsvcrt \ ${LIBTHEORADEC_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def ${LIBTHEORADECD_TARGET}: ${LIBTHEORADECD_OBJS} ${LIBTHEORADECD_RCO} \ libtheoradec-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ ${LIBTHEORADECD_OBJS} -logg -lmsvcrtd \ ${LIBTHEORADECD_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def ${LIBTHEORADEC70_TARGET}: ${LIBTHEORADEC_OBJS} ${LIBTHEORADEC70_RCO} \ libtheoradec-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ ${LIBTHEORADEC_OBJS} -logg -lmsvcr70 \ ${LIBTHEORADEC70_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def ${LIBTHEORADEC70D_TARGET}: ${LIBTHEORADECD_OBJS} ${LIBTHEORADEC70D_RCO} \ libtheoradec-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ ${LIBTHEORADECD_OBJS} -logg -lmsvcr70d \ ${LIBTHEORADEC70D_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def ${LIBTHEORADEC71_TARGET}: ${LIBTHEORADEC_OBJS} ${LIBTHEORADEC71_RCO} \ libtheoradec-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ ${LIBTHEORADEC_OBJS} -logg -lmsvcr71 \ ${LIBTHEORADEC71_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def ${LIBTHEORADEC71D_TARGET}: ${LIBTHEORADECD_OBJS} ${LIBTHEORADEC71D_RCO} \ libtheoradec-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ ${LIBTHEORADECD_OBJS} -logg -lmsvcr71d \ ${LIBTHEORADEC71D_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def ${LIBTHEORADEC80_TARGET}: ${LIBTHEORADEC_OBJS} ${LIBTHEORADEC80_RCO} \ libtheoradec-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ ${LIBTHEORADEC_OBJS} -logg -lmsvcr80 \ ${LIBTHEORADEC80_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def ${LIBTHEORADEC80D_TARGET}: ${LIBTHEORADECD_OBJS} ${LIBTHEORADEC80D_RCO} \ libtheoradec-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ ${LIBTHEORADECD_OBJS} -logg -lmsvcr80d \ ${LIBTHEORADEC80D_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def # libtheoraenc ${LIBTHEORAENC_TARGET}: ${LIBTHEORAENC_OBJS} ${LIBTHEORAENC_RCO} \ libtheoraenc-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ \ ${LIBTHEORAENC_OBJS} ${LIBTHEORADEC_TARGET} -logg -lmsvcrt \ ${LIBTHEORAENC_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def ${LIBTHEORAENCD_TARGET}: ${LIBTHEORAENCD_OBJS} ${LIBTHEORAENCD_RCO} \ libtheoraenc-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ \ ${LIBTHEORAENCD_OBJS} ${LIBTHEORADECD_TARGET} -logg -lmsvcrtd \ ${LIBTHEORAENCD_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def ${LIBTHEORAENC70_TARGET}: ${LIBTHEORAENC_OBJS} ${LIBTHEORAENC70_RCO} \ libtheoraenc-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ \ ${LIBTHEORAENC_OBJS} ${LIBTHEORADEC70_TARGET} -logg -lmsvcr70 \ ${LIBTHEORAENC70_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def ${LIBTHEORAENC70D_TARGET}: ${LIBTHEORAENCD_OBJS} ${LIBTHEORAENC70D_RCO} \ libtheoraenc-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ \ ${LIBTHEORAENCD_OBJS} ${LIBTHEORADEC70D_TARGET} -logg -lmsvcr70d \ ${LIBTHEORAENC70D_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def ${LIBTHEORAENC71_TARGET}: ${LIBTHEORAENC_OBJS} ${LIBTHEORAENC71_RCO} \ libtheoraenc-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ \ ${LIBTHEORAENC_OBJS} ${LIBTHEORADEC71_TARGET} -logg -lmsvcr71 \ ${LIBTHEORAENC71_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def ${LIBTHEORAENC71D_TARGET}: ${LIBTHEORAENCD_OBJS} ${LIBTHEORAENC71D_RCO} \ libtheoraenc-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ \ ${LIBTHEORAENCD_OBJS} ${LIBTHEORADEC71D_TARGET} -logg -lmsvcr71d \ ${LIBTHEORAENC71D_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def ${LIBTHEORAENC80_TARGET}: ${LIBTHEORAENC_OBJS} ${LIBTHEORAENC80_RCO} \ libtheoraenc-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ \ ${LIBTHEORAENC_OBJS} ${LIBTHEORADEC80_TARGET} -logg -lmsvcr80 \ ${LIBTHEORAENC80_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def ${LIBTHEORAENC80D_TARGET}: ${LIBTHEORAENCD_OBJS} ${LIBTHEORAENC80D_RCO} \ libtheoraenc-all.def mkdir -p ${TARGETLIBDIR} ${CC} -shared -o $@ \ ${LIBTHEORAENCD_OBJS} ${LIBTHEORADEC80D_TARGET} -logg -lmsvcr80d \ ${LIBTHEORAENC80D_RCO} \ -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def # dump_video ${DUMP_VIDEO_TARGET}: ${DUMP_VIDEO_OBJS} ${LIBTHEORADEC_TARGET} mkdir -p ${TARGETBINDIR} ${CC} ${CFLAGS} -o $@ ${DUMP_VIDEO_OBJS} ${LIBS} \ ${LIBTHEORADEC_TARGET}.a # encoder_example ${ENCODER_EXAMPLE_TARGET}: ${ENCODER_EXAMPLE_OBJS} ${LIBTHEORADEC_TARGET} \ ${LIBTHEORAENC_TARGET} mkdir -p ${TARGETBINDIR} ${CC} ${CFLAGS} -o $@ ${ENCODER_EXAMPLE_OBJS} ${LIBS} \ ${LIBTHEORAENC_TARGET}.a ${LIBTHEORADEC_TARGET}.a # player_example ${PLAYER_EXAMPLE_TARGET}: CINCLUDE += $(SDLCONFIG) --cflags ${PLAYER_EXAMPLE_TARGET}: ${PLAYER_EXAMPLE_OBJS} ${LIBTHEORADEC_TARGET} mkdir -p ${TARGETBINDIR} ${CC} ${CFLAGS} -o $@ ${PLAYER_EXAMPLE_OBJS} ${LIBS} \ ${LIBTHEORADEC_TARGET}.a `${SDLCONFIG} --libs` # Remove all targets. clean: -rm $(sort ${ALL_OBJS} ${ALL_DEPS} ${ALL_TARGETS} ${IMPLIB_TARGETS}) -rmdir ${WORKDIR}/x86 -rmdir ${WORKDIR} # Make everything depend on changes in the Makefile ${ALL_OBJS} ${ALL_DEPS} ${ALL_TARGETS} : Makefile # Specify which targets are phony for GNU make .PHONY : all clean # Rules # Windows-specific rules %.dll.a : %.dll %.def : %.dll %.exp : %.lib %.lib : %.def wine lib /machine:i386 /def:$< ${WORKDIR}/%.d : %.rc mkdir -p ${dir $@} ${MAKEDEPEND} -x c-header ${CINCLUDE} $< -MT ${@:%.d=%.rco} > $@ ${WORKDIR}/%.rco : %.rc mkdir -p ${dir $@} ${RC} ${CINCLUDE} -DTH_VERSION_FIELD=${VERSION_FIELD} \ -DTH_VERSION_STRING=${VERSION_STRING} $< $@ # Normal compilation ${WORKDIR}/%.d : ${LIBSRCDIR}/%.c mkdir -p ${dir $@} ${MAKEDEPEND} ${CINCLUDE} ${RELEASE_CFLAGS} $< -MT ${@:%.d=%.o} > $@ ${WORKDIR}/%.d : ${BINSRCDIR}/%.c mkdir -p ${dir $@} ${MAKEDEPEND} ${CINCLUDE} ${RELEASE_CFLAGS} $< -MT ${@:%.d=%.o} > $@ ${WORKDIR}/%.o : ${LIBSRCDIR}/%.c mkdir -p ${dir $@} ${CC} ${CINCLUDE} ${RELEASE_CFLAGS} -c -o $@ $< ${WORKDIR}/%.o : ${BINSRCDIR}/%.c mkdir -p ${dir $@} ${CC} ${CINCLUDE} ${RELEASE_CFLAGS} -c -o $@ $< # Debug versions ${WORKDIR}/%.dd : ${LIBSRCDIR}/%.c mkdir -p ${dir $@} ${MAKEDEPEND} ${CINCLUDE} ${DEBUG_CFLAGS} $< -MT ${@:%.d=%.do} > $@ ${WORKDIR}/%.do : ${LIBSRCDIR}/%.c mkdir -p ${dir $@} ${CC} ${CINCLUDE} ${DEBUG_CFLAGS} -c -o $@ $< # Include header file dependencies -include ${ALL_DEPS} libtheora-1.2.0/win32/xmingw32/libtheoraenc.rc0000644000175000017500000000013114771706724017552 0ustar perepere#define TH_ENC_INTERNAL_NAME "libtheoraenc" #undef _DEBUG #include "libtheoraenc-all.rc" libtheora-1.2.0/win32/xmingw32/libtheoraenc70.rc0000644000175000017500000000013314771706724017723 0ustar perepere#define TH_ENC_INTERNAL_NAME "libtheoraenc70" #undef _DEBUG #include "libtheoraenc-all.rc" libtheora-1.2.0/win32/xmingw32/libtheoradec70.rc0000644000175000017500000000013314771706724017711 0ustar perepere#define TH_DEC_INTERNAL_NAME "libtheoradec70" #undef _DEBUG #include "libtheoradec-all.rc" libtheora-1.2.0/win32/xmingw32/libtheoraenc70d.rc0000644000175000017500000000014114771706724020066 0ustar perepere#define TH_ENC_INTERNAL_NAME "libtheoraenc70d" #define _DEBUG (1) #include "libtheoraenc-all.rc" libtheora-1.2.0/win32/xmingw32/libtheoraenc80.rc0000644000175000017500000000013314771706724017724 0ustar perepere#define TH_ENC_INTERNAL_NAME "libtheoraenc80" #undef _DEBUG #include "libtheoraenc-all.rc" libtheora-1.2.0/win32/xmingw32/libtheoraenc-all.def0000644000175000017500000000063014771706724020456 0ustar perepereEXPORTS ; Old alpha API theora_encode_init @ 1 theora_encode_YUVin @ 2 theora_encode_packetout @ 3 theora_encode_header @ 4 theora_encode_comment @ 5 theora_encode_tables @ 6 ; New theora-exp API th_encode_alloc @ 7 th_encode_ctl @ 8 th_encode_flushheader @ 9 th_encode_ycbcr_in @ 10 th_encode_packetout @ 11 th_encode_free @ 12 TH_VP31_QUANT_INFO @ 13 TH_VP31_HUFF_CODES @ 14 libtheora-1.2.0/win32/xmingw32/libtheoradec70d.rc0000644000175000017500000000014114771706724020054 0ustar perepere#define TH_DEC_INTERNAL_NAME "libtheoradec70d" #define _DEBUG (1) #include "libtheoradec-all.rc" libtheora-1.2.0/win32/xmingw32/libtheoraenc80d.rc0000644000175000017500000000014114771706724020067 0ustar perepere#define TH_ENC_INTERNAL_NAME "libtheoraenc80d" #define _DEBUG (1) #include "libtheoraenc-all.rc" libtheora-1.2.0/win32/xmingw32/libtheoradec80.rc0000644000175000017500000000013314771706724017712 0ustar perepere#define TH_DEC_INTERNAL_NAME "libtheoradec80" #undef _DEBUG #include "libtheoradec-all.rc" libtheora-1.2.0/win32/xmingw32/libtheoraenc-all.rc0000644000175000017500000000211714771706724020326 0ustar perepere#include /*See "VERSIONINFO Resource" in MSDN, https://msdn2.microsoft.com/en-us/library/Aa381058.aspx */ VS_VERSION_INFO VERSIONINFO FILEVERSION TH_VERSION_FIELD PRODUCTVERSION TH_VERSION_FIELD FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #if defined(_DEBUG) FILEFLAGS VS_FF_DEBUG #else FILEFLAGS 0 #endif FILEOS VOS__WINDOWS32 FILETYPE VFT_DLL FILESUBTYPE 0 BEGIN BLOCK "StringFileInfo" BEGIN /*0x040904B0 == US English, Unicode*/ BLOCK "0x040904B0" BEGIN VALUE "Comments","Xiph.Org " TH_ENC_INTERNAL_NAME ".dll" VALUE "CompanyName","The Xiph.Org Foundation" VALUE "FileDescription","Xiph.Org Theora Encoder Library" VALUE "FileVersion",TH_VERSION_STRING VALUE "InternalName",TH_ENC_INTERNAL_NAME VALUE "LegalCopyright","Copyright (C) 2002-2007 Xiph.Org Foundation" VALUE "OriginalFilename",TH_ENC_INTERNAL_NAME ".dll" VALUE "ProductName","libtheora" VALUE "ProductVersion",TH_VERSION_STRING END END BLOCK "VarFileInfo" BEGIN /*0x0409, 1200 == US English, Unicode*/ VALUE "Translation",0x0409,1200 END END libtheora-1.2.0/win32/xmingw32/libtheoradecd.rc0000644000175000017500000000013714771706724017712 0ustar perepere#define TH_DEC_INTERNAL_NAME "libtheoradecd" #define _DEBUG (1) #include "libtheoradec-all.rc" libtheora-1.2.0/win32/theora_static.dsp0000644000175000017500000001650314771706724016462 0ustar perepere# Microsoft Developer Studio Project File - Name="theora_static" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Static Library" 0x0104 CFG=theora_static - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "theora_static.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "theora_static.mak" CFG="theora_static - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "theora_static - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "theora_static - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "theora_static - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Static_Release" # PROP Intermediate_Dir "Static_Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\ogg\include" /I "..\..\theora\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo !ELSEIF "$(CFG)" == "theora_static - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Static_Debug" # PROP Intermediate_Dir "Static_Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\ogg\include" /I "..\..\theora\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"Static_Debug\theora_static_d.lib" !ENDIF # Begin Target # Name "theora_static - Win32 Release" # Name "theora_static - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\lib\enc\dct.c # End Source File # Begin Source File SOURCE=..\lib\enc\dct_decode.c # End Source File # Begin Source File SOURCE=..\lib\enc\dct_encode.c # End Source File # Begin Source File SOURCE=..\lib\enc\dct_encode.c # End Source File # Begin Source File SOURCE=..\lib\enc\encapiwrapper.c # End Source File # Begin Source File SOURCE=..\lib\enc\encode.c # End Source File # Begin Source File SOURCE=..\lib\enc\encoder_huffman.c # End Source File # Begin Source File SOURCE=..\lib\enc\encoder_idct.c # End Source File # Begin Source File SOURCE=..\lib\enc\encoder_toplevel.c # End Source File # Begin Source File SOURCE=..\lib\enc\encoder_quant.c # End Source File # Begin Source File SOURCE=..\lib\enc\frarray.c # End Source File # Begin Source File SOURCE=..\lib\enc\frinit.c # End Source File # Begin Source File SOURCE=..\lib\enc\mathops.c # End Source File # Begin Source File SOURCE=..\lib\enc\mcenc.c # End Source File # Begin Source File SOURCE=..\lib\enc\mode.c # End Source File # Begin Source File SOURCE=..\lib\enc\reconstruct.c # End Source File # Begin Source File SOURCE=..\lib\enc\x86_32_vs\dsp_mmx.c # End Source File # Begin Source File SOURCE=..\lib\enc\x86_32_vs\fdct_mmx.c # End Source File # Begin Source File SOURCE=..\lib\enc\x86_32_vs\recon_mmx.c # End Source File # Begin Source File SOURCE=..\lib\dec\apiwrapper.c # End Source File # Begin Source File SOURCE=..\lib\dec\bitpack.c # End Source File # Begin Source File SOURCE=..\lib\dec\decapiwrapper.c # End Source File # Begin Source File SOURCE=..\lib\dec\decinfo.c # End Source File # Begin Source File SOURCE=..\lib\dec\decode.c # End Source File # Begin Source File SOURCE=..\lib\dec\dequant.c # End Source File # Begin Source File SOURCE=..\lib\dec\fragment.c # End Source File # Begin Source File SOURCE=..\lib\dec\huffdec.c # End Source File # Begin Source File SOURCE=..\lib\dec\idct.c # End Source File # Begin Source File SOURCE=..\lib\dec\info.c # End Source File # Begin Source File SOURCE=..\lib\dec\internal.c # End Source File # Begin Source File SOURCE=..\lib\dec\quant.c # End Source File # Begin Source File SOURCE=..\lib\dec\state.c # End Source File # Begin Source File SOURCE=..\lib\dec\x86_vc\mmxfrag.c # End Source File # Begin Source File SOURCE=..\lib\dec\x86_vc\mmxidct.c # End Source File # Begin Source File SOURCE=..\lib\dec\x86_vc\mmxloopfilter.c # End Source File # Begin Source File SOURCE=..\lib\dec\x86_vc\mmxstate.c # End Source File # Begin Source File SOURCE=..\lib\dec\x86_vc\x86stat.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=..\lib\dec\apiwrapper.h # End Source File # Begin Source File SOURCE=..\lib\enc\block_inline.h # End Source File # Begin Source File SOURCE=..\include\theora\codec.h # End Source File # Begin Source File SOURCE=..\lib\enc\codec_internal.h # End Source File # Begin Source File SOURCE=..\lib\cpu.h # End Source File # Begin Source File SOURCE=..\lib\dec\dct.h # End Source File # Begin Source File SOURCE=..\lib\dec\decint.h # End Source File # Begin Source File SOURCE=..\lib\dec\dequant.h # End Source File # Begin Source File SOURCE=..\lib\enc\dsp.h # End Source File # Begin Source File SOURCE=..\lib\enc\encoder_huffman.h # End Source File # Begin Source File SOURCE=..\lib\enc\encoder_lookup.h # End Source File # Begin Source File SOURCE=..\lib\dec\enquant.h # End Source File # Begin Source File SOURCE=..\lib\dec\huffdec.h # End Source File # Begin Source File SOURCE=..\lib\dec\huffman.h # End Source File # Begin Source File SOURCE=..\lib\enc\hufftables.h # End Source File # Begin Source File SOURCE=..\lib\dec\idct.h # End Source File # Begin Source File SOURCE=..\lib\internal.h # End Source File # Begin Source File SOURCE=..\lib\dec\ocintrin.h # End Source File # Begin Source File SOURCE=..\lib\enc\pp.h # End Source File # Begin Source File SOURCE=..\lib\dec\quant.h # End Source File # Begin Source File SOURCE=..\lib\enc\quant_lookup.h # End Source File # Begin Source File SOURCE=..\include\theora\theora.h # End Source File # Begin Source File SOURCE=..\include\theora\theoradec.h # End Source File # Begin Source File SOURCE=..\lib\enc\toplevel_lookup.h # End Source File # End Group # End Target # End Project libtheora-1.2.0/win32/build_theora_static.bat0000755000175000017500000000100314771706724017611 0ustar perepere@echo off echo ---+++--- Building Theora (Static) ---+++--- if .%SRCROOT%==. set SRCROOT=D:\xiph set OLDPATH=%PATH% set OLDINCLUDE=%INCLUDE% set OLDLIB=%LIB% call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat" echo Setting include paths for Theora set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\theora\include echo Compiling... msdev theora_static.dsp /useenv /make "theora_static - Win32 Release" /rebuild set PATH=%OLDPATH% set INCLUDE=%OLDINCLUDE% set LIB=%OLDLIB% libtheora-1.2.0/win32/VS2008/0002755000175000017500000000000014771706724013760 5ustar pereperelibtheora-1.2.0/win32/VS2008/libtheora_dynamic.sln0000644000175000017500000003552214771706724020160 0ustar perepere Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtheora", "libtheora\libtheora_dynamic.vcproj", "{653F3841-3F26-49B9-AFCF-091DB4B67031}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dump_video", "dump_video\dump_video_dynamic.vcproj", "{1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "encoder_example", "encoder_example\encoder_example_dynamic.vcproj", "{AD710263-EBFA-4388-BAA9-AD73C32AFF26}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) Debug|Windows Mobile 6 Professional SDK (ARMV4I) = Debug|Windows Mobile 6 Professional SDK (ARMV4I) Debug|x64 = Debug|x64 Release_SSE|Win32 = Release_SSE|Win32 Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I) = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I) Release_SSE|x64 = Release_SSE|x64 Release_SSE2|Win32 = Release_SSE2|Win32 Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I) = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I) Release_SSE2|x64 = Release_SSE2|x64 Release|Win32 = Release|Win32 Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) Release|Windows Mobile 6 Professional SDK (ARMV4I) = Release|Windows Mobile 6 Professional SDK (ARMV4I) Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.ActiveCfg = Debug|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.Build.0 = Debug|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.ActiveCfg = Debug|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.Build.0 = Debug|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Win32.Build.0 = Release_SSE|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|x64.ActiveCfg = Release_SSE|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|x64.Build.0 = Release_SSE|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|x64.Build.0 = Release_SSE2|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.ActiveCfg = Release|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.Build.0 = Release|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.ActiveCfg = Release|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.Build.0 = Release|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.ActiveCfg = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.Build.0 = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.ActiveCfg = Debug|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.Build.0 = Debug|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Win32.Build.0 = Release_SSE|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|x64.ActiveCfg = Release_SSE|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|x64.Build.0 = Release_SSE|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|x64.Build.0 = Release_SSE2|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.ActiveCfg = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.Build.0 = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.ActiveCfg = Release|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.Build.0 = Release|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.ActiveCfg = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.Build.0 = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.ActiveCfg = Debug|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.Build.0 = Debug|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Win32.Build.0 = Release_SSE|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|x64.ActiveCfg = Release_SSE|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|x64.Build.0 = Release_SSE|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|x64.Build.0 = Release_SSE2|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.ActiveCfg = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.Build.0 = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.ActiveCfg = Release|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal libtheora-1.2.0/win32/VS2008/dump_video/0002755000175000017500000000000014771706724016113 5ustar pereperelibtheora-1.2.0/win32/VS2008/dump_video/dump_video_dynamic.vcproj0000644000175000017500000003751114771706724023204 0ustar perepere libtheora-1.2.0/win32/VS2008/dump_video/dump_video_static.vcproj0000644000175000017500000003767714771706724023064 0ustar perepere libtheora-1.2.0/win32/VS2008/libogg.vsprops0000644000175000017500000000140714771706724016661 0ustar perepere libtheora-1.2.0/win32/VS2008/README0000644000175000017500000000130614771706724014636 0ustar pereperelibtheora has libogg as a dependency, and for examples, also libvorbis, therefore you need to have libogg and libvorbis compiled beforehand. Lets say you have libogg, libvorbis and libtheora in the same directory: libogg-1.1.4 libvorbis-1.2.2 libtheora-1.0 Because there is no automatic library detection you have to, either: 1. Rename libogg-1.1.4 to libogg, and libvorbis-1.2.2 to libvorbis. 2. Open libogg.vsprops with a text editor (even notepad.exe will suffice) and see if LIBOGG_VERSION is set to the correct version, in this case "1.1.4". The same procedure should be done for libvorbis.vsprops and check LIBVORBIS_VERSION for the correct version, in this case "1.2.2". libtheora-1.2.0/win32/VS2008/libvorbis.vsprops0000644000175000017500000000144514771706724017413 0ustar perepere libtheora-1.2.0/win32/VS2008/encoder_example/0002755000175000017500000000000014771706724017112 5ustar pereperelibtheora-1.2.0/win32/VS2008/encoder_example/encoder_example_dynamic.vcproj0000644000175000017500000004315414771706724025202 0ustar perepere libtheora-1.2.0/win32/VS2008/encoder_example/encoder_example_static.vcproj0000644000175000017500000004343214771706724025044 0ustar perepere libtheora-1.2.0/win32/VS2008/libtheora_static.sln0000644000175000017500000003554414771706724020027 0ustar perepere Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dump_video_static", "dump_video\dump_video_static.vcproj", "{1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtheora_static", "libtheora\libtheora_static.vcproj", "{653F3841-3F26-49B9-AFCF-091DB4B67031}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "encoder_example_static", "encoder_example\encoder_example_static.vcproj", "{AD710263-EBFA-4388-BAA9-AD73C32AFF26}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) Debug|Windows Mobile 6 Professional SDK (ARMV4I) = Debug|Windows Mobile 6 Professional SDK (ARMV4I) Debug|x64 = Debug|x64 Release_SSE|Win32 = Release_SSE|Win32 Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I) = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I) Release_SSE|x64 = Release_SSE|x64 Release_SSE2|Win32 = Release_SSE2|Win32 Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I) = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I) Release_SSE2|x64 = Release_SSE2|x64 Release|Win32 = Release|Win32 Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) Release|Windows Mobile 6 Professional SDK (ARMV4I) = Release|Windows Mobile 6 Professional SDK (ARMV4I) Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.ActiveCfg = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.Build.0 = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.ActiveCfg = Debug|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.Build.0 = Debug|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Win32.Build.0 = Release_SSE|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|x64.ActiveCfg = Release_SSE|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|x64.Build.0 = Release_SSE|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|x64.Build.0 = Release_SSE2|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.ActiveCfg = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.Build.0 = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Win32 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.ActiveCfg = Release|x64 {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.Build.0 = Release|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.ActiveCfg = Debug|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.Build.0 = Debug|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.ActiveCfg = Debug|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.Build.0 = Debug|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Win32.Build.0 = Release_SSE|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|x64.ActiveCfg = Release_SSE|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|x64.Build.0 = Release_SSE|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|x64.Build.0 = Release_SSE2|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.ActiveCfg = Release|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.Build.0 = Release|Win32 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.ActiveCfg = Release|x64 {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.Build.0 = Release|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.ActiveCfg = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.Build.0 = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.ActiveCfg = Debug|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.Build.0 = Debug|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Win32.Build.0 = Release_SSE|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|x64.ActiveCfg = Release_SSE|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|x64.Build.0 = Release_SSE|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|x64.Build.0 = Release_SSE2|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.ActiveCfg = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.Build.0 = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Win32 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.ActiveCfg = Release|x64 {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal libtheora-1.2.0/win32/VS2008/libtheora/0002755000175000017500000000000014771706724015731 5ustar pereperelibtheora-1.2.0/win32/VS2008/libtheora/libtheora_static.vcproj0000644000175000017500000017341314771706724022505 0ustar perepere libtheora-1.2.0/win32/VS2008/libtheora/libtheora_dynamic.vcproj0000644000175000017500000020543414771706724022641 0ustar perepere libtheora-1.2.0/aclocal.m40000644000175000017500000012775614771707053014030 0ustar perepere# generated automatically by aclocal 1.16.5 -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, [m4_warning([this file was generated for autoconf 2.71. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.16.5], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.16.5])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # Figure out how to run the assembler. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_AS # ---------- AC_DEFUN([AM_PROG_AS], [# By default we simply use the C compiler to build assembly code. AC_REQUIRE([AC_PROG_CC]) test "${CCAS+set}" = set || CCAS=$CC test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl ]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. AS_CASE([$CONFIG_FILES], [*\'*], [eval set x "$CONFIG_FILES"], [*], [set x $CONFIG_FILES]) shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`AS_DIRNAME(["$am_mf"])` am_filepart=`AS_BASENAME(["$am_mf"])` AM_RUN_LOG([cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles]) || am_rc=$? done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE="gmake" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi AS_UNSET([am_dirpart]) AS_UNSET([am_filepart]) AS_UNSET([am_mf]) AS_UNSET([am_rc]) rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking is enabled. # This creates each '.Po' and '.Plo' makefile fragment that we'll need in # order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl m4_ifdef([_$0_ALREADY_INIT], [m4_fatal([$0 expanded multiple times ]m4_defn([_$0_ALREADY_INIT]))], [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi AC_SUBST([CTAGS]) if test -z "$ETAGS"; then ETAGS=etags fi AC_SUBST([ETAGS]) if test -z "$CSCOPE"; then CSCOPE=cscope fi AC_SUBST([CSCOPE]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless 'enable' is passed literally. # For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], am_maintainer_other[ make rules and dependencies not useful (and sometimes confusing) to the casual installer])], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check whether make has an 'include' directive that can support all # the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) AS_CASE([$?:`cat confinc.out 2>/dev/null`], ['0:this is the am__doit target'], [AS_CASE([$s], [BSD], [am__include='.include' am__quote='"'], [am__include='include' am__quote=''])]) if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* AC_MSG_RESULT([${_am_result}]) AC_SUBST([am__include])]) AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/as-ac-expand.m4]) m4_include([m4/as-gcc-inline-assembly.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) m4_include([m4/ogg.m4]) m4_include([m4/pkg.m4]) m4_include([m4/vorbis.m4]) libtheora-1.2.0/doc/0002755000175000017500000000000014771733701012714 5ustar pereperelibtheora-1.2.0/doc/color.html0000644000175000017500000004371014771706724014730 0ustar perepere xiph.org: Ogg Theora documentation

Ogg Theora I specification: color space conventions

Overview

There are a large number of different color standards used in digital video. Since Theora is a lossy codec, it restricts itself to only a few of them to simplify playback. Unlike the alternate method of describing all the parameters of the color model, this allows a few dedicated routines for color conversion to be written and heavily optimized in a decoder. More flexible conversion functions should instead be specified in an encoder, where additional computational complexity is more easily tolerated. The color spaces were selected to give a fair representation of color standards in use around the world today. Most of the standards that do not exactly match one of these can be converted to one fairly easily.

The Theora codec identification header contains an 8-bit value that describes the color space. This merely selects one of the color spaces available from an enumerated list. Currently, only two color spaces are defined, with a third possibility that indicates the color space is "unknown". All of them are Y'CbCr color spaces with one luma channel and two chroma channels. Each channel contains 8-bit discrete values in the range 0-255, which represent non-linear gamma pre-corrected signals.

color space parameters

The parameters which describe each color space are listed below. These are the parameters needed to map colors from the encoded Y'CbCr representation to the device-independent color space CIE XYZ (1931).

Y'CbCr to Y'PbPr

This conversion takes 8-bit discrete values in the range 0-255 and maps them to real values in the range [0,1] for Y and [-1/2,1/2] for Pb and Pr. Because some values may fall outside the offset and excursion defined for each channel in the Y'CbCr space, the results may fall outside these ranges in Y'PbPr space. No clamping should be done at this stage.

Parameters: OffsetY,Cb,Cr, ExcursionY,Cb,Cr,

Y'out = (Y'in-OffsetY)/ ExcursionY
Pb = (Cb-OffsetCb)/ ExcursionCb
Pr = (Cr-OffsetCr)/ ExcursionCr
Y'PbPr to R'G'B'

This conversion takes the one luma and two chroma channel representation and maps it to the non-linear R'G'B' space used to drive actual output devices. Values should be clamped into the range [0,1] after this stage.

Parameters: Kb, Kr

R' = Y' + 2(1-Kr)Pr
G' = Y' + 2((Kb-1)Kb/ (1-Kb-Kr))Pb + 2((Kr-1)Kr/ (1-Kb-Kr))Pr
B' = Y' + 2(1-Kb)Pb
R'G'B' to RGB (Output device gamma correction)

This conversion takes the non-linear R'G'B' voltage levels and maps it to the linear light levels produced by the actual output device. Note that this conversion is only that of the output device, and its inverse is not that used by the input device. Because a dim viewing environment is assumed in most television standards, the overall gamma between the input and output devices is usually around 1.1 to 1.2, and not a strict 1.0.

For calibration with actual output devices, the model
L = (E'+Δ)γ
should be used, with Δ the free parameter and γ held fixed to the value specified in this document. The conversion function presented here is an idealized version with Δ=0.

Parameters: γ

R = R'γ
G = G'γ
B = B'γ
RGB to R'G'B' (Input device gamma correction)

This conversion takes linear light levels and maps them to the non-linear voltage levels used to drive the actual output device. This information is merely informative. It is not required for building a decoder or for converting between the various formats and the actual output capabilities of a particular device.

A linear segment is introduced on the low end to reduce noise in dark areas of the image. The rest of the scale is adjusted so that the power segment of the curve intersects the linear segment with the proper slope, and so that it still maps 0 to 0 and 1 to 1.

Parameters: β, α, δ, ε

R' = (1+ε)Rβ-ε for δ ≤ R ≤ 1
R' = αR for 0 ≤ R < δ
G' = (1+ε)Gβ-ε for δ ≤ G ≤ 1
G' = αG for 0 ≤ G < δ
B' = (1+ε)Bβ-ε for δ ≤ B ≤ 1
B' = αB for 0 ≤ B < δ
RGB to CIE XYZ (1931)

This conversion maps a device-dependent linear RGB space to the device-independent linear CIE XYZ space. The parameters are the CIE chromaticity coordinates of the three primaries, red, green, and blue, as well as the chromaticity coordinates of the white point of the device. This is how hardware manufacturers and standards typically describe a particular RGB space. The math required to convert these parameters into a useful transformation matrix is reproduced below.

Parameters: xr,g,b,w, yr,g,b,w

F = )
(
xr/yr xg/yg xb/yb
1 1 1
(1-xr-yr)/yr (1-xg-yg)/yg (1-xb-yb)/yb
(
sr
sg
sb
)
=
F-1(
xw/yw
1
(1-xw-yw)/yw
)
(
X
Y
Z
)
=
F(
srR
sgG
sbB
)

available color spaces

These are the color spaces currently defined for use by Ogg Theora video. Each one has a short name, with which it is referred to in this document, and a more detailed specification of the standards from which its parameters are derived. Some standards do not specify all the parameters necessary. For these unspecified parameters, this document serves as the definition of what should be used when encoding or decoding Ogg Theora video.

Rec 470M (Rec. ITU-R BT.470-6 System M/NTSC with Rec. ITU-R BT.601-5)

This color space is used by broadcast television and DVDs in much of the Americas, Japan, Korea, and the Union of Myanmar [Rec470]. This color space may also be used for System M/PAL (Brazil), with an appropriate conversion supplied by the encoder to compensate for the different gamma value. See the Rec 470BG section for an appropriate gamma value to assume for M/PAL input.

In the US, studio monitors are adjusted to a D65 white point (xw,yw=0.313,0.329). In Japan, studio monitors are adjusted to a D white of 9300K (xw,yw=0.285,0.293).

Rec 470 does not specify a digital encoding of the color signals. For Ogg Theora, Rec. ITU-R BT.601-5 is used, starting from the R'G'B' signals specified by Rec 470 [Rec601].

Rec 470 does not specify an input gamma function. For Ogg Theora, the Rec 709 input function is used. This is the same as that specified by SMPTE 170M, which claims to reflect modern practice in the creation of NTSC signals (c. 1994) [SMPTE170M].

parameters

OffsetY,Cb,Cr = (16,128,128)
ExcursionY,Cb,Cr = (219,224,224)
Kb = 0.114
Kr = 0.299
γ = 2.2
β = 0.45
α = 4.5
δ = 0.018
ε = 0.099
xr,yr = 0.67, 0.33
xg,yg = 0.21, 0.71
xb,yb = 0.14, 0.08
(Illuminant C) xw,yw = 0.310, 0.316

Rec 470BG (Rec. ITU-R BT.470-6 Systems B and G with Rec. ITU-R BT.601-5)

This color space is used by the PAL and SECAM systems in much of the rest of the world [Rec470]. This can be used directly by systems (B, B1, D, D1, G, H, I, K, N)/PAL and (B, D, G, H, K, K1, L)/SECAM.

Note that the Rec 470BG chromaticity values are different from those specified in Rec 470M. When PAL and SECAM systems were first designed, they were based upon the same primaries as NTSC. However, as methods of making color picture tubes have changed, the primaries used have changed as well. The US recommends using correction circuitry to approximate the existing, standard NTSC primaries. Current PAL and SECAM systems have standardized on primaries in accord with more recent technology.

Rec 470 provisionally permits the use of the NTSC chromaticity values (given above) with legacy PAL and SECAM equipment. In Ogg Theora, material must be decoded assuming the new PAL and SECAM primaries. Material intended for display on old legacy devices should be converted by the decoder.

The official Rec 470BG specifies a gamma value of γ=2.8. However, in practice this value is unrealistically high [Poy97]. Rec 470BG states that the overall system gamma should be approximately γ/β=1.2. However, most cameras pre-correct with a gamma value of β=0.45, which suggests an output device gamma of approximately γ=2.67. This is the value recommended for use with PAL systems in Ogg Theora.

Rec 470 does not specify a digital encoding of the color signals. For Ogg Theora, Rec. ITU-R BT.601-5 is used, starting from the R'G'B' signals specified by Rec 470 [Rec601].

Rec 470 does not specify an input gamma function. For Ogg Theora, the Rec 709 input function is used.

parameters

OffsetY,Cb,Cr = (16,128,128)
ExcursionY,Cb,Cr = (219,224,224)
Kb = 0.114
Kr = 0.299
γ = 2.67
β = 0.45
α = 4.5
δ = 0.018
ε = 0.099
xr,yr = 0.64, 0.33
xg,yg = 0.29, 0.60
xb,yb = 0.15, 0.06
(D65) xw,yw = 0.313, 0.329

references

[Poy97]
Poynton, Charles, Frequently-Asked Questions about Gamma. http://www.poynton.com/GammaFAQ/html, Feb. 1997.
[Rec470]
Recommendation ITU-R BT.470-6, Conventional Television Systems (1970, revised 1998). International Telecommunications Union, 1211 Geneva 20, Switzerland.
[Rec601]
Recommendation ITU-R BT.601-5, Studio Encoding Parameters of Digital Television for Standard 4:3 and Wide-Screen 16:9 Aspect Ratios (1982, revised 1995). International Telecommunications Union, 1211 Geneva 20, Switzerland.
[Rec709]
Recommendation ITU-R BT.709-5, Parameter values for the HDTV standards for production and international programme exchange (1990, revised 2002). International Telecommunications Union, 1211 Geneva 20, Switzerland.
[SMPTE170M]
Society of Motion Picture and Television Engineers, Television — Composite Analog Video Signal — NTSC for Studio Applications. SMPTE-170M, 1994
[SMPTE240M]
Society of Motion Picture and Television Engineers, Television — Signal Parameters — 1125-Line High-Definition Production. SMPTE-240M, 1999.
libtheora-1.2.0/doc/Makefile.in0000644000175000017500000005763114771707054014775 0ustar perepere# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ $(top_srcdir)/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/ogg.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/vorbis.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = Doxyfile CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(docdir)" DATA = $(doc_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINDIR = @BINDIR@ BUILDABLE_EXAMPLES = @BUILDABLE_EXAMPLES@ CAIRO_CFLAGS = @CAIRO_CFLAGS@ CAIRO_LIBS = @CAIRO_LIBS@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG = @DEBUG@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOCDIR = @DOCDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GETOPT_OBJS = @GETOPT_OBJS@ GREP = @GREP@ HAVE_ARM_ASM_EDSP = @HAVE_ARM_ASM_EDSP@ HAVE_ARM_ASM_MEDIA = @HAVE_ARM_ASM_MEDIA@ HAVE_ARM_ASM_NEON = @HAVE_ARM_ASM_NEON@ HAVE_BIBTEX = @HAVE_BIBTEX@ HAVE_DOXYGEN = @HAVE_DOXYGEN@ HAVE_PDFLATEX = @HAVE_PDFLATEX@ HAVE_PERL = @HAVE_PERL@ HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@ HAVE_TIFF = @HAVE_TIFF@ HAVE_TRANSFIG = @HAVE_TRANSFIG@ INCLUDEDIR = @INCLUDEDIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBDIR = @LIBDIR@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OGG_CFLAGS = @OGG_CFLAGS@ OGG_LIBS = @OGG_LIBS@ OSS_LIBS = @OSS_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_LIBS = @PNG_LIBS@ PROFILE = @PROFILE@ RANLIB = @RANLIB@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEST_ENV = @TEST_ENV@ THDEC_LIB_AGE = @THDEC_LIB_AGE@ THDEC_LIB_CURRENT = @THDEC_LIB_CURRENT@ THDEC_LIB_REVISION = @THDEC_LIB_REVISION@ THENC_LIB_AGE = @THENC_LIB_AGE@ THENC_LIB_CURRENT = @THENC_LIB_CURRENT@ THENC_LIB_REVISION = @THENC_LIB_REVISION@ THEORADEC_LDFLAGS = @THEORADEC_LDFLAGS@ THEORAENC_LDFLAGS = @THEORAENC_LDFLAGS@ THEORA_LDFLAGS = @THEORA_LDFLAGS@ THEORA_LIBOGG_REQ_VERSION = @THEORA_LIBOGG_REQ_VERSION@ TH_LIB_AGE = @TH_LIB_AGE@ TH_LIB_CURRENT = @TH_LIB_CURRENT@ TH_LIB_REVISION = @TH_LIB_REVISION@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_LIBS = @TIFF_LIBS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ VORBISENC_LIBS = @VORBISENC_LIBS@ VORBISFILE_LIBS = @VORBISFILE_LIBS@ VORBIS_CFLAGS = @VORBIS_CFLAGS@ VORBIS_LIBS = @VORBIS_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = spec static_docs = vp3-format.txt color.html \ draft-ietf-avt-rtp-theora-00.xml \ draft-ietf-avt-rtp-theora-00.txt doc_DATA = $(static_docs) doxygen-build.stamp EXTRA_DIST = $(static_docs) Doxyfile.in dist_docdir = $(distdir)/libtheora all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-data-local install-docDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-docDATA uninstall-local .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool clean-local \ cscopelist-am ctags ctags-am dist-hook distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local \ install-docDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-docDATA uninstall-local .PRECIOUS: Makefile @HAVE_DOXYGEN_TRUE@doxygen-build.stamp: Doxyfile $(top_srcdir)/include/theora/*.h @HAVE_DOXYGEN_TRUE@ doxygen @HAVE_DOXYGEN_TRUE@ touch doxygen-build.stamp @HAVE_DOXYGEN_FALSE@doxygen-build.stamp: @HAVE_DOXYGEN_FALSE@ echo "*** Warning: Doxygen not found; documentation will not be built." @HAVE_DOXYGEN_FALSE@ touch doxygen-build.stamp dist-hook: if test -d libtheora; then \ mkdir $(dist_docdir); \ echo -n "copying built documentation..."; \ for dir in libtheora/*; do \ b=`basename $$dir`; \ if test $$b != ".svn"; then \ if test -d $$dir; then \ mkdir $(dist_docdir)/$$b; \ for f in $$dir/*; do \ cp -p $$f $(dist_docdir)/$$b; \ done; \ fi; \ fi; \ done; \ echo "OK"; \ fi for item in $(EXTRA_DIST); do \ if test -d $$item; then \ echo -n "cleaning $$item dir for distribution..."; \ rm -rf `find $(distdir)/$$item -name .svn`; \ echo "OK"; \ fi; \ done install-data-local: doxygen-build.stamp $(mkinstalldirs) $(DESTDIR)$(docdir) if test -d libtheora; then \ for dir in libtheora/*; do \ if test -d $$dir; then \ b=`basename $$dir`; \ $(mkinstalldirs) $(DESTDIR)$(docdir)/$$b; \ for f in $$dir/*; do \ $(INSTALL_DATA) $$f $(DESTDIR)$(docdir)/$$b; \ done \ fi \ done \ fi uninstall-local: rm -rf $(DESTDIR)$(docdir) clean-local: if test -d libtheora; then rm -rf libtheora; fi if test -f doxygen-build.stamp; then rm -f doxygen-build.stamp; fi # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libtheora-1.2.0/doc/Doxyfile.in0000644000175000017500000034774014771706724015051 0ustar perepere# Doxyfile 1.9.4 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. # # All text after a single hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). # # Note: # # Use doxygen to compare the used configuration file with the template # configuration file: # doxygen -x [configFile] # Use doxygen to compare the used configuration file with the template # configuration file without replacing the environment variables: # doxygen -x_noenv [configFile] #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the configuration # file that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # https://www.gnu.org/software/libiconv/ for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by # double-quotes, unless you are using Doxywizard) that should identify the # project for which the documentation is generated. This name is used in the # title of most generated pages and in a few other places. # The default value is: My Project. PROJECT_NAME = @PACKAGE@ # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. PROJECT_NUMBER = @VERSION@ # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = libtheora # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format # and will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes # performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to # control the number of sub-directories. # The default value is: NO. CREATE_SUBDIRS = NO # Controls the number of sub-directories that will be created when # CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every # level increment doubles the number of directories, resulting in 4096 # directories at level 8 which is the default and also the maximum value. The # sub-directories are organized in 2 levels, the first level always has a fixed # numer of 16 directories. # Minimum value: 0, maximum value: 8, default value: 8. # This tag requires that the tag CREATE_SUBDIRS is set to YES. CREATE_SUBDIRS_LEVEL = 8 # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. # The default value is: NO. ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, # Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English # (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, # Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with # English messages), Korean, Korean-en (Korean with English messages), Latvian, # Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, # Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, # Swedish, Turkish, Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. # The default value is: YES. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator that is # used to form the text in various listings. Each string in this list, if found # as the leading text of the brief description, will be stripped from the text # and the result, after processing the whole list, is used as the annotated # text. Otherwise, the brief description is used as-is. If left blank, the # following values are used ($name is automatically replaced with the name of # the entity):The $name class, The $name widget, The $name file, is, provides, # specifies, contains, represents, a, an and the. ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. # The default value is: NO. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. FULL_PATH_NAMES = NO # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which # header file to include in order to use a class. If left blank only the name of # the header file containing the class definition is used. Otherwise one should # specify the list of include paths that are normally passed to the compiler # using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the # first line (until the first dot) of a Javadoc-style comment as the brief # description. If set to NO, the Javadoc-style will behave just like regular Qt- # style comments (thus requiring an explicit @brief command for a brief # description.) # The default value is: NO. JAVADOC_AUTOBRIEF = YES # If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line # such as # /*************** # as being the beginning of a Javadoc-style comment "banner". If set to NO, the # Javadoc-style will behave just like regular comments and it will not be # interpreted by doxygen. # The default value is: NO. JAVADOC_BANNER = NO # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus # requiring an explicit \brief command for a brief description.) # The default value is: NO. QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this # tag to YES if you prefer the old behavior instead. # # Note that setting this tag to YES also means that rational rose comments are # not recognized any more. # The default value is: NO. MULTILINE_CPP_IS_BRIEF = NO # By default Python docstrings are displayed as preformatted text and doxygen's # special commands cannot be used. By setting PYTHON_DOCSTRING to NO the # doxygen's special commands can be used and the contents of the docstring # documentation blocks is shown as doxygen documentation. # The default value is: YES. PYTHON_DOCSTRING = YES # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new # page for each member. If set to NO, the documentation of a member will be part # of the file/class/namespace that contains it. # The default value is: NO. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen # uses this value to replace tabs by spaces in code fragments. # Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that act as commands in # the documentation. An alias has the form: # name=value # For example adding # "sideeffect=@par Side Effects:^^" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading # "Side Effects:". Note that you cannot put \n's in the value part of an alias # to insert newlines (in the resulting output). You can put ^^ in the value part # of an alias to insert a newline as if a physical newline was in the original # file. When you need a literal { or } or , in the value part of an alias you # have to escape them by means of a backslash (\), this can lead to conflicts # with the commands \{ and \} for these it is advised to use the version @{ and # @} or use a double escape (\\{ and \\}) ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all # members will be omitted, etc. # The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or # Python sources only. Doxygen will then generate output that is more tailored # for that language. For instance, namespaces will be presented as packages, # qualified scopes will look different, etc. # The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources. Doxygen will then generate output that is tailored for Fortran. # The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for VHDL. # The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO # Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice # sources only. Doxygen will then generate output that is more tailored for that # language. For instance, namespaces will be presented as modules, types will be # separated into more groups, etc. # The default value is: NO. OPTIMIZE_OUTPUT_SLICE = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and # language is one of the parsers supported by doxygen: IDL, Java, JavaScript, # Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, # VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: # FortranFree, unknown formatted Fortran: Fortran. In the later case the parser # tries to guess whether the code is fixed or free formatted code, this is the # default for Fortran type files). For instance to make doxygen treat .inc files # as Fortran files (default is PHP), and .f files as C (default is Fortran), # use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise # the files are not read by doxygen. When specifying no_extension you should add # * to the FILE_PATTERNS. # # Note see also the list of default file extension mappings. EXTENSION_MAPPING = # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See https://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you can # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. MARKDOWN_SUPPORT = YES # When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up # to that level are automatically included in the table of contents, even if # they do not have an id attribute. # Note: This feature currently applies only to Markdown headings. # Minimum value: 0, maximum value: 99, default value: 5. # This tag requires that the tag MARKDOWN_SUPPORT is set to YES. TOC_INCLUDE_HEADINGS = 5 # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. # The default value is: YES. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this # tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); # versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. # The default value is: NO. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: # https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make # doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. # The default value is: YES. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. DISTRIBUTE_GROUP_DOC = NO # If one adds a struct or class to a group and this option is enabled, then also # any nested class or struct is added to the same group. By default this option # is disabled and one has to add nested compounds explicitly via \ingroup. # The default value is: NO. GROUP_NESTED_COMPOUNDS = NO # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that # type (e.g. under the Public Functions section). Set it to NO to prevent # subgrouping. Alternatively, this can be done per class using the # \nosubgrouping command. # The default value is: YES. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions # are shown inside the group in which they are included (e.g. using \ingroup) # instead of on a separate page (for HTML and Man pages) or section (for LaTeX # and RTF). # # Note that this feature does not work in combination with # SEPARATE_MEMBER_PAGES. # The default value is: NO. INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions # with only public data fields or simple typedef fields will be shown inline in # the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set # to NO, structs, classes, and unions are shown on a separate page (for HTML and # Man pages) or section (for LaTeX and RTF). # The default value is: NO. INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or # enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically be # useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. # The default value is: NO. TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small # doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 # symbols. At the end of a run doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 # The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use # during processing. When set to 0 doxygen will based this on the number of # cores available in the system. You can set it explicitly to a value larger # than 0 to get more control over the balance between CPU load and processing # speed. At this moment only the input processing can be done using multiple # threads. Since this is still an experimental feature the default is set to 1, # which effectively disables parallel processing. Please report any issues you # encounter. Generating dot graphs in parallel is controlled by the # DOT_NUM_THREADS setting. # Minimum value: 0, maximum value: 32, default value: 1. NUM_PROC_THREADS = 1 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. # Note: This will also disable the warnings about undocumented members that are # normally produced when WARNINGS is set to YES. # The default value is: NO. EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will # be included in the documentation. # The default value is: NO. EXTRACT_PRIVATE = NO # If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual # methods of a class will be included in the documentation. # The default value is: NO. EXTRACT_PRIV_VIRTUAL = NO # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. # The default value is: NO. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES, all static members of a file will be # included in the documentation. # The default value is: NO. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined # locally in source files will be included in the documentation. If set to NO, # only classes defined in header files are included. Does not have any effect # for Java sources. # The default value is: YES. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. If set to YES, local methods, # which are defined in the implementation section but not in the interface are # included in the documentation. If set to NO, only methods in the interface are # included. # The default value is: NO. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base name of # the file that contains the anonymous namespace. By default anonymous namespace # are hidden. # The default value is: NO. EXTRACT_ANON_NSPACES = NO # If this flag is set to YES, the name of an unnamed parameter in a declaration # will be determined by the corresponding definition. By default unnamed # parameters remain unnamed in the output. # The default value is: YES. RESOLVE_UNNAMED_PARAMS = YES # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option # has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend # declarations. If set to NO, these declarations will be included in the # documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any # documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation that is typed after a # \internal command is included. If the tag is set to NO then the documentation # will be excluded. Set it to YES to include the internal documentation. # The default value is: NO. INTERNAL_DOCS = NO # With the correct setting of option CASE_SENSE_NAMES doxygen will better be # able to match the capabilities of the underlying filesystem. In case the # filesystem is case sensitive (i.e. it supports files in the same directory # whose names only differ in casing), the option must be set to YES to properly # deal with such files in case they appear in the input. For filesystems that # are not case sensitive the option should be set to NO to properly deal with # output files written for symbols that only differ in casing, such as for two # classes, one named CLASS and the other named Class, and to also support # references to files without having to specify the exact matching casing. On # Windows (including Cygwin) and MacOS, users should typically set this option # to NO, whereas on Linux or other Unix flavors it should typically be set to # YES. # The default value is: system dependent. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = NO # If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. HIDE_COMPOUND_REFERENCE= NO # If the SHOW_HEADERFILE tag is set to YES then the documentation for a class # will show which file needs to be included to use the class. # The default value is: YES. SHOW_HEADERFILE = YES # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. SHOW_INCLUDE_FILES = YES # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each # grouped member an include statement to the documentation, telling the reader # which file to include in order to use the member. # The default value is: NO. SHOW_GROUPED_MEMB_INC = NO # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the # documentation for inline members. # The default value is: YES. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. # The default value is: NO. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief # member documentation. # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting # detailed member documentation. # The default value is: NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by # fully-qualified names, including namespaces. If set to NO, the class list will # be sorted only by class name, not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the alphabetical # list. # The default value is: NO. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo # list. This list is created by putting \todo commands in the documentation. # The default value is: YES. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test # list. This list is created by putting \test commands in the documentation. # The default value is: YES. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug # list. This list is created by putting \bug commands in the documentation. # The default value is: YES. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) # the deprecated list. This list is created by putting \deprecated commands in # the documentation. # The default value is: YES. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional documentation # sections, marked by \if ... \endif and \cond # ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the # initial value of a variable or macro / define can have for it to appear in the # documentation. If the initializer consists of more lines than specified here # it will be hidden. Use a value of 0 to hide initializers completely. The # appearance of the value of individual variables and macros / defines can be # controlled using \showinitializer or \hideinitializer command in the # documentation regardless of this setting. # Minimum value: 0, maximum value: 10000, default value: 30. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at # the bottom of the documentation of classes and structs. If set to YES, the # list will mention the files that were used to generate the documentation. # The default value is: YES. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This # will remove the Files entry from the Quick Index and from the Folder Tree View # (if specified). # The default value is: YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces # page. This will remove the Namespaces entry from the Quick Index and from the # Folder Tree View (if specified). # The default value is: YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided # by doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. See also section "Changing the # layout of pages" for information. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool # to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. CITE_BIB_FILES = #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to # standard output by doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated to standard error (stderr) by doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. # The default value is: YES. WARNINGS = YES # If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = YES # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as documenting some parameters in # a documented function twice, or documenting parameters that don't exist or # using markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES # If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete # function parameter documentation. If set to NO, doxygen will accept that some # parameters have no documentation without warning. # The default value is: YES. WARN_IF_INCOMPLETE_DOC = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return # value. If set to NO, doxygen will only warn about wrong parameter # documentation, but not about the absence of documentation. If EXTRACT_ALL is # set to YES then this flag will automatically be disabled. See also # WARN_IF_INCOMPLETE_DOC # The default value is: NO. WARN_NO_PARAMDOC = NO # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when # a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS # then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but # at the end of the doxygen process doxygen will return with a non-zero status. # Possible values are: NO, YES and FAIL_ON_WARNINGS. # The default value is: NO. WARN_AS_ERROR = NO # The WARN_FORMAT tag determines the format of the warning messages that doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) # See also: WARN_LINE_FORMAT # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" # In the $text part of the WARN_FORMAT command it is possible that a reference # to a more specific place is given. To make it easier to jump to this place # (outside of doxygen) the user can define a custom "cut" / "paste" string. # Example: # WARN_LINE_FORMAT = "'vi $file +$line'" # See also: WARN_FORMAT # The default value is: at line $line of file $file. WARN_LINE_FORMAT = "at line $line of file $file" # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard # error (stderr). In case the file specified cannot be opened for writing the # warning and error messages are written to standard error. When as file - is # specified the warning and error messages are written to standard output # (stdout). WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag is used to specify the files and/or directories that contain # documented source files. You may enter file names like myfile.cpp or # directories like /usr/src/myproject. Separate the files or directories with # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. INPUT = @top_srcdir@/include/theora # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: # https://www.gnu.org/software/libiconv/) for the list of possible encodings. # The default value is: UTF-8. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # read by doxygen. # # Note the list of default checked file patterns might differ from the list of # default file extension mappings. # # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, # *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, # *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C # comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, # *.vhdl, *.ucf, *.qsf and *.ice. FILE_PATTERNS = # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. # The default value is: NO. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. # The default value is: NO. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # ANamespace::AClass, ANamespace::*Test # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or directories # that contain example code fragments that are included (see the \include # command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank all # files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude commands # irrespective of the value of the RECURSIVE tag. # The default value is: NO. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or directories # that contain images that are to be included in the documentation (see the # \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # # # # where is the value of the INPUT_FILTER tag, and is the # name of an input file. Doxygen will then use the output that the filter # program writes to standard output. If FILTER_PATTERNS is specified, this tag # will be ignored. # # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: pattern=filter # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will also be used to filter the input files that are used for # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). # The default value is: NO. FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and # it is also possible to disable source filtering for a specific pattern using # *.ext= (so without naming a filter). # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will be # generated. Documented entities will be cross-referenced with these sources. # # Note: To get rid of all source code in the generated output, make sure that # also VERBATIM_HEADERS is set to NO. # The default value is: NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body of functions, # classes and enums directly into the documentation. # The default value is: NO. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES then for each documented # entity all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES then for each documented function # all documented entities called/used by that function will be listed. # The default value is: NO. REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set # to YES then the hyperlinks from functions in REFERENCES_RELATION and # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will # link to the documentation. # The default value is: YES. REFERENCES_LINK_SOURCE = YES # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the # source code will show a tooltip with additional information such as prototype, # brief description and links to the definition and documentation. Since this # will make the HTML file larger and loading of large files a bit slower, you # can opt to disable this feature. # The default value is: YES. # This tag requires that the tag SOURCE_BROWSER is set to YES. SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will # point to the HTML generated by the htags(1) tool instead of doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see https://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: # - Install the latest version of global # - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # # The result: instead of the source browser generated by doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. # The default value is: YES. VERBATIM_HEADERS = YES # If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the # clang parser (see: # https://clang.llvm.org/) for more accurate parsing at the cost of reduced # performance. This can be particularly helpful with template rich C++ code for # which doxygen's built-in parser lacks the necessary type information. # Note: The availability of this option depends on whether or not doxygen was # generated with the -Duse_libclang=ON option for CMake. # The default value is: NO. CLANG_ASSISTED_PARSING = NO # If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS # tag is set to YES then doxygen will add the directory of each input to the # include path. # The default value is: YES. # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. CLANG_ADD_INC_PATHS = YES # If clang assisted parsing is enabled you can provide the compiler with command # line options that you would normally use when invoking the compiler. Note that # the include paths will already be set by doxygen for the files and directories # specified with INPUT and INCLUDE_PATH. # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. CLANG_OPTIONS = # If clang assisted parsing is enabled you can provide the clang parser with the # path to the directory containing a file called compile_commands.json. This # file is the compilation database (see: # https://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the # options used when the source files were built. This is equivalent to # specifying the -p option to a clang tool, such as clang-check. These options # will then be passed to the parser. Any options specified with CLANG_OPTIONS # will be added as well. # Note: The availability of this option depends on whether or not doxygen was # generated with the -Duse_libclang=ON option for CMake. CLANG_DATABASE_PATH = #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all # compounds will be generated. Enable this if the project contains a lot of # classes, structs, unions or interfaces. # The default value is: YES. ALPHABETICAL_INDEX = NO # In case all classes in a project start with a common prefix, all classes will # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag # can be used to specify a prefix (or a list of prefixes) that should be ignored # while generating the index headers. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of # it. # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). # The default value is: .html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for # each generated HTML page. If the tag is left blank doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets # that doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" # for information on how to generate the default header that doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the # default header when upgrading to a newer version of doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of # the HTML output. If left blank doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style # sheet that doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets # created by doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the # list). For an example see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that the # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to # this color. Hue is specified as an angle on a color-wheel, see # https://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use gray-scales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 # gradually make the output lighter, whereas values above 100 make the output # darker. The value divided by 100 is the actual gamma applied, so 80 represents # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not # change the gamma. # Minimum value: 40, maximum value: 240, default value: 80. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting this # to YES can help to show when doxygen was last run and thus if the # documentation is up to date. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML # documentation will contain a main index with vertical navigation menus that # are dynamically created via JavaScript. If disabled, the navigation index will # consists of multiple levels of tabs that are statically embedded in every HTML # page. Disable this option to support browsers that do not have JavaScript, # like the Qt help browser. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_MENUS = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = NO # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to # such a level that at most the specified number of entries are visible (unless # a fully collapsed tree already exceeds this amount). So setting the number of # entries 1 will produce a full collapsed tree by default. 0 is a special value # representing an infinite number of entries and will result in a full expanded # tree by default. # Minimum value: 0, maximum value: 9999, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: # https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To # create a documentation set, doxygen will generate a Makefile in the HTML # output directory. Running make will produce the docset in that directory and # running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at # startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy # genXcode/_index.html for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO # This tag determines the name of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # The default value is: Doxygen generated docs. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Xiph.org API docs (Doxygen)" # This tag determines the URL of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDURL = # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_BUNDLE_ID = org.xiph.@PACKAGE@ # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. # The default value is: org.doxygen.Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_ID = org.xiph.Doxygen # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. # The default value is: Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_NAME = Xiph.Org # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # on Windows. In the beginning of 2021 Microsoft took the original page, with # a.o. the download links, offline the HTML help workshop was already many years # in maintenance mode). You can download the HTML help workshop from the web # archives at Installation executable (see: # https://web.archive.org/web/20160201063255/http://download.microsoft.com/ # download/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for # words in the documentation. The HTML workshop also contains a viewer for # compressed HTML files. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO # The CHM_FILE tag can be used to specify the file name of the resulting .chm # file. You can add a path in front of the file if the result should not be # written to the html output directory. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, # doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = # The GENERATE_CHI flag controls if a separate .chi index file is generated # (YES) or that it should be included in the main .chm file (NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO # The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) # and project file content. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = # The BINARY_TOC flag controls whether a binary table of contents is generated # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it # enables the Previous and Next buttons. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members to # the table of contents of the HTML help documentation and to the tree view. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help # (.qch) of the generated HTML documentation. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify # the file name of the resulting .qch file. The path specified is relative to # the HTML output folder. # This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace # (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_NAMESPACE = org.xiph.@PACKAGE@ # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual # Folders (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom # Filters (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom # Filters (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location (absolute path # including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to # run qhelpgenerator on the generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To # install this plugin and make it available under the help contents menu in # Eclipse, the contents of the directory containing the HTML and XML files needs # to be copied into the plugins directory of eclipse. The name of the directory # within the plugins directory should be the same as the ECLIPSE_DOC_ID value. # After copying Eclipse needs to be restarted before the help appears. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO # A unique identifier for the Eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have this # name. Each documentation set should have its own identifier. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. ECLIPSE_DOC_ID = org.xiph.@PACKAGE@ # If you want full control over the layout of the generated HTML pages it might # be necessary to disable the index and replace it with your own. The # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top # of each HTML page. A value of NO enables the index and the value YES disables # it. Since the tabs in the index contain the same information as the navigation # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. If the tag # value is set to YES, a side panel will be generated containing a tree-like # index structure (just like the one that is generated for HTML Help). For this # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can # further fine tune the look of the index (see "Fine-tuning the output"). As an # example, the default style sheet generated by doxygen has an example that # shows how to put an image at the root of the tree instead of the PROJECT_NAME. # Since the tree basically has the same information as the tab index, you could # consider setting DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = NO # When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the # FULL_SIDEBAR option determines if the side bar is limited to only the treeview # area (value NO) or if it should extend to the full height of the window (value # YES). Setting this to YES gives a layout similar to # https://docs.readthedocs.io with more room for contents, but less room for the # project logo, title, and description. If either GENERATE_TREEVIEW or # DISABLE_INDEX is set to NO, this option has no effect. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. FULL_SIDEBAR = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. # Minimum value: 0, maximum value: 20, default value: 4. # This tag requires that the tag GENERATE_HTML is set to YES. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. # This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 250 # If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO # If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email # addresses. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. OBFUSCATE_EMAILS = YES # If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg # tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see # https://inkscape.org) to generate formulas as SVG images instead of PNGs for # the HTML output. These images will generally look nicer at scaled resolutions. # Possible values are: png (the default) and svg (looks nicer but requires the # pdf2svg or inkscape tool). # The default value is: png. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FORMULA_FORMAT = png # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful # doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANSPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are not # supported properly for IE 6.0, but are supported on all modern browsers. # # Note that when changing this option you need to delete any form_*.png files in # the HTML output directory before the changes have effect. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_TRANSPARENT = YES # The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands # to create new LaTeX commands to be used in formulas as building blocks. See # the section "Including formulas" for details. FORMULA_MACROFILE = # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # https://www.mathjax.org) which uses client side JavaScript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path # to it using the MATHJAX_RELPATH option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. USE_MATHJAX = NO # With MATHJAX_VERSION it is possible to specify the MathJax version to be used. # Note that the different versions of MathJax have different requirements with # regards to the different settings, so it is possible that also other MathJax # settings have to be changed when switching between the different MathJax # versions. # Possible values are: MathJax_2 and MathJax_3. # The default value is: MathJax_2. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_VERSION = MathJax_2 # When MathJax is enabled you can set the default output format to be used for # the MathJax output. For more details about the output format see MathJax # version 2 (see: # https://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 # (see: # https://docs.mathjax.org/en/latest/web/components/output.html). # Possible values are: HTML-CSS (which is slower, but has the best # compatibility. This is the name for Mathjax version 2, for MathJax version 3 # this will be translated into chtml), NativeMML (i.e. MathML. Only supported # for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This # is the name for Mathjax version 3, for MathJax version 2 this will be # translated into HTML-CSS) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the HTML # output directory using the MATHJAX_RELPATH option. The destination directory # should contain the MathJax.js script. For instance, if the mathjax directory # is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of # MathJax from https://www.mathjax.org before deployment. The default value is: # - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 # - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example # for MathJax version 2 (see # https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols # For example for MathJax version 3 (see # https://docs.mathjax.org/en/latest/input/tex/extensions/index.html): # MATHJAX_EXTENSIONS = ams # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: # https://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box for # the HTML output. The underlying search engine uses javascript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. # For large projects the javascript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically # , /