From 82376d4fc4455047ceb1a724f69c2674a6a1fd7b Mon Sep 17 00:00:00 2001 From: Landon Curt Noll Date: Tue, 21 Mar 2023 20:56:17 -0700 Subject: [PATCH] improve 2004/hibachi Instead of hiding the source code in an opaque compressed tarball, we copy a src tree into a build tree. Improved Makefile, .gitignore and README.md as well. --- 2004/hibachi/.gitignore | 2 +- 2004/hibachi/Makefile | 570 +- 2004/hibachi/README.md | 208 +- 2004/hibachi/hibachi.tar.gz | Bin 427491 -> 0 bytes 2004/hibachi/src/configure | 4874 ++++++++ 2004/hibachi/src/configure.in | 210 + 2004/hibachi/src/hibachi-start.sh | 182 + 2004/hibachi/src/hibachi-start.sh.in | 188 + 2004/hibachi/src/hibachi.c | 155 + .../src/localhost/CHANGES-OBFUSCATED.TXT | 16 + .../hibachi/src/localhost/CHANGES-SPOILER.TXT | 63 + .../hibachi/src/localhost/Img/cygwin-icon.gif | Bin 0 -> 132 bytes 2004/hibachi/src/localhost/Img/freebsd.gif | Bin 0 -> 2384 bytes .../Img/hibachi-256-oc-nc-300x150.gif | Bin 0 -> 227717 bytes .../Img/hot-coal-edge-110-indent.png | Bin 0 -> 6547 bytes .../hibachi/src/localhost/Img/logosml.256.png | Bin 0 -> 2419 bytes .../localhost/Img/php-small-trans-light.gif | Bin 0 -> 1397 bytes .../Img/powered-by-hibachi-150x75.png | Bin 0 -> 5978 bytes .../localhost/Img/rectangle_power_perl.gif | Bin 0 -> 909 bytes 2004/hibachi/src/localhost/Img/sun_logo.gif | Bin 0 -> 1074 bytes 2004/hibachi/src/localhost/Img/win.gif | Bin 0 -> 1387 bytes 2004/hibachi/src/localhost/index.html | 432 + .../src/localhost/reference/rfc2616.html | 9754 +++++++++++++++++ 2004/hibachi/src/localhost/style.css | 110 + .../src/localhost/test/perl/index.html | 66 + .../src/localhost/test/perl/yahoo-ticker.pl | 77 + .../localhost/test/perl/yahoo-ticker.pl.in | 77 + 2004/hibachi/src/localhost/test/php/Date.php | 557 + 2004/hibachi/src/localhost/test/php/index.php | 106 + .../src/localhost/test/php/index_php.in | 106 + 2004/hibachi/src/localhost/test/php/info.php | 15 + .../src/localhost/test/php/info.php.in | 15 + .../src/localhost/test/php/sendform.html | 70 + .../src/localhost/test/php/sendform.php | 81 + .../src/localhost/test/php/sendform.php.in | 81 + 2004/hibachi/src/localhost/test/ruby/LUHN.rb | 150 + 2004/hibachi/src/localhost/test/ruby/index.rb | 80 + .../src/localhost/test/ruby/index_rb.in | 80 + 2004/hibachi/src/localhost/test/shell/dump.sh | 30 + .../hibachi/src/localhost/test/shell/test0.sh | 108 + .../hibachi/src/localhost/test/shell/test1.sh | 84 + .../hibachi/src/localhost/test/shell/test2.sh | 83 + 2004/hibachi/src/makefile.in | 57 + 43 files changed, 18287 insertions(+), 400 deletions(-) delete mode 100644 2004/hibachi/hibachi.tar.gz create mode 100755 2004/hibachi/src/configure create mode 100644 2004/hibachi/src/configure.in create mode 100755 2004/hibachi/src/hibachi-start.sh create mode 100644 2004/hibachi/src/hibachi-start.sh.in create mode 100644 2004/hibachi/src/hibachi.c create mode 100644 2004/hibachi/src/localhost/CHANGES-OBFUSCATED.TXT create mode 100644 2004/hibachi/src/localhost/CHANGES-SPOILER.TXT create mode 100644 2004/hibachi/src/localhost/Img/cygwin-icon.gif create mode 100644 2004/hibachi/src/localhost/Img/freebsd.gif create mode 100644 2004/hibachi/src/localhost/Img/hibachi-256-oc-nc-300x150.gif create mode 100644 2004/hibachi/src/localhost/Img/hot-coal-edge-110-indent.png create mode 100644 2004/hibachi/src/localhost/Img/logosml.256.png create mode 100644 2004/hibachi/src/localhost/Img/php-small-trans-light.gif create mode 100644 2004/hibachi/src/localhost/Img/powered-by-hibachi-150x75.png create mode 100644 2004/hibachi/src/localhost/Img/rectangle_power_perl.gif create mode 100644 2004/hibachi/src/localhost/Img/sun_logo.gif create mode 100644 2004/hibachi/src/localhost/Img/win.gif create mode 100644 2004/hibachi/src/localhost/index.html create mode 100644 2004/hibachi/src/localhost/reference/rfc2616.html create mode 100644 2004/hibachi/src/localhost/style.css create mode 100644 2004/hibachi/src/localhost/test/perl/index.html create mode 100755 2004/hibachi/src/localhost/test/perl/yahoo-ticker.pl create mode 100644 2004/hibachi/src/localhost/test/perl/yahoo-ticker.pl.in create mode 100644 2004/hibachi/src/localhost/test/php/Date.php create mode 100755 2004/hibachi/src/localhost/test/php/index.php create mode 100644 2004/hibachi/src/localhost/test/php/index_php.in create mode 100755 2004/hibachi/src/localhost/test/php/info.php create mode 100644 2004/hibachi/src/localhost/test/php/info.php.in create mode 100644 2004/hibachi/src/localhost/test/php/sendform.html create mode 100755 2004/hibachi/src/localhost/test/php/sendform.php create mode 100644 2004/hibachi/src/localhost/test/php/sendform.php.in create mode 100644 2004/hibachi/src/localhost/test/ruby/LUHN.rb create mode 100755 2004/hibachi/src/localhost/test/ruby/index.rb create mode 100644 2004/hibachi/src/localhost/test/ruby/index_rb.in create mode 100755 2004/hibachi/src/localhost/test/shell/dump.sh create mode 100755 2004/hibachi/src/localhost/test/shell/test0.sh create mode 100755 2004/hibachi/src/localhost/test/shell/test1.sh create mode 100755 2004/hibachi/src/localhost/test/shell/test2.sh create mode 100644 2004/hibachi/src/makefile.in diff --git a/2004/hibachi/.gitignore b/2004/hibachi/.gitignore index 6ab1a25e1..378eac25d 100644 --- a/2004/hibachi/.gitignore +++ b/2004/hibachi/.gitignore @@ -1 +1 @@ -hibachi +build diff --git a/2004/hibachi/Makefile b/2004/hibachi/Makefile index 84ef098e4..1be03d962 100644 --- a/2004/hibachi/Makefile +++ b/2004/hibachi/Makefile @@ -1,362 +1,332 @@ -#!/bin/make +#!/usr/bin/env make # -# 2004 makefile +# IOCCC 2004 winning entry - hibachi + +################################################################################ # -# Copyright (C) 2004, Landon Curt Noll, Simon Cooper, Peter Seebach -# and Leonid A. Broukhis. All Rights Reserved. Permission for personal, -# educational or non-profit use is granted provided this copyright and -# notice are included in its entirety and remains unaltered. All other -# uses must receive prior permission from the contest judges. +# Regarding individual entries: +# +# IOCCC winning entry code may not work on your system. Even with standards, +# conditions and build environments change, especially when it comes to more +# extreme code such you might find in an IOCCC winner. Moreover, what was +# allowed and liked in one IOCCC contest may no longer be liked/allowed in +# later IOCCC years. +# +# Corrections on winning author and fixing typos in remarks are VERY WELCOME. +# +# GitHub pull requests are welcome: +# +# If you have a patch that might make running an entry work in modern Unix-like +# environments, please create a GitHub pull request for the IOCCC judges to +# consider. +# +# Suggestions and corrections regarding Makefiles, winning author information, +# fixing typos in remarks, and code patches are welcome via opening a GitHub +# issue or better yet, by creating a GitHub pull request for the IOCCC judges +# to consider. To form a GitHub issue or GitHub pull, please visit: +# +# https://github.com/ioccc-src/winner +# +################################################################################ + +# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under: +# +# Creative Commons Attribution-ShareAlike 3.0 Unported License. +# +# See: http://creativecommons.org/licenses/by-sa/3.0/ -# tool locations +############################# +# shell used by this Makefile +############################# # -SHELL= /bin/sh -CP= cp -CPP= cpp -GUNZIP= gunzip -LD= ld -MAKE= make -RM= rm -SED= sed -TAR= tar -TRUE= true +SHELL= bash - -# Special flags for the gavin entry +####################### +# common tool locations +####################### # -# FYI: Older versions of GCC have a bug in -O2 optimization, hence -O1 -# -GAVIN_OPT= -O1 -GAVIN_FLAGS=\ - '-DY(m)=*((int*)(m))'\ - '-DE(f,a,b,c)=((G((*)))(f))(a,b,c)'\ - '-DM=for(D=0;D<786432;D++)'\ - '-DZ=int i=0,j=0,h,n,p=393728,s=26739,C,D'\ - '-DV=0x90200'\ - '-DK=0'\ - '-DR=while((C=E(V-8,100,0,0))&3&&(D=E(V-8,96,0,0))|3){'\ - '-DL(c,d)=E(V+8,100,c,0);R}E(V+8,96,d,0);R}' - +include ../../var.mk # Set X11_LIBDIR to the directory where the X11 library resides # -X11_LIBDIR= /usr/X11R6/lib +#X11_LIBDIR= /usr/X11R6/lib +#X11_LIBDIR= /usr/X11/lib +X11_LIBDIR= /opt/X11/lib -#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2 +# Set X11_INCLUDEDIR to the directory where the X11 include files reside +# +#X11_INCDIR= /usr/X11R6/include +#X11_INCDIR= /usr/X11/include +X11_INCDIR= /opt/X11/include -# optimization +# Common C compiler warnings to silence +# +#CSILENCE= +CSILENCE= -Wno-pointer-sign -Wno-unused-parameter + +# Common C compiler warning flags +# +#CWARN= ${CSILENCE} +#CWARN= -Wall ${CSILENCE} +#CWARN= -Wall -Wextra ${CSILENCE} +CWARN= -Wall -Wextra -pedantic ${CSILENCE} + +# Compiler standard +# +#CSTD= +#CSTD= -ansi +CSTD= -std=gnu99 + +# Compiler bit architecture +# +# Some entries require 32-bitness: +# ARCH= -m32 +# +# Some entries require 64-bitness: +# ARCH= -m64 +# +# By default we assume nothing: +# +ARCH= + +# Defines that are needed to compile +# +CDEFINE= +#CDEFINE= -DIOCCC + +# Include files that are needed to compile +# +CINCLUDE= +#CINCLUDE= -include stdlib.h +#CINCLUDE= -include stdio.h +#CINCLUDE= -include stdlib.h -include stdio.h +#CINCLUDE= -I ${X11_INCDIR} -I ${X11_INCDIR}/X11 +#CINCLUDE= `${SDL2_CONFIG} --cflags` + +# Optimization # # Most compiles will safely use -O2. Some can use only -O1 or -O. -# A few compilers have broken optimizers and thus you may -# not want anything. +# A few compilers have broken optimizers or this entry make break +# under those buggy optimizers and thus you may not want anything. +# Reasonable compilers will allow for -O3. # #OPT= #OPT= -O #OPT= -O1 -OPT= -O2 +#OPT= -O2 +OPT= -O3 +# Default flags for ANSI C compilation +# +CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT} -# flags for ANSI compiles +# Libraries needed to build # -# NOTE: Some ANSI compilers make use of -Xa to turn on ANSI mode, -# others such as gcc may want -ansi, others (Compaq Tru64 Unix) -# want -std1, and others may want nothing at all. -# Adjust the CFLAGS line as needed. -# -# NOTE: Some compilers cannot optimize, or optimize some entries -# incorrectly. You might want to turn on -O to see if your -# compiler can handle them. -# -# -#CFLAGS= -Xa ${OPT} -#CFLAGS= -std1 $(OPT) -CFLAGS= -ansi ${OPT} +LIBS= +#LIBS= -lm +#LIBS= -L ${X11_LIBDIR} -lX11 +#LIBS= `${SDL2_CONFIG} --libs` - -# ANSI compiler -# -# Set CC to the name of your ANSI compiler. -# -# Some entries seem to need gcc. If you have gcc, set -# both CC and MAY_NEED_GCC to gcc. -# -# If you do not have gcc, set CC to the name of your ANSI compiler, and -# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just : -# to disable such programs. +# C compiler to use # CC= cc -MAY_NEED_GCC= gcc +#CC=clang +#CC=gcc - -# 2004 winners +# Compiler add-ons or replacements for clang only # -WINNERS= anonymous arachnid burley gavare gavin hibachi hoyle jdalbec \ - kopczynski newbern omoikane schnitzi sds vik1 vik2 -CLEAN= anonymous_clean arachnid_clean burley_clean gavare_clean gavin_clean \ - hibachi_clean hoyle_clean jdalbec_clean kopczynski_clean \ - newbern_clean omoikane_clean schnitzi_clean sds_clean vik1_clean \ - vik2_clean -CLOBBER= anonymous_clobber arachnid_clobber burley_clobber gavare_clobber \ - gavin_clobber hibachi_clobber hoyle_clobber jdalbec_clobber \ - kopczynski_clobber newbern_clobber omoikane_clobber schnitzi_clobber \ - sds_clobber vik1_clobber vik2_clobber -ALT_NAMES= hoyle.orig kopczynski.orig -DATA_FILES= arachnid_files gavin_files hibachi_files kopczynski_files \ - newbern_files omoikane_files schnitzi_files - - -# default build +ifeq ($(CC),clang) # -all: ${WINNERS} - - -# Best use of "Precious" Lines +#CSILENCE+= # -anonymous: anonymous.c - ${CC} anonymous.c -o anonymous - -anonymous_clean: - ${RM} -f anonymous.o - -anonymous_clobber: anonymous_clean - ${RM} -f anonymous - - -# Best use of Vision +CWARN+= -Weverything # -arachnid: arachnid.c - ${CC} -o arachnid -DL=LINES -DS=COLS \ - -DW=mvwaddch\(w,v,u,acs_map\[l\[m\[u arachnid.c -lncurses +endif -arachnid_clean: - ${RM} -f arachnid.o - -arachnid_clobber: arachnid_clean - ${RM} -f arachnid - -arachnid_files: arachnid.info - - -# Best Calculated Risk +# Specific add-ons or replacements for gcc only # -burley: burley.c - ${CC} -ansi burley.c -o burley - -burley_clean: - ${RM} -f burley.o - -burley_clobber: burley_clean - ${RM} -f burley - - -# Best Use of Light and Spheres +ifeq ($(CC),gcc) # -gavare: gavare.c - ${CC} -O3 gavare.c -o gavare - -gavare_clean: - ${RM} -f gavare.o - -gavare_clobber: gavare_clean - ${RM} -f gavare - - -# Best of Show +#CSILENCE+= # -gavin: gavin.c - ${CC} ${GAVIN_OPT} -o gavin ${GAVIN_FLAGS} gavin.c - ${RM} -f kernel - ./gavin > kernel - ${CC} ${GAVIN_OPT} -c ${GAVIN_FLAGS} -DB=_start '-Dputchar(a)=' gavin.c - ${RM} -f sh - ${LD} -s -o sh gavin.o - ${RM} -f vi - ${CP} sh vi - ${RM} -f fs.tar - ${TAR} -cvf fs.tar sh vi gavin.c gavin.hint prim - -gavin_clean: - ${RM} -f sh vi kernel gavin.o - -gavin_clobber: gavin_clean - ${RM} -f gavin fs.tar - -gavin_files: boot.b lilo.conf prim gavin_install.txt - - -# Best Abuse of the Guidelines +#CWARN+= # -hibachi: hibachi.tar.gz - ${RM} -f hibachi.tar - ${GUNZIP} < hibachi.tar.gz > hibachi.tar - ${TAR} -xvf hibachi.tar - ${RM} -f hibachi.tar - (cd hibachi && ${SHELL} ./configure) - ([ -f hibachi/makefile ] && cd hibachi && $(MAKE) -f makefile || true) - -hibachi_clean: - ${RM} -f hibachi/hibachi.o hibachi.tar - -hibachi_clobber: hibachi_clean - ${RM} -rf hibachi - -hibachi_files: hibachi.tar.gz +endif -# Most Functional Output +############################## +# Special flags for this entry +############################## # -hoyle: hoyle.c - ${CC} hoyle.c -o hoyle -lm - -hoyle.orig: hoyle.orig.c - ${CC} hoyle.orig.c -o hoyle.orig -lm - -hoyle_clean: - ${RM} -f hoyle.o hoyle.orig.o - -hoyle_clobber: hoyle_clean - ${RM} -f hoyle hoyle.orig - - -# Best Abuse of the Periodic Table +ENTRY= hibachi +PROG= ${ENTRY} # -jdalbec: jdalbec.c - @${RM} -f jdalbec2.c - -${CC} -E jdalbec.c > jdalbec2.c - @${RM} -f jdalbec3.c - ${SED} -e 's/ (/(/g' < jdalbec2.c > jdalbec3.c - ${CC} -ansi jdalbec3.c -o jdalbec - -jdalbec_clean: - ${RM} -f jdalbec2.c jdalbec3.c jdalbec.o - -jdalbec_clobber: jdalbec_clean - ${RM} -f jdalbec - - -# Best one-liner +OBJ= ${PROG}.o +DATA= +TARGET= build/${PROG} # -kopczynski: kopczynski.c - ${CC} -Dif=while kopczynski.c -o kopczynski - -kopczynski.orig: kopczynski.orig.c - ${CC} -Dif=while kopczynski.orig.c -o kopczynski.orig - -kopczynski_clean: - ${RM} -f kopczynski.o kopczynski.orig.o - -kopczynski_clobber: kopczynski_clean - ${RM} -f kopczynski kopczynski.orig - -kopczynski_files: kopczynski-10 kopczynski-11 kopczynski-8a kopczynski-8b \ - kopczynski-8c kopczynski-9 +ALT_OBJ= +ALT_TARGET= -# Best Font Engine +################# +# build the entry +################# # -newbern: newbern.c - ${CC} newbern.c -o newbern +all: data ${TARGET} + @${TRUE} -newbern_clean: - ${RM} -f newbern.o +.PHONY: all alt data everything clean clobber install \ + love haste waste maker easter_egg sandwich \ + supernova deep_magic magic charon pluto -newbern_clobber: newbern_clean - ${RM} -f newbern +build/${PROG}: src + ${RM} -rf build + ${CP} -v -r src build + cd build; CFLAGS="${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}" \ + LDFLAGS="${LIBS}" \ + CC="${CC}" \ + ${SHELL} ./configure + cd build; ${MAKE} -newbern_files: newbern.dat - - -# Best Utility +# alternative executable # -omoikane: omoikane.c - ${CC} -O omoikane.c -o omoikane +alt: data ${ALT_TARGET} + @${TRUE} -omoikane_clean: - ${RM} -f omoikane.o - -omoikane_clobber: omoikane_clean - ${RM} -f omoikane - -omoikane_files: omoikane.info - - -# Best Non-Use of Curses +# data files # -schnitzi: schnitzi.c - ${CC} schnitzi.c -o schnitzi +data: ${DATA} + @${TRUE} -schnitzi_clean: - ${RM} -f schnitzi.o - -schnitzi_clobber: schnitzi_clean - ${RM} -f schnitzi - -schnitzi_files: schnitzi.inp0 schnitzi.inp1 - - -# Best Abuse of Indentation +# both all and alt # -sds: sds.c - ${CC} -o sds sds.c - -sds_clean: - ${RM} -f sds_encoder.c sds_encoder.o sds.o - -sds_clobber: sds_clean - ${RM} -f sds sds_encoder - - -# Best X11 Game -# -vik1: vik1.c - ${CC} -ansi -O2 -o vik1 vik1.c -L${X11_LIBDIR} -lX11 - -vik1_clean: - ${RM} -f vik1.o - -vik1_clobber: vik1_clean - ${RM} -f vik1 - - -# Best Abuse of CPP -# -vik2: vik2.c - @${RM} -f vik2_1.c - ${CC} -E '-DSTOP=_5' '-DFNAME="vik2_1.c"' vik2.c > vik2_1.c - @${RM} -f vik2_2.c - ${CC} -E vik2_1.c > vik2_2.c - ${CC} -O vik2_2.c -o vik2 - -vik2_clean: - ${RM} -f vik2_1.c vik2_2.c vik2.o - -vik2_clobber: vik2_clean - ${RM} -f vik2 +everything: all alt +############### # utility rules +############### # -everything: ${WINNERS} ${ALT_NAMES} ${DATA_FILES} +clean: + ${RM} -f ${OBJ} ${ALT_OBJ} + @-if [ -f indent.c ]; then \ + echo ${RM} -f indent.c; \ + ${RM} -f indent.c; \ + fi +clobber: clean + ${RM} -f ${TARGET} ${ALT_TARGET} + ${RM} -rf build + @-if [ -e sandwich ]; then \ + ${RM} -f sandwich; \ + echo 'ate sandwich'; \ + fi + +install: + @echo "Dr. Spock says that is not logical!" + @${TRUE} + +# you may be able to misunderstand the source by reading indent.c +# +indent.c: ${PROG}.c + @if which "${GINDENT}" >/dev/null 2>&1; then \ + echo ${RM} -f $@; \ + ${RM} -f $@; \ + echo "${GINDENT} < $< > $@"; \ + ${GINDENT} < $< > $@; \ + elif which "${INDENT}" >/dev/null 2>&1; then \ + echo ${RM} -f $@; \ + ${RM} -f $@; \ + echo "${INDENT} < $< > $@"; \ + ${INDENT} < $< > $@; \ + else \ + echo "no intent tool found, ident $< yourself, sorry"; \ + echo "exit 1"; \ + exit 1; \ + fi + + +################## +# 133t hacker rulz +################## +# love: @echo 'not war?' + @${TRUE} haste: $(MAKE) waste - -waste: - @echo 'waste' - -clean: ${CLEAN} - ${RM} -f a.out core - -clobber: ${CLOBBER} - ${RM} -f ${WINNERS} - ${RM} -f ${ALT_NAMES} - -nuke: clobber @${TRUE} -install: all - ${CAT} ${WINNERS} ${ALT_NAMES} > /dev/null +waste: + @echo 'haste' + @${TRUE} + +maker: + @echo 'Participate in a maker faire' + @${TRUE} + +easter_egg: + @echo "you expected to often misunderstand this $${RANDOM} magic" + @echo "chongo '' /\\oo/\\" + @echo "Eggy" + +sandwich: easter_egg + @if [ `id -u` -eq 0 ]; then \ + echo 'Okay.'; \ + echo "$${RANDOM}`date +%s`$${RANDOM}" > $@; \ + else \ + echo 'What? Make it yourself.'; \ + exit 1; \ + fi + +# Understand the history of the Homebrew Computer Club +# as well as the West Coast Computer Faire and +# you might be confused different. :-) +# +supernova: sandwich + @-if [ -r .code_anal ]; then \ + ${RM} -f .code_anal_v6; \ + else \ + echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \ + fi + @echo "A $@ helps ${MAKE} the elements that help form planets" + @${TRUE} + +deep_magic: supernova + @-if [ -r .code_anal ]; then \ + ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 \ + --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + fi + @${TRUE} + +magic: deep_magic + @-if [ -r .code_anal ]; then \ + ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "If you don't eat yer meat, you can't have any pudding!"; \ + echo "How can you have any pudding if you don't eat yer meat?!"; \ + fi + @${TRUE} + +# The IOCCC resident astronomer states +# +charon: magic + @echo "$@ is a dwarf planet" + @echo "dwarf is a type of planet" + @echo "therefore IAU, $@ is a planet" + +pluto: charon + ${MAKE} charon + @echo "$@ is a dwarf planet" + @echo "dwarf is a type of planet" + @echo "therefore, $@ is a planet" + @echo "having lots of planets is good feature because supernovae can help ${MAKE} a lot of them" diff --git a/2004/hibachi/README.md b/2004/hibachi/README.md index f9b593ce5..d9e41ecbc 100644 --- a/2004/hibachi/README.md +++ b/2004/hibachi/README.md @@ -1,4 +1,4 @@ -Best Abuse of the Guidelines: +# Best Abuse of the Guidelines: Anthony Howe Snert @@ -8,162 +8,172 @@ Best Abuse of the Guidelines: http://www.snert.com/ +# To build: -Judges' Comments: +```sh +make +``` - To build (simple: Cygwin, FreeBSD, Linux, Mac OS X): +### To run: - tar -zxf hibachi.tgz - cd hibachi - ./configure - make +```sh +./hibachi-start.sh +``` - Try: +### Try: - cd hibachi - ./hibachi-start.sh +```sh +./hibachi-start.sh +``` - Then use your web browser to visit http://localhost:8008/ +Then use your web browser to visit http://localhost:8008/ - This entry violates the guidelines in so many ways! We are not - exactly sure how many org's will be upset with this entry, but we - are considering starting an IOCCC standards body just to reign in - the likes Mr Howe. +## Judges' comments: - This entry also has the dubious honour of being the only one to have - been submitted with its own ./configure script. +This entry violates the guidelines in so many ways! We are not +exactly sure how many org's will be upset with this entry, but we +are considering starting an IOCCC standards body just to reign in +the likes Mr Howe. +This entry also has the dubious honour of being the only one to have +been submitted with its own ./configure script. -Selected Author's Comments: +## Author's comments: - README.TXT Feb 2004 - ========== +### README.TXT (Feb 2004) - Hibachi is a simple, small, and (probably) very secure web server. +Hibachi is a simple, small, and (probably) very secure web server. - There is a `hibachi.tgz' file that unpacks several support - files and a sub-directory tree containing the documentation and - examples. It can be viewed by: +There is a `hibachi.tgz' file that unpacks several support +files and a sub-directory tree containing the documentation and +examples. It can be viewed by: - tar -zxf hibachi.tgz - lynx hibachi/localhost/index.html + tar -zxf hibachi.tgz + lynx hibachi/localhost/index.html - Or once Hibachi is running, use a web browser, preferably one that - supports images and JavaScript, to view the documentation and try - some of the CGI examples: +Or once Hibachi is running, use a web browser, preferably one that +supports images and JavaScript, to view the documentation and try +some of the CGI examples: - http://localhost:8008/ + http://localhost:8008/ +### Building - Building - -------- +To build just the executable: - To build just the executable: +For Cygwin, FreeBSD, Linux (newer), Mac OS X: - # Cygwin, FreeBSD, Linux (newer), Mac OS X - gcc -o hibachi hibachi.c +```sh +gcc -o hibachi hibachi.c +``` - # Linux (older) - gcc -DSHUT_WR=1 -o hibachi hibachi.c +For Linux (older): - # SunOS - gcc -o hibachi hibachi.c -lnsl -lsocket +```sh +gcc -DSHUT_WR=1 -o hibachi hibachi.c +`` - Since some systems place socket and network functions into other - libraries, a GNU autoconf ./configure script has been provided to - figure out the necessary link libraries, to verify all the - necessary headers and functions are present, and setup the #! - paths for the CGI examples. In which case the preferred build - commands are: +For SunOS: - ./configure [--enable-port=number] - make +```sh +gcc -o hibachi hibachi.c -lnsl -lsocket +``` - To start the server on the default port (8008): +Since some systems place socket and network functions into other +libraries, a GNU autoconf ./configure script has been provided to +figure out the necessary link libraries, to verify all the +necessary headers and functions are present, and setup the #! +paths for the CGI examples. In which case the preferred build +commands are: - ./hibachi-start.sh & +``` +./configure [--enable-port=number] +make +``` - To test the server: +To start the server on the default port (8008): - lynx http://localhost:8008/ +```sh +./hibachi-start.sh & +``` - To stop the server: +To test the server: - kill %1 +```sh +lynx http://localhost:8008/ +``` +To stop the server: - Features - -------- +```sh +kill %1 +``` - o Supports virtual hosts. +### Features - o Supports all MIME types. +* Supports virtual hosts. - o Supports Common Gateway Interface (CGI) scripts and programs. +* Supports all MIME types. - o Supports multiple index.* file types: +* Supports Common Gateway Interface (CGI) scripts and programs. - index.htm, index.html, index.php, index.pl, - index.sh, index.rb, index.py +* Supports multiple index.* file types: - o Supports subset of RFC 2616 HTTP/1.1 methods: + index.htm, index.html, index.php, index.pl, + index.sh, index.rb, index.py - GET, HEAD, and POST +* Supports subset of RFC 2616 HTTP/1.1 methods: - o Simple & straight forward configuration using environment variables. + GET, HEAD, and POST - o Portability across Unix-like environments, such as: +* Simple & straight forward configuration using environment variables. - Cygwin, FreeBSD, Linux, SunOS. +* Portability across Unix-like environments, such as: - o Known to work with Lynx, Mozilla, Opera, and Internet Explorer - web browsers. + Cygwin, FreeBSD, Linux, SunOS. - o Is a dedicated process-forking server that does not use inetd. +* Known to work with Lynx, Mozilla, Opera, and Internet Explorer + web browsers. - o Is secure against relative path file snooping. +* Is a dedicated process-forking server that does not use inetd. - o Is secure against directory searches. +* Is secure against relative path file snooping. - o CGI script execution managed through Unix file permissions. +* Is secure against directory searches. - o ~155 lines of source, - 1940 bytes long by IOCCC 2004 rules, - ~6KB compiled & stripped for FreeBSD. +* CGI script execution managed through Unix file permissions. - o Superior & smaller than micro_httpd from http://www.acme.com/ +* ~155 lines of source, + 1940 bytes long by IOCCC 2004 rules, + ~6KB compiled & stripped for FreeBSD. - o And has a really cool tongue-in-cheek animated logo too. +* Superior & smaller than micro_httpd from http://www.acme.com/ +* And has a really cool tongue-in-cheek animated logo too. - Comments - -------- +### Comments - o This code is properly indented using the One True Brace style. +* This code is properly indented using the One True Brace style. - o HTTP/1.0 200 OK == HTTP/1.1 200 OK CRLF Connection: close ? +* HTTP/1.0 200 OK == HTTP/1.1 200 OK CRLF Connection: close ? - o getenv() == putenv() ? +* getenv() == putenv() ? - o Hibachi can serve www.ioccc.org. +* Hibachi can serve www.ioccc.org. - o Commented spoiler available. +* Commented spoiler available. +### Known Issues - Known Issues - ------------ +* The "links" text browser does not support RFC 2616 section 7.2.1 + paragraph 3 sentence 2, and so fails to display responses from + hibachi. - o The "links" text browser does not support RFC 2616 section 7.2.1 - paragraph 3 sentence 2, and so fails to display responses from - hibachi. +### Suggested IOCCC Categories - - Suggested IOCCC Categories - -------------------------- - - Best Utility - Best Support - Most Portable Package - Most Likely to Cook Apache - Best Interpretation of RFC 2616 - Winner of The Far Too Much Free Time Award + Best Utility + Best Support + Most Portable Package + Most Likely to Cook Apache + Best Interpretation of RFC 2616 + Winner of The Far Too Much Free Time Award diff --git a/2004/hibachi/hibachi.tar.gz b/2004/hibachi/hibachi.tar.gz deleted file mode 100644 index d84c6d4e9b1c1db06adc31e1360802d34a6a2862..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427491 zcmXVWQEe*@a@)y?SF>Qrh7&8nN@`_sz=Sn3xXSr&e{XelceOYiv2c6S|Jf07s`iFo ztE%6jt-a0T)%~?^ZwLJQ_4W33m-G5SkUHgeN(_fA#*g*v;ohAmFXCT_(7%oTOznTl zc=Cf*Y4?8&V`^_|XRi9&o4@WCNHzahZf$-2F5F_w-`!sGe}~!qfHu{9{}3Ad>)vZx zWs1=@R_~h1v(SZlWzG|=x7Ofq_eO7G< zjcTDdA-Oh&_#1+jIu5EZsH{e4c0OLj|3(kg?==4&NZ$qSU!=2q-SWEUGd6K=Mq~gs zl2*VxU2nW5=v=d{k zvmC_koMQNVY#GJ(Vm6ys7V$RQ-)XpS3-A@?FTH+5FIxTCdZU>JH5_}(LuxqlK?DN& z?JX9FW|{Y76X6Wh2l5Q$90+6(swsBAi8gXZHIEOK#nT^1-G zo&C5g2g4(9^*IZlL*Tt}(FB>OWaYYT`(m8y8k?u6{t<8_*B_(oz4iLK_6YI0F)?2B z@!IC+y(aS96u8N=;yBwWzP*4w7fKyEvbVw$g{=d<+#h)Hw}(xC<9?S{Pi%hV{faSI zQlXJcT|I5mWuF3d|6_x=jpaOnHHDtfIXD@66p=pu$A5ef%oiquYnYk?4lF(>v;}(~ zX3{)9)5A%yqr$s=19tKA-9!uaz}aMA!{)c9)!5JSUrEYi^;C|WeBMWZed-M|du%9hBYGhD5`V&cUF88Tfq%5e!z2+v0Dgz7r;DUF!>;fz|d7JkR_{ib>wHwLC4|# z&rQ*06@btE0ekfq!KXA*UvJx?m7xk(`#Ow*Az95CHMPg&0vv1~Y3O-B-%1*sE`7~= zt46QGSvP>FR#EP6$5yT1t5Lom@F#Cf>u#Tj%6mNMpU@JRB^^m(?fH4J6c6dm;od2d z*|8wE*~?>#cm$uF-AG{+gb5~$Ho?(@j0s<$ANw}2xvflaX(k!3!Py|os4v`Qei;at zJP?(4eI~rv4^tl4z21DrBF_(EWUJSQ%g<9q#Y6(Pxw(PZPyH{evx2YdkLaQNKioXG zxjDaUTK~RJ>ic^?e-K5hI@EK7X%Gm-c@WBtV2*}1j6LoS-s1h=m06)rmD}d&;_xt< zR3kwI$8J&#(V$N?24W3U9N6TKgOLKVu%EljZ<=2}CNg0__CC*do`Axu4Q5qqS$u*% z#7Y-S5+rA8rt61N0{xg?hph-^h!BAshHS~~Me#Nn+ez+0))Kgc{M+_IX3WMp!XZX= z8~q&int$XAUm9IGW5{7wGc=v&(@J`I5J?F}g6;ZAX2u3?YesHA_t~6O)oXsQfw$^5 zyU$QQrSuH8TuV$KTZ0=t=pPu)T~o2z$iKv-2b+=TzF}5@n&hRn3~32R9(-ct&P|B6 zG7G!vxk^zoyu}-bA*k0!ay-fKRItYHvBcV_6qpmS0x^wK>Gwr>YJ2-S0`O<6DuPC0 z_n#sWYrnplQs+tD$05V#KK;S{U$KR6wa@3d5vW~Ns^MhCY#-*UEWe@6X?&F2Nrd~Y zHc^*$Mc&AyTLQ{}A4JFB_Nps}jtL{@#FI+pSH~{00`&=bV4Qfu2 z5d^jO37hFVjVC121ud+Tmw4qSA04^h{Z01LAxq|}6zgOd#vs{F7@`J2MYjpea+cM! zVWbQoKHFsR(RtadaO-ziXq!?usNSP&4X;cUH0P5(JZ6@{%rYJy*2tcxvD z{;^eA8kA(J+EGc%%;YviJ|P3MaF*mn{Up^873|C>{x_eV&DFL`*RZYgz`(#V9uJ13W$e*Xp$wM@G3y2SQ2^?8%$p zv)2sBXXL&WGL_FUXdJ-t*R?^q%yj?-l>>_ndXW3nP9Jo590jPdemsl>ehKalG$SGq zK7^x`ZrXo-0^D)?v=}LluEi@b;1t$3d-&*A>z={T;#wTYmYFBY7G{D--%Y9R%10$_ zi7307fi19Am)t3e(vcffQd$MLAf?=8`Z%7;Vuym403VVyA(5dxK#s`?l=%baoPe{6 zye!;U@Z`#Ya(lADy9(_^rdL@bbUB5<;<*8Fa|IG z1z{hE#mw1Ly(FD>XE4_z5yzA)#^zlEW}qcoF(`0#&#t#BBs5FlC?q#37B-!rt?D$? zsV{K}bm2#kL*z0tVz<>(u~hsPTD>^RBs7NWhva}pwh|mPkLF$u9XwoSUHddVS;OIE zgwfUzcA~wyl6enURS`a?R`bbu*t)yZC<*+c91-d!!6g(A;$PO7!x54MT;Nnykk%B- zblu5Pp)pw2ek@@H;f$M41;4i@hHPA9RWOBWxQ|xl+T92u{%d#r960YjI^I5wM>5Y_ z9}m9FaALbyW>MG}^i~RhE8xT+nvYQ;PoDbc=HEAdkYCJvIdlUK{GnbGAG2U1Gtn5I zF}zW-6-D&}ptQJ{D?5Ip8xGTIRPt`Z1@HU&``I;r5M<|9Sr@MAI1C(D-6Q@*zi!j zsPYX(|LCvn3A71et)JXGHkmQeBs}RW4|a|uDA#FRT1}(ttW#Me+S$Z&5(6{v1LjJF z*EFe(a4vA*nSqwF?%xp~xpy4dbqm~4lBfZc*_;ncoOB(ejg-Exz_cb6>r8v)fu-UR zCztL%s5GqpMX_CUPzt5!wZM@?4YR*2@({)3OhZaeF7>CoOxwI}cUZSK(LVKi2)29w zPIvcrpBVR_II7VrVN>IC{9gpJS{+taC%I01Fgr+N&QP%fW69jVTh@A zsR+|zh{pzqi@Cj1P)@(h+{;CZZw{W%NOM0E*7g-mt+4>k~dQ6p4hTAqy&{J#Utftq9_Yl!GNc zV8AMWmVLcP8E8({N7kPK|?{}aHh8AXpmzMR66%m?2LfX95Bh+F;Acq>RoHRAa9Ff z#2Iei25^5H>kCWL-od7f|kwOU@El<_MQ~Vh;^5s?d^0k3R+2c!#P+ z8M{(bK#6~e_Ku2WFIsj!N`HD}Iq&+)cY*nX1swA2ER`MT`r3E4CmVmBnum5>L}znG z%Ng_Y-4qpPi3I#l_!npoHV3`-MMojetG=B_(ptD_j(CljWK1@DC&h&R0oxLOsK~70 zo`-;CT4KeXZe+mPDfoXBxoQw^D3aiZJGs1qDWSd={m@Pyzx@L3v3&+(lK1?~hj139 z?$UJ<8TYv4cKCgs-8`)@bVS1Nf1W|+4n*630Xaz8J-WiJ$_*o+9H-&UAMKi%Pd^10 z50$eWdJ|X=7ge+a`1m@%`UJj!#ISZcX>J`II@bW;V>Q$$66*mc zMt8okuR~O=Dg8xI=PgxG=PubK`mYFu<-BlM1g_H~G|AkHiE#PeM6;8)L~lu98yJ%? zyb$CwhQJF{5nu$VkjI7t03$fes*u#NKB%~0wt_O;z__Hp zT0oS_Es_eu=TcAFTq$dUB~V~TAL~`23uL1xsy0+%T3m#P$4_*he&A)oAjl#Bgs!H{=h&wfJ*sNG_p7nj5E*x z#175`IKl=MoUGYq8W&|gS|Z`nh;#ZZC2)Tt-6W)D?ufg2;(TVv(D0G(gv3`~d|>@TFqOzlt?4E{h0Ljsh$8Jqh76 z+FaTjbFbRB3G6+{D@g+d7YDrc6u~M~h~10)q%z^JtArwWPwZV2uCSD)vv1}OoHSUB z%@;>EdWyV?UBWo+3B%lNS%dzBQ&gWMcBPe?z~T*8WN(sd76$c6CesC;tf1>*FoF46Cg5xd5NcX(r`6sI zr7^|_YjpnZBS9|nLjLm3>OV9R7UMY`CeJCu2qnM(jN@jJIusOU?`4pjUm zTRDI{=0w8}e#KxdCgD=FKQ^yKdC4z^GjYw?;u{~#BDFuGB9imJRz{LwBDWiFfvz&0 znLh~!Kb(fsrhboO8#lMfuU>}pr+xb@JP}Xxp#+(b)gq<7p99l1=tvW9`6QB3J9f2z z9nh69t9#Oj(MmXC)(h7Js12(7jultZyLTJ;^Ym}3!5({cn2g$TW-MO1CZlqAHKXZJ z1B1T)M6W_{&PIMJ{n7^QgFnj1X(;qpVWel)z6FGlaAN8PI4LiTMxtYFCiw8~X4oj%#sAWdzOcq7uSmg)m$^idB&i^#cJVWtj^>qH)6v2G#F zafM%jIDynpf3m2mZ7s5ke!CnpLIM=gT#Bw8X%#|g2_g{hfl7+cRwz|-Iwt8U`G_yB zOlCw)(K;;nKcFCUX*+mUx8bjGySTx_j3Mrdf=taZ<>`CJy0dUhpXCVOtu95mY%CD_GWvrhPARP)n?jJXH)+F;mAW^RmfRjmAXV7sWgIWd8f*38pVWD z#}UDrUkkKuDY=Is$uH`E$sVzqs`H+G^aV6;@UV9q4{&F|GV<2T)G-Vu^g-c_qpKuJ zW3Oy9nKL)gV$_H$i`kGbw0l*}ZT=6Mxslm_Xe}&=`~jKK0=;W6BxuN?T{^9{a>m!@ zux)Hb;abJ$XPZe~yHV66&dPAJwf{k=oM#3@EC$fPUb+pd;ke&YTURe>1?z}!e6p{T zXcgY7YjCa4VEj+~MxRFXcG+JZV)3F2gIWotHaWIde9F93`lM!!to;92^#-Z>S9QD~ zHoDl;LoYI>wV6Rzi^Z=c!eZ|^0{^mr=%lUFOp9Tw9#I7$LX-q@vR13E0K|5B2=Lha z&o4K`7Lr+i}z+F&W(dtF7?>1M2@_%P*pargsc zBRjmc97p=_TZ5RhS`+^B75(g{KNxd!dnnV>C(fd_Ic~p9SI~dXn&DPt%VwwAv%#at zR-(;7F9g=A=w5ljQ9J6yQM;3BWlyRVty>^E)R5L-5*Jerww|8BVXN1H|DcW?shL+x znYY?qch+f#f1lA?HRepLAE>3&8|W~Nph@Uhd2v_vRp zsZ2MaB}85YU8MPsv;TP214Wx1N^&GfUS0Vwd32&MhjOH<)op!kX?$OWclv@RC7T+= zhx<2tFyA}snuWHdWpLzCqzF@5Qk?m+OwEtIq?+h?RVW(ylI+NvN-U4pBS#bK%HUPXG1lqlZkkRM3+dv`Fkz+`u75Ef z{}G&R``qU8W+l?|x>s45?D*Vr?|J<>`|5k*_r2R)qk#I1e!UjpQS?^+SmP|%U7d1z z(T92iduF9lCIry;a@(jz2@(S(aYmoX|5?cE70N-JCG+`0Wm+R=XWR^Sc)pLuYfjo? zoGVr(EQ459aVbIil{}N?AMfwuSZ1RRUS2t0*uP-hZ2mguHD&i~(>*Yz^7+rSm32VMUtM)3M^Q;!u-OZDUNXIZ+#RhFiMo+RAW zB~R#rbhXA@_V3~TquU!o1VJw4%f5Jhop!NUo&5}oYMa7+ua80Nk(plqKdm!dqO%P@ zH7u>A7TeLWD{09al{A}|TfY^YA?p86&gFohqy32Wv2N@crfz(k~-!ka&hzVGjlk(D%onng9kDb zS0Yk??G;nv;ml&AAamXLT9@!-reMG;CyRLevxF_Gw`_NB34@t;4B^Avmwh_v`$iIz zI;6CVTxy&}(BN2Wbd#}2lD@GF;=Ao+gQP^wm!)4N`XChpwW~ad?%D_bvFildh}>6*uqSoO?b@Bl#Z2(0`4DBQf4gGZ^DM!xV;idAs z$-%6!MEp~vjJ&3M(}Dw}DG`8b*y1`zU#Be~{m}3+QDQq)U@f*a;DoP9Rd1(*TQ1Ao zJuwBS^G`PpYmRMpS(zD!(^6~F0T$8&ELEk+Kf;X=%*_)7U8^ItuGBPB$VEfDXbh&! zN;(!x0?UbJDbtwGPo3rsZ*Y&^jhZ4$dS`gTmx8y`(`X<&2WmG;dmi1Gykqf1opneo(^gy&#Xw;rkIpVrI1^oP=U0=eUKc#bfAQ#1RS8E?=n(8DgtKLKYfZIP zeh^O9FkHMVlXKlG(*5e|jL*f3eG|^9R085JYKhezL~~&wAas9;wV1EvR*nA4+o$i+AZmL%x&!OHNT>`QY4Y-Vww zke|+7gTX2&y|m9KXom1|ZBFfU%#fT>dGiI=DpxmHpmO?ZO((>6ktz$#WORTNDG?FTv?$Crm&oVZ&VW>%q6{#N5tEL zdSbQGh@zp}rrmR(q~FSiE>O#dch&M6(l@Sb^|t-qwjJGFAElt~o10u?yCmw{2m*l% zam0(Y&)NVS!y71FFktH9Jh#%JB9smE!ROQN?#?j$wfPFAD#ot^2N%=9Lr0Vn5A0}J zjVS=8823tZfO-!xsj;~=bt=+^tq2cCfXYKiiF{<6E-(-=B#n|bH!43(S}nWrV-$sI z23yLy(3G1X*z=F^Q0kgdwPXg3AtZfPKX99e1{yQ-8hf$hs@NWVVGSO6QU1b%lQVZ= zTG*Ke-Ns5&<3I|dpM;&U^S@E-ln-dF&;d`xUSj8)d84_q4g4Ei*LUrwrf#>kSUABN4#di!Ghou@Rg?JlSRr>l6o z#RLq9qg#INt;?5L)k;NiH2Gn1j=C(1nW?Qdy7u#<-m>{O-&IzstTnSBBB&D&TGG}+ zKR;-%V2WIJTJB<7P8I>U`>s`^^Mm2CAt>n`>@X?|O%+ZaG<9rCfxs|s1soO-GtGK7c^zM75>Y1pfJlD8ZMvL*v+d)% zCEEQI@_3^V!3h^jBtRjdMs!Rul|*vfq?$yhG;pg% z-m!vvXq&Hp6-3VzU1{@Vm+2C8CX`*?8&gQ#n>iU*c7^K6S-2jfkM4@LL(2b-cA`{7 zc>0n-Ms3IT>(q*SW1sq;TTju>Cnh}uwY+JMo`g^Ce$f4iD{9xw6xfGk81ut+S;um& z=rXs8?OAs5)WF%T*8#z_(*&Q-IOKKn{+ne`6#Ka6n%S(v!tV` ztLN$Pa|IrdmwhF#{|mE(KpK;8B1>1g0Sh_{(F5h2d02UT9)`T5IWhK$fB6fG6qQAZ zh6o-gg&rBP@oGR2l9;SZTF4OE&_k*3BF%68|BP(jy}Dgkn^qyiFde@^|ip{_2-5oxNFGF&W=w|%?PJD}i| zSkGR|<)|#EW#EulmD|n+<%{b)e$ONz6fl&5HeY(IZk^c9e)K-;)MVkuuk|8$9xD5A z4sUPVgrxG~(bxBYrV#LE4O;XMte{X`ktTC+Yl(P89@M~;7I8F-3NboRWYOEd#4}V6 zeKWr$FC0tc-rCaTiQBv0=j{RVcz^S`c~vbI*SnQxQV{CLr7b{q`eiYY9A?pkXG_}A z^fYQ|BCD!w#8VO{v$^~5P<@Zc24)hw_1E(h90NcgrN<*)gj2??c4O7(LW>eQ=c6mn zc*&CGB1ZpuoD+U->BeHUkR+_f&Y?f%JL;CCW_G~5=A<+V__Vq(cqW)CkA_Y z*hxcIz-q)v?NoKiKdq9nTBDa~C9EX}Xrp+7-pGWsLU0C_a+}l9k!OYcQFXF?3OT6) zVch{s*^$oE4kFSreZ-Q zfw?i%v~DTqVE-tr@4<4@>>3fmu(wkd(F(o|OMi%mRYQkd*?1cA3$K8syYNNQ?ybTG zBt;8_O&IzItSQA@)2X2V7`4x@^!LL=7c2f!GMAB@^aa>Mthh0Cl80d0@n7y+EL!14V4v?SlH~Vq{kz_s%}Ws#jAR&k2R6uDd(S4e+bNg6zd>Qp<;b7F$*oRhZk@(e8imX({jyapY#l}u4|Q_@WAkR2 zoYcsV%oGTKW+&ypdY_kmk_;xU_#*PxK**#42u8KXHy#vLkbTI>e`ZEyhbUvBnTKz$ zoTy>o-teF<>&gmFyum1WdoXbAxpJoAV3HJS<_D0^abX{ArDR+j@Q|FZJz&f4pQgv5 zG1G)F_g2~ba0ISAs5$~?ng6+56gUGrIsjBiOURr!XA8z$F}N05`neA-wpM7~ga0_P zn$|%bopp!DRKWeqaX{PN)3L|K>@9`ALqjXw5XYvR$^Av+g{t)e$P9Fpb>R1y&qEAGxX7!Q4rTU4Psd?Ej-7`}S8(K==` zsg^dn(fTJ!i!%uvoi}X~zr1^aJ;u#^i!Kw$Uwij=02ng7k&2_raZqG0DNdXGvo5Vr zU4=OJF>5G`bw;`u*vc=(Jo|dxx729uY<93=4lwOTsmby5v(BX}<5!fAnIs2ECFaUZ zUse)s$wzz=20ZIA{vAYT2jX`O)LaGzBBS+c48Ov-sHVrpUO-7V$baTDsP}$n>(B9r z=ijEUhd|OFvOgAml!Q}bPiK#qk00M3-%7u?-~1mwPY1rwuJJ)*CPlFDn^=@=8y(yx zv=%`qUxy@yc|(b(V#ukfP2_kOw`(|O1{lCZpKM4?1&4Gb^3jk=dcCXnP0VV_^EjXq zw^Z2$YyncBAXjwuK`<;pCn?5wYy+bEJVyrcEjL!qurdEy?vt;S(FOMg<7xZ25XiiM zdF`vRh~7196rWg1$i{5jphc1!t7PDq^h{04Iv|ANl=gX`d?4Ze2q)u*q2En&*7z;- zP_HN=>PrjGy^)Fkv&-_-#rKwgk1)LkSv8w)ieUn=(avrtGkmuxEkbRXWs?$+C@fO3 zN00b1^a$s(OP_Hvaq22802x(-W!?N{C%Ux!o97mk!0|`4cR;@CZmZ?9PvO6%ZD{3)1%vxfdr1VB~uJjD^&g@VJBK?ruxmbKcz$nW!OjBOq;~@tl&ukH*+L8qEf|! z=yH1&mALz5amUPC#*3>4CSxVjiOs^|CVnmV4yfkTaN zr$cv%HL-Hq{|iwQiNqlYVZ*GTj8;0x1sNA};68kl85wr)C+HXdFqAgUS_*LzPSM0Cl)v(%hJNFNG_Ah0>Yg)Y(xcUuNLh z(S>gxBPsA3>v$DnrR`=@bRBAyO%?RQn$r28I%bqMb#e{rvU_EVF0DQ*gBO5Ilvg>d z2nEO9Uad6X5n22+ldEZQGcs=oML#rV0XX!7=cfO8RRq}Uj+cWF|889A;ji*TY=orH zrnQ>u4s8tDuD=`)Uh1jS!db;JE>RjO#*8>`>-NL=IJ2W{+y1q7Ec8PEg(S&^u_owZ z*TlOdYbX^xVEz(bp?z09tkzM5h~}h5gcjX;R(5bABCL}cm94wKvgnV%A{VavVf7yUEhHMwNc6wcC0TPOvzJE1%<7znt26| zDqp7^Cka!m4_!vfTh4SY7-uWNlCf1u%PIpu6hmBI#S4>%NP!r@W75yg_{M3cJdlAgEBu>sxludQ<0CvM`J^AFlsn%u$9$8a6$BfI%p;{F64D0DRDC~VZpYdTJ4E; zk_)riqAA+ShH51+6jsXD5eK`zU@z_^r3aV%={H=TlKWxADP_@mZX&Ou9gCgtyaEeQ z?v296)DUimY98cby|DEpjiPU}RQNhLjV;35HO&BJtv)crj>aIGM8*ZHv@3b8={hR= zO9-ChFv;j;zvkHlu#nDKcXHsIo7w4=luaeT*K7@#<-o?T6IwWE5lReuemH0nC{gxM z4>c4W5epEDL7cLzL@B_|2z`~&B-i5F8^*N~oZ#AT;#{YJ%77sKSa*Cp=-fTlJHHN< z3sm8^e9(@aovN*&lBw1$xkHOl(1uE!2cqc@Flgy6nO&*dl91W7cX^t6hy^J2y3RkCBn$>@p2;m{8mJt;mw0L^7;ZhSpZv0%|g_ zXGwGVP#-BcJVfb0VW|3J`l|ry2F-5`S~4Us{4-tep3y~GnuF9aHB=tc77DD%vF%t@ zBXQ#JYiJQXPfX-Nq}`sB(U0CdI&P>0rMQ=kyTtIv!VLqb73T^Y70J&P^yrN#O`HCZnem<;#6F47powt2!`gA<43}46OBRyQj(~ z<~sg`w{wc0znm_}?&;;kw@va+Qr2S||~ zqZod1Yu7wYvr<}x=kr0#)P8Jm$*S04x6<5`qFL;&k3+FKQ_yAnloN!D&O0hj<#O1iMG}(WDsV>vADQWN zGbypDeQM?_e)vY?Qlr=mg~v5?UlgM##tp~`7J-;1-yrM!Sp9*5P)|(i_7m{4xV5Sj z;H}vGkm2iQufP%a%tN#9oO00HB6x0%mloqn91G2HEX4aIj++vcxZ3yaqo+8aa-U|LWZ={=7BP7)E zD8rYSDQwL~_kZ(tkT(GBO}zlc%tI7^WD|z0Wj)yvx}y#*0eb&5!Q4q$i}-<^G$HA< zjt-8tA?ZM!TMH+xr`?Fg!)RMXD4&F7s>Sn;H@KKq!0)Yy*mBE9fwe5PQ|D6Op|N+` zkU>#j7}P^Gu59~{YTRP|HzpBm#emVMEAKhH^>#zn))uDf>w@$OyfMJ2L*7=0LDvl3 zc%opB)Oh0lSJHN&4VI)0q%q@7m8h}REaud~-^Tdr(U6mvPjBUmvijb>gkt%Ovdz)E zY6{?o)Ws0KZqu1XLzmhn`8d*0hrvf9>5y$|09PZrfN3$?!P*f_%ZusD9qiGXU|c1h zc&h$cs=o`rrGH+UCRs2&_2X$KrvE!CTc-S?@79^yb9Kl(2?!J7``J@3TvJbo^uQR@ zN8*hzn?k9tM(BNS)2haRge`50aP*C~Kuuge5fTtN?_KUHJ68TAc`GgzdUi9TDmms* zk(#K68n{uCS|cOr{#05=2yGFExiJ1;+3r*&m}tfug$eraXed03wb^(+!_dA~X{P6( zs-|OO^Mzus=NV1kGI|V6*4O(v{WVPS**_j8q}c zfJEhNEA`4sc(odpnYSwdy+-g#m3u`qLIrDViu0VOBy}G=%;3w#wPkiCJJFJ%dd%i% z8JE>klKg+NW#<&*KF9y5Jt`x|qED7~RFCczP2k5_rK`L;fSM1rfF6vyf`J8B$AGpi zWSDj|>N9XN?3nUN#2uJoh;LM6x8AU_AkWSzaYSCzO17({?7Gam#_{vmR%Sf!=aQLp zrS#&h+UIzf=%Q?%ou_t47g#4Ptu#fJg;G=9(gAy7OuUHiS?oZRRN7i!FgrYqWlf4= zuoog^1f1HHJ}Dfq1(AX;Jcl*fYE5`oImRi1@zps92@Up*i2D0_T(9AjK6pFDN}>{ z0UL${MA-+p#Z65c#Th!s_9f?sN2Fmw$l{CJ8;6;g(WiyAp}RHW=b%zmSLupuuuNJE z)J!JGZ2>5?Cstxe#@J}lmbXji-Dgj^_yf2Ws%i%XN)UBgSvV-NVa%FciZd-2qr%P; z;gBEn#1NboOTOGxzBW-a#fkw(;I@}O*rtrKp@VJX`arWQe?^3c&P>PeWcRcAj&f$a zJ5<`!;QVZ+;7YMB+fmPsVif1CyQggtP+^pOhLZ-q?qk;BWF07EfrP^6xjw?hfz?l3XVErvTC8&kE;n)`pRYn7S#y&! z9BvZ#?8e0n31RH(Xx3Z2p12A^P!5i+=pX}}fONvM^TIwp`Or9Flh$63#T0ZL;{oj= z&At}xdy4t9^*=Lc=&0&wo!>Nxh_`Ss@aJBAHK%9}lYc!xE0=v#7))5pvz?8i6rY^V_gPy;;5zf6gIhv5N|$6e zPI0fhC_e98!{&U#OIsL{x-cpoSq*;?P`%hqAn!EwxJ&K_O~^rUu8ZJHG0zV;$+1yj zyzZeetglFVj0?-%nq^cOn{axiS;1_m=BimNvPcB)M*U+Jy>$k#jK!PnQzqRfmpF%x zn0>pet%d8u#OHZ)g6P6D*ul zU*P61hLJ^G<|7(aFBJOU4<8R{Q>$4frbcw{Q1L723E;&|(GSk^(1;Icy|Sh)9r?6b z${gzpH6v3xtXC!s_Hkc0;XT&ASi9NmJXrKwe?IK5ejd#EV}A|Y_GP1K>gMmEAt(-p zk=GSbg@|4dD9VW~B&)~uBbS^Ce&%s!tYMRcHdFH95xGb~Z!cL&ZND*0*=Hsa^n<^=~; zqby1|s8aTeIIji^uCR5h$%a&0>1GPn&q}y!zCpehM`Xf zph`ez4=qCFl!?d#LP4^x$y^3uj8s3D;=z^7Sdr+Z|5<4=MHM!0KuL{SEDOgRa7EW4 zvo3dv@m_wO6ChD|D_OV`%o)nPrtMAon_FVh;p-!r422(PRn#0LNih&eX9<=nWIhrk z+OErElg4StJXc_r2Y(b(9tYnXSr}ox3L>qdRHVW!TiB$s07i!nH{EP{0IA740zyZn zGaRF)sH>U!2r=rwA-2(Q1q5jcRSh8vLV##8&0zQ!2W_ZUEilw1MK)f#SqQz1f*ACl z&>IdHZ_V#?3NypH^m2hNt@5xPbO%M z;LQhdZB&dkSupA5fXeD@?n*>ztV1FmX6?wZ^69=uzX1dDq7uO+@K5x!Lu<$1Jr_j$ z^6*gb4~xiO?eDum>;sAB^aqQqhQjRP?6qjM%k+hJPc=Uw^VrZOHUw`YN&U#u6#{o; z4G}uFOO$le08F85Wz8C#fFP}*^^%5Vs=;6#TIFmSI;5B;oob7=vzZrbdBQtkU#3~Ez4*sL4UU(L3p#KP)WyIf9T@xCFyMV~4(UT!C}myF1=I#)Y%T<{p_6L+|Dx=AJLSeTlI zMscw_XsZBtCB74*?uU(hp&3^?&1PF2KL?)X07V&B!>XWP9R!=;7WYZ>*Y zSGGoqwAeu{uGzGewCYS+42ihm2|W8{`W(YX&XuVH6;JvOpaN#-+xP;*l-u=z52JMT zDl^p^P(8tXp=oX+s=hpbMbTj}7!n)YOiP;DG8P;Zd}M4Tx`eiX=P79w-T7mRK7vEP zVhmxA#kfslFRQy7NLknYX>e`PzUt_WbJL7A5U|INQfN0+)y)KnVTPq~1n!Jq_qOfs~Z zCf7mvfWcY~R53<-j_=rrIP>EkBf7K3$=0QK<3IFPV4 z1bZp)JDdnT3crF|`+UvePjA0fFxGzrM)ss~6}sl}(%I8E=Z5%x;TGXDfAt$~lL&cw zt0k7!OgAr_Oyh6@= z38)V7l+J)u(LToP7muKne!$*cq~gkuGY7 z?zUICtYp_99!365fxRB_}0CYAuF1>nzM>LS_V_ZH3A5DSbP3 zl+7$R5>M8Q`6)iW-4AcIWibt`aPXOzEzfDLNjrSzIJZBMYY?Hdg^b^EKk)~S0z)Y8 zNX9u+P^!9Z;|zFs8f*ep6m?#p2n|c>rV!MN;yQ(GQ03m?zoa*UJ93U@W-0 zSi0@%J=pbxUZ}$7*oPvlyz$sbTOH`X6lT1V)$YBT9ct5?aEUcT%dSn%udN~e-Lk17 zoyu$@JM-AZZ7JG)W7+CWzS6kv|MjWtH>ajzh#4>dd`Wt&{dpf5hC|yl$ebt^LG!<(N zbpXvMn9TGRh*c-^xExRhg{Hn#Ar7S=bTY*h-g3y*gOFY(b5{HS^M%T?MWh^wSz)zY z`rOgxaZnTG;dfx|CNvGkroIqRHe$orQD_{>4b7P4f^53U|=SY`#=GA7bGg}GY z^PsOzgMW0lTO^ zKYaFbwXU02%3F~=DvX(}I!ze95~s#>g(gQV$t6p20t(B2U$mE(mofs{95k{gE6xx$ z0mrB(-nA_XK}QqYiLM43DDFChzFZusd`>dYFJ+%TS~W3w)ZIx#Wlu9Sn0js|xB}QD z+$zLs6dj0s=lhcc>1Vpnzggc?F$_8MwCmtgRSVlMVBGGciMd zs~@6tJY2y9EY2PRt6QCn(5|bqwf{%eSp~%rt>G4TcLsMD+}+)6aCdjN1b252Ft`PG z2=4A4+#$GzHj$ZIJhuQ&oMb@F$b$9hj>X^{M~G9rd}WhYA<^1Vp$ z)wm$VAdF0_xNq3;fVmMIg=b{~_E;d@FNp}4QLso3c;nS9!C?f^^|1vt-YGPer(u04 z9+SC>{szUf8Vl*MNZSzSW}YeG?e+Bz%ibC8aVN0@`m5Gft)OP$QDGZ%>&f^D(u(`g z=wFGM)J_u8rwbXk`{AWEBz;0NAF%qL!(#ubGT0(ZFb90$hZt{o2)=Hsf;72xY*-kG z3QOFrvedc`vW$Z|Vt@9f7>&Zyn5}a4*{^^}`JBS<+$+JINl3Lg+Q&I)nd-&I$>n=pxW`w7DceqFFTILRqdj=c>vnBG?^K0 z#$|q1BUR1=$@U}iB!QJV6Y%jH9hE!W+)D!?tLe*0fpK{TV+X8YyV3kT??k{D-N`z? zL??%h!=i~2osAZ#LzD4uoBbAv{xco5G+iF%I4{q!S>9hK)PAw|J-JV)G7zUdjfbEG zj3?#usXwpWC9VotiF@6kUURRw{Z#6;^q)4nWuz&O{2(IBKXC~P1CX)iaN7igo213T zfIF2veM(%mAPqkjb|5w4wd@;H1GZ}$q;{(9-cb%LXD=ia*k@6SrHaG;jnn6p3yMGbc_|Md7D-xp3pT;ZjJ);h>WQnUNYW_+2KTpka7-EiuR{=Q8- z_dbi%V_@wG00rliHejLIZI?$1^Xq5v@%-L9Gj!$%_MrA9T5M{KJjL)wF;~@D$wl01G2Luy?G(N&r-2r- zRMwWNS8v2FJ=SI|X5m8RtdX|pNX*r%G-ypopQHL*#_=;dNiR`ybCN7C=a@m;dm?5Y zq)<{e0*Xe8g2HKye#sKyEgujMFLUa;wLKEp)$8nMbH{<=e@9A0VhOh3%P*syz^Bw& z{5}(qPF5K-4`;O#`)(IlI+z-o%5Gshep=g{BMnVNbI$rQm8)Je&77G)b3Q>_7hgK| zfn7RNS!LAx&QnYJ=o#*89;`;5^%7e+XlD{Sic=}{(TyJ$Oq{hbrM7rVo6w}(c$wWj zRfb!{sxkGl7rpJY-liwn44+@v*||L}=k1JEK+8VMpkO2wT7(;+iR45vtyQGW#1+n_ z{OBNg5tD17#Kb*u={_jLoz}0m&DPeS?Q~ui6F9S0JG$63=A^ldrv-*nR>VNziqG0N z;A5SZPzd)R%IIpGUCU=&S#V>LEiBO@VtHN$)wkbx<5K6AJMAfI#GheDC(GR zQJn<=H$gC;kL;Qx=OD6jeJ6?Vfk}2q!W1F*#c6#L&f*pr1K0u!Su#xF04_=x4&+{2 z=H=4(x!dKy%D^V0Eisj@FFd*6{q;hDpgWlA6@IxRs$xR?aIQ2iW*@nB*QG^F8<-J` zqq+U5YLCe7TedfK3o(Kg#NNxy`Jcl6db>)DsHY`%E^O`{q62(L0~<0UrJwdgJlVk( z3BAlfW~8Fp)Nr3<##An7$P_cNSnC34GYT@;ii6hn%Yp*KY)KA{XI!7hS(zXTXONHL zMgkO;V<=8{So_NH#*(J5{kr3HFn>1E+F6eHgsOK}P0Wbo_g$s0#g|S{7|IB`!ycMT zV9lkpjm}0Y@L{Jq-^m0rbsB2JV=?rgh(WdXLX8jIllm}z?|=xiByLA^Zdv&pjWDNN z2^RDSj^pqLf4}o8!*ZcKO)P&jRR$Scpk%M4z)fN3GmiLopmKR%YZ!{su3g$&Q)VE5TZeLLY!^m4Z!x*V50 zZnvHwd^ud_5iz?mThQeAdjkpZO++zbGdzFMfw-p)-3)*vVqn&0p^k~`6TADgOC@_i znKn@I#~4MHY9(sa{Vo$g`G(jzvGJ-%^6(q#nF|G*V&{inOwc(`4}2o`$BWGdJXW zbGh<9$ug7SyjnG3_qZFS0&l^dX1_sV5IK<+=(%D>o^>kd z-d&sFbZWIR0T}M*WS8R1ML(rFrSxx(iJ4Pm5&11)bIAUUn$i*Xt5E3z?v2=P^H7M% zaYcB^-IH+itT78THYrGJ1j(hH?8DDz9-QK#t{Sv}yznMQy(>?FU)DZ#ZGpY%aH3c% zi}W6{jz-YnM|M)Nm54`>|Cz}PzEYHI&kBY8?#A>PSTE3t-919!P(SWxT^qGe@XN^u zqss!Ww!RUf$1%uaDFh8T&$YewJEhgb+$fGNlT&NfYx@`*@WHs*wA>*awO><06Nj1X z0x|KGRU_FgqCFI|LvG*-hobWL8kfkr=jE@;uAU;0(e@0LLyyucWo5ZoIA*2tB71pq z(G~>~^A^O%j~_bGX_Y$;O#kXvTp<2my%cm8HRw|)JkUqCkZhr0xQY!-4H=136Z_{e zjWJ;VOL(hCN`l!4)TB-3NLtY$1<(7q`i3S!Im*_Z+cKG{)ptp9r9}~1y<9T)<;=8o zH}p0b^;Uk`q=4;5YOzU@LLuCX8@vg$FHkey-6JjXcQbZYMXeSV40c=>cq}WDiWxGK z)y!p+H@*Lii4+e}VNR)sE;dc&ug=dhB-2mRace$=}jb!e*~U zl_0{V#t)q-*>#-2HABATdq?Z;~;u*8wq}Q3FzK; zTF_aasHn6X{o*hQ*a8(6^XL3soYs^yG9n>bYAG=A>q!P{gr8xQOr3Q^7a_yH)2KXK zRn_cVnS@pMvke$I4a;`Hv~5`Hyc4C?plS>0XB5#O5<%Yuko7hXC`HNiZHJJ=r7= zGx9T&)p%^hN`0x}S{Z*$pY6jqR)U3!zOvO><7w{`z^*^LgN<8OfrIrRhhPkRt#H(> z$S|9fHpmM{{3{^PV+{!VDT$s^C%R>#8HYnYUr)S_>fRJvAPoNHcAOei7;jIo*KRIISKCHG?=)$tNMW#Ay zm?h#wV%94OD{s$+5mUTM^6q}GPj>}iR2!1I-e&yE_plvW?f$shPCAT6Dpvqm3D*fa zqukXzX7$;*32Y^7aV}7y*U0@pZ0KHb;7oG{vDXsxcQAGPb5nM3ackP3I76*mNd~wG zj#Kwp;98rc;|@<^dqXO5KY;N zDDz3jnRHSuRqBxPTeXC~B?t&uj(D#!_jQ9)PD6~TD-~&ibp`=<0UU@Z@ORoxUkQ%J zhQ+%E z)xJz%ty;#S3`Vg;W4KLcx|Ks+vMd%R8-mYQxz#$h8P@@o0>tDF>9|}AmjZ-S?ogJ} zkk}JOK$8m9PU-B>1*WU5B(ub03-ykl`&}GF@>vjg`7bf6q+hl!3e@UbI#)i?8a1vz zQSSOLX>enlK;57uf?2uAq*dqBS z#4Mzje5LiHl3d$6dqkr|kllJ<-S_!qV^FT=BN&FSoj4e-O>m&m?FhDgKGfa?#L zVynX`aW-(bC;D+~Y!w?RVNDbkYoLdmnIISpU2ZR6W2f-^UMbF<1~erSWftCOe++AG z;%YXP@RuQMo!bh;ij^!pE@G7Vi1$5Gy#+dYqcwgh=CMg$eDyy|6Mc7cafiTtI9aIGAPgACDHSj#MjU-(MX;Ov~W@B z+6iEW=5pwHkY|VD<)$ps4Zg7tgr+ZNIT>K3M7$%0aSb_Q8Mbbf=eoQ8bg1F%xB4vr zcbF(zKUBQgf+%bLs2H(oR43$+weHZfR#izQ-aL#yrk(=+1y@| zUb2ZMniBH@w65YD#KgENeo6E!Sw5hUU#5bbbLj~HZ(>2g)>NR&IFc<%Oq(<*H(iel zK{SeqEi-#J1v>~8^?IDFTdT*2B{WT6L8*dXF^K3MriR-PeBKc1?h9H)=^74M0Agp= z=z8ign9sCYAp>MnsURlj@s$!&&FVpyL=bc*4Wsj>mF6qdZqQ$jQ-gEl^h(-*;sdjW zY!2Sr32E?Q6U^mqO6Q?ZD?rmBC9co$+B1P2N#&vnrFX+|74+w$f&s!SdGzuq%Mt)J zvpQ-PI|k42S?IQbf|$NZ&>t}tmTDOv}60&}n`rYu>gSP)Vk!>zy(tqNfV#71%Y+o78(X?p`Z z?pt^A+&8k=$X|V@yGt>Fe^ltr>F%3vz?lGfDau_>sq){sSICs@l#AUk!gN2K0=7lDZJxo zh*Eu?i-jCvX_g zJ0eIi2me_35H;IQ?czKf?~sF^ zjD@KYprr|Xl%TA^3SN?uFw5z^VOD#=L6j|4+K6pB6H8Q<2_r^InDb4&oQ=Y8oFDJJ zIvP%C1bcMm?B`&2qL_#ZUY){r0Y>N%rA*dw%yV$lcce^639HtXF)&q0_SG0E(CS^`X%zb-jJWUtii+`|7GjzcYLc9PPF2%~*GSk` zb0FBfAff)TBH5~rWf;GOUU^gcr4v9R{iIR9V)9`LIM$?dC%snZy+ zKb`1!(IQd^omU+fhj`(wfdS2+f3R_vJ{?+Po=EU@d#KaG13gjYbd;8kS~BEDZ3egh z(f5^w7na%8s!xT~H;0d1q)=ESm9TW?jg8C4#lFB5QsA;ams_fm$K0HpsQOr=0FN*k zHRT`HF_uLy`_9zevfH)g&mv!a4A5G@c$p%vuOg`C^yvz^vDS0N5JDZye!4GrA`<4a6P!$mH#FjTw z9%YS1(Iqa5(nTgE#@=0R-;R$z+Oo(d9Ui{Y3G$1G2uYGPbD}FR46To!4Nw28@n7Ad zC_ze2&XSOk%ob#m3Zwme<<5exgt_E%72zCOLf?NFzIB7*a65QCd(_1vtB72PsE6U? z6c7>cLeZlMBoq{xWPfudbwzouMelSlGv3Ki`_7@4PO=1=#9>H99OL%(dcYFMI!EjI zSV)lpi!|V9_G8IzIt(-@_e_Afq195_NN^Scr^m;@d3E^Hc>`ZtRwV3h%m;QEUnzH5 z-t%w&!L|?1JR5%G5Q7zqX1y{QbYRk!+ya-vGJz0`I%#=k@^7Z|&qZJgPO=50LA-0& z>OCQ5LjZgwNt!8}M!y7PW4=hjU&x^Rn;0qSKSI+%S$t(21(Rco=Yc&V_@9yru|lTF zntbD*n;l}%XO8I^oEZ`@3h$WYGria2l9G$3;RUp4szR~6=+uykqV7n|gI{&s@|fJt zjMdNtQOPv2VV2PoY1t=tOA&J8N zj#qsjV@dyxTw%6?JpQ}A2~Bk2E6WTuszL=yQa%oc#uiYu7lbQzfxlr+nD9>8qD=`!)}L>-&_6k_}B}dB-CtfnLK4+3~|4+XM}6 zn6EZ+^JzXT%M0=xoaFvzS7jD491d*DY7Isd8RQq?WSk7A0W)ufGLOT0Am{@0?AgZM z*JaFH(_BYUSDfG%R;VvxZfE8(*;jyIJ!$s+*b#wEvL@}C>CFn;C|^HLu0(WlD^e67Vgarzls2@Zm_87q@s z)o&`jCkK-Ez$EBf30{21n(a!DfUV0`7g&w%JckW+<75G!0S8V%Le0R&J(N`Z$yAE- zdTa2JqCs_&w$R2z&A*B57*+3^l3zWu>XqDGM?5h+3%YjA(|vi^qfuC>oYJY(p&v_Rv(aZ@|)Ur`5XT%t?Iahsx+w1b1{0P>C)LOL6aDYCR>P(7`h*aN5n+mBt_~2p)pF%HaaCo?Er=x$I7iFT zv1U$|0-G!MEx~2<#T;CA3c8^%?n8^YSvP}6aFFTdVB5fu;{y6NO6J&fxiVp}q^WG< zn1*E4@QYQf9SaeUg3LJp26AsN+*EfxE;PN8N+YW96xqygU_R?i^{PPi_LO>STO4jq zhnCJCNjSz57D1l}Zv6JABP}5I{!oc_6W3}I^WnK@qH!8I*vdIW>m*Kb`#LIzRq81} zeyZK%qL@=8_HT$5m{guI818^n7RNg@TB78+@G4Et=K^qp2CIrS)0ZVq+m$96|1R~ltYRr(m>2@acjdPGdj&bOZq*9G4PoMVw05#wEQfZ%moQ6P4;$P`= zIF&bWwlfHLB@j3JFOM6B6=*r9yqNverOgA^FzD0~K({U_JExrgJYIxS%cen8d@S=n zra?VHVLsOhv}HXc{`y(<39lB?-eiw^)}&BiphRQ7pL~nfEN0A5Lf6R;3S?o9QgVNQ z(DL|!jzrVRUs^<2ajYhv%n(ZXZM;}bE)j{WV*dVZy~%1VMh#-LQXG9kVVjYmobWOL z#0%RGuQTq%WyTz8j1j+X^twk3#jUW1sUo2E zMwpzlmx2jg4QR5kgFS<*>lHTRP|Pw8>)f^M4KUvjI?0r5=_e=Zu(E?5as6=Ogf{6R zV>9FVF=q`^ul&^{{bB!vlvAE3GnpfH8Tjb>k+Y|hlB0x5>-5$>_3IhZ1iYrCmLJe! z>?|vBv+!AJl-M5bO4T!RZ&0XzHpWQL^#0b^FAib;RQJnu!B=R0jM4-W$ zz~5&-oq5Pt{O=PZ5#TTM0AoF|O`q+Kb%3 zmSjw+4 zhTe8=&~@^I6xxr|as`Wt8A57dSh^ni%IoCjnD~nI4T#_C44vdCo8&@f^`#XJ$Dk3g z$>`BG<{wh7VacUr*r+SfYeR4r8emt<=3O<`YW#jq%=_T-%cThAo@usJL&{ z3u0H5tP8W-Zv9J>>UGzQXgoAlH1y11xvi{@buvpja;}dT%?q5rA4y9$Rn5wMLw7Iz zX^{KJivofQcwLbWQA3#(D3L32m$A=5JT~hD&w@4Vzv5n{W^OuO*r{Je*`Qux=NVIQ zi@;1W7qu8#IUIPzE-wl!G`X2fcV_)D0Tq^_A@|S|DYj$t@;~L8Tcm+zFd*GypBV4- z*aKZem|pnUu48CG&x~Q>TnoeUY07OP#yZ2Sw~06H6yI4eP>KW0X_wj91o1j)Prt;; zNB<$g>Dtn-x6L?U?;T!-q!9FGyCYTZ6{EH#*Oo6HLi+6#{&zPqSBaDXR|4I)THQ9e zH1%|8y}X$mzCpp$H}OBmq8tHI*QEYSc6UnalDRb*$OaU|_RR+?zbEP`s%i?Chpbl= zC4M>uo5Qs&hRZh6((29%md5%2R~biPMCog;EUNGzDxiAtpKraRrCx+`p|{N7Qo8rh zvL!nF=pn+T4$K6WjX{82PLY0i_B-KqUJ34I2|n_u6zb{t*A;Sw(81uR=!o@jykc!h z<|KFVFVGR1!&AN&bsvdNVGtKGQ%f<@i%gDv9xy?9FE{h6coztqQjtns9Lm|pnw;ht z5nMFb()Lm(7s*5v>)|poz}`HfaB~wpq!xEx^%@Li?zKnOCqaE~602(LZ*wk{qAqZK z0?rqD_y)x*%1%LO-{k}|8=_re$F>8*=?7CAR8oH=;Mo6mH16XU9bzzm1;@KXbF3*s zd+DjT5KLue)Mg>sgh16~ZiU<+NVz&qt$0>xaIKy0+10H0PPK(6&1Sm(tzfA~a=BCX zZ?rYCM0H*eJNsAqioCLQGK<>_vce78!1K!jGDT`BdNug%yMz`CGVLJNi4$ls6f1yP zO1@-ZVGyFRIKY7{6_smYJTPgv7RIC!oKzaTgqjbmtuk7}FRh(0e=Y8{KvzmX28Ct* z!o@-{0HGTTH{_~Kwn~~KvIg|%7i&hN%%+La-J%ii@W6y*=h)qXp1j>SSb(kK1YolYoM zlEw?)8|JennVzUmWo6ev%c%bjns|clBnB2g(X5p_D^DPV%?0<1(3Da!+oeURWXp9~ zq-PBDSR|()NmKXw7h3MR&V!_J@T)GrSx1BL9N6U7*_wQ%UpV#4E6=dfYRB89%vroMLYcA>ge(QG)i4v=%V7^}imuA;cYc2@grV0-@i_;W-nF*8x z_rfRHefDiqhEBkv>;@XNGISCJbVR`*`r<+?NiX#|*~O?^*3w&O>SQt01Wpn+KvmYJ zE*nKLv4q$oH8N(4Culou%qn>lkD+;0NI9l}Pm20yF-+PQ5QJtg;LGhsUeWQ?u4tfV zIui?h*2iYLjkWJ)mU21Qae5@LzDmwwIwvouFpnE(Y8+Ad4ecABfUp2JzcAR!YcYR2 zcSY!EX*ZvEcC6goD;ZXRB&h!g~{{BZLL6^&w(k&1C|CfMsup_FxhLK-)OI| z;_ou6RqgAsAE3zsh6LpnCSY#|_GcD_!ki>0&GHs~uYTfZj^Z7dh$VCsWOpNStl{eOSqS@EpEPaz&PKr&IMPQ}6FkMp>6nh6IBb z?3>XOU`@?Zd1AV&X_`$p72=l5KiHs5zZXFjYZ$qL92XMoq5eQkpur3xRNF!22<8Z; z-cSKw*FpEg40dUK=CyN>YKwo{I6u(bf#poA@nuS6%Nzr)3+j12_tHq9OcOT#CCo*B z+H1rE(p(QHS>@-$LO}5mU#1x|?jrd%3LMh2r6&ANCZ2XIkIc{kQAso%nceNuXVnQ5 z5r8>WQA$kU!kPmpZxR|xA(n_dLLojke~X+H8Icv)ITkb$VlLjH!IRd|rk$(AAf!#z zc5D66vMLCuML%(XG04>-YOS`)tIs?Molq#|2r;HI5>IV3t;?sSG0B^iFYjX43+K1BgUQy})zckdoSV}j zZ)?r*>tuL`WMBG<_CUs4vBcw2xWvw4uG=9OhQA;_%|~*`F}zfhaiOlUk`%3~AbE>! z!zwH0NLdR0(1&3VYfbDsN8`d4n+lFO7@TOz4O8W zDN2D~tnKo}10eLwWGHF-pBdFk!@a_qu%>JgKi5a~#qob9nlyy-f!eD*W{KWVi1LDI zpyKJssuN&o-02&aggvAG-G-l7D8T-7GTU|uz1|FV*fCYS0igp-{)tXJlPqGcH^XWg z5$L1;%`)n4&M$zF((-aCPh^^U%0a9OV~%~^Q#qY?-M-!}w?0`MC+2Kxpj!K{j8f7w zoiL-+4VO{Hp<`6Nzg(om&UCznHIY&5Z#h=Xs@ig-KuuhIM6slM2kbJhm6UCiFkugJ zLa}4tY$@|$W>!wcwslP{g9ZE^%a;UszO^GP4>Z1grpQ>%gvwNJ;|U2XtO9$-;SQQ5 zIvu85ovBnDaY0T`d%dom2owVz3ietJ=~#9HLhG4=SITCOSuTYXJs&<-W%7MrkUJf7#TEzY{f_>ARQWJC`b z|FXiR>XvZw67+BI+<%m02gFkiwCB_rH!!nt0q`VqP<)(SZXG}H-9bG=A~^QWNdOU@ zQzw0XK7{{AO2*Wg?z8|kUoGv~Jah9coZdvrrc`^@O3 zFiAuFzsgWxB@s#Ge)4r8u?^!}dZv#2oe6=uEik*YiG9TybmojXb;XRP?)9>X&ikYe z4FRW)`|h9{1E58~ADJe^d6)yV&N$g`OALEuRc5A%jaXrej z3~;TKldtT=dMGXt0CGkXpZwqqqpSH#S&!mpG?AmEDDwqENc0QuW;>pOb>?3aBZr>r zS|sy}G=X)4P4IY!1)j*+{59%~+04NL(q4OQ=Mj6UWnaj3o?4Qzkv8a#qoJx6{EXGa zUyex_V1bb36uqiZl+^A+6|+aoVNdhc2R!Lz9~g7R;bgd-ykV(cKB}xQll}a^UYkE| zcJu6}f4mSph~3#dl>7a<%U8OXfu6{dR=sPP$WvCev)ADqKDja@X{5M^Mq(*1!L(cC zp;>GJ__p1hpQliIx#xecMS>l!TJ^wTkO!_ER7IsF7mX&2{n1v|Np@Io)1oI-F`Vy; zcUX|Hq|F5phZvSQWk89b@L$-XQ_D!Ff|NG!M?yY7r2iQH2^~jgDBTU=p@Q&^^GW>y zYiksSX*#IuoC{u&1(6bOmP-5gDd(0r2sm#_e%+n%AFEEd?&p6C757^vfQFyU10Rop zoXpZf?vJoVK8MgyD3w0)(|e}uY0p#_4Rw!1NN<<)eE6yk9maX8YuJ#QDGVHH2h}uA<(CwF5cL{Q zbTcJibDn28Pc!FZLbZP;Sj-Z80MUNnUwFFW9-e z$n&jNupE}2T)W3eZ7m1V7~yuF&kS4_5DE(U)x)_T3Ef{On+u-g6n)pB*3l>6Zcu&M zoBmCN+S~nu9;@8_he?xBJI^@TDnP?XjgOXidwX>l@2!#g8=_L&1(Lnp_dkl0HD_2C zCs@jxT!4aeyNhxU)FGGF}rrH4l)5G0;Qj)eZEzp~qhqeHU!6!@2VCCfVksch1FZDDI| zOR&M^XZ`N(ZXfi=xr+{y%p^dINl7cCVe~=D&wL)?;)} zmbW(ei8NcA#K0MC{Pd1!zPicPb54$GgY`gc5UPE?M$X{RFCfYz$cvd6$u))NZXU{b zZ_?Vp7^~%ucS8NJn-Q|qVH@ODLwU(hjFK2p$VvA}*MuAUIYI!JU9FYvN?+nbA@oy2 zcV+qU?C}hm{V|uELI}p@Bm1zeVVH%L-o@MfqWHWKJZ5d)teFtuUPUg$Ees(?~NlYV4SvG3GSuk6e z^JL(E+&Jgqw;G7dO^M3B&F1Z4&1m1U`6K;`F?XF?>?1XTUU&ts$)>d-^2<)Dmi2^n znYePMrWNO;pMQHt4$R~{$z;@LUR`gk*6QfAtJPq2K(`2jiE6b>lcv2ezl__@ACuYt zfD}P|h_n#!6%gd$A$f?mtR`=-Y3{e=<8>)vjK2?ZwK9ez`(4( zVtdZ9_f&m8i)p`!;!X9qER{G?ZjREDd94zYU7_Brj3Z+f#V?qW>@bp0$->h9xPATq zGv|b)#h7n+cD7)kdUayiRxtTH@aGe4^l7IKq#z@6BKoQ<&~dDtQiH4(%SKLy9DN1jLH`wxICqvJf4vV4{}Vp%q~~N{$8TiCRnGKqsBH2Z%1)Qb z07LHE>NDnf2LFMAsDfhdkyWc>$&CjR&;t+J9qzxP5fU2i3}t5F6Xrj4 zzsUbS=i91sS^9H*bN@b)mRQqvH%}yF0yg) zYh!s>u3MgZ{u`MqzLiXi$ITZ;57&G6Q;i=l*y6y{<=4Q{-4bH(7XYnfGwjrSMY1=a z16e!n6NizJnmT&O{XuXevDAhkYxX4jy7$TiWKUKw6}(`>iv`DmP-gcw6tO2 zLC+MwfoJM~gLWHMxo)L<21$HyuCoemPI8)0o6Em~Vrrir#X+8q8?qxq_JA1sVm5))ri!2V( zyPqhCu{GYCitXoP@UEQZ6xvPl@>a@z;~n-AxN+lO8%NOob$K{3 zb?bU1PTNPmHwFY#GLzHSN0I~}#F;{9{kHNS{1Ng0@X~qi+DyffH`T5fLiy?h0m(S< zXJpffnMTQoD~{)6N;NqVS}0~3;mqrm`08Z?^~v9D_Do-+8?Hmu^-4QvqG6D|TSLDx z{{Or*U6XS?gsNWKYH+{!wk9*K;26KXrB{BZGS&7@nWv{#!<$n<&jdE7CY@`XQD&UO z_a4)>Fe00B$exHz6Kwbl`+!a&P~~TWqiNNQi$?MIid%yJ%%A1Y?Q-wa6v7W9w?6(bJ@wRoW_-MdSl}VC|a( zibV(YaQK;jy(8evDcO{Z&m2m`huf}sSAKV*4eLv7^=~)= zk{Z!HQk>92#zpB*YkUQ53j;y`61#I+(n^<}nX$ms)*nj87_R(2chE49NW%yHHuX8kqI^+2NWKVsR{Y1dVmY6zW8P*^z&O0 zvV2!4#NbyK(b`-A`KID!4d_vbQP`lv6#dFwc1H|u70-y0Vl`(^YV4Rs25hDpzNBmQ z^fTTpnpTC<4mpqD9Q?!=X=AKOD|-KR`(+?)Qs@;39IDcE{vO{xFp5=Lu?aM*_1Bk~Swu3*QPrrkM#akb5l$9CB2an_>Ko;iyeX zo#{$zxO^mShU&E6J{u0(y@I7CDWjt8-V`jL)vzGE_PVr@x_hWGGAJLXgKpKpDt&|6GTt+0XiRL~3%T~gB@Uwhf z2vh5i$ib^nm9VLj1K)0um2uu02QvD7gw86pM&kHrB@=3MkTqO$Q>Aqyup5nFNkR^J zc!@WFS9Q3ieD>3s4t;|QUs0roBvE%HI;kbMLFu7f);64KTAXjOR@Ngj)WMDdQ(xt$ z@V$d9Mmz^iYAKveHF>K@l}H#Hk3e@qxPuf7e4LKMu#-Y6567BZI!qvij0IV?SiY?S zbqu-qDmbQjAX7OF_DV)0mXqwUOa&QnL7}7(E*7AB$gr7-t^|BxwgBWJ@F>bD@NEEr z8!YKN>EdH^&o8E>VC}X}H6+guGaa$s7%TF24iIwvz7y$Yw)i?>F@C?ebt~jYvQ~~) zMqQ++GK10&k3~`%YG--Tfc)9@Dq_~zr%|r6`0HO?{!%pgBI55;%#pAJYY5re>Z%4! zjT*fvLH>H#~3wLVPKD(bUkX>po;VOrFnLrQOTUvgKp8VL+y|aLh3+QRZ7~LF@WLUjc+#W zpc&)k@*Jugm|?_)&lNkOO`6UpE+n0iS`oNbe44~|P}s@G5r)UZ6rODxdw@EY3vSG; zD_I>qUw~JMKe0afM`{u05l={cyuaLB;;?mz%8Ydj1z+)LYadnZzaCAW{RhC~3Q@KD z>!q&=)^Cfagj0vy)>ci-%b)@2d0vdGs7&wWl93hg#lj0eoB!<(3G*r2u86C3um&qE zAMgPP6^8{;a*Aj(#9ns4kep7-Ab`_;=L%@OgUbjcDczX(kTAhTiV?e;O69uF6m#I{nsyRQYZW5GIOLeH8UCikRU5ko$5-kYNN*hwihKH zrx6RewhFWYZ-9LO;G*r}>~{KWVn6C+)Rab*jBr*$u~F`OSc*#Sq`?0HS3s!0S%>a& ziD;<_^a&2CK4WU|h#;`FxL(qXzgROC>tZkC88oXx0k9Y&#t(??TpgC8QA1Lt*f1Tw zkG)w^A8eiWav?5LNYEwi5$lC8xgVG zvB?wTBUDIY)nk*n87Ccz$mFpRz%l+B!6|At)a{Yw;ijw`C26(q%3aAa2bv2jX15@x znrwbFkG?9i4;?)@Hj(Oy3fH1tX=${OZl`w-4yKFI){<^g;Mfs%Um;<)ij(3Ib$i0A zxZ-XnVu>#3)`OM!<=p;2B|cHNFFuJQ^>$*aC|S1(zOp0XzU&fiPxOo(QTGc&)a?!a z6fE)f<=GK@KVO1x??j}VLT&9x!*`_NJJRqSY50ybd`B9-BMtAg!f#_~xKI9@DqIE` zMsAU*C@W_e%V_`J5Do#X`+A&JKlC!ULkT7<1mHfrzU& zY85BpL1|~=W|ALxyp03&K-Q)EBVPFWm4))#EA1VMdDr&P2pH7HJ z>EAN_yGH-^Sn%J9$cXU1-hCvgJz_N~#W19rn7Y5WSB#<~?C?+s{WgY9#Y)I>Cj^1* zX(X85JQEL{LldyBGf*lg=n;R9Cd9)D=Pis!5vtUPJM4TdU-44bgW`^I5tH%1JM6Gq z4r)0g?uGvbVOGQ8IKPH5oK1r=#fRt*nij>NZBXl(1bTQ4UEo#^$GEvA)o!P~vKw6f z0TF9pTz0ZAiowv7#2&Ff9*;XMVe=%&wFg@=7>;8YHmdDGQHoQAFg_uaX3{_vRE0fN zRU;-ZCU6K#veo3Tl1-kLyh*SMkk3J9{>G5j-qnQO=2d9(gCeZSQNr=K$Yfvy#5t$w z(_$Z&xWLVTLfFK(w4;gv%-)3P>y=|^q<~_X!`f3e{ek?;b)dduV-v_#%?(dH|>o5@Z=AMf^ealhWh2S@-FgTaO|LZ_oWadD@SAf^JzxwyCNfVV7*zpylni8to~ zJtq?TF);-HBU8Cp-IG~;m1b$NUK-_-6O+e=CyvI&J?MVeU0(Pba^7%?R9oFt7$qEM zw$y9x+?^#kE*_vNGM)|wZTVvHcKN6SI4#&3XzU^Y@5itrC3tvvNR;;M(fiAw(a;Y! zVhy$jI@80=DDKYqTg9WrpTRM%)H=3_Rn+q)N+0(MXU{HQ)x39!vb3O**!b(N~ z$3*9%fMn_xa1>@OhTq~Ys0-R)K8)Qfd7&N-`C#|z!{1Xw=fKgU6wp$>9HW=oZ2xI` z%|-n~dkRMtuyUU`QITwpiP*X~KGdRWw~;+%e-j9ENNiUFxJcInPV=n^iSt(X?1wDk zj{g1oXCE0v9F5Tv%UZ=bv4-d#&*{t^b{bJQ;H8}Ki@ReJ$=6B$)S1Fm)vMtJr}ewFLMokKK>4ys#)99 zw+|}QAmW^t_w)_uZO5|*4}d$DnsDk?hw}lEn;Xla>pb+aJ-1>N&8F#*#~agKqNnJE z3S~vl2((g~63143)he7CE8@Cg+v3;=oW8^YdI z8LK-JD()1$eSLjF)ypMZ4yaw?5kxe1>|@*z_6mZ-@z%v0Yx9^(nZyxP-+l*{Bk~Od zG#m?SlEE;R?U@z%`sq6k_Rc=S2ramnSI|o(`+My+nNdPRSqFl%qCGv%RnSDKZ+-;9 z^S~DGuq~PoG5paAFt@e>7%-jlxa)8cPtHw`OiqkH)J$ewN=5DyA7%Z(U`*Z*<3x)K zsT~heZMhm14(Nr(#Yz$nATtR9#%?n9#2au!WZM55{!x~|yd=y|A>ES_^nMPcE zVMh_Lqo0!hxEGq+Uq^56zD?}E>8IpB`}+1BK>5$!-hI2o{_Sr{^Y7bS{?k1FS>%02 zbIHlWM^5CjC}d8}oSM0mI@-wpdiS&c_ul^g{(*gaQU7yb??C^K{O?Nqn&I{8CeIaF)Q$;K$;`?RxhNW!9}{=;Rskolfc!? z5M8;Uiiofa%Vx1rR+rSIHfpCr(C?YakxA@0Jocq}@u_R9QmU7XvdWhdxyHf@dZs~b z8?I$+GMmkkhAIHLhR>ST`#(1|3Eax`rEdORZTJ7)z5DxV|L@=5xAy?=|K5Qe{qHOC zle2xRLIAghZrvUfaO*bUfLpf%3EbKi3t*oW9>8ZI#GbAreCdc9erwAc=&#|dEf#9l z8mt4lCPx)IRQHv|33uS*7O@AH?oA!k>K-l@oojMzsZV-9X;K9tMMY$}X_I;P2043o zmFYa0061Q1tAH4K;1{X7K)OhaP_R<8o%S7Y+P53(p%~mnLAN@wID6AW#Rzk~YE-DF z2#rEh#o{S3iE1HAZ_28e1gDDwd9#*;QMOTqVjVr7N^mZ$g~pNx9v7F5QKd^OejjmVCT1o0blHR;$N^mZek8F5P(KS$wRn;mcDyJB= z4F)J<*YWV#86MmxuKL?xNT~{DRhdlMA~y5z-4N1o=h4C4MOXkU zfK6tg0zB#IF4c_cvdtBe{;0>^L|3@+>ajRI9j%m&+7cBJ}AeJxLrPCm5UscQ!A&fNp_uw84_Z_ zEEo;WS*=+MWpjl_h5J0dQCTM)BktY?HbucPXfJFiD*#vxYH*w_zTboXFs8IoubV5? zx;|5yc0__FMAyAlXv;sJIyMWOg9Nq+RijFU2F!s7SE|cl%*xY=y<@+gsCEe(4q=+K z#GFkKtT-gs^sU!0jdnSI&Gg^c%F;H=0JhHm@9XXF-QoYQ#4mXM3uFzHECFIqEtM88 zv5t29e}6ALAHXnh`v>~S{&V2K-hmzZ|4RIhjvYC8m+|Uduio`xPIyj!*!{m>bX{oI z^}7=Ig5P&tf8ssw{D}{I#;hkoy_ z+0UK%hcDlJ^yRyD4Lwg?-}&uowf`4urnz7jw_)$&ug(77x4*wv%K!Eb4DkN%>)Vn4 zU6CK}|3`L3cfD!Xu2;P>*8P2Z?u_h--Le0!)Smr4gM<5qQeDTRyJq&^djGzg9~gYu zvHhvTgZqwT?w&f<_nO0ZCXdDsO!VHHyEA>N=dRiQAxor|69<DXx_t6PeeCGQeKW6{o>(|pd^B&IEsm}%<<1n&l*~sTJ7d50 zvBw@*exp%(yz+)0slD^#Z|cAML*e8P_w4`C{dfO#^1w5DhkiNQ_lv#z-+bWk58r*{ z>4U?+bob#WCQ?rw?|sY3Jx}C&-}_MF-4E`4)9YUI_T@X?RP2B9wcT%c?5-bKjK6oK z|NZA;KlRx6etP3oA6<$(eO~<3+ThPtx_`E|`z=RCUVmTitq&c2^FyaTI5PhJqf_sH zaQyvqGjCm3etT`@_2(}9V59V|bFX{m$bCQg;C(;#VE!{B_kHY<;wSS9pExt}iNeFr zyl(8vd-i^QVCZ*-?){6Q%&*@){KeP3^4AWJer@E)?>;c`^{J_6%cuTobo4JCnEKY( zvA4V-_Kr8*_5L^QegC_6|MdHA{mdJ0|HXH`>SJ$A|KuA7Kk}n@e&XFjzwq8WKmEgf zpZw|X{?%W7@lSnX=(9h5=P&>K9dCVd{B3VP|K8Uxzw3$Dz2`miKlJYPAA9TYPyX=m zPd{|egT>tDXM>%aZw zt$+QOFaOuS-1YZ=ecQkO%dT&I>$ZRT)0rn<|E4#+pg>!#;+J=gW>V?X=!7oNQ7Wj*zQuL{5R$DdpOQ2bb|S3JJ!!ylh~?z6j|KJ?=5|MTyR4~Gw5f5Wc($N%y} zU;oapzW1h=?W%wC%aI>^&rRR)Y|lFnzVk!>^mpI*(%YW<{>jh%%EsUQWMt*TAA8~p zzx zZ40?u2Y&CCCvP42;IZp(dd;C-KlqjIx78ng!n$SoBftHY*pELGe(R6@dGs5vebMJ) zAALOZhs)hh9=s>^r~l>;ex?7ufj_*x|N7TFIdZrw^0w;k;TON=_OJfdTcSF){_DX%-S_Wrx#3Mu{r1zp^ZD*~R3G@!7k%fOzvI65 z)IW64d~fe7vTy&;ufO_9^L_oV$^F*T&#reJ@B7u*O~3t-w@v^2H=p{0^MCdmulmCL zM{gbY*lo9c;m5zPKDFz*$v+(X%MU(x*GI1Vj^wAFzV7DNJ^a@<-uT_0dan2S8-HQy z-S^*|dh^qV(`V)%f8yrUGv9bB_0ow#BK+=O>HqEi5B2{1Z`^R(?Ymxo(`&>h-|@^x zf9aq9!g?&vV9qI@7oNapP~U|L&=uzb^XwBfs~>^ykXodiKdL{NEq=eClhx zv(N7S;!S(s@QQc-zz>XvW_SJWP2Eo%tcHH^fp`7Vf4}};Uy}W;zE8h8`lPAEfBbuX?aiMYzPao1;rnkcl*O}skFNjyuiv=x^4xVd z*3LgLoc?TV>bmd!+@b8Pz2E;Ui4VW>=2+pcpZcK>z4SM3x}{fKC#Kh*tKM+a-KSK0kkR|L5MAf8u+M^3&JtE1iFO*Y!95 z)$jh?fBu7KUh+>**=N7>o8LE3@BREu@0+SU_2R+buV(w7{P_AmzIN>UfA3S@y6Ltj ze=B)&{#)O10`un&4kNczF`-bb@{+lnm@AhZEYu~3U zrQW{xe08|{y|-Nd`tQ8^Th;6{|Mu+v80s$^x?BAHvw!lD$G`X77azX<)qSxuKk&B4 z%3s@+{Mj#ym%Qgs&;5^g-L`M=t6hJ1`oF&ZeUH8I*1tORrtj^2`np@^cisA);ppu@ z^@W$c|MM?;<@uAJ`IqXRBX9fvzSeiox1N~&#us1m*{|)ovHHZ@^0$BUhD7X0^10XU zdgI*N-|?zn`26S74?lS0^6lSzdC%0BzW(sXKl0tTKYiV6zV-6&IR9j5@Tu@^@BHT{ zZuzUFUwy@o{MQ>Q-T(4|G@9O@w?vq_;-BvE2B64?O(lq;9%d2 zdTx61mFFM0^?}E~@nWO;#4EpL4)=Uy`IaBJ?Yf)3cj}3r$3Op~XMXnCUzqyTt&1Of z{Y|4cy>b6dM}O>lexc|7FWxZK_tN4=)33bYRmP7@{qw1%&)xi?XI^PP^T)5Kf8)9r z*XLh!Ywxb_TzvX)|Bnvec;i>EyYpv^Prc%i_@Re;zWT&x{`|+%`(xvGpZQpK@)zDQ zICc2u^<6J|N&Op-A8b5+-S>Uwx|hD|wiiY6fA*^X@U=gG>)#&u=wmPyl3|9Q)Y{^1|L`@{b{5_|pN?|=AC z|35qb8Prt!zWt*sJwOPdcL=@r-b3%b_g+P$i;5U}M|u-96cG@SCZM8*-ZfMK5koJc zf?z?BdwYL>&+qv^|MKh?`^BEwGdnL-e0f(V@^VvqLnspIl(XySAq=_Zb<)nZ^m zhd_e&0?2e^CY>W1fa1ogY3`EfiFct~M;Ty-Dl)V^>j~!CJeG41&t~xo4N_d`>MTwq12~%@*?7sIk$##de?_H#L;wHfe+9XJ z6QJa!0clz3e=WiPzyAOK!soyAzc{EA`0=0L)Zo8c8NdK#VW2}YGca*LcqIWq0xl~h zz$76qp@`7c)WT`uaF!6j3L)>php|$Uy+RFKL8@Hi2Zbt%nN!+3prUX}y5STSkyIg9 zgw4!!I30AAujz4IF_OL+AY*TB?d^yP>f zv6o`5#`$rkM$6_$-%PxPPq>9J7iPq^l^Qgq`!}Utdsr6KR2tKl64IF-_oVD{S4m87 zond?3^|x8TRF1-OBY3`9WUB=Dl&yN$3hY0WnM^aBNO2sfFz7GyoXap=$aY>WHd!uk zn7$o8_1J8(E`IRIjrWg&XSy!UKa1Qg)7`GRvEOdC*LnHfAmZJG%=g#8SCZ)Y9^%ib z+{&Q!;(*UWf5fL*$DI+s^HZ}wKQCqF7iCx0R@6856y^0cr9Zu2*4LKX*H+%v-v0Q- zK+nL)cxmoJdEL;1tg-rvk)D*{r)BRSWGy#TE%cZH)Gw|H%3CyJ>u6WMY~$F*Cb3K1zB+ zS|&}uTbO_MVSSBE-WnS_d_B9lJhip5azs1k<50!Osb69YlpL0{vyFxd)?@5tZo*EaYy}lk+5yE+jz(Q$ueo*i7MmHhUq)XQ3tEz zoe$pJ!zEL4nshbJ)EO0tx=(a9%{{QHGpROt(!B7{sWasL#FK|_AA1dEahi6wEO!RY zHM>uCKYG^_zBy5C+SB^}dECjt`^lciA70@hR9t4gZR>*>^kN=Uz3rQ$`Fy5#&7O8_ zPnOGFTAO;>x%-Boo6TkZtZRR+(e|Oo^s^@)-?sTq-Zg*T{pnqA)W@~y=RIFO5R<96 zE&6(oH^+*^JYV-cJ=rDInclN_@$B2jrOrzqUcY$$FA`j2|BD1?Cwp@bJ>R^1@%zWo z=Hxxg51%rB|2+Bl;mxa8|NH~Mg~@m*QxG{3DcDF(LMi@ylZ-JCUQc0g2wG2N320nT zx&&i_V1Sm zH19W5#UAWGAf$;NG}f1f95gjHG#@m#bRQf%q;4A#{n*mA81nH^2ORpJ`k?!_H2#fC zOaN&9Qy;%yn7+Nj%BiXts@}9YYF?i1`LbN*WD`Nn;X4xlltqRY&7mcj(Bc#^nn$4( zdtRQeJqV*xi#r_4PfUkXF?nnZJ;e)wsWhkocRXR2RBaG(5M9xqly*l#!EXs?VSuDX zwKn7*PnN4D00UX?5m&hJSC`ooDC!_}2DiOm`kimYO6KKZ)hx~veG&R{LSkQW!F2bh zN|`+bUs}yI%nhl;NIIyi9M6@?Tw;3dC7XQP^NT@_GA$UkPb=-!NI&^Z0SIeB#pVspaQcb}>m>O&h8czP^9`=+!l44mQpeLuo?5#Ex+%Ww zi~&!2)upy~t^i!wQLk_28=nE~F=IjUs6ub@mFOl0Clh)nA$l6?rwpt#fj~rAChZLA zjzK8JP)TUrlmo(Q7$Xj4%iL&C_+mFi)m482$?FH4YE1o7WoM z=`}=bA_c8Sm%SJLfgx5kOs}h(Z)qX|IQZ#fCiRK~l3eNbNN~5=`%|(R=0X{&oz9qE zY-7lCDIx^x>P>FARKxixjX$~Xro43~Yhst93DUr61{zq!6VNd{p})mEhF`Il8D^<# zXq4&@4SV>hT)$42PBNuxaI+<=OOb*SVrL!5nLTSx0DqHz6B^(C#UcQ96WzuB|H@YdO z$h5in>)DO4{8&qcOZz-&vv69wK;bkGPHm58PL4OJW$ngH5G^uqnH=%Fm*$6rTiON; zSfVr-yjUTxO(h1xku_;}nlnm6)=;a&90i|kzGNqRp36UafA`XReo`ODfX$erPW#iS zJ!lRLB%k&s8I6Y$KN{Y3-^3|Q`|gnqxwVNrar8I8d+TzC#m!o18r)_K)Y@8oq&j=* z6%S*Kod=~d683y1ge=2zJJAij8^48Aj~bHionNMoWeJPk7YJVJ<<_2ki4wsm1kMd<-$Ynh4ZSp=9Q~1;>lCXcf&?=eteUsguC5L=&<+AYaNg9G;(`>lOrl`|n^`Wn0M|>)` zDJ0~&+!9uj;8e_#hbIEOsYu#aYZpzrS5f*Ia2WXLJv)||>6r-o&K>}rsULdEA*i_B zyUwrI9Y1T#Qq@jtV5!4dP8-~u`pwOX)o*tI#(Fx>U=d(u&j{#)hIs(~^?4T?{$au5 z5G$2b2(`C)+n}u$wuggeZn_te%UT{#owrm|`W`0vb8eD?N1C`uA+&dY?fOj_3`8x8 zdY(optNd%G2(3tsQNmO4VpAV#?NTRts*rlu%bI_p>w?utJF~axk?<8;FNL>^)IhmR zpz-z309(e>8YJFA*&KjIwP|1Fi&7g><^&p^L?^;kO26^tFMliFhuv!A14AgG`D=w{ z-%FCDj>q@S`BJf8$AvD^g*PT1QfvEViT&J9-`4ld{|=*;zL3_g^d%7oZ{udL-mwXh zadr-~Pvo^T+0qt;9ranom}&#e$o5tC6|vQk^nEF8fRwrN{{2P?qGUdkcpCslZY_8; z#lr}Auta0$?W!dGS|qQDcm$G{o5fn1H=Usa%9|r%Gv*EPWt~V&R1{rodwP?0J%#FU z{!<65@;8R;cRPE9j&AN^OioHJFxM`&px!}fG24y0m`43OiLirb4_j~3hlGG)zq;V@ zAb5V(7p?0e;X0^c5=5HVU!F8JM17|%=AoeQaX-Q|~#(~ znRrfwNLqwZfR|4Dtl-?;nXjbduo_4~XbN5}h19|KtVZ4e*a^GYgMg0@ReYDo20ujFq zRMjzm6+glwu;ifq-!n6DU6N3*gK%sg;NsGOpL!zgfeiOT-T6*LzWfsPNrd=oBPJ1k zT5EK{YlTBvk-)4!H!{v9JynHgG62ynX^^;AIT})+y97jtM-aC(3V-3#WNWB6o1gZ%)*;FMTAFmZ<> zzFd60T$HcBmVRXAn%`!P-2`p~_OB>z4h)=L$Sua3w7;}^blXF1>b zIALhy2E*&@UXk4R^IB$ETo9#AzLjS&q;jTjMXjSh$H>Zzw{L@@Qd(|;ghB|(xUfcf z=$7tM`8$|5^6K^R%?e!vY2;m1XL-m-#5*e1lmw zzh5dIlt%S2Zp(}Au zS8=MjlOj%LY_F0EpUhl5lVp^je01r-muK_cu~Ef-0;z&70HB(8klicH*!)s>#Ex&} zc0yb-#-SH1+fV?rw&J;?O3F02luTF$*6Z}gtxOwtl~jWtin%6UP;LD^_O{`ryj2t<|FU9GC91A-e-;Xg7{;6lrEv)P4 z&wPjo{AoT49;UA(fq=7eNtN%Q_c8gpoUd?(u}V45qTCWGx%VM~(N@K|Z9IbJ6b=!7 z$#_l?HY+lC#&VGpj*5e-q!bBXQQlesSCoo)ivf+Vd0h}D?5OrjwQ-_ zG+M=MoB#7;hWkfD^r4ty=_S0ZH?q?@{$!@1zG&$#(q|qFOX!Ny}=fL+W^~V{F2875_O; zRlHL+*L`Mu-94W7UIwGGkcoutYqed5!GHzpGkb$@UACO!n!fP1ME(`fGzE1u1RyayQ=9XNpuA#MoSqq(7;xc>TrvD+@9@4Hol6 zHX$6sT%~pxOLc>Lw=GR6BM~MRr^65yp3GfIeR&F#A?GdFo+_JMpcpkjpRS+~7Rt9amiC2fFTKu1JISyrVvP_XOF3xeU#U56BYQDO7~^TKzja(K?HWG4M%yAL|DTVn z(MSmOXFMuE7((aLo7AB+V9(xLL!TN19>IS0kvr2v)DZ23E?OW;R`qB_X$7P2<|o-o z{q)&EP~PI>ysM#noJ)_MZ8S;JTtfzMe)UCr8r88D;FHke^eNaqoJcYkH3#8x zwBpey6Z72J;mfTw$x-)22V|-+6K(S4Dn8C8m%h(eU#(A=4zfKcGE_)-l_MUWNNHD| z%wCL7HEQu;bZATT-}_t4KI8O=+5QhPiZzrzxM%F|@@c+|S|(iGt>c`{Pt*L>emlBv zGx~RLnmn23-nCF&w#m43^}ZSED`qdwX&Ev97X{S~2>iE#+I#$e25i~YvMV26`sd>% zbPbTp@@lFBIcG_mljQ{hqh#TxIv4GzSAM4l_N{L1J_k(b)$z|xk1;P}O*sAo*r;`5 zKD`VRjPlKSA_aW|zj2Y!tMd7fC-oJgN9QHK7fjPocU~p5oAyQ#-q6F4U1JEK=`Ud4 z{wju~q2toA4^I(EjtqBr+pz|M%|B?45vE6z_g$f(qNQCZ_EG%<rn3Xj%d-yDtB zAFSRRm0hAPjm8)8IT&-So%UZ@A1!R-kX%9wcW|>7@$@~_?}nfY^t(TxS%LQCCe|S0 zAdDu+s~>i8YfIOQl7~n%_oo~>+tdOvV8Kd%$otiI*Q+2x*PMFUx@T?RK|e8;X3ovbp$)Z1LiceqMZpNI@GLXFwE0RfY*n=7P@NU zcK#TjtrDOG+g)maQltow6G}!vzz=3 zbfhdq-~M`d3jfCavH>9$j?m~_x~BofeKvmbaSHd!>aSDmluIY6oJ`Aax^=?hd`VFk zz(2Aq;ni1}B!12?Z$r?^nI1E`Gfh_Qac<( zJ1=W(#T!PZ$5auaWm=#mADt~gBD#Ir_zC*@Xs%UpPTeC(S$?FBns zxMb?PkqEP3Y^W9o0Hx05=};vAavrJ;MdDgp>mIxOsbvYSnf&JhQIOD=%ysb_X{XiK zjtUO1V_Q8+ljZk@up{g7@S%R&2A|}fnH=~#n{fvtAIYwpd%D%X5^osI@_wxV0crpa zJ})rvG;=(LX=(hB2`6>NNJ!B7Y7N>61i{A0P#$FBOB-o0ZA%l2>S_(|3tQ&v@_g)T zUL*X1Dw#T%8uZO_2xr4vsM62%qB*s9tTXl^Y%Pxipz|9IK>(hc5CN`*5TCv_;z&FM zq9Zr8pSd(?QW5v;gzL*-@>mSx%A;5~j#%|o84tn|Vwv&p;aS>w^f}~89+pIBKPyzM zxJ`kv>8P}@_PBB708^{cuJ9@;#RLQ(RQFiy2AI+uC{tpbFP8hKW%2z5NPgL05zMQ8 z!D;f~u9Dv}j5h&*Z{bk^qQ15QMue()Z=kL)HFAFV`CSJ)eFem7{~kJY%8NAv0n$hM zxn9yq4CTYj@6Q|l`31@|=BmZ)b`48}dQ<90Zxj(w6b(UEBD5vz)nStW8n7awNSB+; zZVIt)Za@3elI`wgBKk3_PBT-`zI?FW`IBr2-tSpkoy^udr{iu_s;(TPuDP{fF&WlZhh#z%e{?6Fw7S_W!lE4PxQRsVJ zi2C>SY)>MAc_f3vc~+~}^wq~j`9YFGm zrC+j(Xgp|M9u|YpKWfxlFR@--X>Eb*?NxQi0jm?QZ}OaDPd4}prGRAat)Hnf*ZWyJ z7_JKbi3(HYXh-V%y=6!lZsm>irlO*WefBh5U#&;KFw$K?$y3_@g{;-R>Dh<+4OxxS zQDSC4edH5*tGU5kcz`>??iE#txAVOUYu{&5m6-P+KO?=ug7SJ)3NkloT&8rZFqs4S zwIK>Nn_(HR^E?X&<&{=_@GG&(}I+EkU7 z6Bwrt{eH86#?OU~1`k9ljf=xdw-2YU%(z_XYH;ZK47++9M^TP|5ohiyR%988!6w<3(xQ? z_bFd8J!01TAn!13H*34*|YThWocJFjAphZwlNX!E8mQ6#O8i3zw?;Z;i^^|C_qlA z`$4k)Va)U)C7S&^#(WPn7W1_AZSbn;jn;^=)or^U6O-kKqL<%`6FTOfF`oQbrZF}z z@sMnIoGp6icj<&8w_GtO+uv&HvR(>Tn=yndu}r0ZPn+Uk@qE(HVTfNjbZ3ZtQRL1C z?UmR5-=&`fA>~9vGeGqo+y8+;EE?oI6WEK=7h%!x2;wBP!<2`^oWI z?TKpJmh5PV(jKNwR-90@R-3hW5OPNiM)DjLMEg((3LRJ(gGDsAk zidlGV6$EX3F1Bnq#Iyz6!E$FZl0Hjm!c5#hAD9&XOxg0WyO#{%58$opRWMk9wtR=C zW2kk;s56VxWesgNhfvwlKKA`G3~~y>$#i=Db{~dSgli<%H~rQe1eWLgUab3VB(V#X zF|N%bX!Yo5?BL#mT;61-*+Ka13DgEa4Fc%F`&p~Pm@^zrS~4mQpqM4m?BG!A7__N2 zGWtm7I7Q*!3GAO9g_kodVHp}jdkWz@8YAVm12Y)CNzeo$<(n~yyL$OWbnq}~%DQl* zgEVC=8JWSr)BiS?=_!4G2mM(a${9;ZkXLX>#%ZSpt9r59&)l+)V(Bd}T>Xl(j%4wT zy2$Y)LF@9V?i~g2^~38(aWzD^OAVxkOxa9CEn5|fUo9{?Ge5+jim?<1eu!us(iuaM zi-mQ?G1|$1ilk8PlS&DslE8ap``2D>WB*pdK+rKKw4;b^^F zRSaDy3F=6otj&aJ6CfH^)L)L!F#z@76|me5QF>Q%Tqx5fA(De7fVhz`GWVqEV&G@ zl#lox70+<`e=Iq=`jH}G0kCo~#^7lZlj%g2aZ$so9FeGlzM!MGQowfJvE7o6_H><* z|7W*}XkKj=Am`85?JJ_svM4Rje+P;;y?sn^Cu@P_%LL;s)zB*U(j4+*4~cl|KQV`I z4O6JQFFwM$rDoglQj(Az8oE3g-yjZ)^X=^192@_kz3s=2GR;b~rIQbP>OQ>Tg=BZf z=^Iwac!tMo=R7-RX7ijn%?L6}d+Z_Y=O$RTOpt+H|A%ppaz)G`sjkQ|Wr)M3NV++q zG2qckOblDV)VZ>w{f~^^SAG}RQ+w>sSMf~e4ghwKkuhXo{k zr_eeNFO`x$pG~^_B8B+Yb{pnMG~F*4T1!!psMBTf-%IC-N#EaHxwQNTr;DdQY8woF zSw*Izj7$wjY4galR0Yz?cG0FPheTThe>YF(zSP*y#2(9&XT(cGe+WRcc6WK`ZOFnn)Y1#_>;g5R7z%Q$^7{?tCu z-S?b!+%r?HjdBQm@gI0#>OE?ty7)P(11*CK1$uJFh#u+%D0sJ^AM%vCboiE6RyXs9 zFnc{z3z7!au{ni*th?<&zJ32i*n&>U2=%2f{aH8U`^K-@4-Px#kFN&d=XlQs(dvK< z2w46~=!Z#)15Mpb;%)fi>x^w=>s>{4TBUre$W&^1AQO`IpyHRyrN=YBlOKlcxPF2H zA5^95LEJe?j^#*vZ{w30(>SlXx%4O|Mye1Z%^ua+d<-mS?(804L&JOV`Cm@FNIwOGmLq zI!5~f!izJHncpyui-|l4-G5U$BwSNZzF=rwf{ zae`Z;r{BEnbx>h!(^5T3CeY9^S4gtrL@kVsW*24A122i z)M;b<5x`f|y1rk!k2wz?Xmw050Y}67m&Xr+iWz*Vo)4Ra9t&lux#pmuU#X(bp@1eu z?qQ{sFhKznsrWMyXBGsKx@qhy4<#ZaSnph{+F-fmtRH3#3A>gck)ap0i~`P$%*>IK zw*+q3!>7nRL*fB4@+=t`m<_ryXwLh%+$RD5U5MRo(zAaf zIcIx-*;(o?9!$wRlfExt%O>|G9L}SVt)OPQ$ObDENh{rQbKUTj%uZ=H5`6=%^uR7fZ|%?A0)x+qu%%UAPmLs{Vxm?3|uJD8#JD42k7|Lt4y zbJ9QjNntl7Ytm$AR|Lu3Qld@vVQPXWd5VeB-ShWdHCBjj_(!4cUiaBZj!sR!R=S$GhBWbF5` zAH)@e z78Cv=)Ph}Z?E4HZ%+U7WlFKE~^~|Yz`@^3c7T-0L+|6lc5-zL+%S+uBvB?i-31gLX zRTHqX8ky+ zBw;U=6FzC$GErzr6ZU=jfDST(s?kdv&B@ToSsrN>*1P!Con7r=LDp>=$6tfR`6Xl( z3__#6tdv)1v1Vl;`Za7jJe-Y^Jt{h;lQ>>O%_#m!dWx0(t3d^=0~}Z5==?^y#EJD3g6-v$|*d2fmv!*W`4a>^FY;z@35VNDW96) zp)wqtp-JJJ5W~iHI*j)|__+_=oc>U~~#T z6Qyc?%dzI&kq;lw!CzE-3Qx;mX?y-2CXy0;;Vcpv@PR$k$W8~M+2##v>AN(?}?orUzz(0{7$jnt1Iuy;=cH_#YE@&oNb-n)JyJO#*ps%^ooN#e8BAwR%^Eh8f#PPWxd7fsrS})-*+8OBn z;V~gA^-;~>?L~c_Wi>{;s1EbW4zspz?N}63QcCm$pCoK+mXH$pwYYOjvh@A|&waT` zy8fIO3HEC;PPgxJBrvc9pwQk%s^I9ps&?MwKRbuqpXi#?&7# z&SYrHAms4XTg@DED?ysV1b_W852rj4M*OSmq~#pLZ}OK5xhDHoZAWK?LmLhCZ~BQd zoP?fV)f}Vaj|qfmB85j`hyqF6v$A3`_nndEGZ=%38Z$0y`F(Ok{DBMG5cOj zF{4SD-Vpz8=xRN;ywz2*pOK^@0T~(t`zs%>u%zcZ(I2z`LqNR0DI_2$%!DzUeAI$* zdc_!-Vjy&tpR8yqIZJI42n?0GdN=)Gqf^y^Ige|3de zKD4-J@&2Hr`R!x7n*rt%Pg=$v2lZc<=v{1imlM3{GJM_s2$r zQ&+>ugT54E7fsCVzOSJ-p-tu z{iH$j>#}EEZR@gkA1yu6N?0uIza;di`eps${Jz|ehi;mYA4xl{W3FE{Hzrq|>yqKr zoT}bQ7yJ+5C=av9;jBL)VQ5@?!YtLnq*Aq4%+udrKfUWg(Y5)HVUnigqoK4TES}_W zY?5-k3>-~;U}bJNHBK^>+9@vbh&~3jy_R{ALN*Qiu@Ac~pMufR$Aq8Oz&X5AX2{GG zdER`vNI@gtI9hH}-yveAY#vfE_y@_!;AZQoP(_f%=n_WGhtZl?dS=#T#;-=XE%$BV{Ikm!rPADQTCKnzT~+ zgkaxfMcH!UImtFX4zn&*iUYhaZ>RMT!(`#A}r znFu+;!>#w^KJ`m?VTxpgs|dKkcW^93=~oJSh2|-7?#-;xOw?{X z>r|oc&j(?B-sCaDWBJOn)V9FS_~eT7?kW&QjaZ!sR}X5#! z8}vW)I1q0*bn30#cXFaqsN`lwyx3Yz2^lf^B>B9u)qIE zeD-{6Q~63#p-!CCrz=uadau;BJf6ePPd+^V@@lghYsQ#pCt&FcwIU+3tQp3S29@3g zrELlSmF4m^6dP3Rxjrdk%6pWdpTQMLWMW#|OtxddPy3|B0CBDw6mT{P03P3Esi&mV z*vRf{;6`04Coj+ii?A1f-;v&-eiWo^jk@&}gbwe6u(<4L(_{dts`KlZ&~RODvcO|0 z0pZYNABI||bOKFCTWHJX49#IG#7|%{Mr#Q~9Tb;X{_RSb%4s#twXx?gaU!56&H+*- zQ-wA9Mkw*1w7M|R&*Vf(OB|GTF;(EU+n%kUcLHfGk3b73WJ((bwqmmB^TQ-(8q@#$;L?-8J;75}@GcvC8299+0f==k5Bdkz2} zUJ^1^)wvzuH^@F!KEw}5|IeQLQn+@&FP@uV?>p_ir>UGnv*39*yJaiE=M+cC*g{zd zAU-TBKbwz`59g%bDNVf9e;K@Y=xKiADoBeB03qa80XQDeddYBwT^O!pfODoz@q#kx zgj5?0+)k+XWhpLiwiEKEbnOKLtt_eRl|%vfK5(=5;3E0V3(*tC8-xH&;V-ie4fqXH z2ZSludSnaauk@Seh5ly#=P$1Ke|im$Np3>V?5k;^t;;gEgMDv}y`ngu^u(2e0dYNP zmK-eX@>hKsMXJICJYQEjfD67HLFHPmLtFjxz)>k!XKh5xV?Ev(-k6z;f?7fH5B6xb znB1xN9AYD&105Hz&ZQaREv6vWsq1@MS{I~hq%_Xwrpgcyx0HUqnF!09bo2d#MFQB- zN*mw-1ChuaDw-xOS9trX^d{3&WTa$$2$ic@?O2f$*x@%}oaLHvg8Ow0`T&lnI>&3j zdMKOpN;<#vno2`w%4d@Zgq&J;T*IsE9h9%+GpG;>w0RJ{t~n}k4TW8nXS<&>f`|JZCUd-! zHjvtYisBFy1q{aNd`vY+6RK;oS!1aZ%@X;>!r&(@obM^0_d)XAm8S=rBZ2oUhVR>L zt7ZPIn|t3}y3YQ3@yW#~u&T1Fa8i&SeaV^9J`VeX77QF3DXL5q9PZ@vagGp1_1TUy zE%O~{GjJ&)0LIU@`1{LlWQW8>F`3dfrel6@I{u+|M|H?#7oXTSkS2eqqADzIB4}(lBbvHQUql1Mpm<(grF3F+4Ifg*{a{ zg;%pCLm+;DfuB2adGvyUpW!c)3a8M?UVzw1II#3Rym#Oy{L3#KAb|@6DUh>^Zcg<> z2KPocWw?`@qQl#3$-xh;IZfB53$JP@>ps;VxyDh$!wNROjidYgE$7geBI4d}p5h~r zK-&d`(`f*aL;i)1CzQc5@Sk!4yc=D+H^`|)@~X*-O(=GR*$gmpXDaEHWThwmd z%eb{{EoJ|2qx~KZ%1+izI0e@HLGSeO?ca5KHmkcs3L z7a;zpRy^D`wJAkhjL&Tt3?0@H5wQ~tj1orI3MgZwdUSMV0UEVEx>FoQ#BKspAfJvUg^c6PlUW7V5`<%XH(NC z#k8YZTq{*AZ{a_H<$IzzuLlVahu7P|pUv_rk`b0zYSK>nJ_(geLf(&|iZIOJVvbx& zi#@P4{;JC-DX4ZO)iBK8Bw|R{yIk>Vn$2sZp=5V(K#}9Xu;Nc%k>{z3&-IN57L1jW z#572}YnzA|BBc$ELfMJoVvD+@DC38MrvV&)m}GEI&v^K2&gCu}AzLqnEibUM>?J=z zZ*01Vyx>8Gc>_P6nvHC}tl()!U~ZC$*w8haul9CCjoVnt+BW37Bc`lHq$xJG-u}YA zn&{F;$5#;`CAOtMq+>v0QIdd!zO$23e`?OuWUj2Dhyv@}t`+z?E2j3msD^=_TDO^t(1O;JP5Hf6!AS=HttYY%zZOZ%E%HcM-ug1#6& zdVO;aJI!W#xLJd7CXs`n{QqL&1pW(8Xk2Uhx}52p2VQnvDC>pWHdqZ zajMuhy^bfTVy?>p!&?|Dq9|1FV6Kwj#j9vDPMJW4H+Pz~5Ge)ZWB%8MyD<#7>BJ2` z&OQTB?pVr-A$t(3rpK@+hrfZ3U77q>PeO%i!kJ9gDxI+aC4&B z&hj4WOE?;4tjik4a!~AHxUs6Ex$%=ZMBn10=$3zTGJ?1>WF{={ue`>P3 z0T|#3pzyz8B|geiq5qzHi6h-J%=@pom(9^aVcX^@BU=1unH2Rv)zglK={xj+2lW+E zfs^S%5tNViI~!-pC9}b)DqX?jbym58-~~z zE@%5F$DwogO|r@lsCng;_5?%y+mf6rTT@41JW1?g9+$Nl!W*g2X0%&c;bc8z>B z&bdua#>dnxR*m&D$Qu>%w@x#$`@(a#<=@p0=BjZyN1=-u^omGjbP4*4Hi~=1H13N8`I!{%*s+xq#;%ohq=1u=wkN$elorbD z)^^}~D>TJ=llkn=kKLR}O{$<8s$W5AtXgJXaI_Y11W~_W_=|8a#=O?0UNs^dwEzzK zWL3sbdT-1Q2BJlByb0Q)j2R3*DQ#LyUV|KWqi0jtZ=Qk(iFnzEaE@?(*EBT4E;Ah6 z;xaRIi#mNKojY9k(&nxB@5oOC4F`5%^t+CDiJpIvjYiE305D^xo7t#WgnS*TS3f(v z?S>hWbwIE#KuYi8^aQQ(#cBYhv@9$;&OhZhI4zqmz8S3g8`GJ~q!3A)Bhwq{@RNlHfmnnO-E$4bepHi+A`>zhdyVv4!-STQLlX0v- zJ4E_p@kdk2O}6n?%Z~)zJS30s(VKlC@jq6o(}YYOc8*jNkJP*oEeQa$Mll$2R>*dj15#|-?yR))X$HO=8w(KT~vp>_w)pENuGWB+(4>GxK z*)~YS+HysOy6E9OZMga=c3MV)2n_bh9^RU=GoM5NF5yYwb3Wh!6&{?>emk9%%r#BY zmo)RH)L-Id?j9qEU}h*B;@ar-dS~#Vz{A_^6aGtCcdFwEASMqyoa4qKf$nV^$Nrcl zWWsV{FOBe7V$%OYR<~+1Xh)N`^-X-qrF+}4`H4&+M6mi_lDsa>!$8Es98ZU3g7`4e z0Fn8=9C_cu5s&Hn$TPiEau^Vp%` z#O#KJyu0J^ejr_9pBm|s#76qTV2IVC*h3WXTTM~=r%93UaMP}3G@h7T>5N7K3Nu*#x*BU*whQi{L^5YgxLR=OTuU@bjvty@+T zsBqc48}A%?*v2(Dkba1H+2mh+_L}yeaS&E3k8UTUF{4Ewx8>& z=n(Ix4q#^*M$o3GCr1Gq{CJMdrw>}lw7I7*%j zQibV5qBTnzq#-)Lq0NaD$Zz*7zcEdxj6o(rME`@$#Oc0o6T)BTO1y4f1Ub(%kvd*S zg8VcdP>HwU*LZOtSlmOm(MB9>h`>SJV#Lpoh!hZB$7KA((^h3?=rZU~EZ9S%O()za z!=jv3UpP;r%RtdC#L%Xy%c`&>iG;6F3GNz=xNx%O5BO=kR2?@}V8fiCCbpxrs8&3p z5|nY5zULsO@f!Q}MA#7%2q_K7q~9Ul5+*}sgy9;pbSPV=t8`Ne+OH_rr7-bih^f^8 zLNy-`jV2G7N+;2V9vO3(d4W%&?gu_sGKvnlp}PxxzMnd-@NfXqmT^-^js`H^6@W?O;Co(WM)leoI#zA<%u{5Z zT4QZTy^|1um{dAND=$MnA_$H=0lDAY^ATJDXfI^DX-Pp;>SPcyNcak^xTy$}aw(-g zpt|1!iJ0t|M{`}(r3LnpzV869kslyh^L3e*jIFe3r!Y1Wm0XzxR5+-=H-4SUJ&K>R zI7pBE^08To%gIuxdJ6S*qVvL6+mc?!AI%r;H&q>9Rrb;w$d5n13>d0C-+rCYT~=rQ z#liPEN#sk5E4g)V8w4 zzWWjVBdIqQ6P+&O0PxI@DCbGUuj4w=V*ThLY1DEXQWeW5PY1sN#R}^hSDboe@ZbEz z=-1Js>FDooS!_Qcr{%P$S(oDAp&tuo)bDr_297am_xIYX_iw)nDy@@P({+xC!n(B4 z9N;BihVxL3hCi^T|8vBZf`hrVq2}^ocgcbbgM5WULUX(pKZ<2H2kj{roVOwNrbCti z095wG1>|oh)9Gv}Z(_FP@p#_W7a42Y;B`MOSh5im2tX_Rj8~(uc36x{J%1h;f;*v- zz{M-h;68?<0TRt{zu*NlNoHDBi9uN7jp2v*js55r zG;3q_WiVx6p&%UAn+ShAfR8*W+%n2pO%_t6E0tp{8fP(5(Wm3fe#6=tVE;Aw0~1OhMd)Ba6hZ`SHDlU+b-;U|z zqpXFr0Ais>x`irtU|+f8AlNV~gabkGs}p543AuKJwo<7Sp25ArA((X$V?I7AKk1=m|dp%jHO;AN`CdCo(*SrBEswdSd0j8f0(gLDfZYEMcDPP=E&m7XIOY53Cv$<~P*3xDNBW0axMSUnFlj<8nCYn6UFOq>P(FD7&5z>?FpuLn*07U zK?{Ngn0ZJQ#}Qi*v? zDYueG^7({dH>^9hCqorx>vq4qS9*P->H40TrZe~z>prb6j7W<&F5*xK@uO7i4%@H4 zeBdE0nW~_(-w&$rYrA0-#qPm@veu4OFirNTJ>h>=dK@>bSD=tlHa0S z>)oE3iGaNx#!9*#xmSqJrFi;9_(5h+0<8gy?g3_mMhn`X#vOy9Fy!`D79kfVw5TUUt|&WgeUULM+9A$3D{BOI95fNm z=1mT7W^?|P1?MzRi5Qi4wbCBt{N$uN#_7^UZ=uFFF#kr%(fAZCkjf!D&XXaW)F!r9 z5ovUt#xaBvs6oAJMn6mNZhibJt)Q7ztHmV^t#;%k3uvGA`i&TgF8i`REd`x0Yl>#- z(yN!sc(KGxd0)aSlgZmnkY6sJ9~cKrJ!I?UYC0~!eXPWy?b_(yWJ)w`npPP(GoS`c zv9)*U?%}dLuFHt#-0cUpP@_}ekn>bF*|O|G8i6^S(ghkgB7gwaRW|a2NE)P9VG1HQ znk6*lI0~QRTOqb}?hB{`?iqt43d3WNFlZpD=1>y;~q^lOB%f=B(t`D(gA_ zR2~Vn0+8$IbS;%Yy=^mn8hY?Vkr=8`D-wA&%<629^OP*@oo04 zY;IF%6x;9lUrr;M)9r79At5~9R)mz~81k-PXy>PCom%I35Q)q$j}U+6Ws3UL>$wN5 z^!gJJ&wum|FlOL}=!=gMY54H~$4??{DFMp6WrC9@^wZ$mAZ&gZfG6kfNi22%C7gQ& zK(e;Pj_Gm)NQDJhage~lFE^`c5Sl}4qu_l*hGx-%Jo!N=E^UmPe~|m&r@oXQDch%w zFJUXlU2jh&$Kdp{4fP3kZe$HopV)xG?g0?GJ$;C>7r3_z2an4KH3myVW;^ll2rm%r zbt`OQ$^yFd?W7byHp(38N86{$>-`G9Y51#u9eOIG*(_r(4-iMYuJz@=pDwVnspGnp zpU8Rch54AVmnZ3@>EM?533Z}Gr=QNYzuMLPWbKwZW{D$x z%AMu;ri|?;5buk0RniQVuah5pzYz;>z$sVP!VZOb9OGL4%E+4lLTijZPXEKiYG(73 z*4ax!#Y?@DL=S8p6B)EtKiOA!v-C>yL91HwgnG0E{#xIbNWisV*`nbC#OFt!uU!LD zD1wMrSaALYR(x&XLgu{NcZ6{;zo|JFxgxQYuV3B!N~gxWso@6AvL5XVZ;HI@9wXu1>3TNp*uSWeDAic`>h_i{=L7vmV1|5P=b{b} z#u;8{$=A|^K_QH}LCi1}W_h}U`NqBNe%J~{3d)K6hFQ4XMI>aWr$f1QEH&&DxMM@y zczb1^x}qTS*`&sa$}6jYfK$@5;C*e?`q_6uGWtKQZ=Ul01&ubDC2bmjz?bj>lZa%n z!h;!9Ybh~_GT##m<4L~kc1|{}Q^TU=Gpvo5rif6{vt$Hx4!rg)D)SxNj85GW04s0Q zWj@-4ssDb)q*O6@WextGbln*7CQx*e)upCj*Rsk>= zK_TnW9~!VQ7W#^8pcyuBJ6wH`<;V!mylTZ=3o0y37?O8+KW^(G`RfgnRjclWz1b1a z76*!aAKPPl5NH*s)V6jJ<)wi8Y<ve4ZL-V7aMK<^=>}cha zTAC{WmTQurOWJVQJqe!bW#JSVQ#SuXihGn15_jZ&~ z&IFBt*js#KS>FQ@l@wN^^*nP$KkDed?O`|k&hGV%j>(H(OK&bd3S5}rGcQsEs1)9AjaCH9gFl$_e1@xqSUUl#~i*=k4@)>$Di$g~0FzCAl-voLabuy&A!xZ9l1*?=2K6*K9^fH`yIqpG9oZ;24 z@G#5ofLs}fJskCb2~14{tn?E`@o4^D+TSE}-*@yhCQy|iU@RAtIj53(BA@ZZ$e_eG z4&s-f;HKB@r+(GbLQq3N>54jYh}@`|=8^@^4&)U9eIXMZPqYQ@A&3A3hNkc}Byyp7$c9VR5JYBawZKuydY+6`sbVec$pgzJW*4p`~ zgEnK~aDNv;h-_PUQ6t?K5_$_uu_h~elL)r}%dJCHBZ|~P1BR9-aZ7yZJi6I&y1qq1 zcI~oJZxy20OQL2W(7t(dxeOh)WTyoJ&FP@AW4Fr*G^f9j?squ45rewjhO8wC^l#+c z8I)Jl3#?AoT^TZG88%uhWACx-#58V3N|M^yT!RHOLlm$-yN;X>_pnz4LYZ5+ZO9C_agaoWz$e=1@sD=wz1 ztKwHMC#?G(s$2ZTP&!UKFdQCMUno1T14=>x1oW^MYM4}3Y3KTaMCGu|aE46-@;N8H zcs4e4c4iTl#3Y%06@e7Zd_Fnj&eG={Mz(><<9d>zPUf+!@Ld2nB$plH(YN-CPd2Ie zoXTBjX%>%AMZsi1KE=}1Y&HsTO9$i!csa45_AascGcbwpy zn_{5=Y|M%pQa~dsjoHGLFR>C})|`DzG;`8OA_*3S7qFP+GueRety8AsbaYN`RBY;) z(HAM>M705gyANaxSsUtwI4`{MixdJbPz67$rPQWbZA1Nq<5(+%r5B74PStQk5f-lO zEK7;1v*KrfOH#z=+N#8mC@iu3wN{ATU|4M%vbc@ZS{wB#2JM=U zy-I??A>1|L2A)Lty>NZFtZ0}QY>bYggNI_BNIfWxvY`atI^Vy3o$fR|;q-`l0-%U% zLx{SyL5uKI&0Y^yFcggddN@4p6jPm1_TYv~lQJ!h=@0aNTX?Zc(|_AT|AUyMfDS7g*`u;rje`C?;e8>NdMJrapc$;P` z(yy&%Mm4;-hr5~AVjSH#L*R+g;ixDIG^qbiELzFd(0%oX|Hh(yG)yM$<_0TN=NaH88ig{sp`Gg6aA^)y~gK(Nxrl{DTM;^z^vkv^2-Y{kv3qe{Ag$R7At)Unlm`} zPl=d8>(XQ2k9j3xy(B;V9qcy5($Bu%*IfP27$5be#UPnc?1R>> zG1msJr?0PjO>1wT^Xf{yDE56VHT)A+WSTUyc}MH0YR*+_vdbn*_K#7gx$0_fRKCLQ zSe%un;)L#I6kOHF5Mw8=t&dSn>E+}I*$el+t{j@dRrb+YIW2X)Aee{RvwSAGaH~9S zLv@(L7NsV4zsp|z_aWc3$_Z(XMtv44N-fYYT$jWDFW@k_IMpOmtG4~6BlEwA#95-~ zJ$ye_S%-qj#_X*gi#D_$#(X4Smb6^dH$Q2@JZs z3P)7ZmF-^|)*`h%91j2Dbrp^~1g0)jM}HOSvG2c=N_^-f_<)wzYh9-B{hYY z?Pyd99x+`I9}%EM3og$ z3na{i2fsSBrPVl^{9h$y@D}3aDwPpfX3{MRZGbyxk9*{3!r779{nB zfSBAPY7h1etMZ{_&NSyw>H|^sLmLf>z0PLWh2rnd9WlM=>$iZYlkl)OFA(*qm!>dY zn=*PY+gHy3d$A{+CWYzI92RK>crqOHE7zMQoIgjVTS5O3Y}e9vszDbe4bDqK@lDfI zroSRr(9i7PY(Y4PWG@bmPk;UpguB*5|E6VvpKGK2vbs0r8=5_3uB`j}RPuyGDj{Mr zCs315KlYA?qA8Jrn2%spu0u(AB~rP0algc9Q|e)pJR6fa_mtt3IwU-}>rKW#(%Tg3 z#svweL1aeTDt~0Z*0j4M^RGb;-cau>i}3WTM!%D;PNgOHG0K|Jx77>C0e}>UOa)G4 z2S$**X-%(D!L^BH<%Y?!<}G*VI@wPJ;V%xf3lTDUf#0Xbr>Fot0wDMalmvsAdx_jH zE|j&AEcqSujkj+$%KL!WFp$`-I^I8fX}qDqS-QgBrCoL@3<^E3+&FlnF4%U`qrdf& z?Z4!xInh9+@<*u5fJ#T-yUJ7*Ao&-c;$DImTe~Q99=xAGy}ohxEAlCX+7Ij7m$lCN zLB;Og%c8;w{w9H4=W&w@Z!MG+5dd2a;VI=|FXIpfeKQ$4SRLBxj9M|GiRt+7lh$-V>-O|i2e8~-=3THFr15IkkCrnBHm7fT!bl2T%dy!n@C@1d%|7ySlw zX-sYG{89waRTlt|#AK*R>?d85B)9TEA%YFE0T_cNJS(+T2LBvs2vI3>~CN#Sr+q*SS%D^ z+Vp%+<*6HhZ$CH}9m)3q6-o5cWQdRwX(WxJMRjzUz1bdn?UY9c0@h~zdRUI43Cw-gXq03MEqaJAuo z<;8+t-@(O~U4OsN8#8)P<&EMt)n$CfeB-8nGyjh%pZew>ufOTzfV><}fu1+Tl+u?$ z3`77RKvdKU43ek{o~C|&d@G&czvHGoStT*gXtG4S_Av)QumIzSbzOI?DFPu&Z^vF5 z0M!!zMpOYWYyTYneT+2|2PV*jn^1>{$oQEc`%5JL^wF)Gmy}+qyfUZ~wf}Tu_wRCI zHaDn3T9J}`&IXtX0mlC(R821Hlwzj+AKr^YvY(P4FLtu?Xk~}a^5SQ+>Z0%4XMa%Q z>w61tlzYTy@zI6(+B>T9uE)!(;o&E$t8nR#>I*~H@sk1418eCKDIMZChJY{P&DV~I z)1kQnh0rz}dAf*IzBk4ts2=(6n0Y^w?xMauJP3+KXl!x| zyS_}FVxi%}zWEt&XNl49(FpU)@P`i1*0Xx9j0uDR_mfLIN}jM|sse4d{$NqF%G`hj ze=@`QwC}dpZ;Q2p+yK4WNI={xb#F-_a#lk9dF5xztNv*RXUa{h8d4e(q;(WO=gXL| z>)kY5helGjwysL{s+YXjt-nz25>oP5RlX2aaua|66NQPR@u1|Z*`b_OB1p9inVe8@ z9Rx#%6-(dG>eTlIx39YLeZKl6ncmd~vLK+F{oR%|SwoFUBW>P}*~%z6-9o<0j+kx{ zqUT&}XLE7&8gstV3t9D;7=@i0*lz-QVuR|(de|2SmVHOeA2P@P;r?I*er)i>oC-Q^_{i!YF!Y%cES#nAylV z5P-%P8}|Eh*Ua#AbMti$6bo6%!qcn!)Mmu@a|U%mH%>WYvOgPd*hg1IBaPA*M- z;fYc5@HP5ycrYQIkwI{$22R9cA|tH^BT$V?bpO)>GCUDIDZ{;+5xte7&NX1r>nq6W zm%ZedJbIGOlV*t76bL`%A@=5k@+plK!TpH_T|Qioicknxg4|V2xt?6H8JZISO(xPT zdLdG9NGGDJC05~qoZznxg{ORC%1FTlc`@vkcJGE5@4RBC@@@8dbG#iq1b1PuyUuyE ztD*={d;&tYj$Hmi4PrcBJ%R&LBV?Nd-=u|yVnt3273_>HwAu<;=Tk1oddrm#UOhwhPbWGkTOq(hl!{~l@Fv1&84-?Ay^B@(pEl4X<*L)a z_rg^D1@l!rYPOB$GY++kp|HYB-M2{(!U?QK2H=>N?Ly2rm#|E=O) z;sDJbtlSqb7Ar~`)BkdUFmnHKf+{RTY5z}TV+W`Jy?^QE|Je&-{dL0pKgh;TxuCW` z4^T~VQ;w+nH}F}N;Xi@TT)H+;XPbY$AeDjDary?_J(c9U98cRH%+#sh0y9q7J+P^> z)W|B%>}p;pvva5Od)u|Q@NeMr<%*IPTx=6( zx`8b$s-0c8FNQJe*F zHZ@zGXfr7x1}hxZX>rL~%FX`d9HtbzL|v9~kx_5fU)sAI3FkMx4Q_gpywX^;>^5)z z8DlTE2)Ca^kEut$7%!T&_BG=U|^3i(y_&x)OuUFuy78C40r zJRBGP{LI_;giGV@)uf3&8>GR>uLxuEC!~|41}QJ0v|Cfjbr1ew0CZhoB`(cMYbkuW zOy2R@o-8-p3La%l81MUKrZ2h(Q$M$8+eWL&Pw4(Te*@511Eg%^zyN6gH%tiE0Z(3M z15l%VtdF|FS@$hNcwuR;)t>ivnlZZtX~P)p<8)y6Y!Vtj5jHC0HX_9?+6E)F{Kmun zq6b;Hk8SK>B8>T5`}Td|4BSxzC3H0yfMtZEjFHKVd9wG5d2?lnsLl*Vht~D=;J%)8S(nA^H8Y$&L4GD=bgZP{az|>y0MkqFnhw)F6!6T%LAh zhx0W;j6=2f?x+2x-7|&WfVWp`GdBLgCI3wA_}wuX1;O_G?)4;qKF7Iwy@IiLVUZ*BF-RdCl!5m$k7ZNxdev@-t$2uL70VsTv z0xsF$rIyxpyMMxDX7}iU(_{!|FHf}M5*-kmpNQQucG%GQaAw0SEXqh}BCPh|rbDSP zlQ|C36*d1H*@2gPEqz5%9yt2-gQj1ETnrO-L;8@}Agtm7_7sRKOgp*$MuTj#1SVNF zZwNaXhus`Vyu0L;{B-yuSdj&iQ9Jm=qyq``N6%*V84ci?J|Uc3Xj!fiS|w)8u}pYp zxHvX{bp}&>ImP#=)Ey1X%K61@I6S4=luXibnobxHTJqzf6z0CugddSX7D9 zmzQpUGx?{*K5erG_89*F1P~Bk7{JoT12#Il4WPUL%Ep@WfbK+}qcErtMjL5>O>SnY z%TpPjlBQJ6Y^@w%=$1|ubCaP|GNRD~NZNXT2oE%;cFTmewT)i2CCh-R4n1klmCl7BjdJhLCRI{JT9?lUE{aC=`5STM*L# z;8`$}%+f5{lmT1W4=Gc*)~qgu|1}uf(!Mb@Sm_A~n^-HQc;9Y<;9AlqXQUU?>sT{9 z;dwXiNjyOXWGk$>qN?|Xcc9wyPAxG!NO5xc)5sK9UD{cR%0F$F0OC448kP#0 zufBP(#5~)UsZ{xPp_Qu^16(wVM0!){13xi=kFZG7?qSiznCId5`&n&WWJ8;!(@qEZ z-+QnOp7{eFn=LgLmHlES#}}c_5UZ%{H*tw^!{z$3BE^K4coe{~$vm<*ocnS<+s98x z;3#~Em!ZHF_`zIbrYL-i=Q5?z9@Zhw{f?Xd76+T&&${$q(Q7LWYb)!mMMdUv!V8D5 z9d6rHhh2;UOMT0=Kng?*@Hc5coj^UXlyYhKSf()Cl5UQ4lVHdpfzF&HMqFqzFTy9>-a<;e*Guan)OY z(m`u4mY>(GRP~Hh_uM#ww90h6y%{hnll5oq?ds6KQ#&1u?J1V!11lHyP+o?J3`=Zc zH-$Tx_aZL{!e&I=qHpAhLy+;MJ?x;fJSFf?A?dnBwMAvA<_AdWD_0kf`sD6>I1kvH z>C1eE2wVd7>ZN$?5qMa^BJi%o_3#psE+voQkkG$lJL2mQ?mgn$+%~8{G#PSkii5tk zNTI=!JCsp)VQ)@#>w)Ux(&6#GA%LQkna!IA+q?-E>{T=%3bD$d*%g{Gv4)X^L2G+%L(Wb(d4-tVwp7V8S@HH14`v`a%}y0-8;iI?enM43w~d8 z0ym1o4!-s#5oDN@&ZqW%}pM`wshnrie{F{+Qvh*>+JeTpyCMP}hclC_9zC5TJz!#?B zq$t7=CMc^z+SU=(m(8$|#QO0*jT4Udr^+=S@hWd#B{^;-swX0)yE>>=|1GoZ7E z$)b_*%f-2RD7aQ*HQo=ZaN3AX&}wE5Xb0Llsbe{9WqG@2jr{3lpBwO!zw$I}@^jRh ztw(YX3fwmLqO`P%NYj=e80Ave*cVHqatW6k<_yh=@X968emw|xp*|14|J`hCcaDIX`!p;hr|5rALU$B6m(mtPI8MC5vx59lP zpw_)4#_)(}k|=kh(1%TaRbndRsl>BJZo8r4= zVPPg%)hA#@3x3rKdc~EmTnU6s-hB>#to0MtYf&QpSUPyvQD`fnd@d0g>Vya(K&-s3 zFO!inL@@HW;tp#TNLn4hfOxDh#I}4`G9KlKgH;2$cEp@Jg9>i@hzw$`!MQRIb4MgmwAfMsK9lZhY-5{QQg zhDl?ne-SiS7$XA#bbd7qBu{Z2gR8@U@&T<%y8i~3v46qE6VL?O0LA|exG?`8=>~TH zGu`!+0AP^*qnSwm&jssqD!a$NWyh^<#}5Waw*1EzzlW@g9ZB^@g5-_PA2V-O+_wGg z3ZLTU=kOgN;U#`gGP4W*Gm$Yf>G{~luBepVT=gjUA^ojpkGzwtJXznDf&p#E-G565&)ysQnta4gan{T8x zbBU~ph9I&4LqNR0DQN#sl+F#Gejy%2ua9^yY?i51Z@Q(Q-E?w~UJl;9S7@dsnxVlp{5l*KP>3}+*kbfhfZ^FMs1f`khFFS zn-ft2U?zopY~2uC1m9z?ei&{z3j}j_u&(TWe*P7q%l~9(wLgXfM?f1D)%?L@ z7?pUwP%y0g`^>;jB!oi1aS1nAp$w&X-?8MJ&N-rGMio4IW)a@sZFt8`Y+Us5xh2Fa zRiAe1)?LVWs;V+&I(I_x^^+k+wRhrZGaa_T7WF+US)xFl+rx1x1~=j=Wd>&Rs&tAM z?Ztw6M>k5KSok=Rnw`xg`L(~eYeRJC2Ji`emXy6*uEW6HY{b9b~fHno5R2o&xw+R|a2Pn_xcNH%0Og zi18(21Nb(ZhI=rIw+W4=&FGSSH~yyI`lBHQK)?@fbU4$C<2wUXUHEQ@1bF}^GMO9S z5`MAqrZ{>cd;lryWi6%dUwWXi%`r*1JspH=M$v}p>I}T8XsheIS}kR+MYZzxU4wUW z29WA;^pAwgBreyq1YZ*+{t?W7i8?1B0BHlMm#}gGoTfjwnE{I8?W9tuk-bRGdb^Hw z61;lcqG%B6)>%9JoEv57$5f6(q$_Fl4u6X4I$+*v{swWV03pDM+A>~1vM)y+?A4yW ziXR@lb=by-PuAmcdHclASXxy_kD=CXq2;kY0`Veh@ulFAFaUV_ow}}!%kOsmw$F3v zJK>EDg;4bT++Y!t`TCnyUUMZCKVA*gDpzOPeY@gdhgN z0qAA$%`r@RR(btDBpd6Mc9t(d8-%uC&*hKL?w!1y$CqZL{0A;L1b56v9@8ElU+S7k z#3gv=bt6Xzv@(wLL}5-gdGA=oBf-&M`i(lrIriYQ{yS5Kyui|=d4ACb&gY4Q5NN%u zU)pa#{S9inc`kRTXk&THQurP zZ0l!R<)gC=QaL3#_x||Q&(Rgh_K1AFT&_0AI?M3*ApVhii8@L2|DY#3TIt^SMGTaUCj4%|q|ZCcnYZ0kVSpo;l+(?5 zMsAh;SFqMyiOPZgo)+xtDj+2I;^33N5s%V_ zll4Ovp60J+lPXf{212?TODnomQy=RGs;+ci)TN zwQShs^g^e&xzW+=ylafL{#l~%#L4fHs#}yKb#Y{DA5?B#4r@#qGNOec*NvF|qTea4Was;#U z4a^L19kt!pRkTvm8)Oq)ixa}E@z#yG@P}<=N-9b*+=>XLr=oqGVzzodP(xv2B<8Cb zo+2X#qJ7cYE+#1BrMJg+r;2eEaY31n3EH&%;5yG-@TS{?S&=fxY=ZOlFq7$UrdkAQ z^l?IWsYWXgFZ`283cge1H10}#Uev!4TG)KBu-AUlpc2(Bip6}&P>|Y~e9zkAbLHSR za>w_;fs&_FwldPXfzwiNL&>dzsGD?I_Q9WaopC6sG251w^$XvlSLE-x@8maIk%KJJm|t(0_4a^< zX#BhC>{#FUsU}D8)Z9hOB!S|oZ;F|HhDO8hc4pe2w^ptEwDs8I_Hmm-rMYy`8Wfpo z|6mJV9+PaZ_Hmh4H zko^F!)xku$z&Pg98E8N`rqKJEkubX=5Nz6J#iIi$MOe4_L9z(Wjs#e4c}A@=Jyj}q z-4erpt4FSX)guH50t7%}|3f{pC}Z$A5Q2hNKFF#@Hx0$87+)T~u9tz93*mQ);OjTy zLTk(a%v^t7Rncp1AW2CV%Yn%_7 zOG4ihEe>Juwtrx&z-4v7lPTsXV67uQo@HNSDNx4m{IOpb+(bdIUT&%s0H>CrUYRF= zfDb6lr4_#n-v<_HzOfs{eCg{&BGv*1uZPVpp=& zJgPq|ddp|Z=H}WzNQ45s(cf@N0v}$f-8vaQ+m;46Mi}Wm66RvY=Q*Tq93ovl&K)$v zgx^1V?;G=a=HW&2Q01?#*gZ$jo`8k=OB1ce>gu%Dged?AV<=5PBe&05$*Vtxx{)FR zu|05?an#AG>cq#)A3XNdJ?__fo8+|HVB#+D%tXWnI@3FQGn*43p=mG=UKMFaRegm}vZL&n*h z;zqtht1eQB`;;cMbmem?VSnJhB|buX$TMXUh=b>2w0No7J^TBj$Onm(^?=Y4x=xx|=tl5@q`1RiZ=bZ;V}v1mBA z{lZ}2t48emAfIoF*RBg`$i6Q(KiwbwCMv+-#(iH`JgR)q3#t&Lj1Fl@;pVqTek#++4h>g@Mst?>A=QtKjzkZm2-``s7>edk z&KJCs-YYmIUG9!gX^Q90AGQSYDP63BjEnMC%({m5PzgEn{x44b zJYk!9F}1xW3y;R)7??U0C6rUF+6*Vpwk;0Fm99C#&L02EWl*aY#q0q6Z z?e|}^I-}jh-lY%TTc51t4?)Vu{1{Rmu()v~%P*VgY!v)VD)&XF>+t-tl3&tD^}>bR z!uDFpYvn~-ryr{UkT=fvr?KsK6HIqV8_r{$v?PKdzo2+gw^fqjeC>4dUJxe4@Tq-q z4TYbFzkG$r6;+uUDLo;jieUA^((!sH2F}y1rrAHR@QT2%Tc#(y{iDvo;csotD={mk zF%!}}hqiA4h3!eJB+i_sh4& zkCZVw5|Cy2xF%*ZsDx6dx&osy>UXhecI}s9 z|A=Kt3Y3=r8=G$N;`go}&~0wh&Ud~8ohh$wK6)0wT)VN+mQQak=|*$*Y`=Y>Krhd=~JRZw9~pxbhu7Ezs~aheP|$Xx?&Z z&yD!U3CE^vJC&^k0VYzrs4TVk$hVK`w(^rY2fXT4e>P*d!jAZR$t~E@+xHZ>8!N9( z+Up1Oxj2_KyKTR9PPrL{r1_KDs2`U1vjzt=J)87236^!}GS)2tn|316aaNP5vszYA3LxSF1|_9>TL z!XM{2F*aExasP4E5LJ^(4`5dssdf`LV4*s%B6dYtqxvo5@23m1wXd%XR+`^#R~-CR zy?1{yyV`m4>7u$Re=se(1o*k?(=G$P$U{&yQsr-sS9 z{XAONONEJr=w(>@j^t97^+x(r_|fHaFq-I{k!#XQ(F#EeUI0Y~|BB{*h z;YRV5SNkqpO;!9SEzeAY2?%!?$=GC9!boE`{p>WvF;x%lqUu~=KP;rpZ4p-v+MY_( z0***doq{I!92oQZDGY0>>hSFb(;pSKXCKkrk<~z1Z_HCZqxggKhcvioiI_~5v^P=`Aj#87%!?-k{aMolrR2`jI8_E)=Fd)5Q8Ek=#5e8(aAD+T`E8;Z9jl~ev9 z!O8WXooTIquOow+aw*ffT`nl~k$Ay2@KK7GY1|p6oKx}Oqd`F*D_>K2SZYX4^G?t5 zV@cJq-S#w|hk(^+tdmSJ&Vv`T3@)Pd7mFw#I=v6?e6!CX=*3PS;of5x*JHt;!IzQi4 zZ5h5SJCgQ{?cT$1{ihE6hMvG!M2AjKwe$QaI;~2mid}=lXOwA1ygUIH6~d<%Jo9|U zO3jh&)bH&@eAn#wHMe(Heo#uZ%oS^EM7>ehFpwZAja&rOJA2e%L5D&nBV?P>n(L@xB&PVO?wz{VaW*CzlGkTszy7i3#(Iu~z%R#sD*5=WT-d9w5oJUBr%A>apOt6lMt>{!G6~%)`*!*# zO#a~(jXV1y7p;w@wHNPApJ=255uB+`UZh7H{V~9{WCfF&sPJDZz`#= zu%S5+dok{zxU^5w^SB`VUZwH&D}Jk=f9c&F?wU#;bs|Sb#_3>A9t*Fwx9aq%TAbG)rPrmn}_=@$#TSMF2!fP#Z0*mT#`4$OzB{lVnV#W`~&WuJZs;M>wN0ml@u4aZ9p7{$W zvyT6fpUEFNWSGy`mD@GHk^o8J-meT$Oz@w|&~CAmd6Y_+&!ksce$IW)wnv0qH_`Ms zZE!SUV(>wSSAD)PD-wsCN#6M+b_=1CbDE$);QmBk@MmjTu8fbQ`?a2MH-t+kaq|rT zp1u3&Rfq}i3nkBEA(%{DW(M6Ty*ZWjs5DLuhNt=H7=U3iMfU23zpoj zzawy#UAJdzb1QD2JBo?s8q$Yf_>$4wRd<0#lSns_qK%n>)X!p92Cz^+?q9Uy? z3)!Rw&J$Gt7uwW3M_A@?GMF|uji*6YtJHyO`LWTPcrlG@hHA&!haSHnd22@@mY>a! z10xrBRH?6)^nFrzY;_#0cPDP(({ZR=LS!gMCad!Ucv^?jw`u^wrhhI-@f zIPN`?)6V3%u=v>h{fXk4L^~!&c;hhB-e)}4`9{m5#txB}s|Nl(j~T^H0;%3!UuFvH z{bqRxpO|^o8u4)Gnr{pRpQYb5g~+xiVVvz$ZhR{8yYGnh-CT=pLRjXKdTH?Q|yTo|(Cs=eyrm=i=<&S?lbzd8)<y0x? zv!W|UIQr*+3g{k?zjaXt1Wli|{NuZEKMlnPX{G|*5DE&KE3z`XzO~a+aK4t z6@rFZpzE(dV!v{i5|ftIEs14-AU&1$+Kz-LLy=mHo?MzUo0^(v3(+$_$s*8ixW=^c z!Jy8y()njyC7J!dCF?&&BMbTgdJSI!u2Cn0on`FS{4no3PCwrCT6Wnkj0i~+nN;_Y zZzm)#7w|ScyZFcxpL=q^JF%M-U9yjMw9c6RsY}XU(fO;w)+eZEe`(P`k^ zl5%$+<1_S?+?P{S1#g54ZQaF0QVfNx`FQr@f4}thb8ep$DHvbT4Eh@s9Q+9VUq}O* z3`znkG&CFuo&e94s}vA{KrB*l*+LBf6JTRh$h*=`MZ-`+x9~mAOr>LK-~>K|(jz?=3t%%GX}X?BCJ1xtWLz%M%9JBxQgvRrooH4C%E}9kFeIXpSg4+I<5KU12ScC! z8zmK-8Wu)Or^tPIlCH`9E|55|{js@ZBBP|6%YQj@CPyopgGNrTTb`!~!7a@p3C$0$ zhF&|*2|F~p!3bd7Q^FRK6LKA;`mH5WT7Uk)Yyj<**biuO7xQ$^NyBIlvCq|^$24prc${j@hvk+WR#Z@eNg55xZZ!lFBGo#vBJxk zpn{x~#Ni{P(0qrY3Q7RE$rK&f$;qZVLsvtg!dzPfWRqrS=S^k_s}r3G2*$}{0x#ww z4CBDBUtuXco#B@RfIcd(Oj)*VabxhEyO`Y9sAu(~a%HxRBO&X;_~v1iiti_-DT{eq z$?^*8RLyNBek;^XJpdNT|DtlS3YfV2uiD{T-S!$tB{yRVFI{ZE14 zoRLn`>QQpZyI|V#^!2p;j*%s=s8MfCivgmHihf?)h)^DXMLE(?G_CL2x32t~0KXB0 zPdl!UAt=}i)9nS4t@F79f(kNtWT*`rG$xnz30i9-Gy@+O zI$3<`ZS@uRII=|h$*x9E?Cq?V;G(D>dKqc0HWXIewI>QW2oZOdRl)1L3mCYuo{dtx zXC25Jh)Jl*+|8KO3Wp40` z_G3H&8^InjFCU?z*r|b@v&7;=!7MgeWtIy&rf-`Otj)yE4;f{Cu%b~9^Dz4->s=YU-x-p8MB#Tg;OM&$}+dH@@ zzXVDQ#9!avI0McP5BoL~i0>Z&7zU5~cl#yHzg+sbv`M?ZzkEC-le7I(>D&C5=8-Gw z<-)y+a`^LiHWduRolE730aUJ!a24MYuT*%+BV9~2MjfZ0^a1ChaZ?5uX95#US!JC+`Xzm9m3y9F>sPuM7tq!*lu7b=yT+<1o_Sfxbm`JRT4febCoCvWROGLcidLYCqLMw75Lu-t4|A%>*r5;(SOY2f zU2B{n)|d6N=X~^EkGI*Y%t(6`j~ZzL$4KNet?0@qexLI)Z}$h`+?Nto8j`FN4b8=< zCuc~}Xin7Nebc{fiRLRYbFJFV?`+E8wik0g$Cwj>E^Z>lxgG4Pkg)>s23`4&g+C)jTe zWT)E%*2n5d2Fdgo)LpopDv25L)N*f~9^ZD|^!;@6@QiG533Zue`nXG?k^OQ$`10e0 zdFFLDrK=5PN&q05t~9V3u_2?za(mO@4|LB`;s;nCA9_6%6Q&hr=@cw-bZM7!1nVbk z%bl3+=#3&rnpv_MO?qMQcNnlf*hVHytqd)GKfb;0P0!CVPG+YHd+C4HhpjgB@xM#Y9|t`1%Zb?x#l95?oi{{|?a#CCozjKNH!?-2T-BXE5>5`mw zaEBlv@xOI-C?Qvgl932_Ocp*pu2QHdI6_4}rjldnSY%FnE8nF=N!=y^6srlv)8PbE zN-?h5B{V2rK7ziC7|Ua#EFn^qz!^-Tuibui)F2I{(Owg;iQvwK<7CiP?W(hR?ZoFdBq0N zK}K_Hu2^M{^`L*L+y#6-6vZ`vtzA)^n4fpUo(L+Megr{~f#=vz(n#9SN?B~DMeLA<|E$#8I~CWyYH#3+Br6l2}`77+tMpYXXTU*8Qtvhaz(o!3mAiakgO_Rc2N*mkPgcKdiX*oImZSR9iupFZw0aR7h*0a zqgT8sd#z+-whV(zkpjON6K}s!bU7hOF}a3AAW zHle2fISPpW49cHZi_l>|$|1pM=#P_|@I4%?y?T|3&*n)9pjwdtsC_j3_3!lb=H z2w#zCJr!{3cdZkp+8s4qTP-?XxC06}&9X7xJO3cQ>c8y13tD@yr#yJ>oEH3fx!zc2 z+*w~=zUY5Mp=u}o+R>cko11@mUTio43){(A~ zCQI}M-N^|KTXhT2tx%tM??0zh$q}O8X*PKJ+?hjX`(=ZHBAejRK8JHQ=Z^K z&}Hxv2rFCJwb2=OF?!Q|XrNYf&64cRe)8XBmm-RHTV`nj$bvDSLxtbl@-gDKIX$Zm zrA}i6xRdojsJ1U5sMbh{_qZ<*EO_Py^ydC#C*9k)7~2XyB3S+^L|u z%LCAwv%F-uPh6Tp&8Ea_2>xS@l@|_%wl!A@PDZbQ1`0LxMpXe zTC>DtcvQwDbW1C*+>|Xjw4dy^ir;$Ok`~5%FVja3_piKDOT7N^cgdrf^@Ux!9dO7- z(i0RMlo!fdyCt6XIHE~ss`=;IWChu^BdWEMOE6&)W9)Yi)g7y>9NIE&@?&WHD;r2q zsJl0h&-NybQf1+FuNK^75j9%oZTOpYeqqHT7}@=u>1#~0?q?k{|EVUYnB;2|K_)h= zD^hWTd;o^~tTOln+giqyuANs27-{aCYi-o7R@Lk0z)^CkIc>aRp&dhqgOXq^XESx( z;-0d@nGnbFi<|KFr`v6EQ8wF=Jc&rfOHr?ym_+~G|6n3A0=cFE2k5A zxabE~dXLAdP@;k`6TRxT%h7l~Z)-v?rCNxxndf`98Pu#Q&QN0JXLUCcDlqKqbfeld ziBY0(5WO0ADkUg8hZQTP^z)ovR5va**b=pwI`}96982f1Y%~fcV8QRnPCqO@Uy)3V zs7-598ea)2;l=%MJdIj2QyI%~h7Q&Vi$gxke76f}vyPovltE(v)*1(%s=CCkI&)6; zudx2fIk*H{1S;`k*mfEqEEV0bRq8o8jwp*S-q9w7oRtb;@q`NYwOOpoFPUd)QP?B5 zLB5M|K&Tq-M)DixsL`du*n>@6E|!4eftzx+X0J~5qNjh~l-{F1Blb;}ol>oA5+DS4SL>U(T3e*`;q3du8NaVsP z^cJ{?k;6PBf_3NHgYvsC6uEiDWl zF*N@C<>13`r4R=jzx;v}MFA}4uIT$%M zsacDUl9rJs9fzosf6~NhRy3Ckl8xBf2&T|9dQ?fU*9g(|sI?cr0A9a0oSSB4{BqTX zc)G~F#DE=Ez-VmGbE#Q(5e{zy)efVHi&QYr>~yJT6=MYgio}n`x>dKlo(qJeMDe`s&a01L(PR^Z_Uh4Xr1jPYI`z+cB;Ar*G*VUkb8^nR#!Zr6R?WUb8Wcnoq0LNnN5trI zK0QAUcD81$HaM1VRnQwbhDsB~svck49BT*0%Ex`~lmjOJ^iT%q-Av`H82caPUyKj@ zA}Rj#_a*xFV|h!}?U!$yT=XwU3yvyhTlJ8x4gH_EfWMIU_nVC9%WS^qS5>VOY_-9q zwN@$OL@~i5v~zd*k;sC0-k!E4nD3qZ({@vO*w6Whta`%o)N~PPT3CqC-5i`U4|LQ# zrHDt_t@M7?%s(xuFOCsQM`AIIAV&&hLjz-E3HqFF)+kiJuLXKz;WfYlzYTm6wj^2U zu|1VKOmHbL#OFOR0;fdHbJ3W@GXh(q1ji}IV|YixJbzl66__La)D`b5#Ey3wSSLE! z8WmPO7f~N8lg@Z)I3CyV%!4J?gkq+V9!=HMr6VA9v-mb5cEvQ|RzW(3H!XDx=Z3^% z0yZKP=6iF~{9cMeoH>o9k(ZDW##_laQZs99$CE1NXVMoAuSAdG?7fd1N64#HpG04; zK^sr~SG!_JT5?%qh4mb-GeTL9xm|JIN_|ZLQ6*m<*K0j;j~`h^sK#n4GaQeOt(kF- zEJ>BSPpp*sqIO_v#w}4BlCar&tdHdhs*_4Iw>cv4rLdi!LeYD3N=IcE%q^lT*m-O3)$_12SG3~U zfhXf;_L4;I8PRc`hs&3;tcKtW?`%Fg37>Lh&bkK;3cURp=l5Q%gO2QToa%XVUmJU}fGN~UtSpZ# z-`Sl#^28H!4)E}2;?C{!UrE`r4&{aaAbUxx!QmVCMvC?9;6`64+S;)7>rPsCwYKh( zq8U!n9Xhp1bv;9HDn&Z=_JIm8J!cnbU=ZFu4MJoTy}=6>kb7}Whp~I1aZvsb(JxiF zo<2o;Bn|Dot1`_9O-*M7zuk2=awvz?4C+|`yeu_fIXnGtf^RLTej5eRn3mUB9+Q>F z*n3g9o7M$17hv+)%02iGo!Z$nU*mKUm&-U2~%$ z62^Q%##QR&-=%__=TS=ISvqy8Wi>p&RR6!r>MdBy2va1gll+G8UVde>qml-+=1k5WybaODe_Y~ZcD zl$FpGj3RErt?3dwF#!md2z#j?(2!d$G~p>`F|^}SR@yPbZzU8}T?{mk>}i^24}p*L ztXTTWT>o_@h<8yn5Tn-WJA78zCek;hHw>GOv~R}Wy8p$|J7rSCt!KMt7o4aAu+4)o!FQDvP3>=%?HWuIfr?8A8#I)~y8ySUM6=gC#j-HUwPm6Z% zk$z`_>UGa+oxd|rY%}aF<=FgBrBzIE^#JZy8HEdt;uW~HRw>iLw~|E>#R+`O9CTv| z(HAeW06%k*7x#!cu(&6XDxNS>nuHVb^>@ZKoPvYnqCdQESqrh33GK|}Lb5MwfB)4H zCtUuiVB{e@$}_NCF6?@S_B)+z!yW;%t3^`xNs|6a!A{$$)q1wZO0-H}Ppzn@t*!}k z1aC>4jvgl{5xaEL>*m7p58nPFO;2*r&2xwFN_5dyTUJt1HjvK-o|C@JJ7XJHR7~Z{ zuq=~@q7Np~`;e}AU<~H*bfnc(Eigttv5~W|YrNGm4OxKxRWEuGG&`j6Wvq;9l-Br8 zcBPd+yxmUP4I6Bk;XL*2m?-L6oZLaA-DyS$*3=%K?pv=zLf|^ff5pCY$Bjh*&cA*6 z6(2TD-&UJka8)Rzp(GaYzX;nP;T<7@_l)v?PE4zxtN){UA(V$aC*weVQqI5mXn#y$ z{fTCT2x8q5V*PKL1`^z%+2JrOA_fUw4%g9WG!{94FXo|iEF6~}CdC)ZQaVhU%7Ek& zA+$c$e3C7YOXEm7i=Fyzi#i3In+G){u|~{WHJd{cpo!PVeJLA8!H!`a!%aOIE{n_~ z#)4m~R0l=Z;W*uT4J?yO2L)Y9u!g3<=CfJxt1phHU^Uqnw4`wCXYmoNz_C6s{wfGT zGFZ(qG$*{nD|66*llX{N7`U;NU8VFJxLIjIh=TBij}H9 zp_ZhDaEXTIPiS9CS^G}uBFTmfD@v2AGoYy{W8nz{BGC4b)!$sxgSE3R(Zg0$FLNQ`fGbuPLVG!KhKgh|HGA-b9*!yN zjFbbRb|FSYX3pE%T3jx{?s+MHrZUV1oX-4YubOauC~I1Svm!%q)cr@A&6gX zriVJk*eZ=UA%$WHU;9{Ec%mq*B?0NzjKaiAiFYCl_)o72WqR>WY6}fIw%xrstY%^% zbi^;KW#Tf(shL9~*a+pYw{a&{*5vEURs}4w_;uOz(T8<`*tP{yV@V_+*}9}yZA(e` zDCQ#E%pQ``B=F58nYd%oR&C!w~24d^VkO&=0 z;ZI)N09an3Lq{J+mRCp67VLgkp=0RX4{oDWa<-B$B6D`>VCZwWV(yOgHczTrRHv8p+e49ezZLn)q$OE@%gr6+ zu7ZhyvNHno%PA)g3Q_0rF+wl|`>pV^{%=ZS1ia0`ad>me^<&k&|C?FR-Qd)N6625E zq@Dj5ARjRMkPbo-nlojPmWJ}zgIN}^wqIrf2lHZv>*YS_})4h*T@$czM+Gfp6e z?OKLJ!j)1Owvssr?z|0CQz^X3L%ya@hYvr`Nxwv^c*8!1GJC$o4a}&a{DZHwXcXUzFR~Lw*G~?FLqmLqLxv)2}Un?q8=|PcK7*sWB7xT z^|(IaUF3wQP>z#C@!pT& zm1<@^8JsU^E76$Q{rae3XRUR4bWJ>b$URkh#b;|v$5Ki$v{HtELvJq7#r%^xEiKI+ zbf&t!pf=kARLioSlDvGw zRKG*ZS^O0GXQxPF?6ZfOc@=N;Q;)umLyhIjrl|_E9s)yS%dj-5#aZRnA1DHoJz}c4 z4{b$xlvPuPcy&F(YgI0pOK%PyRxb>!9X|~YQ*UtyySn(bdQ!(*5@wVW730?S8iQLm zb`Z9VF`t3G%!E8wLy>jVZu%sQ;5QEGJ32Q*e1XcO(vwJMp5zR+c_+NK`BO)4!n|T% z<`~JP<0ia8L*oaW#m*s>0}A6;X`L5Lt@p1ci{*}4I z4k*AR)7Myjsr_LQWk*0=9$7(W7>c`D9_dO1v+>TYyma*vWvb<@Rw`P!%nc zT?jWfEpqig`(8|&oXK|nbfLXR#6S6d5bmn&u5+L}AYxVsuz5*Zx|QJ z7BW%J)c6t;e$pQLyS!U9<+nFZA+Of^4^^&AJi|_|r+glvyuEr?swb>}P0fo$H_D$s zeZj$Z`|m5siAt3h?3Y}p=mTqZ!L>Tf^ubKmctcTrQJzgRG-E*fbR;?5Ztwt(rvno9j?G$?Y zlI(u-%%UEtn_?4wpvUMx@;VK-xqAzLtdatxJv;h5I{d|#+&AzfRE`<<^+dMg`~ka0rORKo&{(XrY;iLO|sSBzi0v4J$(Ea|dc1 z%15dYe1l4npq0*Mp#(7@A5H;y;eJs4E%QKIi2g=d^|$xYTB8id4z%ZsT_u4G%PbOU z@L~xF(?JyZ$a$^Ps(@>Bp7_%Gy_%e-XaMLTC`E5WBA1X53S&qP6U91TKqjco9)dk; z@tgKK(rY#-he@jM-2TauH6DcW{mmY$b%;S0 zKZ4LGk5Ecf=DY*0G-|Dvo=4#)Jl*5t)2KnDw){=D%{?`NIFBLioZALCfr`}q$$}`6 zQ!K0r>C?B>GIM~cM=s*%r4`rU?zWq}XFYfE*@x*DjQ&IB`ZB&sK2Z#}39K+yF#Z(S zu;Imu*#fE{$C!CV5`(sEBK#PaY_lrhp@QMO*(9XI#w~EN^X@4{al4e}SbiKDTuvw?TNuySPMge_B8KaE{A&bH%YiIZ*aibz>7&?*#$db=D}i6e4fkJq*v-%W-86fswAPNiibR07r*?^w^({A#m9^I|j}eap>O$fS zq!~4ZL_m!C>dw-a=7}>`hStnSf(H`m7;vD2;LN zM%}YKBfxt2O}(5N^E;J(!|17csT*i+x3?Vf?yQ3|E|Nkv(Fa`ifs55&?#OsjQm1TP zuD2a@VX>{z0RD?CjM8qMyDZ@!{bMOvs4%HMDFQifio_W+%mrciYEA*1gh?6nT%o9P zFs3lzxB$c`FU%qMCV>?bZeW8IX)*^ijXo1&JogDKO@9X)z?Z;sZ(=ar`s6W5jPo!D z=jpwa>l%S9C0sch7QV-PtLw6YH6DlL=-JlsO3qoqnyj(Rt+o^%`9eMfE-&ibNW)Ey z?$z2OprX-&h;;wjE#p<(UPrB;PDmL>E3xOueQ~h$cx4$5|JVH!Qg2@x=Hl|2CuNiK zWGOMB+cb{!T_^}3i$S=YNFmL0B62g(Wz)9GQ6E}m%6fB$ar3!!Q-t`V<<|DUi~w)U zuij@ZH5z&2MK@agZYx9xJJltDq3MO^_Ip>*Kuo~T7K@`3vEW_ITs85xc#|I2M~vQP z;lE`8l%HS6WM#;g5;anL8e90}-6N;6*tDqK{$rG|ns8zNi7HAH31z_nusBAbm7!DJ zNB%RWa~5+b2^GjmIcG`;SN6jw#gU>~MZb$QHQzy@)g~4rzm9_J@ve2xYf5GBEio~U zCusW;Wf3>2Sjc6}qq%wIc-g^4kYi-V({sG1coQD6I02onI*G?wJ{p0@dwHt z=VPXm>{2rFw2Yb^KS_;f&g~jtNJ14er{evv(hL4>vy6-m+ksj#Zw#sU2${tlg3*!* zXf0*h^cB2Im)$QSNz74XX3J$Nc#i*);w83c4t&-mHbd%63GtECN@uhJZaNqRADQL4 zZgCm@S#5n^CtM1nnHC&w(4n?rRIzln)>ZwJ%i5~hj4VQBk2Q#Ws?0B0+&C841Pdnu2sr3oBDDQ8)y7ZI%+mf2BBeXq~Pq{XFP^Gnn5C^)0tC(?!qYN{4@ zDu?c69(8bDbyst@zl<~Jd8g(VNX@rL*DzS(0ddLch}Gy)Y^>|}pR1`V+h`M8F1IDc zHD>=&RG1{$B%pt=x67>8GP0pQ#sAqjYZxcWsGWn1;q4doI%{4{LNx(S3r`$$gtX90 z&Kx*#Pd|cG+288yYo)l*MGL&L{Y<*+%$J#R&+2ih9P7+Zh zeG^wNi89YfQPPBpHb&y_KYJAqF8TZzG?o~F>RRl+Qw~xq2^t^!yVtLSRH(VBUPe?D zrfS^ZvrJRA1y9>4bUbBnuJdvHf3S7yCaW9oLNu1inr_J0LaY7?aRL(!>vY`~aOAaZV#?9G<26$SFLn#xWYU0&fLJ1#K8 zBD1{F;!4Ea-$ag^ zo3itltWhHogy7M&l|`5E({cZohp-&mW|kpX>XUeTaIG!C`k_F?he$`1WwQ@JL;fA* z&Mj`2=XBAVsym3?DBYm5rA?K@gSESDW%qk>uOMflRdX<|ZZ|}>n{$f!K@p?&P-%VI zfp}qAmljp;!U!)zRmYb+5IsizVUC*2c@Er zOYmy=zr&iwC5_*BrE$~Csqtl6)odsK>U_Oq|4Q}@X#ABGwaZt_Z_vSa-ofbf!*$Rx zs-iIuYFzAxn`Q0m!?W2lFZM4JLw}M+)#O_6lip4j_vrl5Ag5P6fPWrT*cw9H#+>ol zk)K;|V!@bX zxnCymbANC%`R_@gUsdkMA0Eq1jgSp*kE&?DypE9HD7#lm`TX77Zwv4IF{}mxz8oCail@lY)qxcXi+%fIATJsWf5VDxg7B7o-C4J zIp|P0s_3$+CIoi+40RxNVmPi&lX6daX>KWk4Fle43WpI?Pzs4mU5ATWn0lCMBMH!c ztV{!y7Hxj%#Iy(@1a4GqzJmB(e~VFWZ4HZ4X;lZEPGeIjGZVCdH#=5Jbg_?>Dl7`8^?$ z+#e;*N>|cExkg>rj9A+&;KkZgT|fG$dN&yERd-L8G0&zLFqFzq0CMf^IZi-WkkAW+ zw>uxa4^mH21K9YzEgmOX2>rvK)It51?!$6lc3MhW$6Mxr7O;)c(V@_qXOsz2^8!j|u_# ztFazKf_>cZZ34CvF*n`I+(@lnr=Qu0_VboCqas({??$H@GxPpE56A+DaFaV$ty|PX znf%w6ceg1R&NuF~ckX%Iq96TJGTug{2;$BJm$r+Fuyxwc=mV0w8R zj!^|$o(#;oA}vkoQca>zUQQGkr1%rio^0H&+GR+w7L1#Tn7b^gPxeco{-J@D{k)7Dtdb$(-n`=C&-{A@_x=`l+FLqif?p-6up*Z%GZ=<LsZ+$QphWmx>usYWAisgb;K0Ar=E+xtT(^389Xw8V9wRYb=zPA4ujvQvPa3O`B zW55K??xc8B*e!z0@nrOy5c8}RyP(TFRgd$BbaDn4&kw%@%2)(>sV+`ewa6S=r>tq@ zH!K+yw~9rvY?*Ks9)_@M>Lz!KVO7Amt#JAJ7(hQ&!(KYkjTD6?yG`+la2^e1_OcWDmo9pg};V0e1y73mjf7$6ew%znUgb!#Ck|Zb4}up z&p47Kt?HrS_DvungJC&Op7fW+MmkGHPKP>EC4-z!oJJwSoZ*G=qN%&wfZ?@bPAUuT zzZF>7N(RnMqqR9LWMUwhN@kWq;R;YVcRjsoF~jm-a-w!cFKd!hkc1>PMQ=>yfoEg2 z@oxenT3TJ>>$aw^UI(6i#r#2VZL|I@Lz0oUR`XkGo(tM04S9c4OX*YXeOy{_+Zori zB0HDfPI6Nmk|NG^N^3z-Lp=>?>r$+DjnxFC78K@QlU4Z2nI2VbdUV;TqR6b=X*@f+ zl(ifEsNsCwn&8htY{a+tlR0nIN#BpTRe-??0b$jw2e3t7!$g?fX0_j9QAzY03{2Tm z$?&1HOFe0F=3d7y@H31v3G@~$%G6{d8xz69sdcq)_AtLl5tb>98~-u8rWdNVsbxyj zS%3t(cOpQOs)FH;+ICp6MJC-yrD!o$uuNu{l5bCP?Wv?t<%)TnD#gC<9!C^*Bog{f$fcD|Lz#=?`{dj!G%rNqKf|h-#W%4=fV;_@0nkt80c7~4o_<1hApEOq z@z{blY45M$twpDTP?k0`aDJv34zrJZ_KAzqoxX-_LN?oqFQYTskVYX7I9%Hy!GUho zRkgBwkl>V3_@S(r-jTbZtqdj8ovq@G8xqK8s9DFOcmn6V(L3P$$GI@mD84CUkfX7I zd~0kLeYJkP!$!%xP~`KnTXflEv%F+VvZhUl@s7We`JM4rh`@zrqv&K~K;;mJv?JC5 zZ-akqf1Kt|Ui1hX<@bwdj+e{Z9>YchK34jUqb1QX4>X$-6Qle7LpaSlV2`{In_I{# zHn=VKPM0|7A-fQJsC@F5iEZJ{a@s0M+$5heIsc3(o1wv}5zcYF&zF(wF6d0VU@ga_ zC^OY2-6*D^H~46iC`dTbw5Je;uiTa;16*9sWNFZeo|iB>+S?LISZvbqmROe0tD46IYo` zSOXr|=tG8PJQ(JzLj1s@;ffV`WA1Q99Rxnvw;cv zLK#ZsyTJaHJHl8sbtDftX$2J`)1sA;6% zu!vBZVG7W`|E@hj+VNV+WgT(q;c$}xOn{CU{^eL0A^d-0fuHWyBQVskIU}DnWKfRw zFiW0GH~=mrYI*Hk&BLVJ4ky&ec=bC;PMmubydLyWu8>IIs8JHm*TXLYlbw8lqQ?th}@t#^0J&Z!AN- z+|(r})XxnZH$7@Pgb2<3Y!jawJ3QjRL@x$n?Xs&iz35$WLW7uJ6V>EE4B=2?txLbt zvrms_`gepHr@V8;!+E%^#f>&O4(|r-OCuSFRKXQ>2St#a}%~V$4OlbDhS&sGmj2k7AGSqDPUT$ zCjqzKq&Mnf6GBaW=ibpA>DQp?8bD1GOJz?(-KBMJgGpw~2+F$KQm`{p{E|ESKhg9- zq^nRuz%UBl;b1CO9mD!Vq3U>WHYGZ zVK}Ww3(%qKy0q*Xotvo$mH|?vjvdhk@7wIYXPR%uJ3>d_uEa4J)~?YwgZ0dw|52DmBeVvqKUSF}^(r|| zQItQl;mrEpW)X*I#Nk2yX+PUj!2k0eQM+fi-AFGE-1~IL@n@-7EJ?(nfXF*@7wQ%U-(McRwMt`zkCR-%XZWVR zEdVqDXLfkd6PxRo=I+HMN3&HvFN?P52C0ZsUd6?~L<7r~E`7}8-Qk&@?=xGgZ<+de6{2WTv4vD8_CV`4)nUwi8eAB(#-zB2PZsn6Fvi;xSwdcK@!smW> zY#n_0tG_78Zz}HYIqQn-21~PfnvcS5!-wrjSV^$K^B75)Yd6NS?z*7c?|u^FGBkw4sx|-6>u&@JU38BsoCY1gU>dBj(pe z;|BiQU(zwW7|j1n8Z2yLuNKcY(y+XerUbvD|B@Qe#hIzCyBVx3JI#MVf@KPF zRSouWBX*4jR8l=Ozs-GzZ$uwr@|%~^F&YCQbWO&Q5eS?Az~oc&$d*O|dTyOO!WTp5 zu9_!Ysl=ijGp20MSyct#9ZTWkywRgNAr_;sS)_cG+vV?fs-9r_FZ%d9`9x#qD*+e( zW@zG5@gHOra#KQ}3}>5L;-6vAV$Yfr!45t?opl0eT%h$P`L5!n+xduoz^_Y-lF6TU z{1g4R?$PFj^L}-0Ds`f$3F0Y;S+`t~3hI|)oSt=QgLPV#qWm={lkB7w<@y)@a0VH9eqBOvUqRT=xaM_E@sME+~LGd6JK($vb zdb?b6)_;$f;TQMAYq8BjqUxI#?bMv^m1U?|NRsLx7rQD?y#oz+ zWD#O@dgDYhcH$F6Q*db0$o>cav8SOk;j^xRG#P^(0rL+bH8EWHZ9Q1gZG96>nYydY z6_s1YELi?l1`8^FKa?otcVS0b6n!OMO6D0mT$x0PWQVmXBgSbdkyRXWdUW1^Knf}S z>no*(0*>ct+5mKILFh2H^{FNBw#O=cPBPO{<)1>{#V*#I)% zSw@yG5yEuM_mDexa^gJ@(41c zEXP;QGI|7oU5WPOvbCiGu7%xF#;FXeQ|c%W@}9{L6Ff(=aTagKwuJTG!#btDp53^H z;|cs?k<|W%wBXheSt16zG);fTqxvi`Y>=HgF>GqswSqTN)Pb84tCP?Iz6NKmC; zNHap`CtqGQb?_{J)f{fPI*9nVO`{#Em$`bfTyEhCNGw=46OyHL|f^ZMR&gid<;X;kt&FEZK`{ipM+ z#zxi24ApBf;CFj~QDZm}Y4xFduz0lX{rCUI-<5lRuc`QE4JzS31lOgII}lnIct?CJp-X)nD!j%YvkYYsXxJlguu=|?|TkHX$oTbP!^ zLpW-PIV@Yg33Ts%RN!Wk>nQ6=k?rE)xsMfcoFNp{W2ZF7W~@xdBQDe_8DyGfae6`W zJFXER39c7{?juKp&mC`lXm#{ZrfvESQ#|PkM@bX&eAMdBwVKWd%! z+YLzl13q(wy~#ZEiVkN2M)4!+CNU#j5tBTY@5@8dA^N2J+{?lnNc)F2QfkP#+M3y=jF!x zDd~O z0a5#|LcmuN^7{)~m{$e`4W4qHpdH+}C7a3^62(?3sq(g`DM6*Q1ElX$IxTNerJuPs zMu=LQDSJRUKc_O}>J?pW2rxM;^QKwg3E+l;Q^fOSXqCD?UHNGh950e#@{A&QvW3*% zfr^*Dbf#G1`Q}<|3@LpDY>lhyymiPbJINi8=q|qDv$X!3aeRHR@xu2O3_QwlFQ5}G z7q)WolPcZw4i^R>-~`etIb#<}my_aP_UWcN*C$xl8<7k4pY3pX^y|x(adQkH_d-vR zST_!ocCt_hSz&*kWb?;m){$S)d-<(rf0>*OeL<%MYtXgBjh)6tfCk*-+7r&%F*VJ7WR&$K6^*cPaMb{}CL$UEwDa(>5z(o% zQCeBF8+X7ZNrq|&T2Qq(tB7%eEMc#7e@R|NB8XWH?F2*&M(~QIVo%3r zfPAVshL-3=p?TZ;tUT*1WX9B- zccvc)0b}z-cS5nk0sR7LstX3U3|td#WW{b-8^oh2L$f_m`)=Fv^dbM>oCK82UuM^` zo>~ZJ@M5McR}5Kn`&8q4ap6Mk@r1v^Ldn!AEZKP@dP7S>*hH(bIkv=jI9nRwDO~~U zo9uFj{ZGo*=P@YnOWrp{X5<3bN?ziQdAGhL?CV~*Dvm45k*~rqqa(fi&CN>hdkZ8E z5Pg>$(3Cp>n6>)a6F7Kn?jss^NMTS~%^xTrz-Uq>W=^7nhu8YIV#`yO5c6gfLXO~+PTUShQQ|e4qT|x0% zu+kelUFy4B@%B&NjQZbaQLekqnq3SDBQ7JF?E~LsFp1%b@*i z`L6@$E(D=}r|m(Jyfc63VE=ni4CA1f6CNsqR| zkfJqB4Oz*y7wYtClLR!48ACJ4!^U_P*svoCh4o&9*te6%&Vwo|zXF{Bl$oVJR&Y%a{nfy>8InPhUCbGVe})5!u+$^+X=tfPb&^oWg$ z-sL0p2+1=jGuXD+{4g4uCcYS0E8U3iDE`DB^ygdARv>T~tOT8UiWE5>ylVzEAb~{f z%jheEQLD!53`ZL!vwUt4@nVHu@4XamBnnZ0feC1-I}PQD^|vqec^H{jN=j^wi(PsF zep{6ct&P^apNd-4QH+=c1eS6TWUn#g`;CA;2{AAD|?dMWKJy0cw<;j z6uxO=!s*aw_8#6q1=0M?ZUE!Dh3<#*WAJ&{B+_m5$Lo#IKh04LUQk94@53-@BL2IE z6E9UZHZYgpCdKY3kq?X1RsBrg3sxKv3S&DllU$xu(}o<1Jg##$u=#chFBqI_OJrFO z4P|E0&90-ahN~dGtf2U*YiSBz5TKP-gx1@PXC@gx3Be54(3hkmmRFGn@ivSSPK)ovtbAjXu`b>*%aT*k!NCYUeld%3B4q zJF8=jCiD6RUoV<2Cofg_gbUe@Dg;MmyWXQaaLr)GL)`RGpWg5j3R-@mpBLJyT;y{6 zY5ao!cBL|&`0K%JcKASBVmXe!yQ=jtYr13*l$n$yjWzua+3T&*gDKIz*>i<3deoDt zXy$C)92_cH=Q2&dXN3Z~hJn}ocYR0Q4N@m^!%c+x->p0S#?s!^?`4hG)h*|Cd{Bbu zl{65Iv~?SkUDsV!59I=c&hGf&?aPyvAJ7=fse%XW0uErcLSKs@Uda1i*e~&q>F?ez zYv&o8tR__n@#mqNR>|+qvgNv}PL4I4N~=gC2pRR_7{{$lAFpZbnN9*)jtfPgtAnLSV|N2#3OfmS|( zU5fTYb}W1AA>6%Q0CjEH&({& z5^6DDb}iH`~mBaT6nX%a}(qLlI~X8YpG3Y zXDvfMd732KSkAY}&=vSepyIrOSnvc>eK)Spxwc>}CaH*7x7H(DM21BJ4GAw1)rD1a z$U})4Kb;mQw)-Y_C7+WJd-46Id!$ReDk-RAHy1{4c#oRfssuKNoA`Oka@57_X^ts~ zZfE&ha7Hu{eSw_m3aNOWOL&tuG4pqr-b@pZWWm1bft432cbtkU2J2d44-wv!2hZ}I z`3wZv zHc`@RGX~2$8&!qtIb4Z$4k;B?9mn@6!~=F)Seu*u!PqU5^h{MBb=5T-?Ty2yw8=Vl z{X(~_DT(FB6uS6o{46rLu%bC?|5a_zDhfn4pOl|U8>+02va5QpLM-2o6$vAGq8v** zuGva6zuO2ecPWiHDSO7tAAsufGSYTr?qBdKN7lcc(URNG^wHznJJm1lJH(gO&m5~R z_R+iTgk&kQ-Gz5#at?$k5%ZQ1$INs#p8d2y5D`?W%`UqQ;`Be6%lqAl0ctU9wt8~d zK>|1p1&i+(|LR&|FhQ43*JshuU*|^1?{Hp4FN!3+5_bA>>otpTl@v(OZ$I|n4`Nxzkh&ityUI+*bNpWq#Nk-s13hm7t$E`-tgGSva^Y zd0N$E{N8UA$jwsrE2^Z)H+zD6=E`3^i@GILyy|N9r*baZ8I{(`AGpJkKd~~&9~n4b zn$HchPU1E0dgF=Dy-lQI#Sh|)*PMLF?ehEdKy)KcmGlr=xRbHF!3zQ$S}a;d4mG+& zCfG^}PAouqKFJCNnW#nJhb;yY)%w}mKZcTkX7TlRE|C_Z2{4&NC-AN=4KJf)x4(5! zloW<9SWf*GX>7lHSd0GF5AyknwA~*e} zyH!OtuM$a==f!)BC=^l6|PY>P{{a*zac`PB= z;V@VzGCFOhlp{$fRALN1+Xw3Lcr0=ztC&;^*(gM8`*ESij&p&~l{r4b2os67d* z2^J8pO5TVd*1 zmSi>|Fi;|7v>275-ewcF_;UI&8pW_k-^kgdZ^&EIA7KdkbrM80AWxv1KOI(K8GM-R|U8RP@zTX8zJgH8VC1#{b6rW9CncPTbZJVC<+H8TsJJ0gXbC7kY z`~@$i5u6)mj#lkWPM37x3C~=~+$Q;bmfcitrN=NqF_J+2sa$GfJ)*?SeJ`=#vlAbv zmsX&GRma;eOEB`KN!TE@?XPg$+DM8pDCw9SB|HKh^~|_^i5*oEuUaC>82FfFf9zYI zb4wf@+uTSK%_>Th>e3E%h2*f-BS%tzG#ob8wpoNeVN~>TB9?w9nY8Fb%PQRWLn`LD z?{}yBK4uz-`<0pD@X=&l&?y9DVTm*6(jfaRP=tfCzGf)I_8gxvEi+bbzy6c`{FmpS zu*ox-l+UTENZLeUGdXxCWTJc=edaL28cA=8&>9sw$q=H>DjVm9tJ6{k!kN+|PbeWq zu-;_m&0bvEoz=Sbw^-^zuYKbRJH2doMN;qLU<2ETAp>N+PAeRx;x=D%1frIC)pM4P zaG4G4&i>TF;t7sJ{ zs3{eZ=W#_`insAehYd;84L#F&)M26#eZ+e=n`NbY-95LsR3D8g)KD^69RFpqOLWl6 zWPx7;+w?yfWu7$R(gs$u_*ORe0&-miDyyZutQCl&BQM{U4W_1Wl|LG?XjQGvGD_<7 z9F8Zk-6uAZsZI4)-v_!`4C=Cj&_05k8pUYXhL=V$YHHFOz=u8(Q)kiOYHYHO0e35uZ9IkSl-d~uw?Wu=P9KgqUWf~Q5tondYri8p3& zD4__|LTwYhq9_{ul>O-B!O0D=LK+{9RZe2!)w}crA&yOT+sRhtEs!A##L7$V^yy=kmz_rQ8Q{OWmn;~iOO7e$2rdhiJRGjk61;*7>JR!&t=E1{og+DLL*GYBKAh}r`l&D*1k!fF(hP#T2TfBO!jkY*AP z6bmJ>^B{W+zoGcaS@?M5s zVa7#k_9xuH*dJqoRoI4yQo=UIlgf;peD%mg?ICcZ%c*y`=_(vg^4V+i&KHgub0%JN zXrzl?<)_iyk)78dT@`yg5~aSMc3Y&jLK;Rz#Zzt;=dny|lvn}|R(w~YWqV3(k`Hmd zCO<8!iG!U!yk*x+4M+BsWOh$$>;gRW<-$<7q0jTd~4MxdMz^T zY<^hiY6{*tDkMdffQZqUH7ZvIn6378mc+wXZF$}R_p?B$ZqkRz*u7o%SNqvyDP{zD zBhUMFZIPIdBX8i)S;l{8RT5HfE#~BU_cXi57C5WoIAinW;(bSvS2C8fU-Tvu$T`YN z^{XjHT6Fxl_C1-x8w&iL-iGUSKw8|Kl%P)e((5aVrs@rHDV|m}5<=~66my@BJ1=<0 zpHECL`V=xIHaL^NqLY%ds;iRy@KBtli*)D{UMYea$j2fGaKCAMHK956YiOb3Seu=h zBPP>3wQBBWrww-X{|9p)M0uaZ-%I0ZwSuO|%~*_xGNBUu3fZEap77ypH17%*AD{?ZvlOoaF}jnL;%@ zf*8O_l%>>Nl4Hk4TCS4EqWU>8LKJrPKH?IN%7KVaf-f&Gmr+GuD}E>{@sjQ?0DSwA z#-f`Rm6u^7pX5ys{o}^CeA}JX-AI&C_AqlytzW<{;K^!`c_}}FP-kkpSgQ(P=OlpW&gJvt#AMRqpuF0=xEig zpU{HE^)u9DPhezw1bI|gJ8Oe+3=sXPy4fBi4K=%fBwg}3)@%qhepSmV-&#e?GwESK z->P{$aJJ~D;6nYWLs4k#1Eu|tF2h8j!~LnlF_EaoPK@EH8Edk64hh_HDlM6X=&QS| zkTfaXt92E6j0oM?-zFlat69Ha{twK#;ACj@>&VLy83<(CT~M>7KSs_U2Ww8tYJZ4V zyF~?@>i^doRaX|-IvRQXszZvWB;Vnb{3gHlL=hluv!1QHy(YRTt*%#S?#mARd=a6@wqR`ocEN@3|cL?Kwg|($j1WI&#T7+D9tB85AE989!GR zp9RgHGa)N1qoVKSuM|!=;R}wZi=Xd_-lvz%*05l*bVi|1JbR1ZxRe5KsyqS{5X=2C z;8gL$#pI7e%E0V}=Y-fY3UY*2OjZVIt;x5qN`K+?p0*71pXB5+DS0cB-*mp29xLM7 z5)X~4gvmKx^9y+3C|lR0Fkc9*Jf{E=%>K!z8e61ROtQe*xxh;jURXmogc1l9(ynK=fE1@9nbewiSLmg?MSoeqS^n}fHb|&XOf@r{1_+UFF zw_iqMW=82`baz&|nq9nxpP(rqbFJH;>orZvC)7@hq!JMB3dvj(&U;qHK9~jt&+?G2heMa1~UP?pOS_25fT?kzJ`_^ zM<)Q~%d|#*k0ifkK`b@T)SC^JS5fq7J@b_u*O~?5lh{&uz{*y%bcgSzHv42aorE^; zX`jK_28c|ba!1ka{IbbSOZw5@Yu}*x(17PN&dGeDS?Z#h8nFeIwq@u;OwT>5R5ual zQqghR7o`TYBJCv*m+X_qt%nm1%PSj21YzrtiTykmr=V?)LDa=fm$f`M9)@xBiTqf*b%{Zd010(k3DdT;GKqP$Sq4 zQ1y*OznT0oFcT%W$nU1zNQ%ev>!8xu zA5H6s!#oVby3t;nN;YXaL_hO?EbI=8D0oHKWwW10K34e<(-RUox^hVMn_dheJyNU? zjWNunB31jz1h_8KiwWp>bHRH$W@x0Wd2r&5O~X6#iKz=T8183Dfm_G2<;3TA>kw#j zhG*lY#m1<0#~LfgjsFO!vRSFm=Xh)5xN7uY63YC&!H!IwwEd0kn1Jm`jW>megQqd+ z*b{=BG3lZ_r2#kPj7CS{hKB87H0517T)Q=8&o;gGK8f@~5ciin3=Qi4wF0dE|36k! zpbo*XVTkY;a9mQQqmeMkibB4_rLf4j*!F?GDTiUn7=jc9)NW-FNl>bQfoZNvMX(?e zOb%?Qvb+v;ek2^#RB3i05;p@Gi)%Q5gfH|?y$7#`ILs7E8voLoWvRwu{4d;WChI~J zG3z%xmKB=WWD9nCI^iX{*=$L}xI#C}dZlQ%!D%v~h>A$C;1&g$g0Avd7rWqHlrY!P zF=-e#k5zzB^E{~q45wp_7Z?M|6>0#wBt6qk#b_G|t{fK4YJ?d#9y&Bb0E$e*Z4Uw+ z+AXoC#rUwn?y5Z9I2q==fO2@@81}PYvG|0L%W*V^6<3TbpcK%TNDC1OWbeKAe)Na8 z7@~Fs6Ha^k2z10ha?ZbCGInS9zFWPI{&vbv_0?__Tnb1-znn1lf}d75fr$cXdFI(3 zgC#^#sV8k!f>dVGyte|?*}sX>zVq>Ec9@uk|C`Z*%8u@ z)k_xC%j<-OIBT6--UaM>y7F+=*=7OJ%azo`xEteObb;S=2t-yjvS2dTmJu2ZjyG>o zC&nFwPz_Q2%B7f@ZK1MK?QNzM6^YdA6b7q3Vq9Mvj*O}dNJ|%SjvwqyY<6(rzF&Qj zy@2hx4h~TlC@tvUDPhw8FebJk26?_|f%Ewl$S_ksDvI2{1mv$l_53MnJU%CrP^cxNk|XP z$;EA|(oZu#tNcPH5D`{joSf{JL|PxU+~3YcebyIbvhS;bf(w?t3D->cCo#kyRGEQ4 zh?jruKfapnMo~6Z#3Y~}^!OjF80|L%ZVxgm>{$o&x1L0u7N^nfk~dg!-`<+ME$He$ zh>daA%`mjKFYE@P${ylRkZ z;kF7$-CM-LhI7WlyrX|@A1!^AjsR`htptnJ;#_};OhG+7G(oINXyFtLu)%AxZck{>nQ8NZ{F&CKVi`1R#roEUl8_30I;(uo^Axx)(w<{IUN zu;Tq%#qGaT@A%qrdzkJGJuQ(qNXzDg%t6{e=&-Qltj4MDtmL2cLC->IDK!)AaVDKLh&B>$ucmiOKktOlEh`{MIRKz|Z3TS#P>v_qMK9yEy zt&QfOO01S&=TW^=$E#$HwN+Q~UD=z6HT4!*%A=Ah?^EC?@n*j8$ni{JJFupC6Gm3o z(3J37N!K|pP0LQZ9^7q}i#pHEk}Z#ufj^k2gN(57>#r2+ZSx42T5k{)XR}u3b=KNh zgV45FRJy+qo5*{ojk@i1?{j#X31?;-Feb%<6Op-{$JM@xmgx)-VbFYgO-A9TL6~}B zR#w8-V7$^S9<@4GNz;ckT6@9EI@<{d6zpH*eXF03iP;bZ@;e2n{}Bu3PR?v9baZ6> zLvJRt)I~COtAskene^ z{r0HM1=l+3g-N^OYX?tpX3I^tX>`xBTfh2lg3$3ixSs#}kI+<9w;}=!r{!PLe18PJ zK4dyYsajnuxPDLGiIuHZzApA*w>gOJ+UrtCAYpslkxV^d0k)_@7v-@7^{uatNH} zYkJB&&UD`{y^0_iLu+X+8Z8Pd^cRX>emdFXnX>;*Imc!Ph}a%G>UXR>(m-S6Le091 zr*sEu>Zqk+TA-gJJRUwv%9>7hGD}hHFQu4`5*%ZdiwOjkg}gY`mt1zPw?MmULL8OB z!Shm2$2syNcbvh=bl$4HYO2niR0k4*brbE*LVa`sY?Lmx!+fvr4k{;LkVf_wnOC!l zIFXr)^cE+ze0`#EBj?EkyN`BBBPj`09FB7H(sqNPhWyG9(PZ_vs8$`;LC2*&lw>7# zB4~yr>B>LuudqTx^bhU4-{DUZAD(lp z_y4%XjzMUp=7`bGX;Llk+mk#Ac{8IkB}eS4MFA&0i@*R!O(K$976wqR(J3?K!|Wfi z!}!s?OddHQP;?=1wJgA8`Rr4L-`m~c$fJ)tx+6#RptD({#xD8Eds|V8uim|ug4rg+z>Upd zz-F)PUr6`Nzkr9K#OkB7B;N@w){R@Yfx6bQV%ViX*VK?|xJp4gyAAOG>D+@i21I`@ z18JsJE%qXo9|s#xGxIM-g9d*Cr_+XmpCWtP5V8Y5N_wKG`=(IuA6Z&wph7zLNg!nL zkY8CRCjy`8)_+ILqo%TZF8V_cE`Fv4w-!*oHK5{P&vktLH4yi%_`tw4;y}R7RYm>~ zd?lCS7J^w(2EvD22!@!FSMEoN{h#y=^qlf!tv;yRZ!aDQh{J7mmiH-Y(pPp#L|`p zX-36(h$#Aj5rjSwV;i8gbVjkQkjo3bpPk`G{5~>B5%PL+$X?<{0(k71N`6%lmUQw< z01>$@_sed9W_*j}6eHzu6?< zd=@jPp*V%+-U+8*@OE`Q3f+;G2}qaNXe07(CA!bzu4htj%<;x7w;TcyLo&iUg)}w8 z;~n5w2IN6MYU1`+siZICCUWSew#eFR65O{;0*(^CzkO>thJUH1-;oju#U^jJVCdyH zw|^t|pp|F#4U4Rz3k!4qUMXf!X_6~1hyc%a0vkVsz}@ha^bbE-k4~SlQV!lNxzobk ztt~kLSKkpSC7U|szLFSzJ8ADV0l8M?X*z}ZTx`=y{8K2EaUz+ZSD8PZULFXc^m)?0 z&F}_h7-K|fT*z6=(P+bG#6fq;x!BMlpYw3l;`7An9kP*(am7^5_ z>ok#qg^@e0POE@;!<2Q<3;#m~AkI@~{)nQmf^9cFJ9g6leIm!@iLMhT$L=lY@PtZT z(9u0s3GOUoaAp28%rEP?Oj=)R>nU~FfM4Zc^}gYk78rmG2rVv@Zkt_ z!O4OJym68^r5$86o&x+(|- zDK!e<~@VepvOs}z1?xLHo^Q9_v z9ck##4f!x<_x0U&(?su)F>vF-lj3blrx5LuIns@LG1r7N;+u}q(VNQgSknLqY(jja zszv*%`P!LPQM8@gyuUKp7l90BlR$x7cE-t?=gKq}x2)8!kl5?$MI1oZ1%E_et>0+bHC(wjt0^bD|ndk2|u(Y*@;aXafmU>}g23ktN*shN6KVQx zOJJkE*i|O)>xDlzD=%+7i>9pdLRPz6XM0y9anPHaM7^2^ZCr`9vZ!STBLlBOKs(7u zN8bv$m?7&o2en@Yw6uI;G^K)~wG4g&A-ZQe##-A-tIhtX|z4#ZB+z# zKUU(0fvT=^;eDUV&DcU>h}gaXrOety!()7lsa+ElR*tNhQKbHxBf!`{1)oSwK64Vh zguVV2bU$9W;Jd(Z-c-$#;XehmN=^lAPs>+V70&1)jIzWXd75fbNf$=@6wmwep!?f} zQk}hfoe-Rx1gSQjBQ19NYyPm+?fTwB@)(TWJs3O&qNMug;teLU``;%snWBA3mt|x|eD1tcWI_BQQ8B<4Epnm5ld!rj~_oQ_@zjZGaoe9H9E&YT{!{6$PSr*nXlcRK# z(TJn>=Y*a}@%(`kSES00zj3RK<`Y!OrncG~-B{__`32(&YDPO8=(R-#0;u-OvjiG~ zaB@6vdSxQ#$dh>|%)8sq15co4(D3Z2C)pk6ryHPfadyt#z*k5X(Exr zkZ@UyrdvwKqOoXs(5N3v#^Z^2?f0fz%cqht*lF-2G@+)`nW(eiYLRHr$uNFY6cDE( zpyvsBpy0UPwzGtog*?e1OMk0wh zUlsJ4VP|N`^%OMaQ)%erzU6*-o~i?6sxYuykJjf1bCG$)O3W=0px}`5EP_8u-XkIj z!vE9BfeuwUv8Qf>7bPf7RFh4ja`V-Gu&B}yJU43tA;BY}kVE8aQX@tI$d@)-ASP-# zKjcGlMJTKv)c!9o@EaxSmcc<`0Sa7W-si$=a6ZaC=Ez3QeB5xP&Y`L5Owujp<``z7 zZe!@tv2tMnzy2W(2M(!lg-J2&ylCpd40_@ka_xu05(!OT%1E2|LgP9@9X{j{3Pz@? z6N_vuNdwf`JBp;gjS!j!g~`yBNoa6nNYUqZXdD3e8%nJK&+8H<7}3;xzerq8TZ$!~ zndwS$@aDVe02Ui1MNY;%BXGI$FeMBj4&$j(`AE>)2PC;xG)&lNeIv5Cj`BI`xK`J- z7ctfw!~3MlTf$?pe0y9GaV#QM=@`Om)1?yTGnXgm5Q_nCSRxlIB-tdWhny55s8gg< z9poVHdO`roS|kRj&96wp1dD}2>d?*r7D_2x(7J6ayxU&NY`k@b!2n0m6y1p_?lk)D ztfes@sZVe$$SGX#ph|e2stoRLyYrS-r#o3w;^Qj0qh(I>tHetOMk&uRw;pP-52?#K3p%{RjRMH|V4> z%$oElQOG3ZIjr@8L66n%Bu5c-tC7t&0u>C&Hx>krkq>ZKwjwf-~&@O5Ti{xAnQg7PIcN~m*S z8U?MFgnj+^CqB};5hkGD5A2!+=Na$v2dB8j{HWU$oXebqZb2BnC*<925&@}q{XG#H zcin6E=(U7qeB7IWt|w*T`db^JEZwBwbUOKdj*xee@d$*SQfVkdk@(T+)u3@hqdASLm2S~;9W|DI@5RO4!b^(~@U$0y zrZz###fnyLpq7HimG3Cq0K=TA!axA&P`GVVTp0VzX7;E?7kqDE5=C|lC)=?DvQ9xH zas_IU93YsXI;Can8ojg3C`qW}J7{}e7uG6f)=@_)H`fhx2}_&ezX|3yN;N=V)~1I{ zj94w$gd9_^!3(BJ+B+d?5s+!`@>DeK)gs2mNNeW2X-34-ORGd{Por_jc1oN4bj&== z&wF5k=Dg%q`ZiDgE;}9>6@*NE_mo^bO~2%k>w0{}mg<+;Kr#f#K_GRTgfYKlGEQ$;lgbU!dQdO=gPixr3YFr;ig&kcff$8EF z9eEO09!o)^6dtjvR8sp7vO>TR8;!+9maI~4Rhqp~tN5Sqk(85bQO}kXG=o){Y2lh0 zV>!MCs(&rGw_$v}B8DyZY*+&uh2YD+s{DLu7*q}mJCjsfn!yYgBJl-tPEf{^mB=j@ zH<$C7hs8%ygawtif{T=mU;HMoq3~P3X4A2{GoHQHM@3XjTz zs_nMdkmFm*)ERw{LC3!de#|E$J|Lotxim{)%EveNdf1A4tk>$=t@{m;V)8T}Z@m7* zBKjB;xw^fo?WcpN0j-%S!y1&d_xa%EukT07ZnltMe(@p-ALC+8<%1Qr+R{ zxIDe710=7I_^;rr^kTG%@fNSwyv1+gvB@@u2?`_{qd zFC6|j*(wd>*KM+V=UD<51{blqn?!9OC^;FM7~YIjsnnon__!Eh);m#-XNkoLZGqk&@*4ta{#3#Zcoj$Ctc z7+uli4?I?IlOhFzlBQ)~91anuj+}UAy~$}>9=e7e<%3y_?JKsrls|%NU{vSWTQ0dD z1m{Z>&eG8Qbk|F$y`q|A2xH>UfzH5rrA9DVZo{I?so|Hnxt5EP*iGvKn!8p0{VNK! zd<0!5kE7$~rK;sWJI$D|o~61w_|%#+Rety~#&=I~#4Y$&1FwF@{A9*D(&haEU|_26 z=eX1;DJA80g>EdSi|E~mGeg1fgGgGfGe6W`&Rk`UK<}Te5f9e%eG^Hmcn5`5c=f{Y zwid(Rgox@xad1WpWvT%8lktkIKM}P< zSE|@MG?N|;2m6|r(mFuX1MtB}*^ChCpT!~d;N&8q+MkV$zez#FLmBC2^jkw4{KDAf z31|jm!Qe8|$us@#ayf>ToKF+g?Y5)+U=vxR2t#D3J%w7*GCSCiuZZT*0y!Y+c>Y`k zKBW1foAb3GGK}K$7g~|_Yuh(vGO31!Ku6PsMN%@s1$c#rQD=LI*hC~(2{`dE%mIW! z2vUC~75LU1J_spY+oImv)Rnd5R%tu||5L_CUjfglf5KM6C~jVE0ilG6qG%JuIgEU7 zrJFm^k?f?m{otkf!15~7jt-}9Yq!T;r$djTXY{1>?h2dbWf;Ejr>Wuxb-B!2i~cL+ z=NF3cc%pm^i|MJP_t;{!@}+>XjaBI2ZkQB5UyGQ#kbwW62X&`*jl4q9F#|j!2bo1A zTa}9mu9E#TH9kD{>2jRssKaX-e;^Kk0!P(g1vmho*dCP-?d~&Z>9Lp zn`CpaSTQcpP(e*oWS(+*j~cq-c+QTJ2d)CW1riG{B%I4cmgFh+G@`OEp%%iKLuo;^ zT8d6E-U`orKcldsvjv3Y>1hG76biA^HIi5i0WrF;Zx;*!BjLU29KSlr_as%@;FIUQ zLa7CWPsahepI+}hnVt;(Pb>5%Cjd8vu!3_jtPPJpU8WlrSq`6|)=7iiR3UwD2e3Sa zU>9{*x)KkOkz$O^XR4d1V9frdy}4y3QI|~!Qb-7b!SSdiv4!ZUt$2&Bg~oOW%(SFb zuV1l#)ao(aZ%M_*4GNBGCNEE^xht%ExUln)0wKtGoalQv?J|YwJ1`rGi`b7z*Dh2- z+8$k3L-qs;fJ0-re85Dilcb+)Dbtqs0<&eF6=H9&zTLlejN^-#V)e1*X2kg8mM4lf3E zPkuc{E-CeBO-;$D+{~OR&skm<(h2Sc9j~#~7#1SL%tJWrGx1j*N;pvR1$Q~%ica{N z;e5RCSWlOxi+eUU#0*|Y(u1~v-gCcC2T`{;FVfG%?b~e!V%1d;^NmP+FQ1qb9(Q*Ct zrhYW-EKQryOZ!dPwbu58K_WURFD5nL2K;jp+*i!cHaDKpP3|}z*G5RW~GM9$$X2CKl?Cx?z+%c0L;+`HB$%-=Y$IIf$jHlv{1d_W)0Jk`(&v(6Q+UM<>b(AwzlY;&kUjfr6`KlU2BF4 z(}<=04^FkywFy}p``VI3DcPlQu#;jdumaAd-EyB0+^?lKyxL15yjQvkx4X-$@KkMh z6>q|bs;20)2^aPEq3?VbqLB(7X>EjQ$mG*^UwZ zZVbYh{p2dE_Pq!u8N59f8}@|(^rW)67~bWxW$D61>er=JOKk!MQA%;ASa+$i!4+AH z^)7<4a@TnSA$pRtkO(`eTG113ICU^{0ZVPplNFl-@9J*BX)lXeNt3d^hR{a@F(IdM zrzB0d0z{i}Z%(jXiv0&6S93fA87tM8wy%&KW3+mT5;clxCxb`*q*#&16@QJb zfFxBtO1^57-mRpDX3xy{$xWWethoBorG+dAK{UUj`w+It7n`FKB(K2q2&`N2Ma%m z339O2@yr(Llk41MVJEEngBa#rY)146@XNKR-Fw>^vFSg(+ zr$io0=MDzXwndOdIx2bS&cOUr<)oO`}| zzwgf6e_+p^*|XQIXRS5snSach%J&K<=Jr0%gj>dDO-O8GD)C2BKE|2mwmstT?o-rD zVM@D*Td#LPO$7YaTD;SAv#^3Cr~ftfWI))Ez9P3OrlINtpB?5v%)GC5#MD z3KdAH^Ai4=k3ST^Hl$2{Ymi{m)D*yA7(X{H6v<)su>D~Iev*O}+X=(YnIjt04+@>? zK}PR5{r1Slnn`hr-^#5fHRs4S?+7*PhkHV)jf|Y^d;tE^mRdTV_Xyu3@DYj34t~8X ze*bu0tkW!g>B@qEo(~!VpwnvMs1^&>-;aZ-(>o^W_=&aD-Ij|{Wao=l#s5|(Bcu?Y(bJwa<{=$Q$89j5Jm6zPpYu04P6M&ul*K|XW?6Cb z`!p$#It1r=NtBL255X;g zMuvu@MV)~#5iw4CZY8&SWpgDNqUNt4g%b=L^~8VWp9f2|%5eXRY@OfS9h@wM*jT>n zdt^&106N*wEPWdYDn4#3{%mTWY?a5j6qhIH!{esQ;H9B+V~YN!VUsp-m=-L2amwl_ zf6&h`<{tMsq@<;OP~ud?JYD{t?p+}qY5`i`RqV|{(vjCt_vV+?!oG-1zV@xOpfUD? zmPO~y@JBO(n(Uq*-w8?=F8tp@oam^Y`J?v^$KJ+_v8Aa@@lrM6nN>O$;268b`)wsm z513f~8c?wQ@d~Id;h;0q2T{V zBUIo!nx^`{X@siE<;jxq_!x+&!T-_-)w9@?Qn@vAk5m%=Gay2Rl$95XxJ^4Ech;Py zG{Jrf+@!sBFN)-0lru4L&mD_5t&4$zmNd?CqCJuW^ef!gWf zJDSVd$mf2shS$t#8*fCD*{U`%dKk9?c$EQ?oXR={)wn!zUqJiWOMS0Bg{t8jvsYA# z|H*$o(agmr19+uQSs8R=wCPEH2IA+6uYnoVZ%6+Q0F%0MW=szQCm0 znM95VD$?0R#s%j8(ycv#OcDW0j$f8TBoFHl+$_n7~ZqoB|T^NESGfT#^X7Ioq?Xa?augC%3 zl#WyYo%w1iE?~F4W{x*}7tbEp9m1L+bVV7h#}qwxie=&j%@*5URK;OoN0JT2iBy5b zY&LHs&$w)P@!M?D<5c6tBv)YG6v?w8dmN*}NsV%X#c4GzVeF!|knw~Ujzuo}PSG+O zQI1!$hQERXkl7j#ChXbgqnfJlt7s59xfn-B6s2DTG36}|wSZb77JOt429)D;Lt5D` z^>i7OYTSUf2~Zwz_zMW&%e#SRdR9m^TMuKss!5nCO$O6vAAXJ-I`Y;udrbYMk(AwM znn9f_kSHuzV%zqG92CCjDi zwGEwV9nzu$--t9xBRJi;36Z}&>TQd)ND?`=oQ3Q~wj^77yc}~i7ii7R?3&sWi<=u3 z24XyGhbsG9(vr>1rZ@o`ReViC$EAWJv>C%{Fo5IQY!8s(FsK4hY|#Y5WOE2k@2~Ny z=%WrK<4P#M_~vs2UI&`#%NZ*=6S*;SDxcm(LQkYe{?0CVzq6ed;ss!SK23ZoB>n1U zxo$vTFs++jID4>xp zu6vdf?bD-{*~FP~NJ|$IdEBAmY@kWUA!pnCN~lyOh<^UeH-Zj}dosN5V_QM>o}YfA zLD^O>B97a)i{vAn+(y^KV9#UUGg>>K?W}bw-}kq)VWiRQpj=V}OP4jE)|6y{Sq7j? zulp~?w&JKOMdzp21EAaF=r}KGiBDK#jI?sgHlY?Qn`&IsyICztx^_d?^Num z*2O-xWh&NdWO#OMM@v(q?7p=OEo>tHp3D4w{6N7Krh`vjYvwfW_5oMab@vobIarQBy4{B(?}w7y!6;5lXuKA=%4@C$J0HiccHM!WMk z&I%VKsM19>ZJqTZ9yS-KA2WJr<3hqPbypq1?k>Tn6Xl*lxzqAm;5vDA^l-+Etc|Xq zpRp#N2*HS4Y-qu0LM^$Bb?yguYYlhYPxuNzj7kr z<_))|l(&TWSVM-BTU59zJ{!i&x0O5(F#C$H7d3h$UcPE2E{6<`?oPN!`efnMz{{#A zju|Xyh$vurT!>XiGf1_zbPcV!*NH7lCL&25zI$crPg z2LdNJM(3)M`QotSk~^qYDO&$6k#X@qD~ZmM6#piU*}&h(7j`^!_{RJYqa|3x-QM`iCHA!$r~GO-5@q2 zy3U={IlnNDB2{naw-EBzMmbtSXP9MU-9M6Zh*Lu~I9NeT{QFrFwt6E%g2O1z^_9UvJWUG{#XCSvI0FWePu~3w8IOQ%nxP;nDR!e&m*z|Y z2SN|II`sy1g9A+2nonN*y%v0E^K7MLIpN$JXTvQv*9J#XhIkt$)vT^f?r3p|IqH|g zs@orbw9l6a(zsJA-(~x&T7fE!Kt0U7`zNl(!D6gz7I!LFG$?Y47RF7laktj|>1CA~ z)vIE9+u9)dmf(5R=I0NYvk}OC-*Vwrk2a?f`wwsZwlXlAV)I!P5d%s1@zd$oNBh~r zhG#*TFG(7Koc4Oi&2qa>d3Pa4SB$ZodcjZrNMIS*|f`Qd>gh>OZ)^j;k zQnMG*7%CF-n7L@wk(<>VWYoY~2L_&D5+X^8DvOIy`C%o6fmCmbOglO)Q!s>vM5L`* zd}*{UKZ5?A11nC+|2RU8k_(QJiL`zVX8kH7P$OK5G_Lz2nZJZ9Sx#U@(W08eEX(u&u5lB=_G{y1+|TdE;yxR@|C&(P)~ zrF{V(s7V}7;*>!^?56bZVddlk6ed|PdjTSa*r@mmQJuYIOUpX`XUiTEFpO(ne38twroA-FPBZme3vbVLWU5Qd}e z;YnaUQ1Li}S7->IhE$Dfn*C>ddtG)_Gkj=J*iJ*4Y$MpMz^7dLan@0MQYfozPi9#U zYSyJNR93a?9JQz_NA^RWiAaiSL+D5v*fVCA-D5>T$)QhVp@ia`p|xO#^%QYG5l>BM zktx@3Ne&vQI~wXyR4cT$Zq>#S$FiMuUyVS-}y^ukv}SwO^RTw7IPjVLE$fkC&2;aOPsJGSdxcYk5g+we}jlN}V* zns0AQ3VGlNAvO&_s>rMJNENStSF&BP&P9Dv9X+@g&3g=83DP^H~)vqOB7S?du zCZBn?2-X@%VsViG>to|mr*;8F*~JKnuqruZ8qGP`imO7y72u5n@-|Uwzen4(RtRl@ z^7>tP*A!KHips(Wd;Y8#+7ju+%EcP^OQY>2S!$PIqPu~q9KFE^QUzs$%G@HvZV1Ha zmrP@zeCtq^d|r7~UqSY+Dy6<1p*JKx)}S>%6=TnrCk(HUdz>t#y!%UBpa%-MdSc&_ z_%zw0O*%D|U3Yeyyu+cBmQRkjmA3S&1ijV_Ir4spiIl~P?oA3mL5bMaTB+v6%f$yX z6%qZ6Qp9ZZ4D&EinZI#|i&~?hvG8GEqn}9vCVAtU$`VEXeB}5f*KB)(ggaO9eiZoA zQh&|cUa_GN#f|X$%uS`cPfBXL`dJh2yFjJ5Om#VH2!C=5j*#jiRbU6y*kw!^IubcB z;GrH6Fdu@V7<3KMQbd9Z*Io1Ssd|cYTAdswO6q=?W*wu|_@VIs#xt8y=?Ug?*zb)6 zkj^qBY!lsQWkf1^-lk8J$i32UjbgwP~Qa=ffrGxdo_vvX|Dg`o>o7T zp<$vmYEoT=l?6kQO-$_>iR{haz~fuUpkMk@AYXd8oX5B!&us%W171lhDv2lp@n{7X ztc(1|D_Wha75h}Maa!9;Po?0q@D5|7#YwahXO2!l>Vvru4z&Oy@<>2fZ1Q<^%=d(G zM7V;m;lfEmouJL$k6y*aps`_*zf{5(HRhd@9`{U82&C^18gg)>!pJxG@A+Eh1Iit^ zF>kzk&Y7A`DOy+0ZLG%6Q%G@qrs7js2+ubm&!moowV^SxvGzLo1%JCHHG_c}eIs%? zNs9btO}=r~B$`(#3k9yqT7EuNzIugVpE>MMZ|Q@*fRba9BZUIvX?waP%%xufQXvNlr>WlGvgUIdyFMUqZS3b7elTL>YK-@#KuI*>^WqzFda3D&vUQPr3c zV+YXtp!(d1Yv$1LDNC8(jWi{Ygh}n$fE>ZOw?78?tf<#rjoK3YWxguDyP?}$8^Z4y zE3kSceYh})OHDZ*rgNtspY7X- zdahmOyCZv3?nF<(;+ax%FZaa+hls-DL)PdBMdmcEF|d@p+u$;!eI_`PvnpqBNg~p> z3{t|O{&?;iGSNa%HBAX6FcfRp59FS(pYv8 zxO8%)tN8f(I+kGGW?tv2YCvSWa6ji z(@y0u+)9>vZkh4tcZr(YI6YuJ_`Jk$FB1IJkmW?7Ye%xD&dzYt^WCD)K0+iG2sxb| zgJ#0#_G$-q;)jIg>hW!~i<9^hSFF0sCmM{7QHhWCNT0<@wRC6CQ*&5YSlsniBh}Lw z3%NWSwCWiCd8r9zQl6}g_||%BcHw&|xaDzgtego*u`nsg0eAG*WnxG4Q3b0RELL&# zwHg*UR}my{p9&tWJt}xnmd=eic6k>opL)Ltnzi@jWHCtY3HD#G&_WSda^y3z5aBeG zpo)PcncYaS8oif?s)wk#ye=_pvU>ZcY0xE0p#%XFPC1|097) zOYwe}+?>x{B}&GRH~Io+0e6GJ$EX)#xF zZw&3E24wW>NDPjZ-PYL=y$%o83P1oEp3^?M*&h2G5o>{kk$^%<@&!$J*gwS z*6Ww#*HuqFhLbmNZFDd=sir{IG^JikhWAiRT{?mBvltb8XK|V%u}!#(e~?+Uor8x6 zCd}TUL9Iellq{C2GfLfs>u&b>-E^y%N4f?QKwJ>n&Bazb%FlBAe$xy(R(>-e^Rk@k z6>pIYTp7f|LnqPQwKn%!!Ac5}wUv7zoLXF!-xK5L)l!#^A{FUcC0|N@`Iphy5GM1` zokl@HR+JVZAoy&BzrI+QAd>10(i$s>{mTp|JVPh1BsW=!Xc)6-XYm)FSuF?y21Xw2 z_$)b4rqgBx>R0JYDbBySKcO&aUTELeQQi8+Qlz1zuR!bm*nZGTdrt$_02T6hL}({t zzfElZk!kO$h7&SuN+h8~`=uyFME$x2&1+wg>0Qu2O|i`ATxHryh8l+G%2f*m#P}@t z`idx70XAd2)C#h*5&KXlV>mwkH}!lp%h#~#vK5x_mh@C{(-uhQ*9=6p%ZJXRW^P7N zR5_V-N22r*V4Ozk^GcXn_E#?r#h{>lO546_uAGeiiXJUH!P`zohCt{Xt^*``+zG5g(uacvL-9_ur$)ua>lw|NqPk zW(I8h|K29_e+8cD-|J=DQUcfn{&(Pc_MW^#D);azuVxGoRBk0?aH>{BMaC_YZE&`n zn3}!gt`T>tQB2Jys$9%xr=KYUlX0AyZ8S{57*>K(v(MIxP=@<>_I7_CwYpGo)ZOQW@Z0TMb}_7tY*`+ zCOo~seMgTy0suHmvQZSIy*75AUa9mzfL`yCXf<0uk7a4!^mseMyd}wJ??^=neX;@( zx>?v*iGP?YQTbc88We-}d>>VH!%N4-%y_GyK>B5BNQ;5^vN+~gGWsi^GW4@D2e*#tfXX;KtsyI5i6TK=r;8r#+m?nXB&y_-Pkb{hIjN&k^il@%DNVZR3Q-Dw&mhIsH z%(jjB*Z&I^XA&zFS46F1HU*AS;#Y|Q@=yYpJl@OTs+Gj4$LRoO3wW*)M<5`RH&Fx6 zWE-7>W5V;+;bJnefz{d4fk|c$Qb?+p!-!`IKj4`j7iae}i_Uz70A797B3PTyZvHxo z{_fS>f9=%{`OaFUuDEQ@5pdGrnckI3nd(R*?xk!?)nn_9oCVm463sy&HJucwp`SS7 zG`QnkoE?|kaah|&T_3LZ*bGv4_IP_lcE8%g2$H6}cvkf>{O*ZuT@3wM({(?snDB%R zws7!GZ5n-ZUH1L8-B$0RN6C_tw`URj0FNd&QLGNHWoQ1*i#PW=y@mNdL?mb_A8`8h zy{hg2D4ABp8l3%Ycxht4*wZ22uJUmM7(?Y8PYSJjJ(B!ec(o8rFYNT3rc`wGaqREV zsX<-%GglaaUCtFd!YZ03T4uENp6D!%5E1}*cjd&=!8yrm`pY%0JnHSY8iFGv@Uh&Yd01xt zN^3;VXe#~p-D8tdO#w}=vE3NP;55BIyvq5t_#0JV2fctC+B25#fV=@ zhl!s|Whr;8kYIM3W3OC(hfPs~7LU8ZSgA^Ipejc8&{e-9NALN(V4r3T4Zup?sIIt5 z8o-;SU)8#);yDNEVOfqPiha9Nvxje*qdN=}qp7Tb2ZJREk}1ya<^qceos?4U4_~J3 zmsI9W#VdHKTs$>z4?i6~5TY?6bQ_mhffA*ss~K&1OPZ~~?=5JS~8ev{F`XvpscxjS@od>Jkb|xyED+js53b}a) zG>rZ3_t0`)&$IWfMlIrPc}p78PiFlZuF3$@n>doHm4wxAdXa(WiuW{nFw5W6#6+y_ zSr$nq$+)L``C^|ZrY^VSyo`|;t-&&zOrvtr1CMhyuE*X!=2dSyCEmT^UVBxbm!FXxtL3VCmBkRri>9Gi8R5~(eiE)>Ml+B?82y;s;MtG` zmjun(eALozJrbj17Rvo_;Wt9#Ri`}II*(1V?c+Y$y)xeEl;x!;%T|R1I1T~nNL&j( zmueN9E+l$NTN_+G;Cf^}K>P1Qi1(3@+ZWfFGo@C#u%%Czz8fH}1BvIGTJH2m^U#zJ zS`R2*sbsUVB=+}vOi|vHKX%^~hwK1K+3E~~wT5OmWV%gC#$N|8s4iN`+EEr9f83Ug z=an|5s;BHW`{t|F)a?ZCp&DhuW+qBdz7}`mcI=4DE8H*i8qm%t;7L;BG6%BlguhYL zBbJvNqHKCJd2RIsLLQ^#3u$}5 z#M47DdMvGIr)xX-t98me=k!|Dz-IO;cSawj7Tks5Rz#3m$D%{iII`@zbv{@_f0YAV zp(X^M+t&&M*$1uDp6=v55;D+o$S#^^dq-fFYN(>&%pBKie(gqMlbAPN{L>KMX~f_$ z-BH=sW{m(`GH<=mesaTjDzK`PQ&02U%5s9xjLyE@t(M(<{({*sp7+lZCC5=FaeM&; zL%5Qgbj0^0&U@U;5VJ&`xa@L^JRN@FhSc5S;U~+-x-ee6ky^jE0rR z>flJ2)|15dFPH6~n#ZWKo2)H-G?ShA8d7WQEm~&nf(GD%|GqUdjr$m+r}S+ziq+fZ zw6iTR;<$JI7Fm6`wwF<$SD;);dLs1VlQzvpf?gI{^6iETVD)bi9hp-NUAv8(qV$Vv zdP0PW)_h!P{>-b>-i#1#xuK2S^166Fk~9gd{(t->D<@Z{exfgf{6hnzi6R5hOPAUc zkGDRheqbT9Y_lG%}Y^ReTVIE&8B$411Anh#(2lR;f5W+TZ2;>_Hn*OV;A4fKD3R4tHzG<)e_l)pEZ#kz?N;ZGCgWsR=&Za-1GWXvUbHnmR5XYf!3)s(sTYo#Z1p zMrFlGm@t{==SnN)gQ?W`=C)-w(N0u5_x>Zd^Exn~{u01!7)@6l!HMvb+CfU2!HE}g zduBoRdQ_+lgo)&GP$X+YEOtFNvW83?j3w#ATR;PedN01k9Cv5b2V}(+D;Mp=v(=yo zr2H#(0`lk_ZiJd}h@K%iPkj$I{-;CWvHPdOe772ryHrtw`2<|3a63#uc>u*_z^9Ib zUzw2Vf>F@|kHHM4%n%ZOx48KbUIixe=j3Yo=AuJ|?$aPg2|?Z=2i4c}3Nv%4z736n zpFaC%_XJKjv$mt#LWQggQN}kS>JG46SpscPoCI6?zqLl>_ihZ zank>!o?-AP+nWUsg~#QEi9eDxeQ@SGhr@^0GrVOiyfvn304biHM41X^Yt}~2B^CsJ zP2`G?%$S4+8lxmtq_I!XL-prjnBqK;8Ch6?^P;FC&70SvmN)$n>{D+)~% zj%_#w4D$|8JS6VOk^F)+{Se_2WEC$#EK(&?BVh9w$-I2ndT@S|o9a@pGa%Q9MqQ6r zSRnJO;op!alvr#;qJ(D(v`#4N+)1D!U!E>i^)|(v^@Okb7ywN`vcDlaRVI5J{bUz8 zMdiGcQWzQQ^@)Q|NQ(4ssMkfI9&u&L?R*$!D4k_<1FrC^cD>}h;SgF3PWtwfU}7&B z(rb)6h81js*~k@tou+IZg*zc(Y>ZL6_0~^zY>3R& zKB&hkc>ybO)gAX?lCEK}ateuRK1E&u0ORM@(OeI{FsP6qiY%^)omq(2L@sx({BJ?@ zIH$zJ%f}o2;A}?kVs{OEplvQ==H8XrQSQTbW~KLw3H6i>CQz~9o@g^<(gd@1IVq2F zUI#E(Xg7~%7OH}sLaZG}IL2EJe{nJhZ>cTPls7jO`OO^;$)Nl*3wfy%&$d2l;JpQBp2Yg}ffvck=efyRLqc4}e0= zmq$HoN%0D2em21v21maxm)L1$!{pOmH8!WpCjV?F+jckTsa&$4vFz}Xn=~{*Ef1`0 zNGhxn!ec34W-FoQkCb)BIc?2NE4zoKU!3RBvJ4d|YVG40Z!Zbge{?$COaeY))!1Y@d=QSr7j#P1plm4tF{%giQ z=P4fet5kE=<<5rOeG}fBJQPM-1X1F?Z7<>e2c}R=O5bPMS0kNhG}z==E~|>MWcNp* z&~xkBPQVC8;+LAs{vet)jtZl|5GIOHW*0S63HMmD0sq=#GdPMFOUa-(@jb>1BS9?W zJsGe{s(~qngM~u|KMT-!Akgh1s>x1*q;u9yDiLq7K93@tK-;m3De}L=TjHGj#AC$C z5UOz~^&i&}cW>0Zx<++BhiaOsTH#06o#kJ#G$R{PU0Qs$pS{3&d@D$F*@2wZhLs1f zQx^7czkYISUF1J#;%J@zY_S;qQG(mg7@WJPWB%YD1Y#c4RAV^yBB4v3R(-N{OhXoy zjUly>L>$K1HC>LoH9;8&jw5`Wp4TS2zPO5t0?{1z2#?3kUtE3#4ADVB~DS*d6r9#qY0^O@Fnw9}FnX!N!vM-}8w75P#LH>#W>ZT5ybLzk4T4YMhcAj8!9Io}H#)w5}3sLj%8kroznkLJz2_i=Qj7jFB zyzrujiRtS}{)2Cl;c2%I&!ufO6ySPpOPql);OE4WHu?IJ(%ZG^IYa%CS90Dn&h-Mb zK{Ys0$hi|n;-$hCrI*8Sn)Clny64@tJNn4d_McVmQr_|&3 z3JcCTG7q=aE{rLLTd2+RB)ZZ;|B%LrhFGpEj+ejEsn#_AhfN2O zDo#(AeIlK%tFO`usLn zrfIkjO_VbsDcfJn7AQ11=@WHC_V~zsbPmLGS5d4{$>r%b@k$Q)!4+PgV&wt~fd)q&E(K3Bid8+O+AC|SZvGipxJi9S$Zzu~EZnP1uwV?M%`BS}QP zeD@Z6|E?(-7hOfa@3v6Wqc9E9EAli3h9r9KF?Ar%*C!oyTR2NB{+=4tK|P1$wRA|u z8Nt0TW7It_W9YU;=s&tAes%a4E6KjsCG+&P6NPo@OsnY(y6lY7Le z3R#Pkbk$6V3>cE0o+Eib##_g~WA{g&tQVA;)e0E;y$%!W{rk~Dzmrk>@PO>RnmqnR z?FUzL7NgTDS+L^8*{af*qeydyv>|qu?$`{gF26>6=#R@>HcA(yR$IF&>?{6sk+_hm znDe0bI?DWQ*J7Kfk#+08`nzn8&W0qO7p8sl-zfU(omCY5`}XdV60)N)iyHPG9U^A? zYkyTe^0+%%eZIR9fi!ApZ$xO)Rp3tPQ}c@mcXfm#ro_&Fv^uQmU|MZzZ?&mX1h^P6 z#ZI#YJmCS85#o)K%M`xNR~>70dh>zkE>l!VMkKMLQ!J&IvEe(%k=ZPfm!(I1JbXI( zm-vtqjPZT0<7S+-!HX|Ci=M!Wu8_T8ADQ)_BsREPmW~R`;Pt*&=eUXLu8KiX&39Xw zx869xWBdcMe8LTvdv5cSvAflqze3uIakNW6HdOpov*jM2t6NoIMGY*5^LK}Ku+f3i zcp^jWr;F2TRviK6qQH-juBlS*A><^E5l2Orv?y}2d^Woy?1at#6ULBF7(~7a8iovxrsk~I2bkN8C-|lbB>i zJ>AG+DTk>NPB#P5V*eWL6o#P5Wleo7T|58Wnzr-l`DLPif#FjnDjd1}KRZ8|##4ag*e(6qm;uB7Bwfao zDb1R+Q?#3QH+-2>GJRTvKV4oi6nB`N=euyc>j_LCXL8%GOT|)@G=hKicY2jq0dIy# zR_jEjDzuH2x?+xJ>0)YP0Lh*Xv!9OS&0SuRGObFg zIOo{GNSsmp!NnYaNKB$hLQLYO9bol;rp(wG!EB2Cf42q(l=TUPJ_6+ZRu&}UD5d~v zsaI-T1UmT@CHE(1uGQ~_fC`9qIhUYv5=N+XkUJa$KseZ=46Lr`U>NeYlj%A0iIp2KsheJY_lx8uwjP+M&*IJ9Dv>cI6->Dg_JJd z*$hr6t;bP{l@2{jV7E!r*$TpJ#Dp! zAj!~}y`S<+po{j!!M%>M>4|CZ1q21kp;SCf^w@K@yy}H+jZbs>z(r0#N5HO5d%Dy@ zK7d^L!X=$;^n}~xR_0OhlyfKSM*35_hoqt4#uRW+F3yZ~z!er0Ku6V24j zlfTo?>0Ds?^{jKPpih5+Q!43FY-~b2-s2Tu)odzs#P|;aYwD~WM9;_#UnSBrMXR7U zsY$zbW8?2qN3*F>jW$o+zR2#H{4w#XYYI2$_p_GL`Y-&%hPPa@?5+>>Ih`yj=Xhjx z#n;E*;TK%*xppS!b*wg%<%cG_6ake+_$OjlGx9+RDSO{pe%ua#nTKLuJMp`dfX=(< z-e-HPX~N5^lS0l#>SHIP%4K~M4z)5S9**>7bq_l}$~-a`&5?&rD%wwUMWMAX>y89=5+atjXbI@Q|03 z9qW8A{+SBz1J{kHKBqP^eOt;OdkkbI(rlk5t~9m{=dJj&;|TfJQAFVGN?sqdgK^8& zUuMx}tS1OTaZ*RF>xx?kWK-E_3Q64muNFq`SJrZuktVLX)pf>xJC=#+ z-v^8qoj$6sN!(s+oGNjia(4D`kRB*+)5$USOo_JYU-eW42B#q@ELtDPayLbF$fyPHK zG@325V*Vu{guT|ogXLK6BF&#|C|+tG7}k=)gIjnJDpBM1g>3p;Gdqe)HqTo?>!K9O z0JZi&OQyQ%I!=PR-G$R@{1F*b;*gMs(ou}{- z*VCs$zXYXiYL32IzO1|GNWa{+G=;1>$;(9Jz5-YjdVuMG1pC zY8>`~H6Em{?pdw(?$%;B<+A*t zp)agys5R)9n9Z+nc{xpaMVgrX-rz2Ap;ax{JVoPnK|>E;vJQ@AGA4#3D!rfX>A zDT?#oqN`Wv=eDo?ZTTcSW|LAMu$VVu!sZ#py$QvV=R^I-0%{HYR#w{kqw=B+V(KS* z_??zt0=fv5LEWJ~-59(8wE9A82D`EtFB2!yjB)22t~53Uywu#(+elVh|T zZlV%1S@H@6*oK19#Fnnm!?dk*^S{Kg0iJTFzwW~{OEs?qX+lGK9(~?7Y44t2=psWN z4_ao^-<^BI2cCGGmgd-8onhO{;OY2)JUX`qb{&v)YD^vS29uI7YVD##+bD^QfZ#)E~Hn&L)ZwV9DW@ zx0SPBU8em^+d})X{9Cv;@C=n(SoB)~>SF)RYa-VLywox!VQ)c@BpX^ck7{w}n^Q|y z3z7IV^yauaM-3avC>6Ic@YK4rSzF7Jv8Wy_O0*C^*rfk>6|X8hGo$SmQkv-GdAyPdC0XvgycTLj%0D zwTD*)%f`T`IYMP{YO`L$Pi->U^G6fAaGISywAS+HZ8H42wa__gV zY2yw+V`RvOKxs(_r8`n4qlKZ8NOgNs#R*2%;B(w%t+m#s?Y(;IpG+|a0{lyJzQ#9T zizaAbFL?3BRw>r;jKbpwR#$f0BPBmd5K3}YXmK=c1Z-06?2X>)iCC=h8z|78T63^1 z;u;7Fwr?WL7kChN=kOeT_vLh))47al&Y-p(8W+i3kTsQLHsjQVR>eYA`FuP zvxj*IQNcD=cs@qp-G#*RoUmL?45L5<0ueMx!S6kXIEdlrlC}H?6zGCEbPML~LHOCE zvm%m(?Q%R0iUU<@5Pz9-en^SF4-N0GMT;FX!fOcce?TQ1DGRDBKMc8eIe837hjacC z?GF}M`>HC>tU6OHJGH~}(m+JcDEh;onp(3e@*uY`INZNCwdn|3i4n_K5Z>^IF&1!j zsM@VU*Es__MvC!Re^{a4I0oN8&o7UrgvewO{1_Q%SDXjb^-M7}ExhdXX zkrHEkB-f0v=l+PbT7TW6C^ih9m`hNpgSM+l+iF<7+)$7_zBhWFiWO#~rSOoNf&PI> zb5f>M5Aixu7`_{@de#svW8^wZW}-2#vr^+wM~XZ*5wHUC4;0so9OH?m_<(;KA~;)9 zo4is8Ma|0^p(jGd-w+YUrUiX#!Z#-|mZpk(+jZ#O7;_HXWFz#>tch`I+*Z86FM;OA zvcjstg8mM54!d3@ZXTY-8Ioc0Zh2{#uMOp;n8BNx=V54TB&f$x6rFOvEf$G^+OIT$ z*N4-Wgv1lV_=CTSy&C{)9fP9c?Zp<=n8MsY8wr>(8k%r6$mGiN!Npp7tgEF(l;TP^ zne7*yebK(y|C)sSanjc=h)A@*siS45dn9y?e;0*U`&zBa8Z)2cp;ROH9H@Ly5I51{ zz~yWOy-h()ieK%7g*fW`M2fc9cgKWPsMfhk2vp-{=PmXy+-wLno?Et)CC*!CCWXSYgj z@+_{idbFmUs;o%jNDR$SEb-FOpVaW0!7{Pcv^<5zB*=!m$>J z^|_lEri3l#a_uk!uI7ok_lc%-t4VIJnn+G- z_$YaX8Fdb_!Fu6q?b|cy!Q(-Kg4a zjmQhQkt9_dVP_~+D6;)ZCeCv#KeB6J@ zO()R;f8Atts|r8Gzc6#8{7MS5`$n*x$NQs@TY*{nO`?kfT;!HnE~zlsS}+oHss2~Wa{K`-@}YQIfRFp=h+y(5_Om&WOo^qKI9C? z%lsfO84vQ-;O~@%w%5I2qjO@kjq2}JA5Zmh(sX2u?w9Y|=!R<6q`FD|6iM`@D(WKV zJ>L99hEr`@UExGVYl{9T79k+je)Oyx@0L)eT02t<=qKEVzKzVHgeig4XBC1hL)Lnk z^HsQF_YVsX*ax-Im_=ZtDpdnpyTJA2dNJ%im%M^tuS0XO=&s9iTlm}V ziP{u3%>veI#c1ljp>uU~t-JUejJtU{$MuF)qb*f?+e_+TjR27mh^dS=Vb|W`ytT&Z z8eyy&uzLj3nSu@wbE5!y2@dOVK&dwy_#KzrTC7?=)sV|@j+Q+lE0ZU)qG-VVS@>Wc zle&WT)8j!&RYTwq%E1s#=@1|&EuH$5U+J3*3r3<+C?W)L03**^HdOMR)bUv#H<~nc ziRFICsG4}Naf*%;O%*QiPhU*oG0Js%%GgTrzT}|bz_+Ny{;(RzF2Q703M|fWdyr{*$kIncgLmP&!i!NEB zG%$c_LhZfd5KoiC_I|5O+A}!x@cl2*S%J3?dz;+)ibh5W={we6dv|Gi$#vEbh*VB; z{zZdFW|-cmcCruF`E^0Bt8!+8NBwt-VRC_S>Osr{(@jf9!!7`Y;lHMGtn8v>VOON3 z9X?NOi%m7e&EN0vy>?mJGbdz*=E)uJs7Ur@0W%0uJ2j9+2`SEdlpA@`fyoy>ZB6*(a~zWlug4o!W+;>vaiUegY!NQ zaLGWjlTB`TB*dT7*AbfvCdt4A&=~+Qt}?;xQM>`CtkS9HW~4^&Q$|nDaC+QzUSxKG z6m#>UG5k~qHisywe* z)+dF&NtVkQSU8!6M>nzsKpcBuN6%vkn1z~!I)gH9HXo%A9;`wJX++_dN(J(Lex@(T zw&7NW@tuU}IvN94Za>V+u}7B({k>VKqc^78+4Y(jhx#R5En*#qQN3!PjVI7{ZSY{> zx?G==rToha+Oy7p{TYv7SNh2^>hq!MA08PAOG|_Iwb#5~_X^n=&a3EkO_%eJ(+i{l zkQ$N{#mNqQ)s^8_@VKAfsCr_Lc0dCu?zL5Yt-s}{RZ@zp0L{1Vxd5ev-+Nuvt$WI} z-6fUK%h4&Y!50Yk%coyjTB1p9MN3UQlQHkwM1<6aZ*rSkZsYmg##=Qa^dyPy*;)c? zv(QiQYDRw{rn!r}7OkGKk!teKlT2-OhwdZ7Efqk*5+pH@c#^r8U@}cPN9s~q-JZy~ zwBA7fZ_kI4g{+sR?_IVi2{Cl`Y4nzZr@!%?kQ>u1{WM_lT08}{vR^a= zeV1#UnBKsqR+sqCu#6vF)On*>c%~Ps%3PhUJD5&WUp3H42xM!Ay^UX@ni~o*6(HIe zEv>~Hl#0Lk>|A>@pKXx;2D$M8@pESX#xu0>w|2Q&tl~?mWs7=` z!{j_ph)wL>#3A0#5Vg z>@+JAGy{`jA6u@j3NBxK{`oEYFm^xmxQ^?F6lKi&VaB^XcJRZekyt7l426JUrFfUe zTmMy+5^vscx@sQnvP%kMRUbO<3Sp|}6MUl&%u4`m?3yxD3FRvkJTAHbfJ~N_ISI&B z#Jg0X@iKZ<6Y-31J<9rThwuHq&dpeW_1mi=64%!D*YZiv{97aLXNSBI*s%`z6+HR! zEXMdhYwy52qTX)xId}g3zV_(+_hpU7y&~|F{DWtF)PB>S!n(33&`cW`}@ zmP&&5ugX;ILLRMPjg^}oU@1>r{;r;k;XzC(Tzl+2JJNZQ44@1Ql|1B~r_%5{@YSe= zYdw*#y&HI-AH76s#AJW!%Hob~Li)+wr0T_zG66hy-IMDkCpefMaa*~sy5V{#+vTDG zhr9-jcL2;ho|2N$xmte9Rn-CBnp84llz)5rG?|i+U(U#~&3lzwjjOlVH8#H~w@PeW>*NImysQJGS^%O+Yj$*r3Wzz1F%ZC!U(l?g)$zl`K^$H2WG) zQOIG$V|9nV?;q==WF?#P*rbSa$g7aI7UVGA7B5|aVZgNf=rJ5BH^Di+N+P!6Z8MKz^ym|19DxW!cS z_JEKeAkJh&Ex)s8kDuLNPUSoca8X4{Hpp1sN(Z2oaxKEO9Zo;vh;2S^qCWJ!W5c^Zp?t#Nk$FV*7tYv~ln-%W^7r-Tjt1j+?y}K-cYHzgT-hsKSI1uE z65e?6Y$S7=BVEduy)v~eu@ByzfHns8CV)(g`$QFW-@>l!=*UT{ZYIX1=p9i5L~INt z)oV=jT9?IhdHvk=>Y->(K~__#mcc8Z5$EIgD4vLdo7@Mbkmi~a@>k^qSNd@Jw7B!1 zdlV5vdoTZ%rt1mZf6UphS-ADo^)cvv`K2=9=g$+m>;7HL0Q9W zTCX0-su#K4S|_tX%04NM@LJv$p#fK4cseH(@1hIG{@E%}o_r+~ zlIO8seq`FuY3!b~8*4-_s;cc&@I}MN$Trl>X)?yKCNo5ft#f}f+eWwj@uOw-uZ%N7 z^{-ML56U(_jvh!;`)hf;3~<~HRcqwgw^bEeFKw=z?n<{ycV{K09g^!8w8q_h^1dgW zw`8>2>TR(cL6K9!6#G-mChFSa4w>}^y>rWS*mTkp2s;oBl+85HMs093shn&JOl#(0 z-|?MdTeh_02;O=|qGj)>;d5@cupH_9oE$4Td6h5eE*Qv;I^RsZ;Au+)69Il>X`=+|^)>*%piQE3)beZ4V_w6KPHU~>AGIPj|UMqn_#u%CWw z0;$;UbhkVEDxE`5=&IZOYi;X0&dJxgIgAQPguHdse1oE_Y1>9Z`4wV%F2)F$a=h;T zDY8zNcE6R+obR2A30@7$AXD2??lXem-^&Q3DW>UW^<)A*`}|jgV%=J!Cs9o-k7}_7 z&;+XSf4WXB&5uuUclB6H*vW102odsLeG6X9-U|{hr3a3`H_-Uqfj z)WX17pGVU2B^go8V4Bjl7*0l!&@oiCU7=2v_t_@rvem@(-o;Y<*FsEVfeh=^!X#CW z1ezrKjK+D3&!k{ch-#+#Bg)bLRPHmv2Q4Vn5v+4MV(!Jka}k=88wd*0i&aRzIB<2zLF5 zS7dpf8&{0@kLK!#1GK&$tdWXC@jdPCB;Oqtt^58@uX594bsgecA+oVd@I2D>w~zhH zu0Fc;`)c;PoUsJeJdUA0aL>`Ze}O2D=Myxte@ky*sA*@SKeQI%cu?&>Nc};=@l*T^ z#=hji$Df59k#7RrQrD{rXHT~hMGMjf{JwfO6OuG2=jrrI$XgQ)bk5yhNv@2^jh?Tbb~K50E(3=xq&k^4*j+d4A$JcBkF^2*5Gc={7~Iz9;(keFGG}rt`{4;d+T6@y;tUEa_%izrcs9ufj^8oO!z4n7LLzTZJ zK@;}^<$;yTzCO6W-zhKeed*@QIC2xQa|8&jL0^C@a(k8B zDFiEA?z+DKBtG=OnBp7n+h-|O^pP%fTHh;fT=Va*2G zh`|Bw>e-16IDrdD?*>e&{_K%osbTo=O<=tNM*A(r1R6G46GEyEGq{z!sSQD*L%5F~ zzMg|&Zyu`W8YuM$KcO&k2O*1)7HPS`Rj0{P%oHe)=gT=YK0gB#!Ak&@A|c8o*U_=_}}f%%<-5a~SK;`_z1;CQe*((bG~#A8ml z1STBd0=@6A9{eqxYD3k6Us=QjY}{*#gBjk1;zk2J9Rrihq{BeB0>(w6{qCuq%KwP7erBKcxCZ7NCpLBB z>*8WdZ>qlODn`L7=QE&88<#OSt(X$$(wr2dwc(>u$M@64Js6=-Kpu7dQ;0B-ic|QyPac2@ahY0xQS5_XrSf)H#_y7ZUl4d=8~`v#CCO zwXY%-KI;)ru1Tb25MeCBEN;NO-5$H1irEbWHN_WxaAC9+GU1Gk7&iCGnu<7Kg}_Vn z7l=4hGGKI((NX=!iiP6F3TOxk-_72in&vos6iIP&61^Yx8TK^IlxXTxDxH;G>e zp#~TX2>8yTSZH9Z%&M1BSkAPT9S#Q@fs)N;)vZtRlj4+W;$$^Y{C}FNwwvLeQ%XMS z60U*wBTxoqMQNuTf#DRzDc{2Mr3Jr~B{yxVC1%s zwLPoQdc`v~hT>o_38w?L-o6%X&2^&jDzH56*7o#7EPbI)x<~gZ|3lJls-JOi%@K3l zkQ!&Hok)vM%4DSyiN&u0eG3O6dI$e9UJqGTh81J`X^>~@vBYq)Nea4%>#&N*`32w3 z;rBSMRJ}&&$%Q*ZW5^An&g{4Sn^$6PGG?ZUVuxFW_nZ80*^?W7ATVd~JN9`9=@7qF z@=Qlc_w_O*d+poPfd7C5>beZ98$_ZQj(703sdJB$D=3On1mo3a3bLeJGDvfZ^)M(O zXF?VJu@Rr2-H1!8Izop{J#3@$WHzWaw8SHjkHJVeDBde%NBgb=WzhlN5b7uCu5ZE? zafy)Ipzw^lh!h^kBrGQL#8^DCFn#&cZOPaqxfl~42ba1KWVH{0AmB^)1F?r&@9*>CauWHcO~^dsF>)(K46so{e;dJ0S; zQjG29<~uMUTyM>dzp>*U^~&J%K)PTGn(q(tn4IhS>eYIB4_XS?!^DX@4^R2+YO7_n z9T|J4f}Tv9k|v5zY4CwkW2+zz^oy>{y!;=2@Ii-%&{!6o6Ai0;8GINrDmM3>1HYqF zpGT9~3hTgVT){K_0R&R=PA$@FPR@x@2>shDK`p=I3SEfeT>Q;=^5jp z$?5&~7vJ8b+dV;(PlljHOG%^F*4H;iA1_6J?ZB{!itmUMp!|lckPB%Pj>JaTQf5kt zb4qExL_`pRXPSM;8QAwOQJhpzF~v*>xXZxTs&$`25b^ry#cY*V(zBBB*lVt&rQn7V za^=rZaT|HNMCr8oVT2Gz+pRiZPl*N99~Orav7d5=W=}^bQDb)&9?}O-@C>`r#R%7b zljFZ}T(YkdRdKw(QA#J3s?VWxF~xcMQ!0%#ZtE9}6Dg>APzkn|cj~rhyzzE1EoAB; zF90a|K|-36?WLs9$H1vdwtVaOtZhM^>mFy3*l=1-2H_Eg8i?5W02A&vLT6elUEMn4 ztOotYef+oC6S?VD$E+m7M9u_>#N)7#bG_|^T;e{kRulhh6v!tp@BJ&E&zCmE*FXIy zT5kILIL)C9aFhu+3HI=GeQf}(p4NCfJ9mG2;NwVE#t7tWFY33eRnh76o19?V-nowL zzPW29R=C)sGVzoUzO8CGh`dmtd+5C+8TxAjyW4RYJ{Ua{i|a2wbTzD#RsPl$#pntT zvrrEZ^^I<`f-cPkP4+zviB712IsDe&ih+`vz^G((stlFsVkI8*sx$LDO(oAPkGS^< z1iq0Mw~JBOZ)1Q3BwsW0`_%KrgrxSMNr&`ZD60HL_?|%xnap4DN``crSx8FCOyB-S zFwRYXlP^s5Rh*O$&-1Fdx&h|5P@cot+szdh3LA`gN@2e)Ht`74&SApCU|qdw{*T%E zA14UH?mAq57)*zpDXA*|6mr-8D1+?_Fp) z$HSStcN%Ckd+Ic^)8SeQ%@0l%UOqUy=~qp{!LD3b5`+I|L*QGfquxJrW4 z14KuBq{7FGHSFYq7`y>`$*KzxloJ`Du*<@2H@ub*?2jk>iT$GM+ zDxaxr4nWi67q2!Q9s#KUB;mobdedME`uvB9e=ds;V`OhB0H6ZyE`BV# z9N zILInAR@st?TdVioF-8tp=C&_2bOn?~M<4-4$2fZ6VKkhs%0dfFFTE_ONAKY(TcwOP z)651CTgZj7Nef1)c-uOUitc4oq?&K%9`|$B#h{Ijrt`HwroPK=!7Mz9K~wX_fB=p_ z640M+(L2t)&^ezNKmYTPp0GLzVk$VO7=E|09_3&DZSBPmWue!)6CcY~d#C^z zOCQE*Z3q#FpCy*K<2sBObsJ5PF5ul;>dAXl#dji4mtG&k0b{W;U?DLN=` z3p&dxWq&=IFVET?OXlz8B1iytXdMG^T`J$kS9>u=Sk?)T3XoM{O0*c*h)9>mLuaN2 zF0S@YRt&hSqL3t?|6%2kL#ryxnH*5`qRI{+S-I?t=}j!SWBjX@<1O|U^Vayt@f+6i z1Le->ZH1>_e-mCn;bPcuSH$yH4oddvOeqHZ#lLU<$%!i;4PYMPX;8Mw@=P-BU{gO@ zfTos|XQ+c`t19WXMTML~eIZEdlMkVI>#hF*`u@jmI*)7{I_{>Y2SOjygDp!=eCOl2 zjog_EIFm)GPq0P|E2^cQxPNd{RVrEvimF)4J6;sggjWRKo;Vo0u+%6=6@j-T?lq@@ z40h;W2W!tz^*?rJ)uQSaxjpQsRzRgwU@?~GqGf-yDbFdMY_G=q_brjZgy-W87 zKyKs(EdOtbqiI~bfmZg@%gmYsCR>VscF&W&W9Za|Y#g?>yFn0mrZ;XjfvmhwoHmgrTkXKb+i?D}yC&3jJz z6f;X_2vgV$F9q4fpdF(>U0B)$M?kj4EDV+XpZg>@pWRe)8O`L$Vk!L3b%uM#C+hJi zH~sj*CigT+(&ulsC$q3@^fVv+q$8hUx=%l>y>;+q3uFwYwwmqt0?dQQ``S-#E0 zPjBOM++NAQO>yY;sN}d(SZE$u4>{|UI88~K+<2XQ zJEmhLPed;hCe8MzBlL&G@70LM|Iu-!h}#>Tk@9&<6Y=^X*?c^ZiXNb0@p0s%Y&Ouv zBCjcJ?U+;gZ9vg4Z)9kBzSp+QIA8g2NtNq9(ah|C!KPz#jNTHXzdP|I%>TL1LG9mC zQ^nA!mws}6E@JE9J(WD#)(2Ow=|2_f@H;=J}O-?AqA9Tcv_!O!2&v zRHTNCen=D97Ou@-mzvbcTbk)wiW?gYsctcAEuXNVqZyogBC#hEf60D5XrEhRWc}gU zJ%-ZH@uS;4&BpJ8SeE7p9%q9t@4Z8)2ZnM2eM(KyF~Jndfv_a8d&Zui=I=~>_%rLP=B z=g;i`s~`-3{Iiop>bZK+@xx_DL$56(%M(jL73tY@*t;a1&T|Dwy!VSIsH_L<5snf z@|q#u&^qZ_G^yX`Kti@gQNsP!e3?vXF^HPgAt&cTpJFV+>vHP2LFA{DG24)i48+=qXM6HTNmM%vD=xW_VZXlrZ)|F3GjEqm1;y6Iang? z-MB8?XiPJbr_5vvq?ct1yvEa~Wz^D!yN7{6i_a()_`LDwV{Y1lW@tSv3`5Vaa7jP8)IQ{Tg3 zHO+`kxhyEj?`i3y&(huZ{3{keOFmaR;e_h$}x3!bP1OU1}mx%B6& zZOn%Yu_(+3J@Gma3oP=O$(4>vlz;aXvo>E*WTe!0(GZfSF}xt1-j}Pq9{9M^on(vbkab@I$zq89EIH& z@I-pxtf!v=>9h6dfkAPq1S_v^p--8LdruX}K_x%>47s;3C8UD4KlKAg^dbx$cIpt@ z{JyV#h}|L@-!!|FuvV`lMban$K|sF0+j1Oi2L%<|9>-QR~0 zGjd|pNVC=Y-%2=N4Ke7k=vLa#;sxGoE zeh!oa2t`7Y8YW1?`1}!ROMR?sOY&(q=b*HqtH!*$g)Fp#X}Ut*A|v|P`ZGQPiRiY4 zSQ@CyadlH@7)w35hR#qNsUL+Ssdq3F+d$otY=O3IcCdSnrxIzj1?F!44Aos@j7 z27lkVni>TUnIwVa@BkIXg1U|&9quI+Kq5xluy!-FWO~QGtO|ppE&gzqMt1-4&wt6i~&c^rEz`T##h&muX#dTGTmio@fk~|1EYe zOp$ieFgF=Ns!H;oZ6HJ>BeD}I(Q0zk*AQ-~ zQ*B(;b`ElsAL`Xx z3iGlZ+*j5A99juWPp?7BKht1Hb?Mpj$#Uc^nV_~k#0f9tcZu}{12QAh{~lOzvVRuYcLmYmU^bv5| zR8VNet+~&R-|gT%v9s8A!tw_JyLBg3Oo3YdPZ@3wTS7Kb_e*@=fxU<=rCNTl!Rw$G zTU2>uG^GZ}Fgy1Mj_VVU&RW76~eypX!>$_KVNB)Sg1ciZC@ zOy*AVF|3AC0*Wq*$nb^@Xz2NxZtQC{FJG#SF%r((fsA@vxdAWup0-RQeedwBN}B8Y2!W%> z?!$~-^ma9NXB05`L&KM^l?C>~wZ#w)Nl=W*I&nQ<-!LL7p!O3#O&702KXVxArAEog zyy>p&XX8ByatmrQ?A-gFXFp(^?Rpst51x}P|8r6%-6%F?5tzUQlo)Fyg+99N-3Rmw4Q)qnf?3Ky{9iUXjmiz&Rx z9*I)*cc#_O6b?`weKxC7ZDRU$uL!JvBRyN`SA_+5((ax7L z>UU4PALj?^D!bnzKy#2**vbY;q0CeXRm6?u`jtIOJus=i$UVT-H1j^YcKSI^w4qRV9B4ME@yFC*BwUk<4S znP7kqv2r$c@gB@kqb6}02hP@#=JCwT@nFF0h+wCpe-Y+xG@(KvaEoAb59nO{dC{*4Ek1?YPpY% zUT-V-bfhHeQI%>ua){F=TZ`D(Lz?~)6D+10jn-yRr4hU5@AB7_haf%4_JKC7=UsqO z^wa~mTCwqsu|!~GRgma;(EW~-?L($Y(0})ggUZGW153KhD|bJ9nHC0uc6(L7y*l@o zm#)%!q4J=?oG3|u9v~`n5>n*gk~tNwU}*?2)?SCu0K9Pi`8|=OKfrJ0oXkWY!lP96 zY?E<;#Yhkd)dOAL)IXcDEOjpBEHA>c%tB@FKNraD2dt*!-bYT$v_WZriE4F}A;qhv#tuwoa6_suRcS$k-U`gks>@sbnGxi$+iil`J%WdI4_%)eI)Fd^$(f zg9%Uw&U2Y1!m3qD4FlxhPcPqRbKX}~5=}-`gBk$t{S4Yj$XqH_ z5^aoG&Y(jHgoOVE_pV&DR-fy{zp#bd7t>?{R<})h@55SUBgXo&(_Y2;nx|65DeGiluy@4(0s=e4{s$pSwk9w`hTDoXL@n?#r6me>Lfcf5z zD_y7PB%RC^1V><Ak9%CmX5ny)v@GwZc;O^JOX{6#R2yFCAZd`&c!diZkjryDk$T0$clt?@0~zDpXyz0)^nk$=o4WX~gqTfOT zsRy_b%?X9FVN<=s99!cL2#r0t!fSV*L2f!8rWgif5DHm33D-@)mKp-3JrJF^lTKLw z+(l?dyCwM#ZnRt7yvNFj<@Rf3a_`|^rjH9_MX9<7x(ag$Em5iI(Q+Nb17eF~5h8NX zy~75KJk;OHD&7%p<`zzIAFlYpwO(^sp8WgOJY~&=*n4dHmEAGe|EscJ?_?J534gX~ zAsT9V?A0M$PIW(%eq=-H-I3aMD}B^*fN*&^KVcsH!p3v`5`<`P!$>xGdQp2Tr&sB! zIt4S03%3P9`64`fmq=$g?en5}?8D&Z?ygh5CB9$XEqdTT8RpZIgMyDq-ALN1Et6@Y6gl`e7rEW&@A~z>*fHJ%E$m6{HMyx!v6g3`kqu$j z<5?rMwQuqgzvBJ>EI=B{h08IGo)*ba3*|F8XA$ie+>rkna3}8(`-Y50#wAO`QDSl*22X@#8_d*erjaXQlzHqSk1 zQkG3f&j<~{oQL{Tz9-@r=F6zyVd&it{fVHXtp8y_+A5M1ihuJxU6>5@J0ew|b!tT8 z`CCY=>t@9>e&TF3{i3h+YVyyDKQLN26#B5Ax0d~ErpqAOF>uvWmS_1+3vF29IChyw zzcgto^z$z~wQmq6Pkq2As=pZ6CsgZdA|yEbi{Gkv62kem+u6~gftT!d8MqZK(zCOQ zxsT2+by7?0MylhY4lx})qWK^D-}*Hsr1E;UOUluvW}gmaJeRdk7@+`R&zEJ zL88m$oK4Cp#fJv(El37T<6jGj(VP8w0i%t{k5r|!Kg!jrY8tFqT%DDo`oal&98e-s zuWh;_C$P~#S|@}7y9}p4_$!TX>~{%F~eW$gZ~S)^i*@A-tDovS~1#Vgp*Wq1ql zpG9_2O1*jl**zWpwYEQUm(mIut@s-4C5KdrPz(oWWo~0jYNUY5`w^hg4?vvG9^QBBLLt7^^DFlu4da=hW71+OPWLU7Wht64`h zumO&I=j}w*Xf~8N7Na?7?iUypidr~#hdQvjzpg?j%mW4G{y3K`LW)!EUrnJ{wg*_T zwL<@VN-gO;Uzf+%%K#GZmzZ1C?iiV6k_S!y7s-X!qOtkzi!4%pp%V?)xc{XqNG{JX z=Xz*T;A*4Is7~?o8v^w8A~+l6Es#?u642IDm4;D%)zTX|P4jpIc#jy3_UKxE(0L<0 zA!MJY@ee(ArdJo#ySpL%1w&{~_zh712oFs@77?%f#pkg&K{tAkz$KIC$x?0Z4z633zsSJy6vm>XVBZW~GP0A3*ZPG7Vscae_mmBP0A@#L%_< zd{4&}eedts-xWw`m7uv^-Yf~VL^87oeRTBH>^}9ApR@*Jm zA`int!(6_MmrC$SKBr&GKz{8h;pXGG|9a+l$3J}?r2HSR+(gEs8yQxfOKlgq=wjkc zybRB!L6Y1?f%o@TQ|oKX^Kca)@c*8Aw*?50Apf79EX7Cd|5Mkl_5bx`W%P>i!Q6Mw zXf%5q)kt6*x;Zik0YElcLO;IA8>Xtp_)ODiTd$%o=F*CKMxU{MoRs1ovlTD1GHc3x z=%k}e-s|zms~fv7$$Af^DyY(=`uu&}C!By`uw{xn(On5wv7Dg7da>tC^xp-n);4%w zWdpOR^L>3|$ztR|y5m28RLS))JOOr%6bec|0^Eoxgwi7cwv{CKBhx^9DLKU6Js|-K+Oc)e!za@dAgSz-RTN;q@!e9PV#M>P7zS3uk!kuxt=BKsK9Hm$1|D z#Gf29ofW?s1_m)}jN_|7#3sIYX30Z*75xTpBaSihb37!ecygNJE_W`T;SO~?o{VT0 zPXeGn)|BMIuA{^BY$=%S_{v$mDM?haF~j4)+<}}p5Zcp#)b3PZc$U^ST0gD_1yM53EXVz;bLgPjYJVt#MC}=r4M_ z8LZ%>YnGGXI0>RdzVRic`wqj$PzaD_cP6Qk$i<63VjZ#z26*O95&OB<)L}{7axJjn zyO~RGw@ct0XuFqci|r~#O!0g%x)*JYGx~Q3>|{Ko6{@^FG5&czv8qM05JO!IoPh0uWrbjWc z|J}rdio1dSQRyB?f>k=3^Q1YN$#IXC!2GYzP_Q+&=l&y(iYYVyVp$bE-Vm7!27^*+*odsHn=XWEXJ;eGuI z`LC%qzjMDAxvDV7<{3h0#^XfFdh&|Ck+oMnjszkT&wl{sCkdAyVtUOu0K$A}B>v}x zwrLeBBcvmJo8wgdq~l<5{bxFXhOEcoPOz-Tmw9v(RNM-DOmQhVfv_e+E>!sfTs@mZ za-zoCp_DwpO!1~dJl$lw;4E^ECI-iN=(H#JuShEM3P?#`!ZF@7!I7p@bH;#_}2qTE8kF$qr9>%#DNxOYI0 zzEhHF1*o>znzi!$oOFJ*5hhMAxI}`#51-7q`yigc9?SPgGiJd*-NVe`2|SH$8V%R( zR;l1Qapg0*ae{;eYt=A~X(-1SnZz7<5aUpEuPV5+8Kdr?*5oLTM!2UD^mgS{sBZ~N znqkqDoEz($t`mk`Iav`N$y0s)bI(&If_RMzj8dBTd2gD@9K-Y(osF;4j^>Q&DXsVj}?>FQ4UmYy@##c9@dlB3JYN z1g$NgX5tq{g1VXFtFC$57A9z`<++yx$xkgi8EbM_B|RHFSgzwKPBjghmbQZ^NT;u6 zbSD_f>u;N{hnfYie|?a7Z0S5)xH zcuquaV}G6)UXYu@VgvgOVEc*4`7L2ebIhM^;eVJ-xoz^iMThP0{}*3>9n^*s{_Vms zAVEWLDGlyUa0w(p@ZeI~;ze7$P+E!v2^!qpwYXOBqQ$j_7Ab8hr7h4l-}m>NGjrbO zocGN8|IX~}?##|-=eq8_$3J`srUZ~4rLkVBdP+)!;wHQqeJ^AW>9yGHSG+jxrr2ci zz7$*BY+&+b{!?A5S%lQe%<#HkOoUFMVs9b@H1E2}LWRdMi(T&OC77{3-hM+JY0dbnlB_4RYN^PBtJ>u)y*tD=kV>8z5$z)I!U zSLn8kBCkp}2SL2!pfQ27q8p>c@xI4Ql7DRbM^399zfqY3=W!&0(CtHh4PBZco^`NW z)h4YMDAQRexAPJBxk%5|CZ{_}LA=$aVj`q>7GFXumm4uD*|9%YS%V4|2Fd&#(FOyX;upAHIHF!H_^12-AD7gU18mP0D8cT^Hg?pGL0MWS^C0 zdC##l)#d)X-UnMB1{K9!iV_Q5^9O+^nZ$7#i?PPXk*9naN((o+x}&}-w%yae#Q*Zs z`5f@`;mwTx=0JI)u=}@#PS!+UJ9saB>3-n)P)21)fGPatqmzTazhv!6+nWzu3Y=P1 zt4vAyhW9sH55$Xp>S5y*mvN`U&^)iQ-pw!J1csoYi;Rbon=j2eK(a`eRedEVf5rn9 z-U|x~1+avh2{Felas{PR_viMz4~Wt8(gy?W-{b*B*;IVC*Xo`0H#%^DJe; zu)3J{H9S)@r4|!FC~gdkh~g^kcPwpMyQ_*%;Vc-YTuu zir_Q6C2UpAB8m+b-Uxcka-@i4_J(vg@%&abRSxXXHQrfvZWO)+Uy*hEt)1YeN&)oD z=fC$R#`-)jj-J=l_(H#&U-UWaP2PG;6Q%u!ah+=ywY^RWvTdS9K64aU0Qhn>q(4iM zC+7b1dxXj#h6R<;86D^%ez<9r%N`oXr3c@k^7QP|HLZ-(7SM>X6h=Xj|8!{vtRf-H z%F`Bbgn;GG5m~zx<=7={K3jO8kj7-SfJ3#vRQ4^{FvJi0ROQf)LOXHsGG;1Em9|?Z z=t918S(d@gw#QN>&sDBa4!$%Nv1x}Dsg=P0bnd{*KrECu>(OWI#A_GaCxUkGA@TKc zQ0PMs<^433!}M7SBGUybZGx9=U$|5tYTS~Bx5j5)4)O*h?Omx*_c}}3TtV;wNa*{LY(ivP9$!k-3&nxsCfZ4UNg6Pob zc$#bd!lfz3R{S8{-(&b~7a6)l`DIe47#-($@0R}l<3E=Y?|)`eR6OL_rLfEtP7Tqa z%E??2(YXjnhO|=-Zs%PvsTOt0n*UG1jocXpafX9tl05{P{nR@)+!TwAvUJ_Felj z#=Ao#m7M7yfn|SqE>qBHs_kpV6-YLA4A_>kQ{6u)wWwH`a5AF1c8%3cMjN>19nqO=C$ z3@_L3{mFS6=O9fJR1jNfQOW;QI9s)~Q)9pblhI+y7mNn*@oh}O--eleWr~Y)fKO+N zR@NHv#u$8$*2{8Z%)4|1>;h^bs>pN`f~5ysP@k4xUFU`|gUjdX&KA ziVf+wyRBs0(qYZfFOdp*$a#?_s30nIsS?x^D<}{7?0_B%Qd>W^c_9S!8G{7K^SeH~JhErEcHQ%jqBYlP-rzMQWnd_hRlhtx;|j~MXEfh*sqt!SS|lrt<7P?z82I* z-t!#zgqCxUa~bbksZsht^pBgCD9l8gd-^Yi319IUCHBY>#Nllu_`4C^gxBz@X@f)M zyU^Wd9e5ghe%$1>JS0;%XH1*moEv^F@mEQ7l<7Hdj$%<;@JJsXYU`pgiHcYi`GXZ! z0oeW~*C~E;g`4l8lZwtV>H^}0Ng4u^0=`ifjc(z)opf2yOj#h97 z`@X?lOEpJI?Xj#Rr#<^`Ma`|cNau?N1PY%Ps)CR~f#s^NyuGwPJLI*|E@cnUn#OdZQ8`52!xNj^go$@Mye!ztUZ#MA>{iYr$==wWN8NJYT&++GV&u$9 zo!!9tUn4q&2({iWOzN(1Ulm$M0Ufv!I>mAmF=p$%>SMgGKe|%!WdFXZgUIb5m6+vd zth+#ep4v_Or=xDNDNN;Pb?rO8xq*t1Rm;1rGZOzZT=q(yDf`7gcb!ePJD5jCt2DMO zKTt@BVnj`&}kcu7F#B4c7cHtwIt$tcKv%eqf8Ame(|6V_%$ZlV}yYLUV_8_k*8C zxNLZd&aDR}W{&&PglO|_=JAcNw{*w%Be; zO{O!BJMpHYtV-+~oy! zXj3Pcm9H`3b5~_b_TNIK_racBEvD4^4$+F^qwVblW(i6}#lsZP#n%h}}@Ah)T^f5LwO@^6@ zZE%zam14#}bD1efJ)QiooF@a0K{N;Vo8-gNjyx+zVbwoV`~?EJEU8Ng($m2M1P=d} zlUrH@y--1#L9~OJ5$+ClyCKXbeA$U!`<72|qAXi^R{b04jm}SpK3PlnTH1SBRk{Ii zqtF^%xiIAp%#7X##Zi7BhDJ3gd-=eT()?_hCE+ecUWM6av_)g~T&@N^D&!pD>_(p+r+?++|qaEK~qZbUlMuJ8Z^cDAYJu%=+Xad zCE9^HUPmp2phvSSgAWHE4bwxmwVo4oqvyc#Ok!c_0`T#54Kect9c9h1*w_qf@~ zu7`?p$O9epCp6k##%Qc4?V2D086arSbRpHgPWWR=txB%SO08gdGV#g;j7CB~ZADF> zC_$xKG`{Ym*#-WIkl~vxiJn8=vygNau)U^$-t#i*V%fESeun79ND1^X&K(Gf*q+akHM+rDOji9x4m7>_I6Xd~3+7hrn8x0b zz?Z!uifScBkK^NYiQR6wB0LRo?|vvs=i^#uXq-#NDka8b@xABwNb=XSDMxu#wLLkV zjYlQL8u&pY)s6qjbNuXk?MX^ksJoq=cbCsu?|IL^s6(4XLbmh+3zR8(b^kJ<-27mJ zCy7r~hi3-y{%>Tv|2PTwMkerU4_i6kFbpp3gOQy^G9WYk7}*Nc-BQ!rj>lTu+3B_V z!0OI>tn))Egh#7K4kFm*@7m@!t@Q8K7^c!?`CH#}#5f|yzFt@VST{&K5*oWfr%JxB z+{ldcD!5hF*#nTF+3sx75=wC_$P6L#mvG;CaKw)z=S2A7sRPx}Vr;4D`}Z}mG{4b~ zZ9?Vzwu5yW&tn^^Agdln6X^VXRnL4B|DadTxF(+h4YTAcN(zzi8s9r~@FGB0gLX8C zNhk+^Cn2L@adF0qtJ7oEbO8GtvF<4WBUS*wM>F2d0vrVf2(i!yyJQ&96MXU?J6c)_ z=wu;7zCvIbQ-$29J0KF^`~C2rEZ=elJ~X`3mmM?03k~SxncQ!*S}Iuc{h$J=dBf}R@FsK7^8K3q=2)th_F7(w z!h*osH~VfiS$t}|YyL~U+d4l&9ef&5VhEh((w5z4{(MM`h&1Wtt;wdC56fw+v`WtD z5+t#VBoUbL78Ysmogqk7I+;-5oxvvG_B7w=K6yCwS{h%BX(uAiSW=(Yh#kR zoswBE*kdH?dgI4V_(~#2#2SYMsMBNybLB)OMAz$mCF$HVj76lKSC09h!_>)L(|lr{ zuT1vkq^ink$=;Ja(ZR-NRVGJ$T~~ z3lTe$$rSD?cP8Nv3P~|0o_up+>43`_^AZI=ek&qR<&Z#?$7iwTqd@W5W}^v5I-`nR z_2WVFj{-y(M!*wO>~P%`G-s$H-coDamDC|_uh@VaZxVW!T+b=?y+c8G?IjV z)2A&MuQFrXQ_UWROH?KF7$5U5(~8O8O2_heW*NdUfnCWeGrY1UvNJ8O$`|M|x_G~n#k zD$k;J?VJH}n}S&$O7;Vl+i-Eq&&tf1#6c)(_w+4ugoDq=c>QMV>8sQkFPmaci&>Xa zg~p3BV^8}tgl=93joea_oY(_fiO%(3W1%=bL0*SZBJXq| zO2Awc`86|GXZ&b+c&%&Zhh)|uLAWDg$(X-9bR@WLct{?0lbK)MGKN;^%B}VBH9_`FripUT~R)!FQUQBV6m5oE%SVwU}h5@xl<}rtxmWC)S$@@&S zU!n~wBF-{RUX$82FxTQZPjcqT<>OtA(gtkk-oFm6yZhyh0tsW_b)nR#Z19?IGs&<* z-3meNGU2aomFg*uCFn~%b0Nl5_n(u5fVR*2GXYBi^OHIu-YIRy#7?dZ3Y-s; zW5h6~o^x`imeL|aSBxmaYclTUgdMiRL{<00t$pd{l9FO5p#a+Vl>BJ2NjK$(a9EDBITzn;R?1&SmMN8I+TOTo_}tPzj%$ZZjSV)sU%J{V|t2-#gS{Pgb26;944uk&6}yoSenZd&AK8X{t5VDkGg>*p41ljX_M4|iaW zl}mC{E9V;d9CuZ?EMQMB&I?r=bR|8*2G@&;VhvXO>ORPd0-^*KC6;ARAFo#dp%6k4 zKAI{fksicA#ZlK4rqXsKZntVg4|ByAy&p@`Q!d=ycxn%Nlt%s6arOM^qKW4&to1PL zQ#mG2K?&KR-S-*7BE0imdt@Q|6STs# zlkJ}yKKjpv?T5}`dMUkguG$V8PEK1VnWIryM;3cKJ2)z9Lr%r$#qmb*dZ*%lr=SZhB<<>tlZA zyCet%@PFrY|39^pR44y0oDR28gbm?l$W(($S5IY$SgIP=A%=8f4==l!L-C)q3mNU@ zW*^>1w#9xpXC&NXs^HU=%mQ7m!$-h1^#6GOa~?+^Pg%$}BLXz5GQO|CCGz0a7s2Yww^z$_pQ( zPy)&n+CBL$M!d)k9XJ<7hCbe%+58M0N~^NX8&A0i1yG=9#~=VT_LV(4jhNryaCtZu zOb_)d$1njd0~UbB+m?T9*cIC5yg|p;C^aA7Lz)*t{7xthe&H(VWCGzZF+UP^61rQQFJ)~ zea%o9?!vwk$@56L7LCBmyoZ~fs*zIvA+T-3p3{77kkDVRt)fBuGuZUBM{mCZnVHS8 zF>xJJ(hz!xv9?go3i`0vOx>BlnDE$z1`6QL#5OCx^T%W|tx!j~Xo273V-=~p008}O zA`6^;`}iq16U5Pzju+gf$NfpMMF8N}9PPI}x7#K_ue?wCL8lTG-4d#@k0wy@&<1=h zOwqx|^8T3<-zG=-7$S!`nfIscVwlWuQe`*a&^(9=2+j8@Lad;D=`+OX&d>o9D)*iN z_S^J?)~K_cwlC>dD38KG<#LiLq}Ho~f1gMVOjwo@xh6CEhBcF`q9&K`!YcEju<|HGZK!de6X2F=t{34moZ9< zDwj4AG%kKKM!QF6Ww4wBU7=)BI*Vaz`^hg8RY4a3hz<4jSN}CP1q1Q3m3nUz4BZ&Q zo^npM%IUVjy%LeuKW*Vz@!DvL zYJV0aS`o9&qhK%iY`6+@k=NaH0E0~QTahDz;zDJ7z+`mQ zmJ^u4v7Pe4|HRNp0gb7KG!U=R677%-_?KXV?iEuaZ)lv>*@`!%7ANkzTL$c2OGW6M z%ZQMtcCtyEKa=SK2ViXt%Vi^H;9aE6wU!Ihx0&&hJKf@}&qeBlq`~4ZA*<9NO2*az zTb0YZY;SGabWGlO+XZjaV#Bnf+n!PSlvk zM{!%QBCYNUDh4nNIY0AM>{tnw3NQxvx-eyD6`vJyOe!n1(9JB}V5XDR^{li+7LY}t zJy`Zh%g}%)Yn8*Tg(3Q}Dfg_;m?tyO^ugzX%z%#iag91p)bD^))@~BT8nU4??SoU2 zo%r4LcYP(s^(~K&EpHz#gd1PP$vWlv+@hkg5c$Py0y^<|%UmD>artSM>|-pVUIZQI zVEz*L^Uqx&PJ`&Do{ULHGs1(k9W$uO${3$_1gtit{wqd8DY=S5l)~k?Nq#y$vMAcz z$YU&khlz-yEv{nkvsxAmV7mCh^=)7y-f+@|t*E{N?YYs^pEBQ$e+n81A6us zKf|Ia97XkQ4TIuvAk#K0(V|dUkzZZO6JYdzYb4EjIk}n*t`fAHtk#Lkk2_K7r7mDL z)u?f^{HZyDmfMa*h>Z#IkB^6tcYy3Kd=%@!XSdIM!ocp1kVh0>9PWB$bZ|09*O^G% zxl!e9`u@)D(=yDnyZ=!|-L6j2P=r@W7b%mBaeFOL;^`kDdybCO!w!&SCU6)np&$7s zUS)DDJmZ7aL!%CEn=+pg`F%i;s}!ZXew!{c=T({7NAe$m-kBJZd|Aht zzLDDNJ3^C6+OHggp1ggoz{UD3=((#@Ch&~1;mx;%ef2w<_I;FV;ehgU z)jZsDc9~-iDj%Nt%GYjE;TqdB-u?5ijg;C@hFz6sw{4Ij*NBt_FN?vQ1BXuUr2PkXOHj=Oo7C2^kdG7VLqrR{2XuML z)%LF)0{~|+@giz&Rj%YXXv?-DY2E}sSngJQK9;k#1ttTjYl{QH!eeK0+ z3qQPm&OIp~8GR=><=rU7tZeWdbadao1f`pa(3<}ULA|6?{Ig|1krP<4{7Kb{g6_!U z5`Lw+i^sReXkPC@irU0qxcj;E-i(xgNMRmqnDAtLosxIi?B%lenVZYLu2*}P-gPJc zr)5`-BS`UrmccR%qd#G3&Q@+M^V&u*n;MMp=a3?NnDyBB z)yZHPdALO+e*k~C+RJVejYIzSL$vbYlV~>8_G~cO89=EhqoInCa4H956o7h|^?tGm%?Gx;}J61-lUrba*@To=wOC&}urF*k>&NGlzE3 z+O0S_@I{sC>`#7UIMs_Bm!DPs^cTce`aq*G>IbX03_9ZS@vwY=nZ-d8 z{(Rf+#R2~szjh|SI~yV5HcGX9oSmZP;Ytq7G|CsU=$WkqH+3?({Uh~5-fb~d#PqnO zBGSMc6@DKZLM`Cn6Rf*$9e!yi`OV$kZY9Pb8#nkv_Em`Ke@u4W$e1Hxl@uW5!)3LT zI;Vp;jiUp*LqToHeF=*-vqt%F>}!4$l5F$Q4xHlz&4mZl1naY8W83_lcx!^*x~aR{ zBqJags({Q@xf=l^o(zIfGWLek`Y7C#i>#7CY(0^J5ofS(H-iX^j=iVlqP}|}jKHTp z$u-tehR^E*2eFy74cgskH7vX3a}1DPU(JkJxdV<%7N7xdy0T%yL#pF23%3R>3<&4K zu|dK5Fv}D^cMV<3XTiEJ$L_pYx=DoxFNV1Rl?^>RoG{&Tv{qU+H5L>B!PZQ?j^S|9 zJ(#GeZ*hPVT5vwW&yRj@e`5B{-wuNL(9cL<6{=x~7 z>8{kH@!LMDDmD9dgA1sC+2CF$C;DXK> z#Mt7;Epn$8uY2JgX1jp1CZg($9OFM*p@iwk1Rk3RT;Tr!E9srAfEdFZ znHxXjo**vxd1K|&!fJY$_?A$H8Oz3;SFx}dRm%2CmVxqvA8MJ$F6szg4;72Z9~hZc zVgP6UyRN+d*5G7V3_2H_5QYfy*Tt2)V(lAIezx$jC7r=@eCU;$hXY(>8K>1@^xe|* zpet4MQ?&w7{Y+lhKUm|{e*CBa5VJrDc!YZuC-clkN}oc<6QL3vB$ZNW!)qxQw5j=Z zw7Atn(oY`jZ*@mbOcgg}?76OTC+=QXVz!^KDS}Yn$nS`UXkTR-(b!+qNjkR=@#M&Khnj8lJ|Na;POb07AD(970{5~U<00k zknWKSq0tYQ8C5ZEdB&DtFa~a6t@T!N5R`(W%pcq!I!P-a=|jl28C2sISn0$BBV@Oqw0NC z2~I20r$876p6976g0&MdcC}RM=KuPr@7DPl2NRsz5yBg++JZN9OIr3g!kvEsRAZ)0%Mn2X7tm9CJ=d#Zlj^Ipfb2x;v7 zKd}$&SBi&-vD4N0`=4-@qoX%dGTXbG(zE5f#N(I43){mqjXVvfMLJc^bRkC)H8eSY zLox4u=1>h=a?%)8F}(o$VD1QO94x6!x(;A-jj{%C>R3V?%r|#bfy_Q=X_4y^e=bq7 z;`#MwiI}|3jum+I==tHerip;fkQMkpyy*6Iyn;0W-~??OvNV~59O~;h`QuV4dYQ&} z=q^(8?XiNRkP(PX?2qCwP(R#V{i|!cEg`t@u@Jy7S(xTidHfj4E}%eXNeQw$vRV+xl%YT#Y^OI5E`8#&F+$ zlm@eE!Dz?X%RQDWF$gxk8dGyBe6=`@R<$0NT9M$ePq(ST1;;$v|7{+5l-6|IQFq|S zFd@Ryl6j?<`^urAXq%xYHaYU4?5mBWvuPeJH&k;s<%?jza%WutUfT~((vN#`hr*Xi zi8uckaJc(yAEToz&=y0J5I}M)h?y8tNT3fE;&6O4Ijz^uj*H(mjaTRJIO?dzycTDRu@k0&;sA~v5QHko++&W6`I;&2dmss^un+%Mj_cbv$hsz#e) zAY)4kC`(9%F*Sg+u7#jWs;Y7P^GVb1Nb?Uyq605-#BW^6G@!7Oqkz@2s#fspcMvj? zLRxB#jIUKed|2PUrV?(udL3!3E#Y75(!`Z4ZVT%g;!h3^ISsN<;Bd?xk*NRNqaOI- z%B}V!4BSOD@>yAO_fe6c%<>RY4c5W^N4tWDWRXJj)we?0?XqqQBukFfQ2UCc?PB7m z+G+&svMp6yIe2~GSU+r*x8XC;TU*qMAKC3g0Pd6SCHD5gieK_d*?d9{(ACQNLLsoK zPaWjA`AK5ndOv$2W~pKL&4@2~IQ=fO-g|ws_06zDw_9)XOj($Fn>KAiy-XkRgjLSk zkS%G(a_so(U#N{hx}Dx27^(@UOXy^ABcvirU}nCrH^tI4+Y zuP^W0H%#J6e@<%INHEEw#z!eke(BRH5;D{p3G)lm1Wy*MGUGCXygsQ)C>FVhblUO> zl#hg~Ugp_-jnx#egI8mL7lXH&(o7CVOFPhJ98#Rpp{mE7j`adNKds>c)oQbAxMXId zOH&=V`vWy=O;*VJuEBQ)zJ}BUa?1fW9o27XaB$zXS39r(%m1un)YXGkZ7zjES7so} zInK!S>q2Y zf`2e;Xy_DI862rZ73cp!Xd7=cScA_F?x7-4@b)%GMvA*d_>E>3yR#6@+hc2N5g7Kj z{#}xvJ>28nIE*Tv^V4;7_)4}%2a8;aHJsaL8N?ZWLYPX|$vL+y-2hWStiQ+JDoM%S z*i)fHtgrpT@Aqnw{Iq+ib^c4Tx$SB?-q1r&a+yxBy(fNMkEp?JO(ygKw?k zjLg2?%O;QNCoFb*3}^o}Io>^1sJ$4gq+v{nHl^*tF0(xU&J=d)tOlWi7X2DB^7_Xf4p`qL>t7e(`F(l)FH;gJ%Zn< zOEi^++ZXdxq|=^Bn9NBZ>z)R8tSm=W3>%Jujz2mS=6s@S0X)g!``1t6Y> zjlNOl1pS&CqnM4$sH;(2e0X2S{>)X|o}r0NqF+dV%6QR7<~GJ?`&)}~qI~#sA$6u! z%943UuuX&iWe**v#rsd*Q-sWGFFM#jOdZ`4HR5yQY8!Qfe5>)>R{obxTZEXW^yNcD zlijlh&6DQAG?Cu`s4?s4nC!E16ylMARI6zrtpHVE{!YEJ+)nayleNAR{$io)qs))R zp17FToPko+tW8zks03fGM802kZuOPQzvTAIE5*JaPjjSCLu)}aj=1`2MOjIaY$)e6 z(qZV`SNX#+vSWQa@ukZ=aRh*zmJ;&t|1uS~n^{AL>FIh9zePJh$Qh0tNka0APFKr* z>}!nHxO~$kRY6w+F#sLZ54`CuvubS5w0}I}qeD_`-p4w)ZN}x=nxOq$~ zg3cn9)oyZivJz$Zh)ygY-HMHI>z#H^9QURX>**7zd`1`TBxt>@xa%aP*;FheFktA$ zx}hdSjV%%@+(r9PU)@&;#(RUIE+LT zyJ1U@vkap~pi#z(qU60~n;$*sOvgWo4GZsX?dkl7kozu}C07y0I?Hg+wEvsMt2fb- zYCjoQ1VdIQum6E8yA~7;5zLJ*MZ^><9b9{85;FCQg&p^RCrB9TbMNWvOjCqW-W@MeW-rGOj-f( zi*>!BE?QxH;6)I>^(gNPArrjaLW)Zt&KWvg9h!D~qYZ0K zH(10@o1lim7v9#hjy2jAin-up$Bk8~h5d`;=U9AW_;@M*F5M@7YF?a$;&^sU6kOaC zpQv*h!^GM$8TT^F1al&9Aml3@wmJo5w?ODJZt003u4s}*mg60use~$WBX{WOZY_r5 z8N%)l?>EJr^b#~pNL5GL65=8A+-)6{o^yqXdIuBa>MKgcpVjV{3p`jho}?6pbKhk$ z6dp5>b*g~!U9AkyHVD(}bV5T~t#4#*h@{H?VjOYz(Xe@V z5`WF-`s#e}JD7cT?dz!qf27W_rG89ZrX-@36>zCfr^sk5r$YdtFfhN9n!>OO<}jm- z@h`=0gW{Xxj`n~_ajy~ z6+p_sf8Ya#I^f+4>f?e$ez&FzB*F5PPY5fqhEueiNT+%-@Kp-R`rYNe@Aj#c-jO?Z zBji)=>LR1L+fIJhFv%TpX6De>LCgXK$lVg1ewMiYI{RYMy=o~@0`Y?ZX8a9*5d*ET z$r_m0uNSd$pgVLCWx9F0j(2>3_q)G>0U$AkcNt668T&4Q(jnqoZ<%x!U*^B~TMKn& zq{ry&MuAr*VR<5Ah8@ZE)9<$_5dqGa(&L=CeF_mu4jt7In|Bi&@ekc{=s+-~oV45V z%{@g9O5L@$8naiVd^T4-OGq^f*zXCl7fhyJ!>kT{Q;NW#80WMjp0a7H-ujXc@V5qy zSz&G}HbA-t^-8TbKqt1O0NUO=I`IF(>*%uHk;pI3y;)99Yqd*%O2k&~)-*`Qxey<5 z_Y?Mz(^ix*6hRh3v;i=xupLxytf4n}Pl(#rKr4m!1Hre7$DyscwuWHgPHkkb#hRq5 zAz!|C6jGfy+gE2j%X?VvzYcUdpUCqPKbc9C=NUhD1iY{yz9P3IdCd?w>B8M=hz zOD8LTG`4xxm1XmBgdMx7GvjCGiZO-<{l|iuGs!-dPq1-r^g@8WBppD|jX=6+Nu0({ zZ^J-9YzjDxk8k>Y_8~L;C5`xlzlV$D^3R=b;L}d@K$br)cB)&CyJ|hcou9p~E)2VA zEhP|q>~d!f*WZsP(d>&h(w&=e2-c`g+I5io0%68Zpo;W8YAcZ{l_Y3~YQ`u8wzE8< zQAkyPt1_jNEid=gph|WH;vFriq58-(%_g3n2H$Cl}6M^LI8~X;u#sAI}wb%6X zV{;yV)m&w@*UOUvj6+LCZrcol9h6=zq63%IS=UmG}^ef?;=@3r&TUi zf#=SV+ew1IMKMX?O_q6$@BB9#TShwt4#$ zK|TXR%CteqmjK5^#O~l7((P{ppXoCHw%_}G6>{(TJJ9Lz$<4N_4q1n_Ms;58(Z=Yv z56M4JYSH}s1J`v3UnSNQ+Q zs{fBpO1vYF>Hl|D4Mi7XpKvoYsvXJxFIKH&XfTD~RZAh!Ut{u3`TFBdpVLX$lNRR^ zs(i9)s@YbkXm=un?tHVln^{svgOeqb(pIB`};?gBMA_Ci*+@eoB&WpU- zgzkA+z(S$Gavkj@kikQwNQ_e=luDOygx*KO2;E$1JkSVdC|^BQD7(wRs5jsyqOcPC}Q?Rt( zdaS&bog;4g|#09Nvo20wi@hUh{HP{3#RI0E*0&1gX z{r6~5+g|v13U|*~Ix?Vbu`2i54fLl+VAwX`aUWH$Il+eHJ~tOlC` zaOL1402+J$3&H({sUSX8+C4Kn;eKk|@9Jqf_U* zyGLaU^cTE=(H>yi{w5UuZe)G=KEv>XS0x z)7nj{8V5{9v2@tOMm8!DBvS`mAeuK`+1z01F&KVatPVd>;uJ?sPqkosS_huL6 zxm&9Qp5FJaIPwsaEhgLRHcj{}5T$mvTijQ^Z#c<&sFiyR#423``~^X1j>90dPM(-G~WG4MHOdG|L8Tr_#&D0U*I||BSQ22+)+50 zz1r!oQ+9xY zmMCKq!#2XHoa)DD?Q*~$7Bi5)xS)SLD+Ydl38a)aE|frW$O2}4nRpcv!IQzA##Syq zCe=}6g}P|B7gK062k>SwK54s#8u0jY$(~*=(ZWOLiFA-n=VNG;X(Nu+n+%CUDYaL6 zP#jUpo##+3UcI5VKs=gPC23c$mpDyN`Mz}lZORP~-CmmyF~}NH`O-`Ibh?sm^Ruhw zd+XsMI&Absbu|~VC*H&fO+cSg>6uB zon*BiHVZ%WZi8`yqSD-SECtpRtQ)Uq=zPz39ftkEjv%BY^DNoMQH92UXIBmbpflz^ z^@6XSEPESd>w3{3WZkyRI%td?t-lx6^7-*a2+j}&Pp4X>H{mAc7s3>R+fta7>_I_s zj>7VOOiX?k<;yCHqOtXOBSq`Xx$_aa%6*AW?~ZJ6gSKFG(L&Xi4CEJePwjUO=7ynW zQG!8HR7yJorxm@=Ar<3N5Q|k*{z$03K%$)BIz*+d0(SKx`muC^)uubNAiG&uUoJ3qu4=` ziNozLU+Jy49l*VBCeRdYUIo_zt8-yAQOeuh9U${>WK6-Cc;*WUsyUEnwg4;s;A`H4 z%ch23ZVAsh-_n~nycc&ARP1ej@dJ%?KbuzmtzP9Z6OeOoOHimq^{tm3>q%-3_vALv z?hB$^X$Uzcg6j+_ZRx8ly&=;1+KQGKJz;R+Qjqn_>#Fj^9kt=AI?p9zsQD=JE#js^ zgt7KZua&MZBY`r+gxB&VeoeZ3VuSf4rHjZ=CQA3fSCc7klvP)NKf-y6ekV?Sdox6H zF}~Msx8EbfU$LZ?=s)GRn)SMe34?dF^`y<6pwn*Q40w>#ogt+AW>KT5?& zr3Rt!8DDJ?;RH_n<2?4~K)U-2hK12Snc^cz@}u?mt(<2Mm7rkyeIt`BIo@bxr`S4i z(|M5G^V{MvO;r4fo<`ryLpKJ`!gyPfo`H*zgMSR>wqGK^pNePmTfAV5Jt=E>_ivpy+^u!yZE&awOR-;AvH8(OPZJ3m|maM0<6mMI*8zv~d>A3l=OT}$Oe>F#a z%GF&S5W$|QM7gU93Iw~LDeshfM^J>CW=lTlvi69z@hMlUrKD6X2d`xF-aVuEXB*@# z4-XO&4zIGl8ox2uVbmuCR4O+o3lT#35?#3xA1N+`bWJJdmn4YS#lM^K4zu#5jpLU+i6efE`+}Mu?;+{&0%a4S2MFJ6fna}K#b|!y zQLpbjD6Z4hyx#^*fu$i)8LJWQ^yg}g9OB_MjU zlj0|(YOE~TloGi&j0`&E5O_`YACVE1QV%kvDET7#Hv}iU^@kL7reh*?&n5Nx)SJh} z{Pf`o?8MuYT8>J3qCd&1rp$?Kqk^LG$&@a{j@alsL4daeUh@%yoVB-q`~tWVCsRnl2l%B@$?e9V`FMYpg%ws%xTBNto~1}jri3%C5Aqr)8L zD&1a{2&}vpAgK9ON5eu`lT8JV(N|CCyJvM|b>}=zUC`w zC){0*%t*)XoX7btiUmUPL%8rxTuXLD&kv9Ne4!hYQU{Y^nDY48MBK?pkjuSDL{4&c z*Mo2`jgMVM{^TIZdn++8?Yn9Ditshc`i7))U4G^Zlrlg6M~KrWYp|t7Vfm&~b^ZMb zXeMKolpwV9S*-gcwp1`ST7Jbs536lV&}61a@!{88KezuEY#gCr5XNNuE?D9Ft~hhs z&50_FlUTwo#$29YyKxle=&phAH!=25_y3vudqRxTLX(f(Gf3C3(o5sdQr>BxWWl(~ z=7{SwdtvXopV6k@3lZcSK1!fYlGzfaNsy_8H{1qOntzc*bgf3TN&kRl>RFb3PVgMu zlNjev0y}t_E2woWl)R}_qNN7JU&Zt*>a6do4#yX-t7N^ksJdm7zRx26Wmh%cJo}@2 zrCyE@+25st&C4B3DRuD!-w=cQHj(frGb?mG`IN2fNS-hc5~gu6$=+A~0@3fWg{K(6 zKZ6AIw#?@E3Ojlp>j=UBWnlv-r27j($AZ%T1p0P9axFl{rv9|5ORyt?amTM~ClS64 z9l>(?eqk1aTa_srb-c1Q5zYU0Oz!k=AvvA|Zp za#3KanF7nvT#Y`p2Z{Hqliq8@wRzJqsfxnA)Z3^0S@`c&n zVYE!3a7M0Qx5Z)%f`sztchw&9m;T!=0Zb9b9ty>6NNsbNFt?@O)3<#nmUhfkc_=_u zE^?31zE)g{lXSMkFnC~FvtaSjxuZ;ipoi>^yCD*fYLW@^`$r+L3mJMH(xLR?O*)GGpyYxxcawW z0u6?D-G1c0&V4lV$?08w;Z@v&GLRI47?SM>?e4Df z`xQzaUZ;8Khgjg|UJx^dK6AvwhC@ZaCilsHWVE%Ru|S`hMe?X20dwZsJ?&ptAPLKq z_^&Es_K4#4^b0;54ey1<@V@>6G;W0%$pMn~CpOjfCWXnhPOdx|+82L%p@_&z*TWce zTiz0Kc=0X=yHFk7xa7N5TeYhgG(4Hj*`%%!ZH#%5SL4rRhia(uKgzNvV@v1c z^!D=Io!ILW%}0fnh;UsPp|+#h$f zf^j42LAlxN(1=bxY>Ks>kg>ge%I(S95o0K!l`4~qXFtWwd!Hj2W~IheZgQ?jMd`JE zj`7K+do?rK2umGlx4Nz*m78L$+QP}ar zC?ziXSXEDK#M9xkR7)`Fi>(~3O*wn5_pzJVzGs~CGBzfE`w|6@?^ZDy8+vKn@s-OG zb`ZiIhMirO9#Ba9FDn~=?fA`6PD|0I*F_<+`tGF1odxez{J7JR?w#RJZa-nt{(LUP zV}g9tE08lZ&%gF~eR!mBf>lt_2^{xv$<7T7xZ~slSzMI&wTPmVU+qK&^5Zn7{b5+# zQMU2|v%b}Re2MD1vWK}3clDV)taFH(3^KP(3VKyHh%Az!`TfT(8ft~FEE(m$N!1~@ zkb{Peh3||s6o#~#xnpsMdU#y9!KhyWT8S>n^i5V|=csE>e`HN$jdnwDMr1rNCM4?< zBoFC)x)JEHr}25qXbB8>v#Ag!Z(z+tRTdw>G8aj>bSm1$CT8${9mvrW3OjpVxpknn zzjSxo>G17>b4LKsG|g>jZ$}6p|t9oZwY??bP9!b-&&9Jwi#@>aD z-}ZR%`*nerd#~{%euJ_ziv0HJYfq2g_MuEIj!W*>6lPAXm7`R~?Bi-NLfV3^4||2o z<#h(w#b@jLg#Ru)i?vZFS-p7S6^lxGXEl37@BfO=_#Pl6K;8`n3a)+KyZUry%<^2) z?6JubN{;r|gF44oCgYKRvElcE6zMplA%x<27au<&yM9X+25-xpjxj`e$6=~}Wtj)7 z4L#aJ<-yH3lEDpu;S&3<9n9hNyU^4sL?Y(j0A=l2V(%Q^qApikD0@IT|Qdx^-`DwcY`_e|sAm~Cl7n~ObtIdX8zBT>sT1|Rm?%2t9 zEB1?!sTdKJqR!CM@KjBkHgQ$XGnI9GFxH3RokXFW)@uk{$pc3M3?Tt9`86w5&$js3 z1VEs#%WidM7B2>%?2n9geXWQ{SgCg=!m?s-XoS8C8v+`}%FuCw+C=r!I3ZMl5PU2s zs?1nNQ6axUWFcNSgJ(?H+oV>}FK`XeHsMsvO%KH8g!x+v!I%YBHn1#!EEFUNp^@(& z52iL2tC$r9-m6h$jt|5(nA+5unCeisbj1rZ$;f+HjSR-0%(n$DR5UCyW*p=rmRg`mD*^L_tS`nleCX9{yqRZPXk*sD)dm%P;yDv7C z9RW{kXwj^pgQi)&%^aLDzR$U+&!seT>bLeYxuxubvCR?!Ks+3ocisyFgxf#|l{ zD23#XAM}3s@K)w!=dMg5uaL;)X=je=qggfTT^&Q=%mwegfmrUK5hAybyokWBts#T< z7@Ptwrc1;vgSfy9MyAm`DU?)5gI*hq9&SxSo^5$r;U&`6+K5Dx$m@jW(vGG@#dtV* zsa{OLeG@w$>*mc675&DwB~{s_tBH3G8DXwT5zPm!zZ^M-;#VGj78&dDuGY;}bPMl@ zR|edw!e`ba#Ini)>&KcEshf5NxgF(2@Rf?dC>-_dxn&>6?LdIS*8S6CG<77VNlKTo zaSYz5$ytdobM08FKqZy%Ql)3MG|qIcdG5*0b|Aj-i_A~cb+SFBXt66_OA@V)Ax9I5 zoKrtXhDc5@ulWZ7YA495>mWb{=N5ZYs!8_js@4jv$FXAC>_`uiTIt%;DM99kmrh)K zV_u9yPa|R6#J2^QQfxKtOefq`jnghFb~9m}^yfS-x7+i!82h!NanvbH_KKC5kQ#R} zQ96x@4B5{Xr_byO4LE_mO;CziI?Tzy__z}$to_@He*HX+O8pvqf%{v3eNQCe$rl{0 z@%WZl?t|2&1(8bj%<*yOIdStDt%w-O=4|E4q53!U^xt+tUvxHPshKhMvnYi|SxsTy zI0MB+yJ>Bi%lvY8>%sdL3f0Xbea8IMfli7o>bs(hWl&7k=JRS8-D}H%0m;O9Y^l}2`tww8 z8LY^yy$$%wWo)gW^BJdPKA#`g$dpWd2!j;W6pSLiEid^1ElV~FNc8nSi}%r{5E4^=#5(bn;t@hwiy6 zUA?owJ!~Ih9Cv~k;A={=OF|8*vGSJNF4Q27_5CDlPbDW7dyyslKe6XPKG`HGzOonM z=M)1p7CaMX5t*icfKOgMx^@*03mKEy3;*Ehdr+G2;viJYfah_xa_pFu1i#7&gIh;j zCao+{P(oD4?3YkpQL_M6h|}gL0G*r@+^X+UG5vj`Qojd})s&bu6t2pI3Hw$Hi|!fN z(vQF;mTFCId>^5e%WB|y=ahri&UfV2%_$zEQtv10Kpy}Z`*$4^R{~^>BvI$;z`rD zZp%D$9!|M0rP#J)g$0QV&^YXOve;v3ZgDhHOI}PGit5Bi{A1jHa|)8$q22d%nTC8= zo0_)abYlwPGqlOyM#yqE^5%&_!#uN!zcE+KKzZHpD}+MV2|OtGt>JSA2MKWHA)j{8 zCV#F9Tp38UK8O(h&eV9BxC-p3L3+jU!3XVc zd@uKq916FOV6`El)+W*Q!*$|wd%VexyNCk7s704;nQ848rf+hH|!u!8K>@=xt|y~edv*y(_l7Q=CLG{O|>E`zg(mgm9W zI$dSQO6phOr%^j}1$_`9DQA|iC_`(?jWwNq^6`gTfllKl{J#`Q z^k-Zc{iB6DC3NKh^n9C9dWt|e#R3&9II~3fa984-7;_(2&h;XL+_1E$@guPeCJ8Wh z0I?Ee_Nd1>P$*%5SB8`a052@{`eR?S7Ei-#>M>Z3i<#GfRgFUz5*Wh^r^E|pR1s5_jFOxzh`Lo)64HZ31c@cvSgH@ zY&`z11pU%zg?#4;hGW24GVMfh)K;wfl?C9*f5oJa@x5MoDKfSSKq_wcY(~8R2)(Cc z7mwu*?D+ zQhAtO?E(-bE$n}sEX~Uewt{Lc+1|+TjB$5UeOIFFl(fqzQWM}|Y*3S;YDPNjovxg|6>*VY>lMR{~w?+QJscik!f z`99&O5hXgE^_0v%QUL})KnbH++Zy)wa>A!48z_gQ%A+aR92Xp+ybAutV0V{#-lm1x zeKGu$g7#>O@&ek02*AP)*d(_awo4<(jl&dU2%l!@NK`U!!{S5{qs8)lHWwz7Bltc4 z2duc#m{5oQ@@FNcfYY{<+FKHO6n)~iXik&`AL#z|tWLN4nVDmp3Gh~PVec~ClBSnj zBOWpoSNgV646zQP+gZn+4}t1UZ2;*$alx_~r!rmg02Z!nGb8PXIkJ}T&^l8riVJvg zdc#KvP0I%*j#71YU(1IfGHh>A0Jd4jA6j%nhb&l(bhhFG^th8@k-J15KTp+iTR}U% zwd)rd{h*A3S!=m=6ql&#Nu6*rvQ5^6(suz-6aa~B|0i_f zQNG9*mwXr~PB&ZWJ;itMJo;fL9YFmV6Z0SaCkz)qFf2w)UGFHrXU)GEWZ0kkB80+` zv`zq~HkyTBglGk`MZQPV2~w_0(sAbnd`Sv0Y}jU4|8T;WJJj(`Zs0I-P6eb;wdD_` zRzN?6${@K$oUf}t;J<-^ceKwl(#ps0hXIrm02CccB&7d+1jm-#ojit*9N3#@M;uze z0tVd`WcVk!5)}Xdjnc5#8}0^F1`EUWy0V6_O9Uggsg?2=s=})qG(#U@{}k$kr^w%=;44ovF9F!!mMfv{3($^cet>-T0|}F~gNGHn z-fN#h0;*+op2y)sS)yNmIA?txdxp7jg^qu>BCB1ILk&1}di^$#D#~KPoc}8E20nL( zAxz?&+x@%V1Nb4;<8ec(a-u_$I%UFc@MjyVEX33#RjaSbeNYjCZ&re&@=OxoD=)sx zM%@3rB zx0e;^@54vAPLwI+F3c6Y*nifKW4T}r4zdr}L!$SXq3=U~4cr5TaGa3z@C~X;;e3{y zOx)gEE3(vX&gUS22^(pD6#CQ|k$Rxl^$3+%sTV8TsTe;()`n)!6>! z4_L2~8e|Dn^dNG`2(T2HU6>>}WLi;vz zWm_5gJ(b*#3VMBYAaz_+#Z5i8N-pL)b<@t(2T^vK{_cI~!jWir2*5Db1dvmF&I!u& zjHViT<^h8HdEX>OXa5^=)1Xaf-Uy&QG~R(sl>12=qR%P6D|^!bfGIXlViE!*p%dbvtgKD>oY@L{qc8xlV^DQ47p;v^|@&>;dEDy68i4 zK-7|IyQaL_E;!{fDm63RtulLw-Y@Dkn%R|lCNWy&afbfES1@~eshrx4tUK%0Z7-^z z-g!Th^rPV{9HTQ-N{uuCx2|=%%6ciS^4YYc8wCwpt3F>8Cmq*+wpblTfz;mgr`Miy zd9u7i0ti3_?+*T=!^>wi-^A&}(f!QF9#yJj&aZShob!ts|Ja)3Ci?9=l}u}6{9H^# zxOeVBS|w7X?B8&Ki$F9KSC78(1jIAFp2m&z1L;3h9GGo4vQ}J8y%tm5Tf>!*3IbzFxd9a$G@2A*Y1|3O^T}Fj%pa1w*g}P z`TI(LI<00ub1|IaajdF|`pI5@y3>8ls71YUjY|3&&seU;ru0iGHuiBRv7+RNi32%4 z(w{RSvll>GKJ}~{_y35q0-mP}GMG@0fF~+}w5vhzY#JLoN=9URimF{@TkeNv%;kWT z!yfJTHa{o$6?Z7z)OFZTq9FV$aJ$U;A9@3e1GHRLPbd}rW4V|cMSa4PCcG7>$8I>nEAc;G&q8)&M7b3Q2@pd!HAxDC(I=0bx8!lMA5385Ff08kr1cG<k+dmz>eNu` zN`JHEZ2EISx>7tj70K9<)Swex= zqj3N@=q4V>A_H+`2idZNu-ib-LJT zPnc=LfXqVxLzK0-J|;sxtZmMBwB}n>Zy- zE&+Ll;zrOQ17!S-1xhO%FwPEQfrH#jOoVR(#i+5`O$tk0XRh7yL;CXp9GP z*!zz70}$mIRCve+6j+1=()(w_hak9y43KlG@iv4R56Qu2BKmT4oie}~nIK+3!W1NX zGDA+KaBVUJ!kdXe!u7&aSHm)v?7+szqV9%FV=@W6VxP?e1DL`y#k>j;M;U3NKp%X5 zpeWF<4Q7f5>x)K=kidGP(f^@S$8EBi(Km$viLUwC zJ|ytv2&D-gh$t5o76Qf+bNz;}`;Ccp{Gd{%5#P{XGJQ97w&@Gk2p z&vrclr~pbz3t>L^9G-&gj%|q33FKHMXS2R;O&Ox=58-iwz)95z888ajs1oHv9p}R= z0|uN`8@Ew9kzn#N1(Lr2a1z)DO_R`=ZL&bQYuA*d3|H~5Cv#M?H)cMYf&}1UDnn&+ z%7tmikdrA0AgXoVu3*`&g`fh=D6Ad{uR@(A%cH@N`ow6}R2yQsDzPF@CLehMS@+Ja z8pvOLRLkrS8xW4O!uQ9k6#S%#*V_*9v;ReVZnDm$(Mw^RB=H4RNB1gd8F zA>9lsK8Zf-FA<2S zZ~K$1Lrf7Jq}h#tp;X%^Mc_xOox#(Dt%&5PM=cuSGywcyFRmwM@MXMeXL2FbcbCzIcPSS+VCJ;ES^Yf*Gmu0ZrL(QKb)H5M@ZSF$h}^uUDdePB^Y28`L2jbHv3G zxdtodl;PbGy~kp3Gw&R22guQNkBUD`C8dgmqq)&L+t{-n5>O(wHBwJq8V{gLOsXim zu46IiH57jdK+}W{l=vqPdESBr003NK<-rm(57oNjN$uJ7i9xhLa?(-s1Df$!v4LQ& z-i(MQajst2X-C&WxAEhuf+3o`?J6^InniJVa^Z8$rY>Lgj zX0Sq3<(UFa&S+y-(NLK$Z7XI7f{}sG<%2&Kc6=(#tbf$&kVfEqhx1- z=zyOLb%Mi4AzjJ#W+}HMeVtcMvO#aCSe}OX;A+!U2TdhPg1$@U&ARAoFfV;~Tf;VI zznM?HiYh$m7Pt-28qic3`}kc}5%_`Rz|>5CH2GE^st~r@R{avZ(Ycr zwQxTK+qVVrn5#TM0mw)?d zk`3z?)FE#qsuPX#w+n{jB=f?!msPHdGU-aLZo~4NpnJa1-CHl>w@SYj&tEsL-AJzb zR5*StHg7|{aQPhe$7z^7smT0!LuEwoyIUF9$1N(`rFrVpgw6SDNjO=CzNESGM_yG7 z`y7OE{98$@gz<#Qt&Et&=gEJ1yi<4N2VwvG>&*sXyF<-ef8OE^rfZ6qu9ILPTps`? zuYZRxD@Zgh9GCf_X@X{(wNI)7`%Cn09FQOQE#0KA{#nu_@VD#8c-=uGt9Po>Gx@!y zYF^ISHma@t!;6x(>nwS$E;aS8O0J#|qkMs)&h7V|Kj(&5smp}!^l7R#yGj&ymb4~> zmlYJ%@>~vNagBzabgbLI4<6iGH#~aqd0s;Tj^L*1h4u}p4hp19o`olqMaSvVT7SNu zwUC+@HH9zFq(F>%O+SzRL+5MwRHIDl)*hgd#zMMfkm8Rtu>Ol~ywbkKA? z78xKIbk!xde!bnx^{C4CO~QAvJcj8LhsV903nQNks%N>!oWE2ZCBNxZYZOiS5b9fE z>;x6#>`A9T9ck$bRz1|~FL|5P{aKCNbrw+~ab5g1sdaUx@0_c;&#UCg;AqO=%YP{! zzDz+ZXh#E8@+XSMx@TTWd8ZKy764Lt1g|;+D2=Fbn@wpY`~CCzhSRmk!->I8)Jbp0 z!WX9xM`s4pU|?(4!V%#UZ#rjox%Q?~eg?%qsgl*30wYB)0h3TYG47X-k3 z02^Zj13GHvKmlVBXXm0gaDi3hzW*f2&<_hL7oEKs9o6ieG&u}tOeZp~e&()$jJnw{be5%&Y zho!4}EiV$Yj4+gX)kUs2y=dJii|73wwX?YjUaQk%Ia5N#Hlh;mv9debd5To3p9*Dp zZ^tl;O>M2P`&%TEQ6CIZ`_&dgNz(EyURlXR3Hx|4y7o!zh+R{z*J5LRmd=~RUOH7u z|E{?^1$w+oCB8w2?f~xer?khNdQ*y2O7_x|i)Zs?J#1v5JFGiXGseY#S?lH6mYU8C zdZO)fM09@%!))cQZ9$WJfy!@)aXgji>H@dq@uBZLoe~Ybk;`5qd2S;|LJpy@ws=E< z(x5kZS7clIYN*)~w&MyCJ}o@K^Qzv$$ML#}rES zk!O6|8hK`_lGO3&h%%S2GU<(j>a;WEFLY5oPH61dICt-ebA-s34_PDy5{5dwujfq4eS?O8MM+~_h+_KkdKrxyjTIHd%%z4QjA$UT z$!OQtHBnLSdmvqao4En214M(UDP$KRF4q{9$pFYHhqUy44Fx||12OHFG=mK0{qkPpxTrt=E(i6{jjdl?^IrB z;e_S9Kjh{g9lDnw0`01d#-{D+BAbgn+b^Pg4XTyp<-!GXdHw}f7!yJ~>ucgz{XdZ^ z-T9buxS7`k>(|PiZXL4z@uRDP?5^!7z6<^J2+({_MLhsozmF*K<@h8>b{>8c`WN)l zBuq*Z&1+@kn+vz=s^Px~Fc?w|Wm-ry72RT*6w3cmlW2w3?Da}1u#x9k#2cb19cIn2 zav8lOZ(081Tx-3MDn)h|-gL2;(2d{l1glg!MWjAC9vKS!X0p9>$bRkw-m+9k>Obgf!(B?g^jZ`-KIuk_JMK-IwhV`t1tXIb`v zY_`KYW4m2=YnL-ySD3*HVV#uEEUsYKkJT{_>2VG7z!sQ;3gK_<<4s-QfmD(*SR~1Ao;*eLQaptJa%9w?21fDf zbiMo>2fZ&&JkTcvA^jH#X^1F;jAEw|?u#Rlc>p&+$iLOJU}d?qQ%7;@VA0tn))C2D zDpV#Q@5$#;ohm?gK7Qz><1LU=)T)Uk-5k(ugHe!b6yOkV|}=iX7+`Dr9Q!g-JewOTiE;8hitlNO{2I0KJaT#yAl0+;gUiXHB>Qy04%QO49DKQ2%ch z=OW*qJSb-IzSQKNO4-{g!>!B}?_Z7B$O@d{T2#7*sWj6SjA(j!3t6ws9CqqsPE<|I ziv1frlF7IU%t~mx+aSmb%AdSj$<9rzrg1RO*dj;Uxj1fH#juVv##w7ulS%@iNr<3% zGoC)ScA;witSM^!{2|Ez^C-!8M1&#DB~wW>>4`-K^&dwCu4#`tPvD@TkQfJ=%6(ta zoD0`6;!5geOaP@&r=k^v3Mg63>=D*UHhnt9XQ%F|?LLX)#qm}2=G%huE_CG51b#0d znl)e~yrz^z8C zWhsos(hW1$irun43tj-|_n<WYpqr;RVP>4mF=5w{vS&*5 zqnkp=F-jRcUdtPZ8qKV!&<~0i%{?Z6%`9pb$mTQno@_6t&2H4;@j&1c)adVdea`|F z-|miC@}>NPPMm!(1V=7a8OF0qeC~o8oQ5dB z@#Uk}=*Af?Kr-5B%>+EYgk)`C8!h(qEtf7s*YsG}%l!SVbfc5gFPU~9`MCvMztOh* zmzhjpg=-D{n)&pYJ9Ew)qEgF|r2W9F;`@st18q*Dl-_LLeB6ORN0^DwaGVnhOZ=S& z{mM<>#&|azmjoU@F*m(~0h-SgNxO6#E}H}jHGq2fGdpH8iT%sr|QmiVYYO)-qQfmpgQmm4m)e z85&_wW}wznnvrc40Ttd(Eja2mHcv4z&m@dyH0P&D^mB@I5GAgmhK#v4uWG{IrmT2F z|7yeX!g#-UBA&D>JU`-@B0*1gNY(|!5ol)TbmHU^;`6|8?@%N1oY>1mFR;}hkRkVG zvN}O6wHDC{2xxPiA!oz8N)?A0Baib~Dg-NIa`xCWn#*ZER}{cN)LBDX|HP9r!bVA07s5@A zWiF!vxu-me>>Qrd`rwcnvz>ZLf+hvk{$Zk8Q)VD1S}nveV#JP<=B} z{F8si8yV_I=NM&A8ojP0RJ}lgC)CCjVVOy*Xux21*~u=On2RLc!gf|VWuP`87)(-?Et zn{VJR%&&x=I5S%Yvcn(IIUFV2cFKO1ugD@HO25Zlb#6 z04)%o442hku4l9NFZi)T!Tf_IlY~0vWV%t6>bIGT2?W`1#C7i`8tTx!!S$hiSTe6g z;|o&6-*#QYQbrnqW5G1evao;+3J!In-b7;#^~6YDi7~#+|42z*ZwU??h6ELPWT)n{ zKI10n{AT~lO%Syof5V-tZd>uRZC@zwPToqO$mLZ7VN|bNrjX#7#EMGu+NbCzQD5?j z*4jZq%`GqT>$f(bG0oA3!BHfqHs4`LOAMt^xq7?|tn*YS=TXBlsp<+wp6Bubvl5Z} zMihG+DRh4usNF?k0qoYX^PeNs|1|KHdPDU(Xn0PjLb-=}^6SixrC1@EA&YfS1_hlt zxXVuy2#K+V=*gLU_M{`W2#eCQ>Z#i|xFqM_1-mFodBOsimIj zax>-jP=dawF+XExYeml2s~bF$H@wt{huGE(e`?Z#rm(o!#&+sTC1>VjTvKJ#8+gL$ zS%c+LiXk#(tjKg`m`BuJh;WSP8oGIFSU~7lJi(m$Or*qs>*gXH)vK0Oo0(y(Lzgi` z%thzLoGHNkYw0rMB0W=9Jzw{4Pz!vYTI`UrToUhxA$egYqhu2MGMb?iz<6S;iTyG2 zeUq_llp{KrwgOg84_XcHr{N_^3GHy@ZfLhTn+vu>Z&@VTy5F>$VdX4nHDe^Q?4(M) zi|bE`)jMYiebPT0)ocW?aTu;tP)U^7s(K)vR$G|zj9nVOnICrkN>){1pc&pu>du3) z%ZJZ?5lz6XxmNf2@@qM5$N90EK zHOrYHGziPiGqU&v{`})n%HGZ^@=}%{7h97G8-ZPneA8uc%K;W*|E8;e*zkx5P=Uo5 zVuQ04-jA3>5YtYFGDdc6GQt0V#tVM>UtY3`2xWW*U}J;+HGg?pCA2^dVcwYn>X0Ye<5G3ITE3vWCZjW>Y(xXs zNpP0(Gr62gnsq_k5&O-bXK4)tA+{pP?^DQ619Tg4Re|&fw?s|48);zSzXLVbYl&2 zZ^hE;^P%!@YQDLPP>a(mZPIxSNc@UwkDueK+DKD$vd3{18=^VM{_p2xi1DE2Y$=biM%rji+uV+~oYdLn-*sl4nHvOVvpn!^CLamjInS4cVH)Qwm;_RV6) zRIG0_EjgvQ1 zmQ2hqdhvnu482*m1tOXmi=2eR#5W>66MW^kCjuG9F@~@Jm}wtm zvwo*51NMkWZLq{Mh%a>O%*!oj@n`g*{qg>_h~xgzxQvJX_~@YJVs;tF%{pZI^=^76 zDCgM<+i#hZBYZYlDWINrW4vpYju_U+m*HyLk+!!a&b52z#x2Gi|8f=y<){84f7+9x zj6M>-H$(;95_7g&A-P|RC?)Jce~YX1v`G=s@0i;et{+o79`IwrO1!wJ^hC>3oSOG6 zl9hGe-*?{WMHU{zq-)F-1StUj`A&WGlwEx?9OJLqo5=A5HZksli1sTz@un`$t~XzN zU^ptq>RdASr;|yIyIeUvJOE@@P9r{9|K3LEEOXnZ<+a!eb3A}Xv9RagK}zNko6Rx% zgl9@qbYjv}^SkRCl+^9{1u)pr}EX&n%87#-G*5oZ;wS&ICJ*rZdX~ zqu`~|v>#5+J7EVogq6%^*DS%>cl{Th8I9Ho-ZY7uzY*YyzLJzK50pn_A3^`PAnH zdhE*PvklVvl1@o+IX%(Kag@`=bfXSCPR%;9bPsWDth)F~CB;Se~1x z(cWx`zMa3w)mygZvZj1ydF3WoCu84(Q9@&>yZwt}aw@p-`UhXZ5(!kT5y&;L5hQjlN~_m?uQqCUgHDS+nQ!x1d) zmWJvjxypCT472rGQ#d{G4%-v~p7@+{K9$e++Co4^>~c*2YNfQ-N4KjCl0>S$7ErOA zJh`)4YYv^Mw~Gzt|4XEJte^XNBHg85D3T}dc85IBna^Y7^46E>i%~ed37fG z_IAR;H>x{FR4V|#mQGq4L8ww6r^gfF+>YW4mFzw0v=909+4H`7J20;H8-h@A{i$wT5-QBpE5Z!Uk#zuvF+TQWssF_^G#Pt&}lo|lwW>;>b)Q*KP zD3kD*m{U_<{m19l1dzZ)~p(e)$kBgHGU!5nCb6Zvsq%W8@|BU#CEpW=X5nrQOG|O?WqL@`6N-UxcIVOaD;QHSRXmtTX2K=Uv=zLOqbm(Ebv}cBO3ljeSp6V((&thC z@VZ{Nx*(fZU_)-j0 zf2}X;6oBy?Ym&BQCfF4wjeoG+-56Syjh_y&JV7xS7E&4HB{ZIC6x+=a(Y%XT9(p_lUQYo>U z+zM*{@}Uh>;gLk`yK{dS~S>zP!%5jU5e(qjyh<2Gif2{Y!DA zynGhNp+T~mg}v+|=^!UAL9}Y<0-7im>gqpcz+_GZX}Mh#=hezF^F*WO4D!XsS_8|z za&)S6_-#>3>0C3MsxcJmmt5i zI7I7l39N_=0J#zX6fZ90XsxUfk?hlK6y;H0P5pTekN8b%pgA-~JJmr$Vh_kyXiB+D z=W+*@F@wHn{e9Mb_7MCx9k*yIU#qO{i@qdTH*w>MUjg(X>M>Ry(3Hb~Hir8Wr+3Pn z6QX$nUPOonB%YlmMP+939A$eV8<*f}dY@Q$YU9HJfDbGAu}YHXu{S>8spKwE;%rxY z5v2egIm6+mY!=*2-#r64LO`6*5Rl$o1jBBuBtO5?99uUU%^?IIf&Ja4T0WtG;SzN? z2xtmn7kXxDk_gAwG;Rlkam@5Xdb50(%-26Ik7x-J!nrXwaGWXj&zD*oC6^2~+H;g} zi}lLX)ybfKo~4b9bQ|;dn}2Yxoiq8hu%)py(5wl5sd0wD@>91S@}~Zl`Y_LfA)m|x zX4*e*su+yE^Se^1>o-tW(g$-+r^t{OM^Vza1rR%7h<)ZLT}uZK zfL8lJK}X}yE!?>PFIwD6+3h{Ek6=nu4Cxb(2(tE8g`*V7Rm=#!{{X=nUZfE#N;#X4 z+uARJMW(E&O4znu_E+|=Rs_r(op`7=%HaGwHSXi7_>63*v+fhofr9uy+wB~`1v{Lc zX0Io1Fi!b5#>-wo$8)U?%vSzCjQwX+)87|841Piaq)#lS6U3Z^-*4pcC zaVeq0<9ZEqHZ92Vom;eH+N9Vf>1xNF!yfUID;*UciMBa8b?O3R` zvBtiEGQBs!mG{l6IjfGP!WCnx96a;Xf-QD$+uJX;A^SK;$4AjGJz-b#nL?9BEd%xW zwN?zQIrmV6);s$!iTU2S~w&J+nLp+?Wdj zycgqH07Kq*9F7KN&v)nJ#<7){W;daxiK2sM{>$TBg7jh<#JcVdV?vulIa3g7x`H!C>+E1KoQi zS}uI{)f$@sQ>?W$XAN~dVKn{GecL;@z>^f*pJeQ;uZ+dC@(=E9M%KH*Ro)~`K6Lks zCR?#!zAR^NnJbkJu}6tQbNfjWlN$tR{mKQdBtzbCk3>EkOL&>so58)|+1)3hjC^Dq z!_R-W5Wp544W|z=K!W6rP$0SroPFy99Dm7{cL_ch{rBAXS5$2V2}o(`8kY?fUT07F z-HoB)Krqif&!L;*q#K&QCn7}b@HbT4sz;|`B*l+xB;RUP?Mn2UNq+rfc-@~G5h8JL z1Ww&bXteF6gnO3=_!8|BXM1tZgxT?KNL0*pqzxx#r&Ru#VA;up30}*+ zhf4XEdU3xZ#KyzsGWY$K4+d2pc8#J&dJYkM-zBz_>8ZfInoxdDG2||aDGOktY%#zb zvG2Y^i>dUxj7-}mvNgAovXJmvB>a&xW5F@BHPm#^gFc7^3&Mhfkc^fUU=<9wDiQo8 z0$i?=;R8fzCEK6-dqikT<;Gh~Y#CbW zg1Xu3-dHM*sSFF7#xOxVABH7j3XoT%az!Q+X#N}~_cuxOU_W|iWV+)qL@G7?cvQrB z5kkc!zZ-}CaP}p=fRzAVwMe6CEZjW_b3+9~SA&KdKKwhyk~z)W%quev!0vgZ->DE{ z{E(VOrSC+i*r4?tQ6ay+L2I{QqrR{{U;2rC<_#(|6QEz{gXIGZAy}9tDRRsh%#O<_ ze{Zf+aqAj)BI}|(A0`o88O70_dAOQ+APQi3vyfXLXH+DeBRmTSYffhBtVnk{hJLv3 zZ}O3OX%forLLy>9=|-4G(f`w_uug33F2Lj%eCfk42qz5oK>uQ+1QUz#m1S!7FLviD z0@E4;>vZAuAZ+Ltr8_AMrD`;WhvuS8y)*PFKcVAPv)$BO?E{98;BdVtWdKJ{H$rbk zqJIF6Nm+ytN%Y3`d0C5u@CkU$R_Yusy|MwlEuoin3~{DHcd5`jp@xs6;O05uCXZn^ z{p3D``8uKyCaD!U_}gu@Ai+kRT=<6-cV0w8JO>0|iA^!DZaQs=P1-s|DXu zX?H7peCs{=E-N~dKN!S{LPEFh7TpFRs1|`f?(B;WoLeBHEl}YWMACy!cnemHvLOW* zfoJIPS3K{LZa;z+J7Tl0PSdwEq)%fRDJVo4hGi2?f6pV<3QNjwXCNXkgF$v@TF7w^ z`g;}EXTC#dS)`zQ?f!Ev4}+-m(&ttkefL8Mu;gA;fiiuv5B&qivL_UJhee1ZGF{3f z`!LEUMjd(VM?Z>F1&6=_P}xKPR*Hj#!n|v#uubkOH}?&HEZ=OHq_@H4j^fJaZGC4F zOo_8<^lh=^tgr+vL(0j*_QJE40XK(<(pq>a;C4qwmU|Q6w05teZ ziV8cfOSG4YxHmDk8!}(l?~*QQ^M}F!#WpXKH~I(+;o-zATh|mMMBER(a|l@KwKDz zH5Q~i2f_aC6vogAp&^D_kf1G)5DF=>2%;dnE_k%3pt^)GAR#0O*y=Rg0&xL7wgNqB z7*PHe#IT(KSY)uowhJGF=xo6<2*Bn6QdI|n#DWa5Fmy3QoCGQKfL_4R`9J6q34UyJ z3^F?g32%XHu7MOcK%$snp<__Or*3CCL=cir6y0|L3$mm_y0KZ77|2CAdiyQVt4@Xz zIdVQ0tVIF?Sg;D}mfBWFaXZ7uw6+>C5GNX}P6BhHLF_2d<>Ts)P*DEC-5&#hy7QwS zX+YI|faVH7j{$A~Wav?Ah=mwqAnnxN=#7qh76>|8cCR6|M;O^9d^{8z&}p+V1YQEg z&OwAfK`ao!z8ny+$l!Xd6CwfvZv*UG09XX5{sgHq0a;=|oLhi_G{9KVC1MJKgaFWH zABbf%;6Y`?J_Y_h{V(8Y^))a+CAtjuxL@l*qMkyQo-$%az}pZ`Gz36_0tUMb(bQrO zXm#qSA=zCY3NqdTgytb?D3FLeKro1|{l&`KGTONXp~ysMTOdTIAzE0lVFlRQ4Xm~W zv216cU?#NCU@cUFI##9HzO5UDXeu61A&qUxKE)1=BS~X?#{kdqAiWaE82_=D*% zblm_}9Kb`m%XtK-0bR5^BuFQ<*XS5xjY1%CW8EH487x5oi%-QZ#|)|C-vUN;ERZMr zkYWrXrGj$!0Jt_sqySF?xu0^PKxcADW|L9QEh4RWS`9gxeGL}mK?P7$7W6dS31Yd( zFeW!p{b}G|^AHk^)P6AHCWmy|=%EFSFv}yYJw_(vkqm;*B<7wPUW2K*L5hQ6KjxmQ zp{O;tp*o)i4&{=nrpAi2qHAwI9iE3I&X283Tob{M1MLiz0vUcx179{6pv5qY%{i(0 zHukLv4|xO>F~NcvWXD2sTgH8c9vMat({()JL{IevJ|!{%fBium=tn)D=CuQ$LC28J zU>N-zt*aC0$_YS2;=15JZOYZNGT2=?DKu)Dx$l}2q(;D~km_?R3O$pml?F*sQuC?0fKgU^Go zupTT-tDT`@kYQOGRADifk89uMpAd~4t@=D+Dv$8I2KILx)O25~{~+F^J;Do@^_`!YV@#@RWITEXl260U1Ps3D z+?sN+d|He`8tNdwJ(y)+8lVzai%Q2`i@^rdJs&XA2zOfTg_$ZPIL#3@(0fOFad?AMV~io<^Q`Gg@OE1@ad-k=%0SNksd9#ry@sB z-9OJexWTB;wu?%^`6Sp7dRDY=L#4e<(qb-Xea&3{&A*M6Z-f6k_BvEx01^U|{Pe^S z_oD67Qvfw^_0v;Z=8>x#RBqijU6s|3~^{7zEu^~ST;ZaT9Lf@>qO zJsQv6L-co6VxNBwSlE2FVfuOZms=-zC>36iAprBdipp%E6o^1Sk7vy@7 zcpWzN<)h2c%!_1iIh>5hp zaSugu<-e~k%&!4pGg~Mjz+=5Y;o$vnQ?}6TM(is`MZ_avTEBbiN}A5Bg78x=59(CQ z__YTkJsu-%3$KgYVKhveaIR?+50-bd3ddJi1g~_(_=~Em>TYr{A^d{ z1K79W6*@M?$)FSXyRRNh6D1Z~VB3QQ=8sUT6$bawZ$gX1x_p40dd14ul-Q)PTs$C1n~ zXi9btF=Z}Nk`QNt_bUJ`TFP23_TYfpDw;sz0;>2X1ATISS!Q*EEB7Nc8$TIH@b}6a z89ibvZea(@qrGJuO>MP~j&%!38Yzy_oL#F4U=bBUHPUNTO?ktClXvOj^g}r{~h1w)IxDuAZKT4?5eBhhw>eJDz@>tqbZg8QjE3l!$ zXMl*R?M-Y+$@9{dspG>Z1y-MUv!zx_PPwG%c5u&nqpQ7Lz}#?kPdcfRI)N&~rvp0^ zl6fyV*s3n_@Eb@b;zJXr1)tEm6(vhzq8qyS^Kvc@LSD&TM4yr)&3oj+coWpmWX*#H zNvng0W8|OB|u!FAt8kwWRweQ_q0Jd%3H&s|cTsJ25Uss>xKVAL@E zY4#DTKp=Wp-TA0XVKU9GN$$BcHH|J_cILQ=iOoXc6~B+BTxPr}n9A^ZH0`Fy58sp9 zjl;6fYR3Ng6O>)08C{TbNhlXM!s6vWkA#=9qJPYrDDAwba(}=#Vs*|~rNS_RoEWDo4 zuHSKZBs)mfJR<38(_jT{3$4CdrdRQA5%Y4Q?xCY3LH3A%hRVDgSZ6b2-N^GfZ@^4j zWsXFKC_dsZQamH`7M>bX{P`D(GGN#0LCh0kS0)ikT1A?^y%8Vp{t~JvW_NKm?M84w z*nzmHNRhKnA$;ym-5=#DEG31Cb z^K_}QCP?10<%B+}t&n5KKpCf6Y+O;-eGkc@NSC^#!SNYV?EtrhNZO`6>^;LRk%oY1 zRs|iy<%CYC@*N9n+PaLR%Flk1eMu(9VTz`6jt|f2Ays(?n_V57fBrViaIPWEBLF)ehOX}Sb|=6VRUlt@zo9hq z$5l46vF2n6uCmQcIe$Mqssw1J7qi7e@rEhcfwRU;o1qbm$yxUa8s?pcmisW z?g{`LBmQGIWzPi4k<%hGgZ4(D?KvkU%@<<{Tb5pSh|eHK(Ru#q!qE3m%&*hO32ZM~ z9!ixw{Ba`xer@X1BgZ6lnl5Me+qLGm9K{#iYwnodT({&EE86}%ncF``g!1H=^lDN; zJ~W3{52V{EP4hA?kxkbP%tLjbqM>4H`_uAXz7!Fc52hqfB4j{ZdU+y=hkL{`$ty?I zg$|Wh_M*E; zOyFmCufZLIspwK%w&*>{q8Bfbj@XxvB=V=tiuGX}kj5t}wn^yZbJkZ0x9Z=lwc1r4 z_>LqkOFgwzxz87xt|7C9y&%MTzwF=^^Ocb*3pWREqiEA|R6-7y=M_6Gjyb&uk#vip z*-$iFHm1ZmvEJ9u4!xGP-L(6J<;|YF5xwkzu8eX#wxayKv)SCfCd;=?{LSwPv}6(X z@m%IKV^Qf5tfhxDTcNmwvS1Z7KzU`Rb~>%Yjy9{-% z>UCy*f73V}w_8Vl#m|sUy*U1J%PZm#tO@GSd6Zg{opH`?krCio?B(cSh}E8Z|F@%j zZaV299`;EuZ>R9?GkNqw;A;O7jE3#I`k5Bn; zh8W)beaXkN_cY8-K=~#y!dMocQ(9S3_3^)&ntsuy7yRbzEqx*T=BmB3L;n8b*A|FM z|5~_RJVfKgK~!XnWs#WvXczATWp&qCKj!;Y-U?1KzS|R=I3EuF#G|B;BO}{()kqJ= zbFKa{Cd&xfy2gq;QxWm8bp587=~fKAa%B#z3u{nOfUe0^1=&l`CbNr~Jvqy?o^__! z#a;Vsf5;c$w4t(6CwtvykLR_on}~sdn+#4AkE} z$>|+8;Ln*hy0%!n_>149UFa%Y8KPM1vksW$X`a93t>g#1?iH+g$jYq@!LI-07_NIZ z-|7=%{gu7D0HTFR@MzO#GiT;_y0lXz>9^^;;cfTRxi$CU3E^_2F$i>MDd9fz&1-h_ zT^b~%BqQ-P!kE{l!+Yo2EzY^zm2l*)WsNma3DNrHYGT;AF3yHCaGsSil5+3!q}>Eo zt5uC{8E<)6h=FOSh5Sv(dLWRkah%e^&cP@zcZbg_T|~p+v0sl#1G5xh) zBvsYKnQK+E%}@U{vWc;$yCSm}@EI1zty%=e@NpIr2q#8f0Hi6u`j5 zYGG}an&RIy@%hwD^O=tQYG%WJ*#`|AQn<7y6|GP9k*0Q(7OgZJrEIvYOxk|hxQEn+ zGMql9p&MRdd5m8kD_=3iZ+Eb-aIopjRp&$x5BkzzM5Km^D85ZPM^A~%P^R%?pY$?b zH#<97Gx9QRM|$3a>E$te1W(i>5axI*OJy6LRn(0hr+z00{Msfm!O|X2XIea{-Ali~ zELgUP!dvcFDXuBc2PaGcnR<=PSM8t;?YVCUi+arULNuk7A7l$1rq>2bo3T-tvj0ohLkA9ZE%s%9oauj}9MyV*p?G*0Y*aaI#g3IF9)5XNkVwv@ z;5%jdbB086_;5Y`oRn68=>LGLv+v5IWAW#a9PE{b<)iQyi1EZ3e5o|=^^>|PXd7oo zOK(FSBhl#Tbn^p|0#LNXZHheCfwUq`JS)VG`NKJfv5ZC;KisvCvAREFt&er60`~-f zy_y8k7|dbueix-jQ7>Fo#nWf5JnbzqqM|dJHr}zTfB_2Gos*l z=X94C?q|VjBn%;$R_R2}KPR3SA1xTIn%-jGJS`TzsL12p^kUaSVuWlvL^x z(`|X2x-&w6j#dPRKs)-_Kx=rk!Gu-|=eJLA|J)vRWU|@3U|!_#2=CJ@?ab140_Sqh zAyj}<9}lv{yYh-Alj~?gi8+7JOmZixWK;G)yOO!UbmeZ17Ek3vbnF z7=CAD7NIQA)WF1aAhjtvL(;4)ks)Zqn3A~E#JSo@g6ocU>E)uMRQI{rYM`=|)nS>0iMSReK+XP8V$*|#i? zOzZAyAsn;+Si2y&{rIINfsdMQN??Y_mEMZhRp_6;zEe0yg3*oc2$JWe^xjJTfi*dEj++{y)q{(flxQ!_jYVp zTN`%O>ypR`EiJ1Lrr}ytpsL;|oy$1hYS}J;7)0e9jE0T0-0x^J+sqQxL@+L~muZ?U zijYd7JS1|Nb(QdYC<0`cudS3JSeeD)iKqVohi?_6ccS;fU72(`pfEc2{N^pH?I6h7 zF%0oz`w@nNYeBlv{gA`kc6mzra&@rwZ|O2~vuP1+zGqnO2_z-Mo{WlOyT^`DJt8wz zjr|uX5+7p?tR@eUva~CKNdCAGu(#X_bgnxZRTtsMzr6IS58r12L zyFmL1$$l-;)Sk{jdTlw|w<&F)ctAvd!7V-Oj2kXZC)FpB(@gjX=~4{I6p>C4b>_ZH z8(lhOUo@K`?U)s@<(8&m3jJJp1C^6Rup{N)24h)DF{?&A#YA_8+-NY5S4ui<0Zg zSH=9x+yhzO!NN2ThAA?oyiEnG50JI!o_&UQO0bx%ygH~RjE` zlF@9EceN20D%n%IoHY9RpD$jqK1z$3;2a_Gg=?{h4hpW5iN$8L@pr!`ZD)CIFmt=O z=7jmPyxV@(sfie}hkpweKJm-9T4V+K7*~&{=C4Rr&!hlCW&&;;6YAC46aae-kFjEu7bfdHcuktPp zN7Vk-hGk$W-$+OM5X_M#%}Vb-9r0Y3DRXZ~*4^PNA|>Cy2KBdq{qXhZVy3rWkWT;& zvi8>|Zf(<58M1%o(Nnls;?Xj^wsJ>7xXk1E9!ISem*x@;&mSZNlMK3QJ<1FmGk)W3 zS%X)zm+oDW6_w8i)Xi*r*j0uGg-*l@RdWjakH}W|#6uBnDQeQ?h>s8HaBe=0N5?zH z#rO=q`Yc`_uR0+DbvGp`8wU(4l(p<85R?fnfAJd=ZZ6LMeoR$aE^->yanH~JA6~N~%Y!<_m z#8Ulf)J`tct8%V{t`qi&zry_dzy+VLfnPQ@z6V;a-n9=6nBprNw6^{ zCKbJd;(kK9qV)!KZIx_GSWT zeG)#6(vJ6l@(^*s^+ztgWR+6u<+YL6DptKU9ZDZ0Md8Nf4Ls`Bf-T2fx^EUr=&5<| z#qx&72ky`YY`OmepM`l5Q?}tRpQ$_fgnDdiK2*?!(^)|MvV<8qu|_hcclX>=MDu)G zSQ&07lW$}uPMU@^0;CPCYEdJ zsfHleIL`TMH4T3%o!NMYc_dezOjCP<2okdHLD6Nl^(A?aT#%rXld}BiV>WTfw-0TU z?vlHnQPE!_n|&*hn$W+%9^VeK&z>BX&M2I}CCe#yn+^hhzq=oR!d zs}K64k1&uXK#c7B@9dx(k>1VAp)=nnSZs|w=jMM+lpeTd+|2yy$8M;OaM^DdHaa)| z8~X>o=jClV9x`eD;w$_8cQ)nU86QcDfhgxNc+wd%qf&Un)?#wnT97TIN1Ugrl=x6K zx7<+hrtpGe42zFeo!qCiLgC7s>B{Ep>$J9NuOdW11{0J1m*9YH)eeHR**skW@5Pbw zxrC)(OD80yDfE9iCyUTrnjN#D%)0~+=QrAg4$Y5Q%Cf@P(&8RusOZD)4%Ajw*X5Fo zYzay(!hE=-ry;^eo70!NyUT}?)6hFxjb;_`AL-x69{dZ1hLj1m1d-Ua?o+7qNXv&}xn1gAKy^rO;`J z`3(u%D)}xfsEI(kH|uMSTVBXp4Qk3GdJx`PsF50ZiS+s}?C1W%I_Pg8+CtnP=ol`k zUJ|~+{hmwiQjr<}vdp=OT=KaCtCUd&FP+ALqel;KB*-XvYL|FWJiNWrH3;?lk6Xg2>lTurR$ zCj<%r>)mUdsoa1ol>^ivm<@oCNu`;N zx|Je+OaHuaY5jz8H9%YwFWr7+8qXWn4Z?KRh)B|@Ty4=zN=Ph&NVq~siDpYpT4=lJ za2b0Vvx~Jq(8?deOixtqYJ<4iZP`;CUk9I>DofMDt;^_wu?~$c3Bp{n(Zyz{D}8JM z4Xx`bg)L*r0S>Z!FGX7|wbYfe^B+$lpI8IMZ(OP?ucjks>=YExwJlk~94mIt2uy1V zt5}M6PN>vm8C@x_1o?-j7r+@hq?Sf96O7A@m3>Na^0S@1Dxl*r`a{7As7`G;cW(B| z<{y;{;`dVey4KQk|0C(1A4l>=%VS50;>a3IzNynytdsk#C6jq~Nf5m^#hCxzBMBpR zAXTEC*VMHqB+HCjiO2q``K@I>FQ%N8l292@Xa0cW{-5>=A>pdnt3yD0dd5%;gm%LW zdG%#sKpFn=q$Qiu_S*-l!>Yg~p*_nuF6QeJ&Zr{nXQR(4ub9ha0=Kl3yh?1Yx2GmFBG zjc+_Lafrhwhv%4_Gj&hu7xRYldDTh2W-$I6qjRf#HdNqk8W>k%!}AZTWp<|?r+8X zdUsW(f z33+4X!{_aHIu5xs`?fl%BCLbDh+d_kw!gv}lhZauPs5MTei)hBalWnnt7~n%iR3fv zf?IV7#&*5LyrKuOmN4#xeW+;(HZ zY3s)wle@yNFKSP1L2PK*+Vop_zXm$|?!QV^S2T-wC;*?&8lG0l$Z?sK-w2MCn_<97Z>gEWjdo=mW~JK{8aQ;1N>rR~ zUdkS~arkq}`Odxj*=>p{099F37O#EJeB+>G%sd$?^iw37Azu`p=`De;&Y@T1%~54F z??Yx*k$aiq72O$t%mZEs%0h?D2p$gU*s+yqK{o7quDwbw)qV?^7Iyx-Ns)3nZ@+&# zOJUaJ#w~mC9V;bglwpp>GJeOw)2O$Cnh6j?$yeWG*i~Sb1tn**yZkhjxx9K>%GqqQC!fiea_q zP%3GDWOnhiB4BI6y?%~VGYmHX{BJ5fCljICh786k9OBH1r>}VZ?H!o-%b>{LpAOGkn*E>FyanN%OR-G1eqYnM z--=1ICi-W~!7WY95xmL}pMGL~QD*{^oXi7oq?2AzleKo_j0C0kz_*wcJ$eR)vD}E! z2eaHH>KlGj_fWlaQ4%9UuPobl0$E6%`1?VNXtV{;GeS`l!)31(%w_s3B}sL2L#E}J z^My9K`%*WiG>l4sIu zA}bv+IAb?rrIG%;&bUR3o+Y~@>mO4yXQ+6x>Q6S=H4lqm$7rj2@*TwIFbQW32qySj zWo9YGJbUw#!x*`z!j^iN-OWC$h1+JXjzS=6p*b$wa#O4Gj$=Zk9b zQkZ6swp=JjpI(NmkucFBmGG<5B>VPf?9*h#W#>whCqFJ~9&4H)oo)|8lrw!0Rnjo4 zS7!6Km=L9ZIdp40=r^Ja)s&6!Qg(*5-fwf!|A`TPn=7R|MbvY4Pv^j&M%YBSAK&=T z)%Wx1(wxx8U>EWkS@rKIs|Qe>{}ws9R{$c)sfsWKN*nTpqd-Bf-x1ah!YqA$DX^_A zMvk))))L3~U`Y{}4UP`jJno?n*?}N60bo@IfI7^o32Ji>TJ}`1@P}&LxaJ7o&Svp! zIAJSACQBT)H=lW@vQc6hnbzoW+GJ^qR#&XFY)INhdm=|AmNwt1O%KTPX6H^RugElb z%X(nw_{gRdDS4%|AI$l;sVIa_3yS$Kl^*UuN}LF(CUs-C2->lj}l+W zJBySmuPqofULKNtH}1 zHSzIX{kk$`T#R=|xIPzL}fr3(VOaQg-LU;-FR1toF;F#f(il@4Y; z5^h{s*cKjf>6R_Am`}lUTkHyHRNhE>6uFLuup`AGQkoz@8$}W?$3ZUaA2U`l0ipnE z)>d*vlimO#E~N!2?CZqj1b>iz;4#C6Q>L-iSwh(RC=f2ZN@1!8UP^pq*7ggPQFbw& zBZ&&;g2qEjHskrR6<{tr0FbfSGT+a^cUa;vrdziz$KjwhC^~s2TN3N$)!BfQP^ba$ zfpxVX3SfE|f9hJB|8be~WWca1+QOtP`DR4%K!sHh7!Iu&u^!S-3_&LbSfip;gFmVH zVZi;4k#yW&^ci&*L0le1^8gycjl#r>;cJcf&dFN@cb`xNFi%P zjBx|VASL)jba#lTbHAQciiJr!B*eVG88t`06#!6ob|}1~Q{cA?A?pC3MUG$PI2!kQ zj-m64d#m~k1BRg=&~cDK-S>eYW_c7?K$D6T#oW3GhtMHWza<5M@9_^xwv19SY{Cyu z8t&_E0m!}`X5}!c?s!;GL%aulRp@Ayu80=Obo+?70=wh2JcZe?du#NXbA^4$Cu59XSBUzl%BrkUBuY@DM-# z-??95AnS1qa2&&q#qp6q01n{y0I?negHu7m9NXe;KdMJ>gq37cOZukhfY7)Xv zekf#ud|!ynC&7Xi8O|6(#3KPlX(Y#eT$>Y2t0Kf0qnGj_Tv-#Tq={^jdccl_(JuwF z7Cs!WPXOBnSfU|E8VQ}ZeRZUe?Cp0Y?&FN6!y&d|jJA*x$51T{XxK^b@>Ddp>Fowb znAud2^o-17E|VmB=g0 zFl{PO6^l1;3Z+v5v0?};XE-+JP-_n;Y$`Yfh4_61FHwJQkTD^JieKAH^hrtr+k#U7 z1UMUe4$Ifx_T4A{6M6CQiOi11p7Hy&dH-1sUZD)0>X5#H8+M zKDZzSQfnuyr98agbcMqNNkJh3Fd$+i&Ke4Ewlj2MlYVF*RXpMVB%^#}B3omeWpJDt zkTs+MdR~~V;T)Gj_1%;Nu>z3`QYpkf0#_l}&=J;2qJe`jNup9Qzx(d0PbcF_ft!~qlt@QAa- zkQhS3l6`UJ(nu3ZW`IW&ePjGDr#P=ddXRXiE#v^+Hs*4 z74jt#b|(Em3kxf8gwcM*V1Fe>;G-$^*;-qW8#1}{+l77PxMaUfE2$V2QXJh#g3SS$ zPm>%#%04!I2yZ04gvPQXGfew4Kl!Hqj))R9d8p%;*}w=a`jQNsGJi~kGgH8n*2^>M|Ba_!2KArYm=uZIJ2|YMutaQp^DzQr%LGg%U z-h24tHYq?05}{dCtPUynE2LX0rr$2H*v~gTD3OZ5RWg>fQep{OdHLaZF^~Z=P&wLkZ(SfUi^j`?c^^Xk6hGWZF68Xukp{ooQqmPUQBn zMEd;2JUsIw2e=?#`=uwFmFPAmr%NJcwZhi$1?DbsWU128*9`N%sbIe9;s15by`qDL z43op~(f{e>^B6T8QN;{t8Wja#5Rd%Qtx*W0NZfm9R+45VgFeFGS6R$-eh)s%2%paJ zI^nAynYA(f4=neM^aGl8Ff1$@>Ej=VohfRb3ICvl3^*?M{Wv?QqU7$(gFojaOW$}c zbUs%U%*`*s3!2$0jqFgbZrFn~Oc6Dp#C#-CcK}w5LF}F7Lprj-ghHR$@<;1=mdHe+ zZ(LVo9J;?Yl7jf#?_20nJK_v8A{WX?=jI=l(}T*o>PvexDHZ2U`KV^NKeQWFu;U9= zSS3Z6;s>$FYL_Daf!rW8eBBh!$eZ|plIPhUKayHfF~D&BcbOKp)V)9R=i{o*)fUjF z{Bl3MfM5E|?;?|^IR5@j|Ml>67eo{+Vqfb4l9bS3Qti9;u(K(ixLOn`Q<+2tcO!i| zWn%Yt^U+nb6jP8gBhWu&lD5~ zYYM`EtVrOL<0k9F%^q$QHqVO?A@ScJJ=Bl$s^8 zqd}XJ&CLCvm8RLqOK6tEQ`-1rabOMvG@!WsUotzo@F{TQS{6o z=KH7e_2*idJbc1H9-V5R=`Vk@*r&VJ_|T;@-7%o6e#m3c_uAp3&yNdarNdol(29Ia zbHG-~)Op%+Buq9M)_g#W^20HlQ`%t#9g+2Dt(Nfp{#}z+3MxXuA|z#zLCq;$q%r$6 zJ!*lkMV^W5z6Hfpp~=Vo7?T zO*HuQ+6dKo@*^~YR+tUn$kQd1|CdIwp6%L{4)2g`PS<|W%9ldpMBTqnPLN=VNZlZ@ z$5bxv1sL`}e$f21bE`~dwu?I57at8n^p`W&Cj?*$nj4EeuhdPE>lt7Xa;^byBr`~| zb)Et7MCn$8U%jqt3F`Zhks=t^(9r1gL&FHzn&yzzQ0{#`pA>T>HfogK8JyQh%5lbP z_&%vjjmsYJZFtsHUUI@;-yFDE zUHo6Xms7WWWB$e<5&5Ti-YxFE+t}P((XXilqGbB;d9h7H5@U0`6+Z8&Oxi2{TsiGb ze%~0$^?6J)=}0i;4>>A(fA*lSy>>0*x38~?M%W4yt=b*-B+#-Hyp*3g^DreMEXw8H zqoE0-<9oGy3&(uZY%<|81KIY3_S+hbiCSH(utG1M#%shUR`~do^V&CQQ7Tb=gikqS z{^#-m5neol^zk>FuC^ie$+G`rW^UnAT^?|C4){s z(D&~+H{Q$OF=E$gB%90GPgaN4XV&TULDqZWPx*@2We{5r3guQwM=~wxK3)F~=9@2pHINZA zEu`O0okUZR2f(1g+cJ7k-T0Ye&L91$X`?VIVm^?h@_L5Ux^mR-dv%cV`F31oM&acB zIF0rlmE+<|D#vSv$VM|)JUv@V;rgbI5{s; zCd3I^jRzsydi!8)TW=PEe67v8@&N|lqsndBn9kIdqw_Akz9WkOUv|vV)z?*wnqi)@ z$banvdX`8dV)=UtZLM{+CL3SQ>=$EHRN8e=M7LA`>R*4av3K<~^(y1z$Bpq9;cLt$ z>!MDucgI7zE}6}TtK!#ZZSXJ4uBBV1=H-*BEB?H#iE55-0S79Sobe=j{)*uUUP;Vc zp#veFp0B|IS3CBb)GX^Bxfa!3e=QLMcANK|pMFsFFb`#lJpH{Nc|PAJ^^VA$De-)^ zoAk>{W9-NMkRFx@xXAK-O^6B#;V*lj`t|7!U%T~L(xBi6kN=8}Z!Z=$<^&8EEJRY; z7k|F*$B$Fmlpa;NyDUB$T30Cq8~q;Ho$9iDhSyn}VC9>3-AsGpGxJ^cJ_lOQ>+X{z z@-Y2*;+e*q7TOvm$@kko;u7^>>Dc|(Wx;~4x94t0hiDeGW;8JoMd zot)0Q6gKTDcKTtqFh}As2v~`}A_WzJFcVZe9lANmn3AF~tVA5~-j|joby2gtF1t{t zQr>UGJm=Z%)?W1{(}LpPcC5gwP}iG}D@vN;Fa8K^YG7`}G>Lattyq}$BpnqoxAIS0 z?AIn4Aks$`+vvGgNpQq$;LpelEfg!Ur}Vts0&(qp&y}K9iQoTGdC-Akqt2P`W|p`dQskdxPOtRZQH)B z7_yUN5sKOG|MJ9cUn#ZC!0GRTl?qrWV*WdjigZP`;CbO?-y*7WgAD3lYvzo8D_7=nZ+4HTcIK&9%4Tm zXH;*BP9Hn-2THsUoaolay9KdO1?-y$1?K+#LG>sew`Zp9_)l|>yf}hxLNgd@JyPo5 ze&eWo#Ng!zMGp%2&EEDq4Vx&Ti$OE~N2ic6B{HNfE!K!+kjb?Y4xF~x4gU=lMJDGE z`@(L}AFTXVR&tPK6wj?Klef*CfEgxLS+!i#x4ioLrJLHf>Fsbg--#ErJIO}|J1ibQ zQ4Sf(NjIjE0#KO|_}kr_61Pjd)W_`CGxpk~n=eZLNGh1PT#Pcj_=tZ}c&0JQ()@XM zk;mM9jSGy$o*FZP5W#^36Kt5tzl<^fsSd$d2T+*TaSjE*PVn1QEr9J{^Vff3pOycZYxdYL|`hy0Eeb zi&9ClE(d5pIyK{qh&m`!e^Q<8dwrdPWp|ExM0^mc{BSeC6c30sM+}!F5b8gyP5M8! z6!w3gqb@y**8sju-W{gkgcK_^5B&}I@?#`IPQq4L1qu4_`HC|UXi_}nX5YjhP zVO~R!^Pe>N;G5z{w%+M<;)I9=PQA++6H$LQSlMpm2(fBaLJiTv<(#9v-|4m^4=V6(FjSJnjjsefdS-@ zV~0wp+IH|x82MDz6#PC(MG5NMeG^;d%E+E5&juXRw4Y(z@|%b?^r~TI^P&C;-9HvB z4BZ+RnBI04|29kFJ}_WzKl;v2hTM^K=Y!#RITfF_#-sXd>ob2klpsbfsurw6>qi}X zMpW%Yezr_^gx?Zgb!RG8Uwfxi``DmT6L-B(c6A(BWLwf5MFx?|76x9MvwUHZ0aqeE zTu~N0;$OA_lQ zmh!ctAO%VkpH%y%iSw1j((_wW*_I@spA}a|gFiz|8g1+Uc&y}>?gHGVAb2$U4(^$* zcb*H|OQ&yi*{B~r=AjdH0nzqCUE(#d{5v$i;})3ma7yh><6!W8R1S>8Maottio5CM z>BZjC#=F|l;sNGHV*fNHLM8d9f69uoi!;F5hmCH^KMv)W_{XZ&6q=@{mTQY?+-^-_lMLMWYdm}#X97cWc*i9s-Qbl~S`?l6 zG`xB>vN84T;tzT4k1oC_ZKW%;FFyLDEhh=BrO-(jaNpLb57r{A(MZwT2g2?iP#}kCb}ES=7hPK2xuo?C*I{*L|J6Og;3> zL2kLsIZaCWn|F-|g+x!zv(K$8nr`LvC7tqrQmWxomj0MGpL@?h$mqn|IHV$K#Ik;Q z^VFzR`ylN*uC}^-{U>{Wcawzd?+j=C4`_FvOBX$mEnP*qj zr=5k46gbh$Ml2g#`N+L-i=oBrK$S!RagKP*LqfE0Vd)#U<>2jaF2S#K9=!i-XUdMP z7qP4DD-1L+tNi%E1DmRHcvN)y&@G%a^%<^GWLDr zTVKmP#-P4%JpIKlc=d#5I`WbUsQB7}ICK03s@-M7M*0I-<40xoB4zn6XsA#>)Ll!T zUVzBj$WpM#GO|jx{?^Rj4k}+vCy)`<4_Z;@HD>WF-ZStoThvrsMn*;1f-UPUGlS`4 zQC1f=is_K>Y_>Xy_Lz&3f4K?=+JOE6r&FM;m>qR7zS=8bf;=n}#V2K&aFMsFNyM^@ zf~OMGMg+xmDuaoZq%60Pvc@^-R}~!`Mt|8Pry+36K-pU3^(L(;SHdE1 z<_9!e_cWP38=5~|ay}y6Y0HsxMr^>Ml1x?Z`Iq0!=6-@=UIe&*XV;xIvb3&|^hXL0 zSIZe>*moOpZ;G`J&D8W=lVCU)Xm3v+GB9!*piU-22gka^PFU-qPkxN1@q5E&< zlrC)mt@&NJ?3!H^g?~Z7kDnP1zRzYnzwmRdURf2Y2$o#X)H*Njn?f?}*yGpC>Rz-X zCM(!HXjPnDc1-X6F3@vwI&O15;bqZX8r`4GSk;l=Kwhj?$?r^kZe>t*Vl!3TZRo33?xk?Lm&od!{gN$P zQ+T`PNCTVg0dqPg`}+*<=017j0b4srlI3^JB}&n8Lua}xcn-}~ZBeE<%`TKnO;V~} z05K(^c{omtfUTkU2bFUNX;S@=;ueUuU~S_}j-|nPEG+Ne(!}mke(46Y)U+Ic9;Y=q z5c;6Vc#m4RY%?)h!86@4=jYC{F+~ zZM<^W`1m%RAMIv~*(<3>$w`W>F*#Qd8zMPo$mV+5RQ&P$+Fv%|z zGt{ON@N~^IjWgc{7E`^wKiIyQYigc%Sd3l4D>BRX)-SWG*yTLL@r#afJ?wUP;9X-G z!^YWIF9U0_wdit*N9K77G`Y@fnh`{f(*;mSI?gnUZRX06QFYzRY-|=^!wf$~3R{{x z%+2bzG$e&!dO5Z;MP0bO9Ma6SaZ}VuAUqw$J{&4!enu-&AJNVnhr^x2<(eLJ4v7>N z$))l4iwLYkDQJzSi9InAhWizzu_FBQXgK7CeclmHsJIce`_l zsI9(6>Wi+$zDJ4`^j-R~nESGXZJ=dN!))~BYSO)o)o-4|<+YrRaDwwHO}$2LFKXfp{a zL|;?^6DsS9HlW7ZodUUqTtxRRMqrC^iR;ZHqN^Rt&gE6U&T%j>`#Hnc$ed*zdWz(_ z2Y-}%ZsS!uHnLQov;|pWehkXqh{z`1^5gl|^%V6Tmb9H`8P#P;CvbH+XVY0&!CPRJ zgNgETv@`l@NbBnf=9QUyO#T0^d%3WIDr&x$Zq73!qTQ9>P2``}Iz0h!r|#Lu_Y7M+ zc)njsZ?uBVCO^u6ZV~O=F89164&3;U83B241BiI@_uiQHJ$I7nJ1^UC(soAH=UKlOyY$(QvNmsi<_lNGS}()h1{|zpm$G5lK$@TjG}pSl(V0M zYE=$)q7j|Le6dALhWrw)><5Om&`ZBLqB|SRGcVWLN%&p8?NDzOJK*N8(&EyIy=u*M zZAEUPjrWbRLVv{Pt8G46lh4+UKfWYJ+{_vNb5#-h#Ow#0VMuM?V~k{_ccrBuWFsq> zYtLx#_~NzU_=`NW|4pbLYwUtnxcs$FJ@ca2>Wy8(@0q{mX)TBdc-d*Xk$E|*K!M}< z`o!>B^mX}_$m3U`Avfh|u4e%+Zq@4e#60-s_hw3iW?0rJBp&>IWg_*ib@cC$Bd6y! zd)I{qK2blcrC-Ss+*>`JSE$due|&52dR%ITM1}uprIS-|r&4`EaAj>ie`4JB$F-C% zYm6ee?~Upr2|SJ;-EJLGu53k`Y(FlJ%cB&&OHmA+zHtxZCm|HBah>sI!n2cH&-;e( z`sXCpw`B1&G2uQ+NJMQ)O$tp=E1&dA2Mv_R9@onHy{4Hg3VP6Ye>&cChC+{>V@7C0J!2*yxGcuKQGa z6u7)|h)J0`xRH3L-ln>%v4696Lk)i`?V)JVwiYe!Rn%g2)bEd3+5~lc4dD)arGbco z^*3jlrli^Gy@k%$lvZvZy6ELeo=W_$w~FOx`_U+$?!|4(B6WV8bnWLuV2I~^RR{jJ zd%^!?R|*TO_-igNLlMnpe|K-z7R*W%H#{6vjM%wxU|Db7pt>ykl{8ugXV+bRNy+LG zJ0IlMU1fjSh*?rRc%da4Ki}?nObcirEk}xn=AGB5_?Gcsh*}s18_W4L2X)S!blb-d zwr0jCcKPc4D5_!Az4xsvt1M2TIyk$&O~7F+Wf_61wT}WTHXm40JW?XLqdzIPkG{{y zhnS7k>zOoxmG#{(AEB0>f689nTm{xP^%f?=n^$qt^(s2p+Q3rssx;rZ()Z*Qm z`thg-b1Y2^DtAb1veuiXHf1hWS`p=Rj#SML9cr<L7#sIHRM6X zsK;|PG1lWTtm4lWW9r^p>EHVketzS{@9`|vXFR7vm*=f}qEc4a^)6f?`JE*h2PUW zfKnCEGZ(7%*#0A`p+#jn^ypEx(K81DUuB+MsCB-Ob1I_hef8k_sCJIt={?2RcCfHz z*IQ*$ww`xnqTQ1DyS0VTbmj9wb&+Fi1X8Ue@W|= zR^QJKtW{lDX^%C%nR?@JRb|*V%?`(2Fm)|6U(r-eMUvg&esc*=A*FKAHYf?-{o#9z z3*25&Ea$M{x^^9m)f;7qa-}5}XgGs_;N)P3oAX=}Jy$L@9#<3o9KRjsmN9D|spfPI z=O52BlGXc=D5Q{nn@J~m*tQPLXI&#ET}Th>d6r}Mc6CbapZ?&rXY6;!KJhO_5_GIT z8wyPa`y8D9oM$o%b=eDB-#b%P#G1b^tHGq4M5it}H`?6&<6*MtoJPEbui{h$n=yMUjZJHD-485dV1`c(r@(r4J4XdR|+5MwYUKI07lI5!)gGfPzGR6|A{hBi^e8DK( z+rm@tj%@OFDL7VTj+S~mwv*V^e=2xh1YcVyVCj6rmiB>dRbrr_u-M8ivm4X{u*(wVUWule0}R~bFPv`p7LRN++o$KsO@n( zU6DlZ!~*RKD)gQp((SFBds#u_#mD-rd0-*o@Mn>WCY4J9R+_0Ym(AR2Wvzs2kvzIB zm8E62D8HVV_?}N(%b5rK7sM(JN+40tF zO#SUl@si`s5=v5}=iZ98uRk$^pBtzOZ8sS!fVbG(oEf;p*>oI@l&7a>6S$J}pQ&qh z+@F-2kdz16JvFGBJ_TQ^BGqnbO)f-BU%3*SsE}ccRW~%cmLkD>0E^EX4gRYlpqsR` zDSyfW6h6D5$LmRN69iV-;(vxkF9b}QIzAc@d7G1$*2h#BYn937)9vbX%aEH(ha}^fb}s( zf>we>vc{kwbO*q!F)9HWUI7+|>O)15AWACgqZD+6Q4b4ZCH+q`cxVCmt@w($zq`te zzvpjV|6W{O0=>XHiUhEU@R$l{zUk<~P1;GB2@WFc3ueb=F8f}3JK?h#0PMuIosyqk zq7!bQE|vy=%bFVob2W@0+rB`05yBrF>VbU`Bxq&B9TIU@`-R+Acxi6zF_-kvn_G8& z6`G(J#c|Q|cd!2}&PBm`?~ct~LY<42lt9OLK+i6D;FqOFkYktsG3L-nNi4vd&lmoi z!YJ#9o*6_2q19){o)N0KNj=v7bECY19@T+$AXPJ zH36}p?y+yhv1~!|(U9}0hyMiw|5H|srl5Q*m<0eGOMwcpFitE42nPP_0W8O?vZnE} zs|kv$33NcH8UT{mfB2OrQKI30yFnPyNLk)E&UP5h33BcP22c-A3m>whKrC3Wr6wc= zlc?t#uZ4=YY>x*}IIt3A|8Wuv?%_pf+%Ks(E?=AmK7sKpQQ_<%3l+k+6@PpmU_quD zBjb=Hm~;aUz(V+>Q@%0+hFcIZXV|64I0jxk4LD2w>;wbaVd5sp{a+8izD}TvPY{-l zQ$wa6NdcUwXhD3U#56>!ognF)2v$m^mj-f7LC7tLB?hFml@!zt1A-G6RtXZ$;Cw3N zhGr_aGpz9c1Z*d1EfP+Du`)J1oZ3$~ElgtZfV!n`LfXYZCf89?eFXQCxG-5Qm|D~+UE#08-6L1?6~b3)K`yxLZrAt?dC6Pu({CnIs8_>{e= z1O@GC0B?@%F2m&ZzV39%485u-P57fNZ;|t|A%?%|#ygTFvjW3P|g2=g}_NC#IGhY^v7AY=UtK^b_VBzMRJ3%Ff9^{P9!@J8tO&{TcRPx z$8iUR58+S{4-~kgnf0fTQbZw6t!Dn#$aU!>6|Ti|2E&jukj^cL7BcfuAMQ^*&QdzA z5O=SglpxoKOKFFF-vcfY5+&C1f);T-ruTsMB$ci7OOf$f$aGR;Zj@m$>9KEjfNEB@_9A0gD?oOLRf@M;SJM!&!flzB-o`Wn3PN| zcm&eb2MfTY2L&h4*@A;Aa>ajTp7$l$nC5FOGQ3(#$DL&WxZDJMif>%XURLRJIicyID{`deaSq28EpuyX) z%%bzcRK8*+(|j4(YR`2%evRNHjkLzWCi-%sWwYBFO82CZ#kfLMS0ascKyII|d=4u^ zQp!5F@Atg4ONe15i>JMbSL#5<_M{x5?oPPTy(sSOq|LV zJ=(lURTjA`Rr6@I@rGIcD!hUAnsA_rTtpU=@f8-%u>$K1*R|7Kv})QT+mL*WK_svz zyv(v4=DyBg?E#f&EVqcPVsNQL!?Vq!vb0F$3?rq=eza0C6NI!TlD)BJh}5(LM_5Bk zFZs2)&sKI~5W7WHgK345X6f0k>D2XRLAmlP_=J?j#&y1|J85JES6B!#`;Pg&U(%HJ z$gEab#O8VanhUI_9maL7lt?DW5h~k!q3_cQZ@MCP{h^2On#b#1On>V0O&i&_=x>>W zLR_0O`by=Zv+l}*QYvc1HJZZxbF?VA*3xlESgy5ilFnRvF$qQix(A}O1d4Kzd|9Fc zc{7v_cX((%4z^naW1)bhed~MW z?Yw_VR?QKAeih|o5CXIKOO(zo(`s?qf!1|~c5L_H)&ToVD_wk{6(N}gS+~!}xEJ{( z-KCQZ1t7#nzg>vK{OQVapiWt2qD-zeu8eNGmtGrOO73Ewt~7>^bdvgeNM%>|%ZU3! za_bBtk@*Lv)$qVlN^ghNHwhIhtd1Lq`(T0OAB26|8u0b4t4SkYS#K}jnB)@3%8Vpm zZqB_r4OxdT(9kT*gJdng{I?Gt#<|pF5=-iR$wX7+qSizYZ|iTqgtRr*TKS0`Y{PGv zwDzVN`jG(#0&KsL{3Gy52=+-K22pg4P;8EHLiA$};$B8qsvgdrHMMXTKf$(4$;WARCS ze@?0H^2;CPB@X_s(3Ht5Wx*c9^`?1#>Xozlw*7pEy>iFTbs;p_ zD)aTlD~IicxX$ZQGuP)99{+CQ`xMuFo*Bg4B)P^Azxs4AdS2#Fhccq6hmvF0&+txj zVAZv1;ab(pv=ZT%wxX!4LTu>`zWR5At^VsPGZe4{r7WVf&ZB)3;kx0hFe&a@L#aq_ z{GGN5%bwt^I*EFmY*uXaJHIVxXw>aV0dbY@LEEk0CE~a1jt}tKh~~(H+QHx~MA}PZ z?P}ER*Bom&^ct>N7ow83w%b_3Q&e?r=;_g1(cUGZQ|!!we3BZ_&9BqGXVRqU(x3@L zwCzKBgO?3tTE~m3!upbozLb9pD*O=Caj|7rVtpIj(K`EkjgBqdzW%X@P&bXsvWd|w zeK&2>uCO5p3rV(qLP6HAx^|4VbSV6LPloR*yMVXd##vUAdiM8N<6PpK6*jTM#D)rq{+>gf3=7kQorAc*fA1LLbNN2)fdp4cgp~mJkEYMGXYA)c!dHs6R0v*+9edDm!M*wMVJ}uDSMn2O(hSj!Y3kyufMrgD zm!5^n&*Mv<>+hF)%XZ;fD1FdrPE^By@2Jt2PN-s9k<2c-vB%*xt-e$?oACgG9%z1k zFfV>_ST(w0zU=h^1>Dm<)W(}_)i-aP`S#1h7Y2NYQb7vn!5%L@*BDLFPy0sqcCvHu zSVlG>S|R)1?{`;B+ejr2L*{u7Z#mWar?d212bY(iqed0iT{fK|2dCb&&4#MS3?Uxf@f%Gm zCH2bdO+kY3{ZHb=UssF#PV3St4!?mIT;2Y*w}MxAu~X5J%am(HK6OlM&GJhsl^c7- z(zXr%B6lO!?JRl8yt=Bm0>5*7WhuWzb;KUu1!>YMIEgP1|K#)Ye2hF4vXb8v>?-?Nc! z&$}?RB^VMQcZ0UZ%~&MaIhAK@6Y1!IAX(!U)g;0gKbwr^mNbZJB55hCodm^*03jE` zR3Vg;N;7!C-r$f3W^ z_ulse2)=kD^@&|SB*<~aIk$29pgw?;o#i0>S)GNo_(#D`b(7)@K?{SVfo}D+r%Cjo z|3M4sa;>_(pEY$$RxgV>%FVE|05YRiU&0)g>vGT=i`R2J(0?LiMVm^}`r7K%Q=I+r z4>Oxa;-}`lcG!E4KC$338BV3e;8WMqo7KdtsRYX-0cI6|p;=_2-oR^4yw<^sNg;uK zPMo8dw`l~H5?=j5sgW~uI)2ahJyupifaA{icSQj|i3=wNUxnjIq5Ez10GXa!GV=6f zLUArpS|nL|^?9A8cl?KHhIk|C_L^>*oLpnAwb-1*q;#UR5zFUw@!W3ZwP)1{C7lPu zJq*$8ri_I}3f&)EANa~78qCcQrWsmyMbm#*G1+2-FdfW0-_i(TnLfPovW+F3)_tG8 zqJ=d#|PZtxZgFZNE$aOGE+i7Jmgi5EXbj()d;Q~J?!Ai)`-u2F# z_fn9CD!bKcWX(hEDbr$8sweIC);DFs%Rr0kQ<_bc8CEazYT3&j{R5v)O-9LfcPQ3U zRRiA3epRb{$f@33KUX|kU@V?$kkH^7AcUDUt%Dam>mV>D1m6p~TfcpeIk|+YQG@xf3ET$E#8Fk{@2GR_dur8WxPr85MRWlYxN15n>m+q{W*R- z-4`yl2WK`plmxxUnaI;1DzJB!IaLHBu+H3rcT|Q*ApH{uoIZ^VscaRUei zmK|i_QVsitvalsSvF?*4@oq~KM-|$c!1)Rlntzsxxf9CgDC6zRxjMcfyTqMc0(AuN ziSkVLp$5&}C4u?iU4qFAL8RWyD0XmzSdrO3mGf zJlP%72ATDeecOvNPnTJbzKoJGoQ*APwAizCbL1vfrxUr>xnDY(%DgE3q{az(u8g=T7E{IxeGTlwH8&*<}cIs{Tn=&C<11xDJ=8bvR1qzeAM>Bqcn zU8_6FT|iW}c|@}pPX1^}aTO0p{vDqiTTuX>+eM`sl5>5Sq^^*HYjs6(7J9Fbs>W>J z(&XMwi^S8Z9V8JLdC5&a|fk!PuF;Aax93^@OeCc`nY z4Ap0=ylq+@(HG7s*VCK~VE@L8=RnV5aCtf2C;O_%5vD9h<)ppvPhyT*sAR?Q&Mf^o zoZNVlsjf2ed9qPXi72PLycp7?szC}Z1l8Y`WJ?JgMLHzFT`KMsrp#}-t5cYp+JEqW zdWKKoIHZwd55M!Ym{n-gDNNhWM+j@zN*g0D&7015mKVy*-}}PGV{6Cws2iH9{JuZ^ zjk-v@4f8<+;~CNX+PdWRmcjmeUiTcCW~f z?zWU=#q*ajH4JX9d{z;Xo5RS5s)<}7IP1Q6*1wJ_zC23MYv3n5if~Be(?kMi%gri& z${x>OW!Y~HCt=P9k^xn8~S@D`ST z&{965Y0Hg2mvl*e*WQeRO!hTwUsXI%`MGvvg!CfSduKfpjk3I*`JMCgatcwd1n11-eaSum zZznj$U}ueo~Jwc&p9jf{c!o)ZFOZ&v|S_iO52MOJ(aZ>QA@|ikFTQhm%k{PD&Z^Yd(1Da^jok)zucr1 zalN!>=o{=0owjp25Mn%qSK);tt_5(|w6(XQ*b!Ni!9UrSgaxZ){1GFQzsyxcy+vmN zZQKj4NQ>z#bn_2FZhU(`bk+aYjuzpMMk z&Wh^woZ7^E$Yv`dR6dvAk=5chgkNf5kdP|%n~J?K-Yy@@#n1Ucw0hB8_fsdq&iTI7 zPqx}QxfpBBaAh91fkGy64J{5tkdaem!NO^+>c1KOm*2J3dS;LlW?7m(FIv018D+!Q zY;ANOXD|OgT-vFa@VY$3wU5nhu%tprbkY;_S)aw)w{H0+F|3yGj!xSsS@%rS_OJX{ zjMQWNhreaVOV&^4bj)ko3{yTSHk=B+HfA@?-yJa9nsgEWUf7YvvFYl-tvB|Yg6-&grj@AD87q)W;2)drje3@zwPNf zi{$Sx*rt7#ZWs+3`-Qg9c#bXVs%Q{dqaT=IH8?3bl7ab6x6(#3k1ZrhL+HMuVd#eJ z?`XWlVA2a9r^GMU)mOKJAN_1K?;Ml)lb;K`GkiMGVp);w8cgH>L_oX0ti+5qDh7QM zNG3^q?n`Ii;F1c(l%J*JU0QqKZLa%-h2vCpwxLz8>JXj}yj!DN!Di0W+@^wP|MY9OB{nm-vB&{_%dvi zIGyB*)lXfwa5(~&%*=J%2B`R8G z?L&!tH|sC^7c8u1-nf?Wx~uF@CP4a)KWw&yq~p&|JWfjPrpQluv17ZOhBo7$7+e&3igHIPMRlfS^v z!r9n=62kXst!lOJ>6c|mXRit>7Ac%IHsT4A#xYd}28 zS|8fo2kp-x^XyI-{(*vtiO6W^)IkB?S<%tALB)gYNu-H^S0yko_p85~c2n9}3pg>9 zh|Hm1+kZqlE;0GtEtgf=>!FE51*MnA75HE)xuXnz=X4ns}@&6UEdNoCx2pW9=a5ixFmnc}f~Zlc1R;=TgbC1WtWc zSn$*No6s9NaB~XVGn{^rX`j$GoLC_MbMMiq$zb4Hv^lTlfe}0oI1yq9;Ivp-3E?fa&EkH<>djv@w7*|rln{83;h*HM&HCxTlBFK^HF@k_aS0L)Wl)13hZi~I>321 zzWAlSgbR@6-=9U}L!=Bab$)-=sZy)2#4>;{voy?DlomA*nS1{mn;%>P6V2Uo$$5n? zZ=+mUM790%NN;TzWcHHkiG)5G(R6NrKN8CeU1Mb*7Bq5`RlfzTL|wI~vnbIwQ2H&^ zrYmYNnyYb5sgjpaVut_dz?)h;GVPmnecP&rJX0H8m{MVsvC57@s8j-WpBj_Cig4#> z)>?ID;nT9k*)J#X@8PK9L zc2U#u&9PRgK39@yUCck;qMbYoG$iy8_HTm~mE9=WNLn~fr+>k>Lt<}OqAV%peHFwEgyjmEkeT>5F>;xFQ$e7@#PsZ1r6P11)Y?||yMT#>j6f-@ z2gPNq+#D~kC=yzeg$@zyu~X8z1^~TYRxV`fyoE{Ut!Tg7K}G_RWq&1f&g87NI@)_zAPotbhsdoFz2%KNY{_eq~QQ3+o% zLwZH6KJ>Ww!h_BtJgu%nU?W)-^g-aCxXrWgsh_RHvl5cWozwUtI}I$lLN-x8uk6(I zG89DNg=r#l4Inuxf7SZt`Bfv9O15XkhIz`Im+qBB2Wdwn@~G%7JY~!5W-4H&$uBNHJ z+1Af={oD1=SmuXjx1l|^sjR@72L*F}F)6==*|DK%2^p#MhNZ^7V2K>Y_c*tOg&=3S z>w05jcAHKVaXPICU!~vuNrhs1}N_dIBDu~9CzE0mK zKlx5tYA%3fdgxx57;NYMQC9 zsuDtli|*I*D=EKm=UcD6av;HOAoRJHapJAt-|Kl>0_>NVC*LRMk)8#9^|jOaA0F2g`RoX5oBQXVPW9T$JWuXK%E9u5>pWv1a6H<}-LUz4ck; zBRQ_(mjO!)o@z9n2px_*ZZSqw>o4uQASBRCA2PDy!*=&B$A3jrzzO?>sp_9hFBg4| zO;4t%)|0>q7@3tN9dg7O!vB1mOXDPk8vu`5TQ3A39fgct*ALLsI}wy@4f%T_`ubxV zH^BeyI18m99!C`Z&8T=g^rFUz;(wt^uRjX&hbdkB&S4U!^6MM=@^|$cVVYTCO056i zRza!%pH{)YivF9v|4*yn;h$Bs_)MxKYn^VC(z}^_d6Tpx=@*{Qk`(oY=V#crpOk6y zd`pT76Pu4W=4q;)36{o2z@yaj);VQHYk@Nfdd$`LEAd!_aQ^BmlrHHqbKSqbi29L^ zx2Q6AO{W_!@j()G_L@$f(}PYUO}ZMPH`dxAPqiUTfZWK?O`b15itl*qjYIfsyf=!0-{0>* zR`Ue10=hO6jAk5sy36wU3tDooOzfh8KA)Vx>Z?xd0NuB%9&u0~^<}NUu|J*l=K$^^ z2V>ZjhZkqrgiSI%Tc4Bmfp@t5t&RS1&-=W_1(ne*Y`Ym|9ozR8P3MlTV6~U~K4xf` z9e`1W#s_<1P7ve!B}rhR56j9xT^BK6uSASXS20SZEcFr#W0m%etEm({NgD&77;A_*eS+Yd+Ib8gO>3FC8 z9lbqHKctS2SNgS^YRL^*lygqYTFl|`_#0dLf*#fyy5#ha%6tmRL0ILw>WXXD;>B|SYF4ul@I?ukC%lme*7?RwNR{nc>&)&SU zmfog6#5n3vv8O)I0s zJ{GjBsU7P5A%$`$to6U-(=jU;-L#TPFV(ne!Ek-{W7(}_bm3dkE=ynh#38ecOmq#4 zH9COdxlOG1dDqdxEW^ z)uPO_-l@Lo0WR}GZG&Z1+P#7jl9|x5Y3i?qZP~<{_nbAF$=cQ;>ITe75ud{dm;Y8G z`RiaRM`LDRhblAIV=vyI9rp3)ZYibB;t81BjjkO-BJlOaU`q%m_Vdpdx_f2^l18(P zjz;^#L;ZW!HO{s-Vx|NlH|2!hWoI8bCUeckFA5mtIv@}`tbr%2a`y9#GT~w}n%d6= zge-HyvFgUFmi{vBvKh?ZCs=Gvef{{dg=7Fe12ctNiU(Me3pTcG?Q6`}Yk7@jj!e4e zkVz3onp1W@rY1?Pa$cQhkxnS^grVLExdJcok8Mh64 zOx&l13iTJA^|$3GaLpJ=4rm+dSUFy~FgKrODLk8>J&(U2b1w_$mfV6;e`#3-P;)f1 z1tB?~Ox|ag78WR_9nLRac+x1;Yv58EQK|(7ea-nKi z%FM@%;2RyaO@?Sz9NtDP0rtJk0pj)eyGr$dung5jEqM zy4~p}3j}PNyjfmc_41acQe$X#I$G(lsAl%Vz^xLmN8B5XIy-9hUsCg2&Z)o4R9qW8$rUSlle1de|4&SWlx=&J_8*L_ zzFQBI-BHg)hYzg}682?daZC|Chf>MVDHzMi_=5u#4w)}W)Y=a>FGQOQ|JNWln~-e~ zxK2;C{pa}_SLu*Gy378ZAhW(>FHyvJDu;dQ^tgPl=OPIZe<`y9Ekn!CoWK6YuM zpS(Y`#IAO0Zp#QNcXfw4La=-w5*&Klbj8xKu=A7uV)!uQ%{F*ae%&0*?z0p69g>C5 z>ECTyt$F2cU;FaCy|7o(TS_wj)qTx?xNiQM{&Dp_``N>ls$-^WAKqyvpzA^6$6<2P z%&%+jC;3{=+1SN8lILPOP>e{kJvi zvtG9r_4`Ji8&d*i^`B<;-O`%k?&T!i?1EM^FBFGGl&LacUQIykXgBytiBNYoWbwiL=6{JhRj;7qc2nDO9WV+=((<2j&`YzqotlS! z_h(+;bhIh;+b?Ys(!tg=p`0<6T#z$NxdJtfDW5Mo4t}8i>ip zL5NTBx=Qi(^gZ|+w?MB?t2u6J))7V}1A!@8I1v6~N0%2l{gUi7e0;Vg-OEgpJ8VCc zrNjtMM$5WlqL+i?@(nQNKQB?yMt|zAZ5znE0zIsP0KZ1SPEb5cxM&)!0?@a=a7?tvKIyt4a24JKI9fjf)!I8WHM4L zQTIHxr^Lsmd^#8XN^r26<4e|8P38b5N$!gdy~=XmG0NjN1aHPl-!?R%XL3M;wXlpE zKNElW+-);NOdBXt_e?W<6qk>o2Zb!gChk(uuy-O%3u6McTQIFxFxu_VSh$~NVhIxdBO(EpOpi9O<^SQy`k09XJmir?&iUNCVPGIV!QyhP zX|%`swl)Otptt;gZ zj~q!pI%O9SdqqkL4Yj~u$3cxo_~P~0lUD=urQf5LBBF#oSu zT|)pw7YzJ#ff%E~>=@$xD46yCu_b~+hUyS{SQ`6lWJ&Jxv0;B<1wfaBL;xvS)K@2nIvVlvcQum^q!U%aF&*p05zmqqC{ z)`8Fr*80^q8{*qNpeTTWxgYk+oS_p}d8P{onBfeU=j(+VD*=2hw?Mrik?I}@{qsBf zqYUcuJQJW_enAJtx?Rl?S^>^3=h}v#^cmFWnSLDBJH!CYflyhq>bu(Db{vf83^9!X zw9%-aQ;lEAwTTuChB7&Qzp{-;;JW(C-!K3r%b*Xh_pwM&r!hU{V-CWAm368)aNz1| zbsX~rA((`pzZ*UsR$tVC2=~{&6{tGvtNHqy>H-HgPpiUcFl!vl0bc1OP|u75yUQZ5 zG+0S!OO0ki5G6iOhT+qCLslc@IkB93gL1Ooz;aam(FvT7uMgRV7~z_@@YKs_1P2ZR z=p%HCAF1OYwK0v>__HQ!e4XxewX8tnWdP9`3IhQQV)q)DJ)mS-!<+T$U75;RVk6ga zbN&&eZUVB;Un%>Cg7wG`3XM@SYbx}pP}nRx>0>%Ms;n)pm}#W=!+{bU46EOgKhNZc zVDg|tE;yC@2i889MJ>XCfg)H4satg$LU96D7FWRg%fW)o+L##i<2LIJ%B(XLK2zC= zgXsx2TF*0ep&y06uLBLWgw6l2p};~yyG{;!PMj+HPag%L5&D*es>f9WYgE(5US@Pv z9O98oaqas6YGHA$p)(j83JZiXh0HTu4()K9>8XVSUGo){f7+ALsN`)(awtrF8^Y^c zr+TKJ9u)x9kVE`+YU~fnk80{hTGRpPX5{pMqikEwK$B|;_}p~co6TGR9aGN?sN&j7 zFp#D95O0A-@(kpWbA{|=Gsku}Ls0j6f1iy&Z9Wcms{8c8y~-1d>YAP=n*kVr?`eP+ zS8I}fn%B8)FePpdrRcVS*cEG%ZnF^!R)_B12&4RexGOikXaSDnShe$Ts&3 zz`FDiA^83~C14dTa3SVt7yyhpqxJ?`cr7YX)08OwF7ObATmlXQ5Kl{bto0GUOB(ah z2>CUp!B9#*?g_LQ%&G?oaDkQ3I{|0f=mBHYA*4_rLA4|=>!J#A-DlVOny$?@4fHa> zbt~$mV*EClz}k<$^LOT>V+Ld=J>*NT^)XS89t}5i|2%?ZASsNo`R&IY%7OV|9xaN+ zFuUo2K$mhgXyN2hRcYFg1EDR(b<8epSR2z z%t1>lAt91Vz&|&b@=Mdm`iMTq|E)F_gr_hEbz@1e{Q17pdxa{}6!^Uw1pidVbdyh7 zPl;^J8`mfDe9S*LsgoAuH2G5X=%Z z@vry#`Q?X)5cAD?U0c`~EOI1NZ(79}{6`*f6-y4(BDLd3JZMdyVuuHHAS1IaKd^n( z*SZ*4fPa*hASYVj8j}j~Iq1ve^OEM_z-16SGiBa`?)}*` zw@+xsxR%4;_XPG%f~VpOaj>pX3S-&maxv^5eGw~%s+C7QU0W`}#Av`N-(*%hN#OEL zs*6A;nKsrbzry#JDGXTqF*}fVSatLLIB4j}gO&!wEaGq41h%X@ zo`rPicb9I`OJost_m;*(#)j@aV*W=iJG;03-*ij*)`Fr1qRf&EVp!lQo2t9^9J{$r z87yG@*P)GjeATkrXb|=t4ghJ5g&t6Mml&qr;QXOYrafAl*T1U%ve#!i#f6mamwHX*!pvBJ zX%`p|ZJr(~=>~2>J<_Kx$H1^b^L(z;41%K?!M%#kFb_Q%=nLHRLHB2&O-s2~fXk~p zC9rgbiU|3ppNQhzmiY1uwP!5W)mu8_e@b7kVo{%BYbInL$)~=N34R)7K3{(goEQ`n zVA&P(xZgpBwnwK|$c%t25#Qvh|LUTC3DY`>>woU|4$7f6S|;p@`vU$}WxK(YGRK(j zHIrvMnVa4P>Y|wCrUp(sShm=1xi-z*r%%e#%7T{eSjXI$=_X?kDzY>@_9>P&T8L}P zn1;l}cC)xPWm|Q(&#!x3=+gL`R`I*4SYXgK2n8l@YHz2>I@YZ}c^3JkN|kR%IdJ&_ z%YECK-$coLMDx3NjnOVlNIlpzSAs!n2f8}6 zkbHLUGPrjX(wxYzY5#}`OyN+F6k*823f~<+)Cekyb@N}`vB*SvtFD&}r~o~x;i&w4 zL0NNvRq>j02TpV>jr>D4-3kG;2#GdT@Jx*op5+n;<`kpz_pc7H1o#rSa>H=}?MUa_ zE@Gw!~1i)geAkyfuPi6tQ%huX_k(JvZt z_Gu?f7`V7HGqV5(G`-h4m%>s*clPgY4G#*>P%mA}h=0;4X5FP8*npAf9Xt!JW~%Gv zG^?>v6p`=ixrroH3FMVNds;ug2kXwauJ%ykHf^pf&~VlXfI0;-&`Yd#sdF_wOvK=c z-{rP*m5E&Tq=tBns+&)jO`6_l6{w}N=za`N;F3wP7Ht*JvBg?g0>c~WsuQOHMj}ap zGG-G_=Ql>h%FVK2P`AvJCZX^Mwu*1O1Cg+1U@f5H)w};%9Pd zA^p;N%Mj7l9(Uy!cpp!Tz!z~iQ98alV9d#ZA|yNL!{QVb7AWr=fBLazOEx@yt$jmNyyt<5 zmp?cHw5xhYG0jzVOe~7aA%@EeK$P-l7l1W%yRljtD$^Yny3g2TK9S9sYn#I7m7(zP zxp7-<*^NdWYF>vKPd#7rvVFER$U`Vop#5J{tA?nw((*yb^QZX&8$2EEOIe>fM2LWg zl=F>joQPAbyUblWoa4&%7lDRm&z6qoG%iM1I%+Kr$~27MIk zqz_L{_&3*ES^gBQYV}Iwxc&0xwDw2!7#d1AM~SI)u9<&LjX=}>)r-k_S_E$!vgiL2 zyT?ky){Mqi>m)sjHI>N@T2;+$3O3f1TF*5??i5$3E6JRbfh(MfP(TJs;@2z@=3aK9 zyXNA0_>Cp`;&)X?iL!3@T_}b>;+}jp#`wJFTt{_!2`KkXqQ9+Ym=wQLO-MavQiQu? zqLM53w`*nVRWg(4-^oH;5D`zJ@c7L&Qocv+1<5mI`vQG$vIfTQe0xJGUQMGeGHxe$ zDbU=wD5dl*IXta30Ln+&HNVmw$NL71XXLjP0!BSW_J8mA9aVKc8x0dHpM{3E?j~B+ zB*}AtW>6~1O=SnhQikD^ER^By$MjSfUz?Tqo^68A_Y`Z@>K*Z)dFbjEgUAO?uWg8w zd|g6=oKIiAIbV(dM*kK|nB%o;MX0=bnxdL|*i}QeE6>Kxq@_W6%LPK>~uASoSl-K z9P>_q!zYz9WK>ewnE*c2xj?`MvkXk0nQxjkoCo-pmCn9gNe?G;*uC|ToL)$M=;PTq znpp3--OtjGQM2i77IAl6_mS#488H>{sgoQk)jwBllb|x@q%H4Cx%l(^I+Z|vpGQYU zfzZvp5u#b6W~BL?!rbMXn$P9f?b6>CUS9Me2~_fM^V-5rL`b5yzGPZ|<9U=I&kg*e zr;3nK6FVlxUJFC0acSD@jTV<+)27^3nLxZt3lw1DI2$y=;oZtJZooWjwng9Np ziD9KdVa zl|Xs#)rTzR0w3vK%4%_OeFLPV3vc^jS0tqsU;D<_DeiE?M-eI6*+PUlG1FTg8>NOuoDZ`oUW<9z1TVc%ihECE`aD)p}{x!Qf80vDYPZ#DDp6ZocJE;!?cgK#g8 z26;X6oHRU#U{YK-F0kt8GMwz6#P~AVYigA{Kj|Rc|K@9K(>HhHmn(-i>`)~7_mzt* ziyMS_LhKi8by4O$>+)r5*O8hR3-OAySwCpsxkB{By=SqQ6JO+;uhxCDtKsKhyczgP zmXfPIZXAQ;N0k4)^-JbyMy2mk*G(p5{=$1qc&hgCJ1nJ$D>zY2RbC0x)X8Z0lgJTK zrJOd~8Ye;?{!F$ZWfpIZvTyo9pXKCvp`>IVX7-NKC&00=dv0CF%(8P>x!&pR^5-;M z2j`x_oj&E5m!$@-;)IiGbY3{&Q)~>({9r{BD{_7sJDeMt^gw&R~Z- z?T)eZL{&#W}Urtn8v zp^j`VT{UON464+tbKuliXe9n0hMHWWFZx@0rwvgyUw%>?mw&`1G{vCzmro(P$u+#; z%SO%mHmZGHG0%qlEtGXPigJJ-q93PfY-D#H=XGok67h_GqO*6aQv(`Ek0YMmHsF+X zDyTFt%&mXNt$H8?%i3}W)xW|hzw}n_`=3Y$cPjvk&tC|a%_CeS2@1RGJvM-ocZT| zSXXu3fK5P~xrhdDq$RR@IY(@A(3_-JU&(>lKn417qgGbYWKJvJxr$20viE6NrvXWZ z4%u&Huq)?2l!TRm-~K()v^4Ho!*N+ftpLj6vD3_6X^csQjT7mCp6nTM=hp|u61MeH z_(0oH8C3vls&__xVxCQ#s+VdOE27Yg%nINc=Z*_oB8q$HMlHH5eRz2EE-Hlt{kS-p zJa38-Xil1E*%@N}I;DJ~Qyl=4UrHE#6h|~TN~1?`4Q0!zRZcq7CX-R>fO7WZ(E6WF zu(g5Io<1*2^1cB_sIRFN~_ien|%XF}qr7 z$}cvD!R$@~`?)G&t!UcAz-gpK=HpR_>9-n~3i z!>pZSA-E% zN{4xl*eaE$-5-2~%%k0AWpS96l!p!akjlhBBX($cPZ^R13F^f~8gz&#j7>e7?F9$_ zXFze-u+Jy>d3Snt!w?U29WenQpZDdM!7?kf8hLikRHy!CZp&(B+va9M7hfGC_bC_n zU|Bofuy@BDCGEzprL&i0;qlwBgE#_j8}#=vx@Lai1vTkDjrlWG`J61rJp-5-13%J= zaDIlPO{;?`O|tRVJZU~FZH=(Hke9i}$n&R)=${$5P;Yb8Z3H9Ngr-xdNnyK^*Z&my zn{f&&KizA8a%HoF++P2jpd&2@GD6pC$`S3I7L7eqJ@+%1bW?RjJN8sym(r4xwPwli z>?Z$=tz5aEMHE^uA#OwQ4+$u9BryIaPbFr2Mln~I&n9n+AsSTEdm&cjqSwPx&XY-( zyhr+$idaVm+_Lds56Da|vUhFeGlz@L&T^|&^6J#_GVw*oujX}CUpvlzv86l0lK=5v zQ&BxRf*0&3?TkQ?Rz)ej#IGl!)op6;#ahx4*-!(%%|n!=v*XWQn(0EV7z<$lEjK6k z!ppPC9nms=oa(HVKUZ0N@=N*a?|g(;lc_m2zQrMKI2bRJ_xH`ZGb2_5GsjkjwG_EsdU85O9_T^ ztA~-k`d4oKY7wx2L)Qsm$0?nTFs!3&3Aj}#o8?8jT6);yWEUtYuJ}KIwf5T+J`n^w zm3TmCC>a#st%f=tFHL;UIJ+{0AVE6#ez%(jJn|N1-KcabU#T$oLYRrsRpUo|4q|Qe z7~yMV1J;t9)|^l6P)>Xo)0OKi@Qh8qsTP!E@%!iu+%tpq4h@5eVUI?no~F@N*byJ? z_n%h@TaB&#*{4oQUn`-RQG#DX?Wr=4ykI#`&|9|{C6kNzv`)wo)dH|kSGg_3PrSmT zd*{`3vJ>>7scWte7M}e^WPISy7V+2T`t9P*($+S~Sfo``7PsOdEX4;K^wLp$_5li~ zy%d~cVgFe8Je#Gpp@P~{QN>V6|MC*y*$5J5ZfwruWhXETa6b4gw2w&zS#^=TQYAW( zbqu`AC`7kz&ClqwWfIge)QW9=uX5dZ`x#WqKCqeWmNPn8{-&=b=*vpaIwBIXX!si$ z+j8#HPUXFfjGYg9nA7$o$DAH~deHX*RL~-@kn(jt{UrQ6hA`8qZ}oEC^ic`2t?F@f z+~h(ZJ4g0ocQD|l&)I0k`9kjEM_KrGONFLyIrgRMA6Z;96=Ad_*$t6AcB7sQ5tSH} zZ-T`B>2~9%A?h+|9PA|Ut45rA9`~HPnhmvXcU5rkl) zZto?S&s2*~We~Z)n3K0}FgJ9}YAq{CEXkbOyhXJz`ZWGh(Ax{-Y@dvujV-9Fy{Xi>01L!ga1a zVuHm^dlRE*&^YR!8pmQUl(ft`w7zA;;FmcJ#cG{vCpA|i(*i5gw&Pp*i!4K6St2$h zaH1lC$s4JQckw!3z5Y5avUazhQziazzL))_2P%EOLO5DGuXgFPEJDvH-`!lAUR`9c zOVXlNh34dHr_lO`WN2?w{70DigHL0%eowSd8b3X<4 zc3ccNQORTfZ48i>(^c5=8X#7JnAaauAIPzXAEoO4ao9+EzPIK4P5QN9znIan%mNW6 zvcOdVCx9ZejK<(&q3M}T!~k}bkapLH0=9)GMQ2N9-{=loHJzB9W(gKT>14rls+f8< zhPjH3S5-B&lm*Ek^1KfcD=S#2odq)_q>rz@|EE9apR?JwNe6R^F%%ROWR2pb=a6jB z08F{`htRl@+FhvoHcthqVvAm15%xT;W)9Lv@13*%(=qN~&7QoSw1_{W{$%*{WDQ3& z$b5aOQ@7{zaed-RDhb`G$6#~mKm_j95uWLxb@o<73U+w%_UT4g)@a`2!j0^9f7O!o z62+ex)n@M9F=?6~QI5S3>*MOMNy2AQ(<46TMT;~_8*0$bh)+Z+SF}U9l7iGB+z~-K z>0j#q_F>uK*-~4@dl=y%hT!Ty3JPJ}Epe52!g8{{K3~LkT29>7(onu^`WeBd)lP8S zrameWPJ1Jalvmwchq}E=!x{u2t?S@BVzw-b8?*VN%5`VW&$pa&`h1>gRZ1RH=7=yf zXa9AX6f?N3byXBx3aZ|ooAdzRaA(8unY1dF)t9GP^{&PzyR#bT`m6LjM=*VgKdhh41T~DW1xGg@hhftREH@YxPn;Vhee2$f zbh}YAKlEKMk$ZZNxuQd{VwiTkRfHUVBEj3oxty6*XMa0XTS?pgjabZR>ozy$>r0KV zMW44`-%3ZJy(Fqd95n2s+V|?QD})*5~{i^ zUA-1T$;I>BEXfCQ1^%!x5+?~_9+l-F>jesZ=$hszdv+s95zR>u?wZOyNQv`NXdWs& z3Hg&Bh953yPTmUZfxp1w<%}Mu!oIR7IB({EhF&7)8E_CzI0ii$e#OaO>Cxzuy&5Y% z0sqnZJnch%wI0e);6Z=22fX^08FIES5K$D#$Gyvn^15vZ9$BUiw zrA=zKv-gYvE^$<_cMdF9!y3RiO(yzeT7@Ks*5JR0m?jtbFX$ERy&DFzO0M#mW0;Ln z*yR+TEvWdGSd=(hgraPAP2;fWZe(%9(%G;&mZZ|DV=roy%DoA!*_(Ts0wJs$uF`T+ zQ;mjSaw5GZ&Fd`8gdH=2az71=I9_YNZ64;@61E4V&n&lNjPgW;g|tv@~iZQZMPM#-LKmYFH}tw z#pQD1ucl7(IvkY;JR9l&896YXFR1j(wBUDue~uYgdE#Lu$|9rX<3{YFaWZZ9UApYB zFq&gqR6AzFvasSYX~Nv5#=|-IOHAal3%7$KYX)QfIe!|}?m7!c2-mWHW1EA6^_L6w z_JVeA#BFUwC4SjhKG8O@5eynNXq%BNr2OKy!`$d5T^eT~jo7FPG1HME3=$~MFZ_-# zuVBB`@#JkPM|xQ;Cvoi>f+)Oi(|lvzoDX0~mH|p`6kK&Ixp^jyiaD&j^X{sWPLZhT zopABDwsub@Z&??q9!$%X5-vsc+QOe0ORj$7wRt|8(2t#HA_hTkLyZaryGu`a}A~sjQ#ZEKIBJ8 zjo0G7?rGW-YsP@TYFig&l?|^z3**XlyiwM(K=ax8(dL^mSK_kh2sNefJj;#YE301` z%YTR8wq)z~R0IE57V7xk^&+@?r(hFFl7^7=%ej~VM^I7~%4v&X$;mLQw{lJFHUP$2 z+I;r|i(hJ}wl>&>`BWK33Xf)4g68zc%&q#AQLf*F3fO_H$aW-ftiQIDb$dBZ)Z%8R zZ$8WKhIb?k&?~}=`C9uGYpDuhXTNeuQTmy{**|8cIOQ>)1ox}LQAvh+Z7I^kw#?~JU|&A9O#ht_oNfg%?+~+78iO)sF=|Jb8`6zoz87cY zM;tunqZg<2v*5V_!WtZTbJa|4Yq<$$*sjW&n>bdV!^qz(;u$G7)fiwrR+Pgr z1)xJCK19yoXePm$cm@;lzo}kq-C=2jHLq%owmf$q$G5#3pgzxH!%)y3i=HvN8UKw| zj%9*`)hsEY;(-k}pWYm|xD|1~QyNwMhrXAgX2>d@r z)GFpoXul9ZUQ&6xzS}o237=PDaag4irRAz8|wlv zprj7?6Rc2tHJ0Q+3yM0MzHqUHmtPz;2NO<+dL#p=`g2Zl_Qlcl?JNF~fbjSQK9IPaHh6O5urAIimMU2iL>zlUFJQx+JNWOh%lh06)h@yT~97dbhAecV50h?e^ z8?a<$G-OR+@aF%VErQ+Ht``U;Vf`ZJw2Rg*1u9@JaILMB}mWSyMq zhMMv%O0Q+&BvCiHjQBnrpC1ti(qnxReUEZQd_hvYmc5=b+E^YQ^bljLghC_+<`oR6 zR+~C{agrt_G;RGDG6WugsWv$^m5fFUUDMKAy99TckYwh`qBU&Oi;02W-Zf zvS=W&P?_{$p%2-8;!NW6WZ0!H97qElFJJ7DBx%L~zm!;@-||1~C*Rm7a*|(f& z$|Z79epIcl>KrKRMT0ooql_Jr*iGbmcVMp*A&Dn(>Av&?Utl{$JIN*iKb%-JS%d}( zvelwaS%7%u8+B3Q_1G`s!o%C+;#W*sYJ4%w$NQ92kLdO>v&|xoeJrZ+_IBIL$n6QELy`$dLO<@R zjDx^?1?BZ+ibh*$<))1;ZIF4$~ZqChrdood8j~!#eXD)1obCTG= zNOR{`IVQ;@dwm@$5a?ZYp9k}c4-Q=xocP+is%0uEG>gU-!JXb6kDJALGUmOB9I5vm zz7&B2Uw7kvY>RE>PE?+YjM`%_bTrcBA9CrkP-V{7`gCSFD23V!l(jpzPV?-Ezk zXa_M?;?wkm?b=M4cmxk~*Wkb(9z&4S5F=rX@;k0H`{rXty5x2VLES%#{TA0?FtOmUT#>MbGFsH=faJ$fvwwl>Qqyrv(?w39km}dZt^&z5EAQ%GY1fl@o#SeV1 z%|J5pXFW*dK%<}05E6Nf0)FvH<4FqTCfj6Y+~~)1OzT>Zh=_%$Rmd3TeO-B5lUl%LGW} zm4ZqJhXm+ol4z0Oo(5a)W2WIm=p%+5Vdzk|2c?y8)N zWVEC(A%1EDvXwVQxrF!Lwc=Nl=S=)$GNv=$c(5en5^E+(_OX0sJtEtQH|+*$nNf6o zG%5-Z0zj;ozfY$wJdMZc-yzIl0C6<_p^yh>NR$pxQ~GNP;SM642QhLe=~^+lQW|^= zhZv3{VE~;0M8O}hZR6<(08|nh|3P>gAOB7`%=^;KP(dw{0M`%$)^B((;1UU}b^Vx` zL`S)1qKeEEp7&2ymIe9gTpY96^Hb^Yt*Y$kTsIH(|lI?m9{2|{K+>yaz||Ox-zy|3|(fZA{zwrMF{yMVSxv#$9Zxxhz73YU~>-#GZZNW zMmyVvBzq(Um=vy=Gc+)|{^DaE9#fyxjt(U_H$*Cll5em(psJ$Xg6%_uxC^|cir;Ad zA7!UC?k1yhju&(cBmU7{*GBa;O{Su+cHocv*S`At$M9bVwHZL-h_|J^-u=Gv zjlUu?%1si62xX2r?u3!2lB=A+o%)DRzEIolg4`Dhb_`4aBTmCPrC&Se_-YcCWWi@2 z0cF1)PyjYURlNL}r+nAmb;*%E*+Sv8=D_bkL2|^~Yq8f0^FCnN;^70CV*WdK;tc>aQi~o-O3s*Tp@tS$KBkOL3NQ}}1*x z+Ylfr;!Lx;8RB{*UNc+>{?wHq@aDW@?%hwf%Xxn14DuHQ(aF>6Op$yMqTNjYV2Ekv zm6 zW{q4+y);RdmZg>cb|KuQD#MdT3oYj06c3$(FWkmq$MWptf@Wt_^mJFyT6rb8!tGC1 zAq}?c5s-XP(2n~bdk9lY1W!zQmN^>ms5bcKBHL#X7K-0<4*1WQy7Hr~x-a7j`4MxN zR_S`OwN7D`1)`=1rcW#ok?EoPBRnO2t+(B&Tm|hU^6*(hY+aPrjzOsOwMh0E7+*zn05xj<-od}4RA3Yn#x%Bj zmEQa~(?h92>C}&>#T9}{Rm4Yd`y}#a-9B#{pYfo*Lr+ySY>-ryW6?RQ)#0tp{Z`Yr zu|9dJzp}~yfq7rej%+~AjiJobnqad3uwa{LpT(xMFZEYKlV6XuM_lAl!tLJVCP)Nx z9HmJstSic1r!P(GuF}&NrT>X1g$Wi&Z{Q;+cpEOqN|P3h%(K5zOv+CbL2QPaAyecPrmf7O3sMTirn9T)32IuMz**BAtF$v+ z`m!kh_T>FQ>BgY68YsgftBtHRa}Q{&l6~pK&&4v(ZMSuA@0C@9pYi>jxXAU6Xm3$h zd*lOuz0teT^k2mfwy=@MV>bV?TMFsTa(5li7%#kygE4BRi@yya^bo$+wKzj zclW0frBxFNSzDX4d#wY?Wpn|!Xz=5c#Hy@yiQI~||fuTEZd z49!V#-jaIsbNAtA&Cz82a&N!!mF_ka!P)$WaK@CFQMlG`2bn+I)`-XTK%mtK_+SE%1SfMGm4@pX=9c5CfuX(7fF? zKTEU7V|qa@mi)3>T`+KF$j|%xulx!5x_8>Bvpx$$%WBQzE6xMSK~p9({PmZ)J%_qV zf&${1%}~gDC0vBO;i9{t-${YgiDYW|@Ea2WZdd2D$}r+nL6--DX%&n%RqXfixeY}n z*V1TFZ9>(-kqE!bj#YGz2Z&9j21rg_I zqzVw1<^oZ^3Px0^g5ZNqHkVTEvy4@O{PN46bL=l|^1kGD7u4vH;Ges(c?YxuWT`9IW~*65J+>`^p6wFpWWn=Zq>X?<*o8kTpl0j{`lABi+M;4GQGJ$ ztL$5YAlGZee#|K~)+FX#92LLG>)IFtWH#8%;l@4hq}9vde#Ug5`-*1{x|kHKkOKw& zKN5^4?^)ijoW4e)-rJp5xpW+LTb%51(bMC1bJ@QDSq23hs`X- zxg=&?VFlH6@A|u(dy2&QSIxV9OkE^msD!b_NZdW`XwIh}P=`xSH&JhUGFX1~tMKQq z@Z>)%eZUPpN%}FD0DrV);rns*Ca-{1?_ry#6a7_2k-c>S>a%8-a%A51q#>cn3w&90vPj^H<5#RFd(;(b+fa=e69Wv1HjCMRNmPz@i78|j5&O%Ct_yKLYvSGm_83aOIE^+D)7~F zfy(wV@yN+h-0D9|)_6lb zI7bivaskL*I7J|xT>lrVCPVxp0B~(r`Da!2|q99 zJjkcQoQn;cds|d#TRN>ZxjF63=~!!8gt%XEml|3(O(tuAu3z8lSftX!ysj4K`P;yd zun%a-x9}-yw=qXUvNJ&SX{p*$k!w#bb=jk?`#02ZNVNuu@eapx5H9r>Nw;*A2s!RG z_K8b_>JGv~MW3wA8JV}HyxslK(!XKb(6Q4PD6Rc9ux5K$Xmvweqv}q4Q_r^0$%3NO zxlUM}(6_*Zj*{NoNwMtUfw>ueljRQ=e(7x7>g^U4hl`KQB?Mji%5hc$^w+#S$r>y= zn9gl(2gS~*OU;cCI(Hl61JIHJ_P46@0=>OPsRjMk-I*I+@df7Bb^JMpXw>2^$3>*X$a%Xd87R@w3mVREbGWW-UrV- zuWPm}z{VVP3}@chpQ;?ZK@YGWLFQ0(OB9YVSW+*(jj`Whx(*v&ztUJmo}asmbQ z?zdT74@_&#jFh)hq(AU7q#tDFeY_sm7${$B`1>fefC5*#O~2_SEi_R3f9MbX0+P$4LpJqyFC1~(9ClYl(B!V~M&x2vqf}!K^_*;RZQ1@zyZzF& zquj?lw~-Ci{|WI}H17uTiHcQ*`Z^Vcag8bF@l9^;i<}t|tZzAbR|sq|*%!${&CZ=% zj0+A@d&-fT8DCSJQNtL~$!F1*j7cn>x-83_O37NTE`MZ9!}L`$ewtpQ(dR8RhQ5{? z%wMZYru*3b*qOv*rQ%dR%8KWUSa}%6b9~S@7GJi7c{W1NXK+bKXf2?CK#_vSk%?*w z(-tloLpfT@tZf&su{ttoa=iju+@7;JS+B>|Fk=KyGE5cP zPZl1`4W~wxs%yo`N$#>-*$NjIHS|@ySPWD6J9Hr>c;O*awyiyDD6ml)W>Mqomb(7UnxI%1hu1}^qCUB=+U=K{zs{F6GhJ6w3AC($t#Imr=YjDHD zFFS1u28*0))-!dI*~xn+0D4rml}75@@WCo3mGm4-Gv8V_^O()cvpcbtd~>>I9(@E z&3MVzvxuwS^0;5GyfsI*4mt8F=>?eylJ*~;`3UqSauSb)UZum41qtR8{@0%G`6r8Y zPra>l7v(UYOAonTnXW(ceSq1JM#yeHqgqUm#g?vOZ|L>ENRU+5D%8>!Wi6@_d~MVe z1fp;XRynXJj0=!@Z&;YOQzdRi3}qsHFR5_vgC?j_W8tlrZ@|2r2NH8%wbUff>=H~? zhr2VxrE0T=r(ajCERe&Db-Ab+pRjd2uVd98yb-Dsfv5?=(x-haKV&==8hv8EUZXLo zT#^+#CcR>xbk!hoI9ahxo~az8lc!gd8@{WwqV`QvFzl8!oU@N;B`c%a8|U@PaV(E= z%>;G9JEO{Pd3Ms=ig`-nmXPtJly9KgsgMwVp>0B~>o0V|CZb~4kn&}8)6^|~@O?;^!(vcMa9`sYs3ef_g zzx5gqr$gC9j#WgeIRB(HmUh)zHq6OIBOFy@OP37NP31(!FZCs&08YUx@_yrq9&Mur z7$=Luo7Ef-x50{0-$WK!r}qQ?tbk^X;PNI;%c6moj-EN5 zak9s(^v$`p8p~qhU<0AGMm#~OoQq+Cxq4ImO6571EcgoO&Aw7*on~aBNzbeVA7Gu@ zRLVA4krkQCTd8=y^elJJPk-w2jco3jn*!t7e`wNI^0gfrZ}OYvrzh}EO(EYxN}Ou0 zHgWXWv-s$PG##8vW|$B&%hyn3(B>`4}SsBp=am}HTQL&8lJnW9mLislT3 z7FpHv8Q&6%<20g73}4U|-sno|-?STTsm*ab^%m->9J^4YXxF->RAT1^@=+9|eC}74 z*R-FqBFF1;!uIp-TUfAIzv8J;Vbne=+20T{Rv@jNXk1R%xaFKLHCtF4;HDnY8K7A3 z-xpQidkv+g^=Bbms`rc4yg0qLm|@9nlJzFo=h%c_{z3h|QxRpXMy1>2+t=PppVcRSVP_6a@4^sX%dkxmlq!2OETc(x z)};akiDoc@{4jS`QE4rh+Zj#h#K>-O%JP=&Fn4m=Qc=!NRCPa8w`UD?;K^R6e`$mt zD*67b#GZp^hRoTDFQ4nn=t5r@v*{Z>5Y!!p>xScBuJL~NNSpI2Ie@3duR)U%=v9t9 z&OqJ*zDYh?i5!J+_R#6vE2kW@Z-&wekA)x7g=_`*R``VGG0+q^4I&1$4a1Z~Lnn&_ z$%O9kDV@x0#;5?{-%y^3wN{ox!Um?Y8xJp`DmB~XIx3Smt9af<6Z!E-@r{yS%EZ+o z%APZ2@ypYV1Bf|XoUDU7t>i64i^KSuL_;&e+p1T?Fdw!FSB5jX(F50Eim##Ec`j)s zF&w!zY+I=c^+CiuOfCz#-`Ix`IHhb_TH+8SEa%!QMMh-c*{9bkuR80jomEMX<}&6Q zk%OYFq)CGhsp$42wG}$+rej_MKHYP(zb=5|^>2+{XgVUUyf&ya zI427clP)&I7dT7{o9$M1L040ebEq0EXo*9j%B8_N41adOx5AoA!5)29xM+bKD06rX zmQCZjo1Ik|DEc1*o=;C96CvfUiu${d-E%Z{KR%{Ce7%o z?)2`Zc29qmOYO}yb=qbf z&hNOqD6jGinrOZj-a(w4PaU*eS4~6-3Iz)*>SQL6*kBFZXDjQd>v1i0zw&6*H2-h4 zQ@ymzwjy>iftd(Sp%}j3wXPrgcbeQp7zN*RjnhVV!nl`k$+V>_wRg3e+jYOEGJ^8iztTp*&ymPse9&; zuc4Lc)h03VE6=w<7WtQbX;78gCqWKF?R?`cp`zIm47A>NmI>ktx7#WSX&P=)ER(KqStY8s=2F(caN4q5xn>a3d=GcVda3H z?!snkY_b+~Lya08-d`45ms;THA<>_xM-;wM)tmUhW}-afzz?^KBMt)RrDupboJN=W zdE*xHTAesve#I=3U?;PsNP}7$bbfx#8}rF;l0M&k=IoFxeXex+d?d$n!Gx^5)PyjtEWN)iSvv#? znbOBQrJ_ga!t!$Fv68ucImPl^P?fYlVTj+oS2p~M#kIvUciHvh;126L@srAbzFhuk z$936!KDSpXymqOQkH_n@@D^josEqoOGF!HO=4%32<172hM$NDHXh=WtpJSen5GdxK zm?@#1uOZK~n(nZ!qT@mo{M8lb3mrwnH^Wg6DN?UcqHKN0us74EWW+13g}E@;?7?iw zHZ@5W&VwLW;B=I;)%k>tKZ+xssntGazY<5yaroV0;L8U#pFiD_%4W}z6g4V4Bt1sg zb^UHqwn=Nxv%3|$nYFT(Y}j&^N9JGrQc)od3;JD&0K*y_i+VP)#xu(GMzj8#Cx1eT zUYCJ(08f8!pm>F=&xw%xCTlA^u`33`I>z-Y0*?AHWxg=vco{u-jTYr(zOR)5XW8P!62Rdw$Q7i|HjTU$U|iLGx^8pKzen& z0>7#%QgHAh1L}8siI&dDLuFz*Sy9ya#cYy5UDK;`Q-aEW3dkPpB8E_BYLeAFYYA!C zy#^uV+^g?;sc`;TQ*Q;s@M<@0!D^Uo>ix*OGLB1aT#tUq`EDgy{1d--@0Cv5!o>z6 zKSnnD0C^y?8`ytkC8sijf0naGH&fYGMCJ~BE~YA~L(o%zJ2xs}Fx3qjEY0vN?#%X; z_qx=rwn0Hj*27;co4ei?u$xQSz_PlP$1Q=!Rcy2D-_Yxl};Q+7B(L&BW6Ze@W;ja|*ARiNJdVQ{} zlC3{^Lq8~#r}^UMW^K-S1OGp%(pW%>!R-ImDl*~kkG>K!<#SI{_*DNtf~*VUX}sY5a@ z=#m|!s3t3Z^XrluqF97rFHe5Iv7YGnMr3IxykV&)v~mO8a2#x2&ie7(vL*KimNu8L zlV{pdluH5T4}fuBgWL+npHs#;G> zeW}R$7u7|dykPUSV`p^+sZjZ~(f#8mFQbR#03mHKry1G>(Kug zwLD^7xqDxvF@H3AVQ_NnQ1yW4)sOj$AH}^hbQi^=ULzN|{P*-%k5^q2ltk3Q+?;LW zS$fg_y_L7PTBUqQu(0R~zK4%Zc`hYj3Z48ksO0QS1&-ytywk(6*M`OdgqoaobEE1w zgNuEt|(f=+m-yN=BhbiMPqnu|A z6}*Sv~gl)}3`Dr1LPue<@Hnc!BP~hTWR@8kPX8q336=5LVQDV%o0$OmIevJu_ZJ@2R+| zx{j#kIp4}Sw$s-!?n$`&&Z^cScI4XXnue}v@8)MO>-MQ^5ba8T46`S16JG9e)W-)+ z*Q`#O3aLuw=N%rlUtAHJ$a<@ZglGdV!N<$URmXt}_fL`Rqo?+c7QD|>WLk;_BwWDv zmzAeF#cN_YuGD^k7?eLNxZ5r@^f|h*TEIT?_~Jv4=do(-?#FW=E;@|SeITwp(xO}S z7dP~7UsDMS$uoD!J zS7!vSPP!Z0@+vg=uyOnbu^N4=6hh2V(vSJf&X-Wf&$AMf&d2PnHbT;kUnQSE{zWQ< zGiN#4;?&DVD|8!wn$R!Lxj}YQ)K4g2K~#GJ<23s00T`*rDtlfkmJ;`OCu8{jI`&qSRikNS{B%WR_C2=OgqENrWat{ITY+ zucKI`!(vJ8jmwPEj^?0Aec!H}Y^y>&vGavqJ4Wka6QWOM&d<=q!fA&b31-#?L;^qj zHdHgPJt1S~gEbc!gl8$AKhN{ObL>YaMbSqDul*ybIZ)X?G>o7Rp@(KAjlDQSuQj+-chVET&S zM{iSY(d#h&~njjJqHP7HtXo;bs|UYy%uiPuXQ*O+;Mkf87Tzv;QRH$$H1 zLW%}jTn)_DHI=EU%!&m1V*VZ{s|62dwR4OLzQRqM$&iMo;yg~Y?Wb>D?SOIryYt-O zbdfb*B3SPxbFj9iqvt2V1>dZ+?ub%(d;selQYt3T-`7cK%MTFbhl#4&fRej7(+{8ffHjD613gw$5>Mf}PfH zItvL6_w|Fh@Px9MvO16$J57=A@>x%}Rs1`(uiAnSQ~Z=5jD0=GD|inLCbmZtp)aN2 zgKt@Gh7zjl1Cf)givZHe3|^0h*PvNG<+C2qGvBU;{t0DOmOzQ>L#*{7z&1o2jS|N( z0Qw9Z^y@BH8Mx;eg!Mtf07JZ^J@+vKw?0H11rkAnL{T8)Z3f|~?DO<&QFM-oezvV0 znBN@2z0JVubOr%Pkn_h3g1@u*))_zxOrQW%vOdHZ#lWu5@I{kP9+#vofz1G-18)G5XOib zpC>ZUaE_jDjv}e|6#zgkGd}~WA&>cxgn(TMPRRelOaXx*}}&RqG;5AnE#XMoR5Qmj@eFA z?4RraebE421^{gX+%NzHFrf4qxI%%xh7u4C%r##+AyW!qAVvqKutQ+=>=57r7+C55 zClGxy8u$-aPLBpaHn3GF10)QV4*)9B!1N)&iYxyST`@u^7?=1zZjshFFlxTyz#KIf z4NS=}SksCWv%w`KusR(w2?Ln%1unON(L;dJP?nF=xcU`qyvSi!v-sm5#tlS!qS%0pDp9D?e}{ld4A6TBphz%9_Ou8G@VQgA;f6A6 zpyIPr`M7pz=X&YMdKK6Sh7E;T(@WdeeG1vH^l6uV3#jD4ghM1tO|&5D^iqqB3M{S8 zLbihE2(U)SEi6{XjYEuZbyu}W(^GX9bSOL8s53eY$Pa~e!+;Gkcv`0Hhk0G=9k6g< zWilFdpxwYxTrybzW))yA&jVx82<&z}7Y@QHYbF(#$c1SHuTysH@|tw2Lh!YcsRgfO zDnL6WKV*Ot2iV?Y|+qS~4cp`Vsn ztul#C`c!W)-I|7!I>Xvg%r2RdB!qAFoaVcNBv^^A}2_)Qb}< zS2jxj!&N_lwy0wu69JXeeYaFc>t4!MY#o+eJSuw?kXQn=RO++@p~IIf;?;58@kOv8 z9E^smc-v5x913GNs<75Yai`Hj=w%5S8MzkK7v57SaG=4VPF$8jx~W_kUhVG$3&HfR zLR<8MA}xM!ENw8c_A@b+z}QN_!WN~|+9=4t-Dp_^2cnm#+r&TZ^Z4|hP)siu?tdGF z;B3Nw=eM`QukcwSYWd5z2?bZLcB{`bh0vJD`m{oHzdFF=0dQl{Z6!3O5{$M7E^oe= z#8(0)o>^3%ww$VrJRV;tQIgWBiBp?(2Wp}Q^IX701W=-naBl1yHIIMq4F2YV;-FKYK~Fz9 z!N_z7_Qo*MJmX|}h;|SBq-d~Q?&;LbotXgyF|C`ciR3%eaIpjyMuQOtVC^K>Q@Kt7 zc|?^QDhxk3pEAgfrAgFRAp(-}xBF8Chpga*SL>fp(}Lre%1kDQJvr9=P zK`$8a@_k3L5Hm%frDJ-GGBvPBq#0NuV1!^VBmn!<8(+hP?dGDofVp*1WPJCRnx`0n z!5P6T58n^No$BTUC+E=v76vixmQQ7Z9)JElSfbxoq6;R^Q~ZB3-NKJv&L1fu(Mua! z6p=Jl`s{q}6AG+lXmcoJCk_9tJWL;9&*9HS>K;5E0WeK8pmZIsA!`>*fy3?!e+O3X2V1H2F!I?r( z%pLe{&=BO?4CK<^X>HQ;*VAL2Krz@eBMd)<^?>GK84A+RrrbUZ7jKfM-U`;rBUZH= zpCZ$sI#pai<2?W9=jhh?^-eaH!A4FWjCky(W*shhK;d~)mA4@=sN;Pdl?umN;q zQ)zb>2K7N`4&qP+J}h4nc>E{^b}Nv&C5LJvt}Vek+i6VL)tcD)W>$}}Adf|ZL8f*2 zL8sDo8TrBFt-;a&+C>Bcmi|H;y*5}v?>rudr!Nvu`-^7DRgI;-o6}^+x-WlQ9+klQ zfZ-NIns(Xq7G!ycY$Mx74IVj|KhJYnAWi8^ZE!DbYQhzPz26dqU!B)kDN|PZ9Ps#| z3+w~3v6DV~ywBm&(znVt$VyyBY@i@mN{@txe1pPfFdH#j(pYe1Z)VDsSt)`*f z<2eCWglq{tzGhfKuW3hbw+}Z6mq*=C+bW?W3PV@W%_V$|^gsVbtb+PtW_?BjGPFIQ z=Lct*T)^i)^n4m5K{H=K23~$a_IAiV7JWy#1#kSU?f*^qt)Tps^H`byh^gY5s3wXz z@6TH4@4<`rW=9$uwUJD#S`)r5sI%3kSBluzC+LxHG7Z|>yQR}(JMx44gD+EqCsiK2 zV$NJ3rqRwYtZvPdc&3Hbf#GP20!sQ$U|= zCkjz+Bk#jdSsD!XccxZ%u(Yh@j__OJ^zgn_AH})jQ`zPhpTvTh{m+N5-~O#IwVpe5 zd9nF%1fU^S2VPobjIuTM`8vOdtD{c{&E49V7e2drVk{d53_A!dJdzuPxz<3EH=6=! zr@D{_TZ=IAPN^*Fbxb=%lEEF{0{=UqY5ig|qq}HxP9XTHx=Y8c=BMqn88mk5>R3bF z%Z?WL0`=o=R_BuH>9Wj)N>`)>%c7B+VVK5(na8)bDZaX3?Xneam#@BpgRcW0wIGXEsdcBitFC&8 zduMeoWV^S|T`BFWhi^TW8eoE(mnKg)e6i1KXyOXP_kDh_>?A+wRv!4l<@-|LQ~O!! zpvx4iZ1|tke%UJ(j87Y-HaljTh8#D(4{QzMH#;DI=3+0779Qv_~l}c?DKO>HUM99|u*QzAHJdyAYJ2$O;g*el=bHxD~YV=m~6f z^1w$1h${epBGXFG)*qk#VT$>?wE428!(zL$tUT4Kz@YR5kLcCbf9f>|3z()(Z_N8D zG5EM$WeI#7alikGJgTPWs*=bRj`wq+gud*TV*|MEE*Od<5Ggd7XwC`%;!rL#PZ0nP zW0<8bB*X9mK#^8t=m-O&WJwWnHhaXQBqs=%+z?0T*Cw*F-x!5@*qJ!DtAsd5*zKmL zNs_g+p#V>=2oUV%<3$}u!qux(8un{g7@3)cv>ba^;*2vSOf6jZY#lO$E(DoT=DSU5 zt)LRlvkS=-^E~Dko!KkhwzWCx5NV{7dBIqMcJe-;N;1q8Fe?4~OoV~{N<&~sC#;>P zMnCb4z4|Q$owmBN;Mf;lX5$2U(FJ1|@Xdjp1TljdI@kN>Er*kC%L&)4jmtU$0Zpr+ z?Q0a5RJbs!>*Nn*gL{TG{>Xc@cOdj$bjf7^Td0) zFC2~HzJ|^z!h%zOo)g0~z0%Ur7iC6rAmo>1r=$nFcmm~W5>fH6x(p6O%bFb%QLFeT zLf}>w$8F~k^h;C@UNk}LUV~A-%DNn{q)+x3iVpEIq^#APQkk6n!xUs!`VHT!ZwZBZ z^<->J4~ojXE`3J z{EbZ_xk&TPOiHnTA69f8ol8`h4E!C$S;e(`l$>)^JPQ+Nh&n-^^EO8|{6x>h$tlTy zBN|9LxHSZSoa+zZ$A8D|H5`xhdy7TJ}?! zy~K^m6o!1c8dsn))hr(Dd)os#x`C;I8ofT1dq#G=v3%((iFoi>plH5#s#V%+hVo)= zg?J?+zDnQYQ}91x!D#4L5-dnAfG7Q_$FzY^U>V7`;0BAAXou~ydyR%LlOwf_9lp2x z7rK|^uF78LZpR7{yk@M_?#eihoEK(WDo}3?CW32MMLCKdJ0j~->4~@Aha51*Z8kN| zt$7tMF5k2ChxQ7MSe3pCW?XDfh<`7oTzsR<*DBuPs(&)J`TpRAi8VR(+;smco}jc1 zmvXvobeyAHSoQQXSjFRwK%V{Lt~A)c`##e5*mWam0zNt=8#DvtC2q++I^1JDV%_Ja*|DW+AG~GTg7%G=!URW9rv`Til>~6;eA5+$~3- zVa^E!mRn#9L|f46Mi^H^zbO6yPoV4jY`p7 zoeDDA;T=oYibkt)C^d@V4W-dMIrR(n(qd-dyxaPV1xXME)A{hJlN|4ciLOeXXCS(1 z`n5{G#^kKYxXECu*CpMqTJ;s9G)`;Pa}7~c$v)EM8scqPM1RF=S)y#R>suY6PTaRE`amFhPIlEF$LE1qA|@?w zEbxQa$MDEu3z+3_!QS76?nb+*5G0e1$p*7L2kxzrg)FvlnG=Y$wNu0X5nV3UXtD)~ znbJ(eZ?pKwU5Y7*j)~~(q)Le{SbuWxH5gru2;^G zUVJ7hoTW3ayvmij-}@CSxxLq~)?nNsYkTFh2P6Q{vNBY-N;s*jb>K6A287!YnjS+| zT*z+*QQvcT-60aDCg#D(6g|o6->w6Qb91FBgk@Up-R0i(UzwyWAaES*vXiDm+LZ zxIghc+i+6_JDqW}^Uyb4zjkNTFwILgMftCNvJ&QykQNwP;Bs48i#5JCB=pGi%i5-n zSMsE(;!aKeL5F51m$36MdxX+SLnA9SxVYQ7DLP-=5Tf!tIPa9h3B~C1sBmJ!>KIkBE- z8C9D=J7ej05qB^zAvsaLUF1$lLQ-~&W>_L$8xQh#Qa}*5r(u*gX%OI zn{#_}JSOpYMkR=!bF*L8$_tjT2AP_K-Z0O6vqY%USG%@w{tqTI!#}~v4B5{>h;F<5 zjUjz^y@|jFH*iA0Ab=6I5Vnv$H^M!Tjc=#7$5g^S<9HH}t0vmmiA8b#eW~BhsP#r$ zEK8ImOP92)&{3ix?2DFCl6V%mq4ygq54i)&-!7CMlKIoCor{NMz}St!@bw}#b|iH_ zC+WU2+Y>Vcy#eNA-rDJycBA=`8G+SBJkO~ZN?A|jGUqMF^UO04Ed7Pcw-HnNsh=02 zmv#}^p&8emGjQQzdwlV{YN;jDaat4!IBhIV+9c661HV)h+5lx(C?MK4PeEY~zuOZ- z31*Fn&htZxgHZK0_~x(61r5juyK_s_B-z=-*50BSX*&0p^Ka2v|0sk@aR$!wd<1$) zhlS2N8)_LP3F>^Y*MsN9aWQkC)W2MgJP;5@VT@~|_S2}A2dZbO9w4kg>qmg#3^ri# z207x)fGEx$Xz?*vX>+@+tkThqSL}0Z zQqxRh*{@rcT#zFR;2GPt`@M8?)92Zte;WCDQ}|JU9qp`P$EYuTpL) z`)G|jsXea~gk_$R8p;DOc;qW~E5m5HJe>^ZYVGg8%^Ey)-f-5$(_kZ^pcxO@96r#} zL5iCeGOY?d;$b2ejR+tiubhZ-fku!9uymVLTo_{3rfMIj^qLE?*2K6NE17N1JBNk` zsAei2PQ0lpt(`)8HYASMpd)gj7=Odbu!T~uvyO%}v2GIM$Ak1&{cV#pLaCX~OcP^Z znC3%A*pN9a?SSo91a5$qKD<;R1G9FBKyVT=AAS>cKI|v;HhX)rf(V46P#}E~Hs+Eb zIEjkiQoY>)`!Y{BSfq|n7+3TP<0rG-Qo)VC(wJi;3bZ=<(^7*EQR(#g#ptYPhI*A4 zj!bsa2o8Of`+wMS3-AR5nYoDoYHl1|H@YzM6y7|D6mMhap=fXM@Wbo za`*|rlKYVAC7Dv5FbPKFlX*ThPxWjWxKcloG?^->wLH&&Kc8!=#F^#1rg~S5)G@{O zP&e(wL)lOyt6moN1-e{HPKrB|j-Sz57L?X`P$hWt&4rivuCn!l2nK-!4xU`IT>GLj z|As7H8(1c4xl=g{Dbw|4h^QK|)VU)}rcNG+79KE%^ZK}p*mldTK6_>@bRU)X_E$cR$O7}QY@!e?Wr(_MV+p5eGJ`5gCt|`fg5S-u z?E1Nn%%Cm5cq*aAZZzgO>3Gp?Wy+Madmkc?dWkCr@t54M-$GOmeUYoaTpFuF>uvA$ zQFoqX%t%Tt<8z>C;k#3LE{73pZE_!{O4-y(nZ}k9!qmX0d7jgc`GEwbW|9b=@#lfw z8p2u$QBdZXJ;kSRrX9ExhZ5lXrk-xbY1s#frgjr^NMnMcsT9Wek=!hnOy}(4S>O?K zqu@{=Ja`?k7Xn`EV881EE2mzRoXp*tp|;IG^*kNX=!J~SfWmE>!whHQ*7$XbvHQJ( ztW(AwhoUpuPJzMDGpb$*Cd2+WZuB@e-(U0>IMaV1G5>NFH+gX4@Nz1?RJ9r{fB5Kb zBO=wH_6?+sI6#USDYtD~wcWhj3)p;-<9zFq<~vGOwx}@NKs^BqKJ#aHmLmvX=&nd@ zHyaU@)8?$39Owj;;Lh1wM&+PV%d1JSWtD56qe^d&7Tu4B=iy5`M0nLV3jXtr_e_#U zRF-bZojoEQcUeM>tyIO<{6{w?`GhMcS#aWyu_7p<9B$F~9Q7-McS<5%QwMS$v5O!(5B~c4ELOi(M5Z5dv(}n-5Xta)+Vb|bO zo_MLhvly0k#@Eu}$u{QI6J^17dtoLKw?gcv&ZN4Ais})~EZ;Uiwfn%f?~MG@1ns1y zY8)^__gM~)^F#VddZiIFD7;)B;a*I-Xk+QmqAVwW!jn9xcRRWa^Gc_jy9~!^ThkTt zhk9Ws{ct}bh6C|Z@p&1S zK4c|^Z8ol2=^igwo>?7CRm{6I+VP3+S#RYT_- zvRd4bD?2^O5k2Jj_TY%_Y*2rY7Ac%lwlTfyfI#3Ho#K@fOxoi++s-%jk>Whutp zv7V#g*QZd0`VBAw&+CDljVO&{DqMzJBkO8V)pW))cXseNPp=18XIP;vgY)%|UX7u? z(D(XTP!D!pjDrPRj80mxaaYf_d+{+WQ-=Hkn#Iz@n25q_&Y&7`q9oGuAB<^RhN2m% zTP${kcLL8J=16Tk)4#IQd-rG~BXFlf&sIc)E0m*q8VcK2XwSx{%{D-y&FrokAqpG^ z#;7Q^DxMNxSnafoF+BRmH2Mme*jQ~O)xXp;A%EsDg0fHS+X4Vn|$UYiWX zcyQ1>K-Oq2M_t3SV?*E<3))OEcEO-4ZH5Ht8R?nQH0~lmPnj7geXm2v z|2ZY_hhEEMS6!$UW2-E{cjk3NC0_HO#sVuuXa(Sp8+=Au3qux&#w)~g=Q5f!pX3(n zMWT%;!`y{6K}Vwd&jvKl;D6Umi%{N#b$)CNflAd(>rH%-3T?t+|I7R+64A34L~leZULKXclCYL|&``KQy5#_8r_5w09;axK zB4$uWmUzZT5coBt*3M(mp@7#DXe(YTQSO8civ#BDvw3ywUC`V=yT7;9AB1P8_qV~` zn{G!@E-Xl5%T_A6$Ttk?(|8K}ouZ0^P{HPD*V=RN8<1P3SsjMwCAVKtQEyd>D_0;L zb_$)Xr$oweE?rUj%Qoj6m82)r5KT^(73wH($$HfLq3}9e(NNK!Rz%o=QlZ(2j78C` zztkZgoIg0cj{<};b1Dg11gfH=oF5@8uY_Q+51%!6k%}A% zSIsNkPx@<}Qj?20`cXnlYr9aVDF29?Glvq&^6q+4caHkh-rg(?Lp68(3-9UGOnX@` z!cqG@e4<+d);sTVE_$!Zkd^Lq@r^-8Tj0W(os;^*OI`g3%s#hS5{Wz8My%TG99ON< z9`U7*HVx&Yp$0_QzM-Cza=FGDH9A*n zF{W3UR>}ue;tVkVik+bJXvMk+0{J8~M&V!>2sB2SGb8*6cX4^7_ex`}4&a9)o zlF~p$p{zqApK`4c)w$Z18VLiG0MnuHeQ17-k)*5)#%W1~HdI*R6|x~6ck?AptZW=< ziF2q^2O%CbQ!xh_sfwEvB$hj1V!k=Ty!^hd#C$v8_|v}k2Frp|h@Mo7e74WTrgGZ& zLVD++Lw=Aki0adJ`#sphvOBWZ+&ich{Pbczx%&OP_<B<3&JJOJO!A zc9sOb!s46b>>kuPWb8>cwqG~2lVQv=u-3Y}<6u5DT5QB_m4w2U9*ZIP+@r$4!1V?P zlAVyvZ9JGS#B0#gt>P+Z(c#|04foqCZZAj?A@)_-$!_`LaltbLvlR#M4{8peydzx& zIKAr51|J19;0m42kv0lEg=vz27t!C%)+^@lP5NP9U+pc5Og;zMIaynR;@%CTItYIe zr=|w;$oN$dh*XX%K^Dbj`a%SAQptvJab97*Y@SSgMYod_keajZo2|UC?jKY){*A5K z{2y4lrE8-R*W7c|FZZav;4ttJFuU=dHY9MbnMQj{{LnC~b1zu`{~}U01SA=3|Nj;# z>;6B8l%@V3M9R)DPcc+mLA$<-c`4YGnOf_m#-zZ68pm=ktC+_O8m(>#i#aM~*&kXB zqZ6HFuUf7(@F~0Bg!K96R|prn=$-6c3k!1ZjQw}|#t+<5$nQ+Gy%Ebn_IRFTBWR*m z{c@FZugfdFuo-Syq*G4#w8howf44>*VO&>u$Rc~;=LHvSu~e(1FI4fXWsWlTMe?_* zeKTfdEBW17&(1&WRpMV9vaUS(VZQY>s%)C9+tdI2qe1jwg(!31BR7?xPiA6nVX9`; zB=xe&8!s)*p6QPn=YA2pa&9~6r_)_yE5}m4NX8V@rG!!kM=y=2RGa&-o%-zu=fD5F zjt6_)K->H+(f}tj*`#h{@P9E%Kl4vHqyfkb588 zrz-4>Ygp$_FyM0HOHtLkONzAW_W_Hj!^Hh$qXf$_PNpyKK|fYk zHyp4_N|~J9KMNpHR{38zn>dc;`G+McpUPNUvc?1%EUpyuky*mV1Dlebkx~r%#%q$) zhq@w)6DIwKgdSBSB`*Xt=bUnM++)wd(PoM*_!?O&o0e%1?zD3QQ<9Ui#T6Gea|d29 z!0~x?H)^v7XX@$_2#jtC$h>po9Zk1^H8iR1%1TnU(`T=GMwLaZIE%_yqxy(CR7A_a z|EEC82gASp`$}}g^bgdK%%j_(;RGfjNWNcNOoYiwscT1z&M#f5aZT)Cv;LK59vLS8 zN9DV04+M1T7ZUz9>90Z`H`l1JAG|gEvp={!2f2Fq{W(0EPi?x<;A-R*{W5tjgVN}i z#b=k!#1k=q+Uq~9ER$NNKlM+Mqdk{eqaS}8b^3BY#|&1d?mL|67o5QJ;zI;`4X$qw z_mTmjhkJFsN375AHy>ATe*&-j{EooT2M#Vqg{80YF7oBL-JfxSH?hzEZuILzd!A^$ z?k^;^>nk^Wx@YL3+xeVq#eic3hTN3Y>J-fx=_en5za@QC-L`iAy7S{njNuVq;`O&V zJP+r;Y~8ir`^m_m_FrUC`_RSM3AUhp17;l@=h+RZLBKk?T{vGQ5BMn&>% z0lF;f23$W(nJ2D+d`@b*C6<>EsI;2daS0tBZ$^Tx|8mOL-a3F z{7Luc+tK`qg5@UPr}&#mg$Z$RZayQ!1Zsvohd$HmMFXRUA4UXQyiJuwpjn8wV2&q= z<@!gRYyn#VGB|SOrJK>D2tJ=;(3dTrR(8IDL&liIsJHqacEW|O1_F1_5>s@Foy;v+ z#S5i3C9;{mTV9M`GWbh>tr8{KDi~c&HvGl}`)-cf9`ep+jArUte3QdX3`!8%@`x!- zT96VDcie3^kT`E)eoH^Qs@0zPQmM9G)GwGM4%qo)Ut`Gp#frpiAbRqPJuCAnnBRp0 z;%fhDZpRIg1)v`@)9EEW;D|RHU7!l8GbYU1i?~PQL+4#w7kel zuz^eig`R~r=)C2a@!G*WH*2)ahzdS*-a5y8q4S1n(Tjy4+^h^L9OQBSfq$ z3fO~$QR=RW*ZZ5z8c;fN{?&1^zY;a;&6BL4t;V_d91YZx4qHrWeqJzuxc2EXPmf&e zfl8^R5m4jJ|5k58`ck#s&=i6FY_?g8>|4|E?&>6$o%qhBXmid&1N68-d?Fvm+nRZI*70p$ zz0TZ!uH}paN0%foNO*`S$_X04^$T&H{0J;Z@{bquzLQ*&sF#n@7%1+48^FXxN9p4O znd{W!UfPS5Fs!u1u(|)#AC>RvxO@fsr3) zi(>)3##qWGKC*`k6i{B^X3O}nnU`OgDac-Xd_QtKtK-zsSJ-MIApSTST4$U-Gp5CH+>55i! z(O%_favTkW9gWN}Gt*s}-p|-@JM7q#OvI%=W_<6yId$>5>D?b~Y_>IEIEP0R&2N%* zub}EMmh+?jq$?4vT=EJ~2iRHc%EW^{uAI@B)gV+`;DZwK+5E)yuk7uQN5x*a zKfjJf>}p?ejWc^OHDuX}`55^jI?0W~%9VmVSmD67-JFSp*M!24Lg6iUqf9CpzhImn zNojYR`u6#OXSTJEP;4u}{b4UK$;4yw4a=2+AXUSAR3^4#4BQcOOR3G!)$fL)Bz)q# zDTIOTA+Pu`+VJyj*4ogRczX@qc;~zVwm%T3q_>t_CLT4oYb%}CH7Db1^<8;ug}xRj z19-+$ah6v=)S^ek-c{6FCaW@WgA3A@HE1ixpGmhd&}%D(<4JywKi$S{M15|=8=5L? zahekR!t5yzi#RYI9uC(?tY?mQSrr&AxF2}c)0ORUU}i0_%RK8M4qlCe>qDb7b~#>P ztUq{!@8w1Tm^)Tr#xKWLRe8jeG+iI61(ZdycAMa5z9qfA&00W9RLsUU+;yKp!Rgzq zU~$V*DbyhjUgd$l3%Tc>njVv?-uuq7w4M!n*VWC#?M0=|WDl}h-$UeG(xuz!p8%K} ziP2ay;z=YU9Tz~yGg{%mirHX|ZO0jLJl9?J=^nNt47~e}d!aPkk@t?`jhi!gUB)l` zZ^Lg$LPej6uzWkl%Kbz-qdZk94~4pz9>4KAzsJI4#`}3p+2a>fo5t0<0=bD}cAAG^ zkIf}itdF)?Dr?VTpf3d9t{7HHIO{BWlal=mIDFlytoR8JV4GM&mF2Osb~gc#KgOW#Bc(>G(Z2%HTaX4u0O6j)< z+zW{AssZy5)v4Z3ASgNcH$idf_cb1h+qG>c?mW40Y`}sm819=uDMq{H6#XhEp4uk;zQXg8}}`~EJ&AWTkF z0AnbV-b{pDqPKyWG)oP}y*35;I=b{@=tDFQR^I;Fr3N-!D0pv5ezmP)$M#k!-Mk*< zE0k-+0l;jSLh(Ou^_ksSVPFcQk%MUDRd(Y}*zI3Fv3u3>-SJnpR^6+*R2lY6$INfk z;{slx;q^c7Y0{WhvSH0RU__6+hkm&mbFQBWT=>)xtARQ{l9A|yjpsOrV}Lz`B+k$o zrN96efRtY`ucgD>4_xsnv5OvHi$M8)AK4&OtvZcqb%M2`OUn(osBw%uW0ZxrM}|zI z-~}FxpL-2?_;Jzt6oha5pW}O`IedqeTp_4h@jHx@7(~5OfKaY*d1Fu&9$9~StJ$MY z$X+;z1XC=o|Ga3?HEG@z?Psq}pxv?QSiWX7BpWhxh2#4z7g3gKj|A=*@GV-66`Kxsiy;>%X?u+w~ z+d4{fr-~sYu=+ftGPH5rH+DwM@w+(ZH4jEtJo2qS7(34dY}eq18iX!0o1XTo zv&i~>_nIXYg6TQBgXfPemRn9*HR1vMNl@yFf1CCXm`JMyX_%!I|zE) zAeB(n)L7j6|03?MgW8JPK2UTA0wib%t_|)KcW7{@!JXno3PoF_r8r5j;O_2Tyafsr zZE-6u#VXL!7AooK`+nb?f6lr0&Yih)?wU!~T6?me{p{bPd$OOksI2)w(lC+&7)e5S zi@1MG^Y^rqBa=jR4jF)amWb+1Gx#YTGs|dV$RpL?DDsO|axK!3LS(Kbicr{#&B&Wg z9;h&4et_~Ls>QoUXPAYZPeIvjOLzJ735-b_Vde~J5%1p@d|nP(|Nb}_^^i=T=vG62 zst#%HP*CD4DqWWR;5p*OEb%!^FACKxLh6}{@q(Q7tUr` zYCR$5!=inQIY9?-7*ZZ)!oDdNpg#%%=onW7O%Qta7S^i#KN0)L{sIPLqqq(%e1>+3|)I6{MZ+IBI~`SVI6 zFG52An#D_zIv3WS8@44tx=9vriXgAKZvr4lv*)0a3u=im=0igii5)>a;m>4-x+5Rg zqu09e*?y!PuPF;*r00U9xi~gjM?(EBGs7Xcp&t=$NPJpsvJlr!;NPg7=z!w0xe)8g z^AZ#$C2l7r&H^ezm}s)9LUXRg!E3tcYpY`%k)wpPdnKXa9JpgBTj{a;xDaV4l62w% zlJ(wsjLxlcD67!1iZ>rKHTLA*1hid@tWu0D*Dq`7yJ<~ibLs_T0Y|hc##HW>dI7^` zS-zng=S9sC`Fr@5@wiy~IoNr&_Zvj|&VdUY3BT}@C6Q11%z@32nWTL@4l_hed=!sn z9BoZzhm+7lNYeMT1ON)GK1ZxB2IGSfaQG20+5e}6h4m=`_XSAf;y*_d341`^Eu z2gHpe5c>GvvKQC_;0HDGThPFPP$z1T1U>VuR53R;aEYG;bG7FucNs1V2e$ zr$&LOQL9001fqXdu}$;EvujCPAhx*`&eAnL)M~@iH6Du9fTydv0GWs(nIjvB`y<%Z zXCW$i{hwESVn|Tyv-t4iT4vFbZsZDq7|aJ50rm&};xDKOb^$nIYmovVK!P-P0ZJsu z012Yq1=NB6RHE$LgEaxrUnETKJ$v_VOoFKD*@wD5$$8NO~6_xY#2=ZL62=ZX51wY;A57 zZ4q2TNldU&bh7MhC8>6c3{YPO%znq5kiaGVG{+!Q>qJ)WUXRgnJ2xJ zs6%xm2!srFX$3 z_`@rRzA9m-@2waCNGB4&w{hW<}XFI3EzN!C-<>a?(VnO zw1(|Twi3&b@3H!B<9#4sC_vw2w$a5$x7gp`D1&K}-;Zw}1E_C z;$!OwK-%xHeF$983Wa|4pget40xh>Td42KMBPw(L`ONR4(ikz`pz zpRf^EU5Gu^=1*=8gz;i)1&$vNlKbpR4&-+~n%=px{I~;Ld{1NF20z=z&wjg6{(O)9 zc!grS8pDlI7mB$&Fi1L#7&bKs5pbNLX&2~zQ`$pso$$_29s(dD#zoEKKcJfco zFVB2nBzqKF9`z@+-Z>)AJ{#>;*5wi2{RCF``)(9@b}O~|?F*{Mgtia_aQzdi5LFWx9j(W*LWYf)FLa zS#^NcI{GG=b^sU(nFB@Y`{Z^STYFAurH~1jE#;y(#`4JDF>cB&fZ{lO9FrUOMsYMY z1@TKBrn(j>)dTTjOwgrCSdMy%o}I4KfochWbtvaa*QMlR)%LA7o77E_cF<+71RfjC zU?o?Q>=t=RGRh4|pR1nACak6D=6M9e84h@Ph4SS56}z;O^C*fYroaep+ibk|Pxq3=0%2>W%9jsPcOIIiy$#yneXI1=yGB}Xv z@{MrhGFvE+OUyzAO_&sV%gmSaJh@M?C+%o%lQFqh)hQ|Kkd0LBnoN!yQ>!uzl8fXh zT;paq#0KcJ#Y>d&4Er;0xF!Qd9{dss+yR^!dG03X+(4nujO2VhvjEKqyV}F%l2WWo z{9a#$WAdhz#G9r*L69TG4!06{qz(O|u;`)dWn!I-sQ9SdOrLjR#|ziJMgcyvbi?kf zAX5PndM?{Kk&jx9s;bt0iVdZ8u``Fl_1pU?&7a@&3HREB5F|nue&Run@iF=5P#O3% zAtK>ZN*{SgpF+dfxZxW@Bp2z%{vu5M&7w{;8=1++JEXq}KFG7&EkCQ=v2cbo=?m6X z%^FO2JnB*`XojYiRTXj}=HUHejR>ZTg&P_`L z&Pn7AMU>&^vf0eGF$_?btk(FtwO2{{-GIJHbbRrHitLe1m)n(I4_%{0cm=1PHyLzJ zKhC%}t@cJN{%1MQPRB-r>*C&fmQLw-TscHINH^TeWZC13LAHilhGr|P9^HBS9d&}z z4vjS1Ag-w|!M7K72FiCEe~M0L@w3d1U5@Uer<`~hZw`6dt?i`!+`=X%hsU*~H(tlu6K$`qo%>G&P9Njx`u zX)a=^r|qs=Sjo-Vl)T#N^9olPnR%3+wV6Tj+(Ws13@L2yEhu0e7Qw^QqgDU;?eykv z{p>`1MP~<#kWKEKv>5%vN<*s0&L}f^ebQas0_W42SMeT(!dZR17%uw26NB!)N6gTR znzRlE03*YsEroHtk(aRv+T^BzKK|(8Kw2z_t5!`d8k2cb`!oGUy4K?27O0qRpw z4vW|gu|9L2s;yck`_Cb_c;~dcL$zv3t!(amtV~Ne5H1!6fReMF@pUqQ8tfQ-f7_^y z8W8M;LJc(B_kyekTlK9cBqL`> ztWosYp8jz)XZ~j;Z5@{BQF0?f4&2_Q1PR`ImYkiJeja%9B(_{wov zqFpjS=su4z!8}@HKXtQJ)TU6^)^&!4*Lq^ca{@!2GRg_3`J;P}mfM(js7le>cTP6u zlAJVeHPeHQC=b3w;k-cu{|?c%Gwztx2q2>QRb>D0g1v&eR+l)!1AYer0WRT>iz z&(K$y90MQI$+D}iuu#AI>bn|^i$o*xgkwuNkg)8QmIikgdfi&b1O`;$a%uC{OVWE8 zGN_5{Ukak)O|sG#mUheL&&Xut%MG(3)N&kUad({aB=?lGG2#At+Lbo9E(Ruxq)%ow z%83#y9SN$42vP)H)RpR`-0pWV;qz=gXiMWixbe#BnVCG|R@!O}G(Q13v?DUh((GwO z+k1_)JP)KsP(1hgVeqdnP6kp$UQ2IyHaMK8zgeyFyORvc)V0!Bt;A;<%#R$Pr#f;R zsn7D52{s>cqr}r2M-wS*$u*TSjd&lu)}>Z;FjO#O8CLodKeuje|J{WB9#a;#LP63b zqyn*L;DwT+{lq{go6Z{IN3-C#P_2-l{9I1Jh7Y^qptwk%$*9H`BHfoyKn(^84aLpx2b?ihXX)eCB}sbiqHZNFEn z52HW9tA0|ZDT0W}bE!JkDuYwe&}-x>&C<%=YS1**_`+vxwa!w?L~x9IMSn*3Nem^P zav^74ncl}!-&p7-f)k?uK0q!8^=it#72lj<2j#L)wBCko7Ci?U)Bj;~@NRsL}wmI_JpL>zfOy#AHagb346}1B#4Z2AUO5!cCgaJNCtmvv+AH%-f9mgKrYx@j++P7HBTEw zHwg8p11gHhe#nrxS?6CN&xR{mTW-Jma9~!S$O=C_z4Kja%K;~NmdexUZJl{mZk7Bc z1FCiRj(^EL*F#vn2RQm$@`{RFV$aU(huJES0qNp7H_=;?v?llY_jCOM`?|aLlheMr z(Qm!4OX89l@bDBF=O8m6C)YCe5?K4HNp=D`E;Z}BOhz7S^eIi?*<0*I# zdcP?C?2E!W;4V<0NUk26QSGcR76by*`d@HCpPV)Rv8GS#!SXxxVi9dCkrbNp(EICm6jW)V{RqBCkr6IY z4V+dyq2}B}b3Z1eD3m1I8E)J`!xe65I&ru+F|E;&Nre{_d}fMQ{3_x5xKC5kF$hvW z0Rkpa<}=;Qzj|fdx-BFe)DJEtK6z7Q_(>j?CWQ@?Ciubg-k~`nC79>gwT9DKII0ao zD|hA#HG3gbj-u8VI0k>Tu~SX=Q2P!e6i>gb; zK*?IIG&fZR|Af7KiH1|}W~r0n7^U`f%EDsu_Kjr=*VumfrOyHKe68&q0xCGCvY1OAD3niDSAE?t zQCF&qwya!|n*5z)S3LQ+WgTl*XdcUCt!gM)AT+%az;uEbXt5>Bgssn_(^vt*L63s8 zvd(%da&c9vckk%VuTx7xa9T{p|G~%;W96@qJ0BXdYhv z=vTS7=4-P!P8t7rNY^gWk(SEtq(utAEBohII|T`tD&(W};rUOhtr>F-@)@EWi?`NA zM;SA6$}n;L)X+T4aZmA`^{f^#^lV#ASZ|_v5_EJz>pe$e{6%hSbSwSZGfCtF5*g3Cb7xmnO0Kcc$TR*xDTVI=X}FrehtttId}Uq|NzhK(XM+aCv!UFW9;) z7f*%9;7*Cu35WPiAEFkqG>=$CQ}RqqX zFNafZ!@^Mb6wls;K>js`(D_zhT7M-%b>5b?9wyygOGRjp_Mf5{-$*;R)@~g_O9-+< zOV!CId4D?d4B@isFcJU^zzDGrR81UE zo4F<$2g-S)OQ!RLBe6|CzE%_1rBAb_&Bm8jvCb8pEaEmxIGv-#Ya2CZ`uJQb~9*y7}%JN_J#m6Wm{Qa;*r7H!cj=3%305vaykYksW^ay{xv z#gg9wlh=%5lCZb6`I_Ecg^p8_>x?;sWR@b7X^sW$%w0kt+yn&G5{Ydujhjco_?ZS2 zFQr0}P(}=SFM#DYCI7K*>!6qxW{++;rR<#^B}AngloFHJVpl;qTk;wfWL!1;*#F8*Z7Sd5p*TzR7MUg79$Xq&H#%?Lji z>Rm%NsVHV&qmPiEJ_$1rBWa;Q<~Prq#c63TuXH+1k##{*1(f>>$gyf?ba2gAdkbV{B>Z+WNZys{!JrD52uMezBT zCSSr{9V})cQYG4}Umz(d+WHcPI={#z7EKH-2kQ|hO7AElk^~2Qx)|SpN-QKy2ZwUq zHpvZLIpW^kPN=9#!zc{!W3LHduRF25-Xlz5+hrdqdG_H8)MD8XoT@IBI%BkXoy0rc z4l~a?eTn4hdkiAI__ley4z%N~hJ$y2v1!ci>~v%rqp9HHULoM5+KGX0(NeXm(bO`g zN-m}lskU5+*RVi2N3QdOM|kNU6wf*`l%`R|GNRs|u&;a>i%6U)bs5?DMKPe7`dQ2( zDZ67;wEEMXo>nwIr>yw7nJi&(%G7Z zYUUF|MPQ8x!%vrU!iAUST4%hi`CiaL2P-?=UDqlKu^p6h#d_x{+I6%o`p?wilstTI zFXA9~P9a|qiab+-06NCtLekZ4_hV8?_6Fy>3%c&%CI)5b3r=WWQ#0=eS@N5r9ZviE z{u%x94LnD75Jp1$LAC%-PucMi@ijD8XXZL!iNbS6Cy6x!S;Wb*P}~#4^B* zAa)J%c?NPXp!bfk_RlEt59AaduhCs%&L%#Rq|RdRndtEo8c$xyhLY|I3a!sPNTD2# zo%o28-LyeV$i| z{98Sd1FE(eoM?b1mepgP-Gfnj{xia??0rbS=52tVKpjCH=~LOvT^5cTit1R2vfnp z_I~1~fwF6RjsDQ^9%5#Mrua6N#-Xl+>p^a_HSC_US+x5;?`k1w+H_WK+{ZVu;cMM# zC*{V|Q-nFTOL9qua-Y~YNY;4;_A@SxhGQ{ZOWTS2zH#BB{8?8h{ z@@3{;cU}$=RPMvtT%7Avc8SCQNYhU=EzS;k(H|!HWx1FpjVRPl(+yj7oPOAols)j- z4|A3ukG@CpxYxjm?1Q``t5af(2w8_9dRg@rzctiQT*FhMm78f}sz9my2~NPXD-p@u z3;G?qgnJcU8>Kk%Q-ZXa)ZW6Y_vg@}hkCF*5!xV65CovONNAvx+-B+K7~K?RT7Dfz zf+1A0G@N_J@k=Xlq=CUk(#+myB^Usc(Kl*1})<>|* zUm{IyJX(5VqFl4ngx9)*bgEttK2%)<2rp#fVtDYzeBLX_-}zh#`hdC@c__M-I78Y; zW}d(rHv-Fs?M-P+nT%{27Hl-u(RMCW8>mYzmyaztvH&TM;Ue&E3N=0>Ew4ueL$@_a zB)R|P`<|wDyag*0YGl-rhJ5i$&zoE`dB$Fg-JkK>b(G8~FetQ()@!h+M#FJ$O08c- z*)MQ_9O1dk<#Wk$54AEq=DzaaSQPt+=K2iZvAW)=AS!*~Se+y0**+6>_49zW9o3Mq zQBCYgqWRuIy)}7h9EEYx)aUg!u%xxD6jue^&Go0FeIy;?zNFDw_n4l>|3oU5Fzl(8 z>SI3+w|Omc`9oN=s(t%CmK?j0MBjU-U_47S5rr|F=2bE{l16<^o0@1)#5G5+A&q;Q zx!|yM($LR32&1ZAm~EjdaPytXfO4}HX8bp*lgYVrZe%BbHgkg8kXEeBN;O*E1BJ`d ziKUO!IU-`xL5M8PTX>_8`jmfp80Md0h+orXrG}nvYc$fCO}jMYW$OBW7r(4m#(+qUetX-%8wV+8bUdXTWrIq9_HGGk2Je+$m%8Q4jT>W7}@ zE!bxWYV43>%;CnAIZOOxw+ANh0Vav}&X}l80-LyT_RJ~Y_`L+!z;L3lZSbO2;Zv>Y zLemkli2~FQ-1k!EPU3iT3Dn%HU`&`cik7Mur}62Sr9(L(CQ4#BrY07 zu}cYMQ(gzxs0wdc+$+)6JTykZ=exQbsg64Dnd4)<&Y3%F6*Z`fRcQ-b0z%z&68-fY zo1dJXO^)VwUP!gafa${ReWz!Cta?a)czuhe)ouhT@+awFDOOV4^(4(9PGipVUazcK z4_(-O*b8d{KS2A{n02DpORv{kFG-d?aZhv}^)5RCNiN3Yy_tFS#oVFsZGjq}gWJN% zu?>t)vOclpA8YF>O(;Y0ZFH`}z7hDFm{EH0yuP+7ZIu%oRPeyLmw&~~+&z&(+R%gN zd)7Hd%}!2CaquliV#iw2OalorBTVfr z@Ak;rqO}jj1Ucxag9ZfC9oP`al1#vG2t(a0#$zt_0x1sC5y!#-!g3;u#ry zTi|25Il`^3++`F^vG>y!^>Z&?9(vQV!SMC3a{fb83}Hf9K}PAOppQ zk93YSig~(};4`S~o(E(zk9qKLnXH@O)zj$9YAKA@bpvxdG5W5~kg#7%A9OPKv&ts8 zbe-;sC>`~E9Ok1b#;_H#bK&N0E(Frk##HCvX)j?Pc?u1nG=8zgMV?jqX+Z~>jkVdc zjE5Y(Ae!7hM(IMPL*B6k$|2l-W-oaq$E4Scf676}lVQz=d^QNH2ZVr_RVDnFGxVX1 z4E-Qa{Vkci^gQmav=##jSq;L;5}n0C4LVKX61(i4Y%pDz$Y)9Y(2CvK0H|P@Xc`b; zl%*G&)7_}bu6F}5d1C^58zPZLeDvO>N8;r}Xp^uVY0*=;=Pj9XW$bS&-U=6~XEh<~ zglLiYLksXX#^;Bcjw4^Hmy>jbX(vg=H9{$X5Y&Nu`$`CeYEjjr4}}#iMU@-<8L2Kjv`I5aghA z*E{2HW?}HPm7tHL8&z$+&I!wwW?3TrUSvWTDdfc=N?QcG_w|6{jf{Lo9C?#XRwNcL zWj(U!uugsYZOlx)%%j;p z5Nnp(zti?3F3NA&>NYJ}=-S5E5zwEZ**%|_TGkL{JYzP3G7xsB_4-xy!?CIUie~f} zgsE&S=2gBZ$1Tzda}}~SwD4~yNZ64S$?Of8c5OB6cbv=}ff2!&QxAskZj6tjeoZIc z7ml326n`VR4S7Z-cKrIo`kM$}N$+5V_Y@=^1s+u*K_=I^8F_#^2e@A+K|+K?VL|-L@Whb2wdKxwZPebYSalYRu-UXrA=r1r6;@ z@&$fZiu*O@Kj0>kDDgDc-xC?HAMb{avl+wTeB*XQ9HVa$)ztC16l~5K_tbvy)b42i zz9A`%%%MA>xl=XkSEfo+?CzrV8&)1C#lSRHYHh&uJ}-%6Easm7%4BAe;s<{#lp^g& zb(+Q>j*6pfn@6f+Iq%E5oz+%j`O6)eJT+YOW$803OckA%4pLRwi8A6FIPy#tQA1`s z$WJCHR?x*TB|@aKEvZ`f$rGDO#rI)(&9`Ag&qFj^`{1(^+$BEiNZK7(b$V|KM) zhgN5yF=H6&5_|+Rtw-=!TedMOjZ<&aF)=JGBRzV<1{KuFDdVnQ&@?6JBzaf{YfkfW zqVW5eyMmCg5$+{aBDkSar0xTeKb099Dh*&Dm0O z@H0}r+UPbX+Lrd(QKTNGYYHEb)= z6z#zr(sXy2MR0B$zXWm8YB4Ms287Rh=Tzi{dL&iNNdHJ`sg@Knn<-dPz%9gH8_c<@ zb-Yi--(jAA(9$o1s0daM|Fvkd+CT|5mk$3`dDvsZnG}*?W7qLkGga*840@H~Pm_doYT&)8H+suW^so4-WQI$rwqq>+P0|uy&+)SI4h#cNroi9r4Gn zK3gS*UEvZrkKWCliFO&GKJQL#hiG+`JPH34*y6kOo^Toe(BRk1n^fu0lT!6EcF~s7 z&WhRQU!TIMWa~`;Zj~IxSFd!HeoBeo1{`l!vP=}@b`t^nZ*SeopBzSTs^sAABHqX3 zQ7o+XeCzuBlrOEM|3nt{E0o*G+$v?2pqtz~BuQ25S6X%_ES3W^iK)1Z4b_A>?24V{fcRV9IVC{q4UZ}KME^t zutp83at+lWVCPtn#jT=_#aTaa;VJjEKHJ~diB>4B^&p}X+@%J>Sm|#4T1&hCfXrT0 z-m!=MyV#Y~dFBvlj(~I?PDQODjMBgnOTLEC64a2m%+-;`wGjy-L5cxS7*$INBF9E! zpViTBVFAhhPYq)`3s^Lfjs-FyBBz{gILqr zG{WJ)=PG~ zrSnkN2pFb){~YO)hjSpWo=a-G2nNrwGIm@l1Y>E_PrBd%{~p=Xi=czc_tm$j;XIxm+w^W& z=nk861ZuJS} zLDE9*Ku$!f94b2AicC=b0?*&SO1q`n+H^l8gic&VK;K&9_=aHB2tza+`)Uwm-msxQ zK!6neG$U#fNz(i&Vl@}Z`mlAzc8gsFthZL5&gKJfPfk=Y(`>X{u)oufGP{U$J>pY^ z=WgG!5bDo+g1A%P+Q2m7Ge*orMn33n1PLGxY3OWy@Rk5j^MLb&&Z*H2Cpzh`U|+$0 z`k|%eoC$Znjk<_5gz2B)u17GW&08#YJY*)sVset7bQs`cEUkNDja>aI75Q^MKc8bf zc*{2Lw1E~)A9`v)_IkgIxKnA;{bh>L#J1BEsC$lbY5%r7xx(!bl6|-BNTz2lDz{Kg zHjWqddHoOQ10}XVFXXy=5U-cXfDa$2%$*viQi5MgcDnXedPZ^nnJ0)bTXA1fTSYvj zyF!w$jWX@ZM7@F%;Og_{?w>F}YUQ5$B(tbNDV-8zWh|`xTQ|JN1XK-@FxxMmw6c3#X&Iv1HLUl^2_zjpf8?L!H}-lu zk?Q?m7(E`tXa%<-8d{!1`x0)dJRQh<%NU|*5dE$j|6zi`pUkxf>po3*Q)Kpx;Roj& z<&9I;d(kYY>!S#%Z(DMKjG90F?&}u$_)|ePlE}2uhPG{M;V%F$K+wOO!xZgjJ_5#U zKBwCSRIY6as^kHhBt%acd~fN>msTbmr&>#2I&ih?4vtL+Dt@7RhJ2Pg$EJVPbbs^X z*H2foMa^}eg$0-5ylv~u@DCdqwtOCGI4{Iq7j-GQh_Ak9d8R_&mitbEN{(+UmOSIz zt7#ghl<|^utMWm^Pa+=oU#^l9xBb}s$tD zh)TH;n&ZgxIzxa`!ktQ5g-HLNV`ItIr>?82QWo6Uczc-XlW(ifU{~a@V|mpJzANGf zAh}2tv&a$gpyZ55ErJM&>&VQ?@b4~RMf72+qtbWXT*2?PeYgTUxlI)2h_VS|-*zdg z#ym2y60+Tm?SD;W%6r>hlL%=NJR)X&LgsUuhGRKjtB8j*sOy70LP9ll$47G&!+R=%%;tMdB4~}lKBnkKn zep85zI4FkgTK#hO0h(VrN{7hcB-o+HD4dY$-fNv3KlcTgNNqLZo>C$OSA_e zb^@K;BhI?y*#PkfXGjFPALC1@2CcA-u6JHkKlZu~$`7K9qrs4HB;5cKIcRp2F_HU9 z0$Gg%e#pz`eH=0*@Mf2yc8n_R8hIwBbR(AdPzR$DizR+fb+((J%S0;XktDUS$m&C)^gekKd&j z>ruP`LR+tq3``oeJ>(7OEG{V3@f?m|GK;Xv5Xzly8Jk*tZFPZ47n$@Uuc5q&B%hPZ zA)3rQYfbquM0xs3b#fkjPeR%ymxOfD;}KD!$0?N}9c~DdaUGMJ99k&xzTl};&PEWW zAf^yNP+0b2Pj@N2&2q0!5-#u_I(`sp<)!S}Ud546?4f|mF)sf+H{GXKb{Ug5olAL& zqnbuq$iB`F>5?_XxG!cSPZ5QYy(K$n&(;vi3qR5YR7!na(ix6&?u6p_lXOAuxvnb}6QE<%L*!Acp)4 zhI|{9@{+&gacJEQqT<9#&aY4Q1CCNPjPe&O@y$)*V?y9Vt7(~6IiY4@VJOz>Cb^I) zu_1(V8c~yeTKJeL>=%MUaRc{hqH!BVTGd)7+fA;er{FhHhSZ68vEm-=na03Dv5L(_ z_F#YS=Cyn2Ecj7Y0rk_ZwP#{kr$Ez1DbMj__Qw;7Mil9XQc6b8q^gtJ@9WvWah1RP ziiJIElcsPNC{jzoJb}=7R;j!XsLV^jiW?}^bR_v{B)J}Q%>~NvL#sHwV&ZlyRl$@Z zO>gNr1fQ^QlWmpP0Ei_Lq*47UrHrmfZ>w+aSGPEUl%&h&H1MYuoQY2(Nm=>rczJlh9N)dc1+q>SlUKV{3*JwrVoq9W-)s= zeH5gqiR`2lZ1{Rg!FCQ^fYqGNwJZ!l%Ol(Jm@EHQx6Xy+Imc)H-Y7YX>@Ekw_(Lhf z&M8>+8ygtQY-3N-TNenslz$yNn?}51~vK&kw+oN95PAe9doLt1Pyulfd^W zPryjaBXjqcHL1@Ecx?>Bg;J^KQ-Dd;mQYITAxdx`Rru*3Oe0T&RQ1xcCM|^Wk6w<= z!oV~DRFqbRpTEdV?EA0*4H9U6+Dl%DB>jrXPwvlETedvA=phj-x|YwW0jS99JGUb{ z-<=f}&1ue`il3wNHLWv`VKw`GZEMy^3jkElhSaxJ9EfZ^izJFUD^;+0DI?BIv0iNA z)wH17%PGKgDF6#Or?Bv&EUm9&o^Jc^mL<503ka%DJisf31lz7~))x7zS&y`&wvH;( zmh>Y!i%t+$1psA^MFeG37ud98&+<0G<{axfL4krlbzP__qUA|S{J2LgZns5ND6fI> zxz%YmKCCLjnl!bQ+z!zNwAKdYwcv(`{Jj71*Z5kItZ}z(+cD3Nxtd%car@$>-^R=E z#U7UF7kd5T6+ka{UQIqZP+U5mqg(pOGv{2Pgs8k*Jez9Bk*Gq5)VH+Ku#oD|k;od^ zI9f_Mgrv+8bdcUmd3u9J$hU{;HBKNYO|UO5)f?|3dk@~#Jy`E4N2P4<5~E0=Uj;~~ z{TeEmS~dals@9?ZY+N!|<=j|N?maR#q|FHcM!TS_T`l zmk2IFfa5X{xx|Jbpi^GFbpgH=xy<@;J`c613jmUA3ltycXttKv4Ht}B=lCv``Q|`$ zj)W5SU=0x%l?Y7L9z;C{0_H&BA_NwH76^vt9DL@r?APg#Fme%?p*=_)xuDfFUt&M6 zJ2%fZN1XU{{npST2e2Ucaf#g#VuS?iIzs5#R@jQbx}|G0e?XiURD@|zh#?H_2M}CP zk@x{Glwq$8HwpXzN(3-wxcL{40AK)!76}?Pgh?YnW6E1FVC(PD)-1)=Tc6E2LlEVE zcE$j``v@ouZo?us$3;NE#U||>u`~c&8gA#HptLA3rQas#6Yv+cyJf!%Dc*&M0$_VW z7yyuzZoZz~h52rMV%sBd+NDH-3Q&Z9?YC||zMC`Lq=fClQ2XkR5EyO~aNMLV-G&YQ z1AS*l1V;O56XXk9EZQZx*qtdl`1TQi_-_J3U}crPS+-p+2Qa}d0P}Y+d8z_-dg(j&IkqdZiQAG!q!A!JVtv2Q3nLRN3+SB=Jrh$@d}U9V^^bJ(AshwG5d&u- zK$Hm3>fkXE{^VZsZp`*UeCaXcoA*dj*eV4m9=Xf3eXNckQ%4cn;&&KDcS&|nB8)&r ztY`(b7>D_`E;y#u`9B@PqKY%m~zA@3c51U+UF77 zZToc0CJM?npW%-?ih+f>;Ik7eZWuXoL#HA6E%=*)g z4f`Gs<=IKZNw?8y`w*BY>cj_inuWLk-G(KJg3>5~c-)Tm-=llm2Ssc<8ls1^$nP@6 zn;YAgjqJN8Pxn`zLQl3o8{r6j{I*m|zVAG}r1gU;h>)q4Y{$1k_XqdL-<%*`etScC z;jIF5-1#n#BP_;$D0u_+MnUE0zDF4CT-)!nuy1M_frS5_-laM-z!7FSZsg4oH{T{x zE;%XKAvP*KHo!qyKkpSg9OB=62G4@swztz$e&)U0BthMjQUdPy7h5ncLHr7T3(nd7Of>u>uk=d+^4EwxVf)N9KrME;c%YSvp=0Roj}L zq2CT8kOLwKGW6QD6mpF#cmV4H4>x9hr&45^JnQdF92W^qB~JpmwH)pszk)#M2#1u= zu3{!ojW^R7j*7|haU_`I#~oM6pt$scA&#a6tORrfj+{c(OEQ3jxbaD4Wh|5VOTF3& zaqsE@jb!}HyjEjlkFr2xU1#D4-ozZ3yCx}(KTjoIK~jVs61d14rN~89shNm5&}*f1 zC%Oo(9jYLEDxu+V$){GLEtJOz5$8U^X>+uAs(YLAS_h4-=zMsrRoX*lBmjBH}~x}OJn_jN5z z^OMwiU3exJKH?M-zvPzlXg#OpoaCqlZ&bpgEI196bB)T62H{`#i6qaQGsGIkap^o6 z-G#U~`Uwjfo$M384V^oH`|g`kz4Su?iS+G^i7GgYfk7z;+y)wX#a`}+?xU^eSAOfI znk+mBFggqJN?b~`N(Fy065>#IE?1&1!gCo9Mr{=A$^Q8g#;;gN@FrRl2*`!EryTerS&e1G?TUY8YR6)?a4M9L|SKF z`P?nh;Kb<&f9ubx&k-!sG>Iub^0cm#vF5S_grA=DG3CnnFxSOFc%qPkEq63&+^?6*u>PP{e;^KJu1&VT z!G_R;j0uYMVO{smThQELWSu?upt^2O{!8I+^8Vb{T{2K%olKZOEWfb+%Zp>manv4#JVTG47uUpHCd+lT-k>vH1?-nv#x)^ zMDr*&R;i^sX~(}*FmKT}BVv4gQn{o@-3x)?M7!9$+C1H_mz0%fIB$^hNWn!8fF}~oU0(LGHIl6TGf*?yl!>C z!4$Ivjdfu!NLtQ?)a4lM1=BEk!bFZ6!;?`-$2>y=4~_0L zT7;d*^4+XAAsr=j9GVZF(jFQhk+?>_H;#UzZ-FmVuE=a@UJ4Ftyu=?)%Bh_!G+A#p+fds{p&En%s_KbNKPh31dM12R&v2l0G zU7z2YRO*BHL}2-=F>9Ssr~y>hDd`xjeldRgnLm^Df+Slxhgg10IW=lSw)|xC)TuIR zL6sliW^LMozt=@zw3tfd(mhn590nRnbZ>KXQlCNzz_UpAxDe#Fp}w^D1(L@o8+l*$G4pP>1k1qh^o zJ&X z_z#q4fOWIHTVb0#kFc%WhH>8QYiv5g)?55;RrEpb%$I6v8YJ?;?LBGb&iDdBkN2fA zrn^u?H2-Va*O4{3RRYk$S413jesu*8##x;T$30015s_TKMC@@&xSS6zG+U4S)z|E* zs4;O;1(lt#1P2GVs19Z1dty1X)NofHs&Xl#&?BE0japjYN{xBm2UhL#8(Xi03i2Ak zu9vc}9X<5g(OT(Zq_4B7e!A5&tBJ1@viF#~QtVsBg!U25Hh@!j+}aoB{CH{$wRtqo zCWEv#U74&6RYbR&z)tvGB9-YMR zFPaZiGz+kZql7s8Rt4;-{fTLJw0;H5)FJ`Tztr z!^LZ4KZk|Nja6$r2F3%KdqS|UK=1?{`}H{!VPdTWJZm;O@6{z2L8zP(2ei?#HCQ5J zJEq5=l#)+}Jgye=D1eEM2GSYMOT|QO^D22^mzh%^&9_H+`vGC7SiP*c7_L@`dPGRc z3F{?KD{tNKJ|}$ z9m*ACu*DWHpyt<;JDI_~%d@fN8%1H4rO>jsb(r6_g ztM=;gW>a}tA~v52>Yx0!J~?58uQ!A$V=@t?#?h%WxK&Qcd6^L()wa{a`VoaO8tK)v z(f%ed77wZIMKk7Iv$oHrGF^{<8|GVRW%@YJ5I}=2yTFw(YJa;H6AsO*0P}C`ioPdI zE;@T@UrH`Ie=C2Q!aS@Z!dc}`LBWSw_?ZM2#0?F_WU4b)GJqw&>mv6@GK`_sziLT1 zZ?FSaI`_<|qNyhnR9RX$bNJS|q4i)A1Vhb5b~6C5+T`#GC+8^*u6l|;>Z3aIkT24x zddZQNvYsI|ntCWi^U+f~st2=WlZ$^ZNma+0Xdr)Q4oq}K78>|MHbpP6aqqO1ooMk~qw#<8dqnLJjSVz3A8 z|3#?^A~T)p@Zc62nM3=tBt~6QkNr+z6IXp0-I4t&wZkbo%oedIl*Ylx^`^FLcBAgf z1IicG@#4u;F@oB_uVSGTf+oXca#1hzfv4sulXuHMhbPxv^;d{`M2@mK@%xHBy_$x!7{Q zyMQO}#<|DxyGmASw$rkv;c1@k_53`nda4gYaEgwIp)&*6>!1n+PMFg)vTQ=KRL2IJ zMLJI)OE)UBypQzhBGm;FN{hv;)-ufD?!ISaV)cj2nX>$Tg=mY-$U7{JGC|g~BF958 zf=~uQ>!GaaUNu41tH!st)UYd0QtY^ra)I>F;iTmWvI|@!2MT%-gjrOdYVN^`_a+kL z<-ZB3EnzJA#KL57jDgdXTe^(h)YFBGaOUB6ZrMjDYcG58-UIKY<^hAG863wR9* zvY3(ZoAtZa+{;hiw1e8242`~tRV|dpNlu#V&1khBdHhQR7AJ7N`L z<0?uR#f;M!2myp^{mHOECa(@G7k-*8n(hZ+6mYIX@&t1hjK4M-`0lu~10l{)r!Oj-V3j9s5o z6rF6H$T3tC6rw}!jbT$Kbn-ulm9eQN{@OAsHRW!cOihKQ-LmE*p6)eO&a#IzD=$ON z#)g@DKv%+~_53t8$*oF19r&iQ`cAfQ|CD+R(i(cucZ(E$J1#M_YYf7J@LYf3SvgERFFhhMh5cwaereSLoZ{RlY;&?@3Y|uV$`)F!EdS0d`jR5Z zEyY_(VyaIW z$u(TNZ7U1sC?&iUK2vYIV8{6FCv9LP*gmp`_Ih3oxE2&gkP%Sypqtj@yd7ANlQQZ z#8^2_Ec*dTa*UP9rf1Fekwu8) zLgq~vBV3$HYcu0;s8nSBmhy}xiE8qlCiAD?GPH^9zcG?Ni)N^Ew5?00-Do{fPZ##s zBwyyBA<^5Fh{ll-<%fil^-od#*%jv-0;AO}OM6JI*N80Z=@$*OqiW-rsvL>z;7z6* zeDx|B1FegYbnD1-t+Gh*c?I+!IO03y0)bq8sB(MbDQzBm7!wm-y=SMT2lE(<%hpRI z0rS=2X5{#}UoH)J*_E&>YsbqkM95@xF`JUf_cDxSAk3-{hxig}!3Jxjd4W=%O3b5! z8NJr2dU6R(6ZRGF%L~Kx#vUZ~h`H5N8b-FBl!|xlZ9b~d7PsEHfK5bsf7E$X z7Inh0Qzx89Kzi!h(Ug9B2%}u0qgNM>JX!47N%z{86BoWbU!gCFuc%%zaQh*OYXfXy z!xS;{@;Q#{<{zd!f1{TfMHpkxVo2150M^9pCXa`s#z62q{ULFxVM zXti{r62^zoxvDdnGv&GuKZU$MBH*mYP}b~;M3p{|_s6T!8W*W?a}5IUZLD6ol{T4u zNis8C?QYtRA2R}ORVUVeicEnDD>dhlcIae8*1?T$C`TQ!7SBItd$alE#n};Ny^^2$ zxC`Z}>(X#tdmfaytb=$dC#DLW+TbxKcS`g4z13A~uT9$d{#EfJ5~rNQP$Iz4%)|tp zOLL{U>r~;pbdsX<1sVXQY)Gt>IyHuc;wt?1kxpbc@p&k5uRee*SW|0oj%r2@5>4z2 z;d}6vzW{2NOZOHN4bJ){_Cm3(#YSk!W2RG8+ud@%lvYwj`qa)jYt5yi94<5~AaJh@ zQNA3KqO%lSIi4OlOA0rhsVF~7?xd}DOS8foEa95xKW%a6TEEll@%)BP>1}2hYY2Y( z1S552>FS>d+vCK_p-W)?gH|;^PBiCCdBh^2f6VE zuJ4ym(6i;mE3xK=T!;z*_5%|c;nSUo)(>fxBAd~dOD;VXb8>8gg*}Ya*J=U&6R`<4 zTpL5+=BZEF;#5)Cae;Y-y8V=6zec>cTZvTPj#Vd$vV1qnW=w&X*JKq-D@!Jov)@RM zW(g^NetkU6NYam1E@yblbE6aG@kb{f{wGpQ!Wt6MmPw)#ET4v2w8f+`pq~!W&_>7A zK4feS&f7AS$x8c>T9f?slO()%&$l!=CiUA_n{Xx2weGFpxvYS%*^v)tcXEe!cCh8UquNDri2ssy_R~-XRdai2IQ0GxY!U7c| zmX9CaSG}ZC<&Su7nX|}Y5;uXnoctben=hi#^y&xNM?oR86sJt(nYXqNOz{0`^ILGEW`i^K4U?Jn;(cc_q1d4fpaHD?l)55J{? z_(q6J;`JUsktIf!82sP2eNPDgyWYDMzz0(Lzr5{>p1bub0mh|QsB`Ivi=!0snyGC& zK&G&(V+|nfdlMOeXnEyCTO~4w!zsef8pS)DP2scfBouzEn)3TmyOf7%jan`~odBiR zS#4C!t4n&MyL>uRa9f`_**cKlwDMk!UJ$g)TcbjkE&C57z~^0!c7bzI?f3e{B%5U~ zy8g~4%R$$yY9d(b?agjuj&izz=PfSXvL*EP%%Pv`^1^-*k9#kFbWL@;v*R{kEqN3b zTi^IViRSWdeJ)!D_fv)QgMkMk1$b-O?yUw#5~>%r(&v6VEvFWEihl2n<6_TebelAR z?(YWflH8wR>3gvE)*FBKM`F%5pTjPJz;ROLC$1Y023=k%S$zGrKil>0;ZFKrzZ-Gr zDpSaoe@)4=g3J4b&t9-~7sM!~J-QbLW=A_dyATPnb2;Lu&Qke4NzW0!^zn6RJmgEo zt`@=gSu=?`^CD@ zS0zQ;P?z#dd{3y8%5kN6b#7QSQ7YDU-h;ag5WR5^cj)^8FUNj)JeKdt6XtI68%cUU z!MZSisl3L)x*`>?Yky;`a(cmKQ2zLgE4d7xd{c7g=k+?fEU9x^W-Y$Xlt=8>HR0Xr zx1n4~#Xqf_1nZ`I{^eo|FqS&gR=k4SlWFed+GiKF2dPqmUlvac7XWn;`c;Krqb6s5 zgyntkjgaOnj_*XNbibviOWN=uiOqc<2y7qP+#sxCm ze(h5nO3IQ`CjEA}satZ&5^p34fv*#s4N9;XwQ#ZaC2I1$Ci-l8uDAUZdDKkC4S=(1RKTB`$##L`7DCjk zGXnA;K%=8SqVKB9^zPh;hL=WzSB-?osH60I+rN=;l-~g1E3VsfAOj7D7lb6rpTiHk z3RHf5BlN*5{rK(u@&;BA1017Q`;T=gLl-l)uYp#@b+#c;2~Fv5#ZoUyDYn#Ub zsKGfy(U`47RwA#JK5_{$nhSL{f<#LdC^_gcZD}Nai4O)+h=jgY-v!Kc8+zY7KhG>6L4>QDrTjnGnR zL{pJ(e?VLhkSw$yGGdU2785VGlwk=a)1`#8wZmI%pMyKq?JvhI388W*0=Sg}3m+ts z#NFtbcUIi_z@T=RBH_o-L1=1hW;h1~ zl&5+yDNf_Ve~S>>F3%y_n%&}3ak{eFOU~T(EJxpkj{~9^^~9ILhf$3u9#H){_&G}c zUo`2|nf&~e8i1qOh)VMa`I6exwgUn1oVMY|P^us_>mK-ZjS;{|klTS5DmrXrG9vAP zWvn0U5&oGRvLSAd$Z&C#D$1E)7ULj^Pb&KYgGMq*;iBMXIr7VUo`zY+_XltDS}yqTksENk`~)ZtUeJXEVGBgkdERcku{Qo ztBYSms3HV{1d!opCRNcL#L{BmyC3D`ul>bH^42t1Mwwr6B#CDou`~z^f+AC1T$KCx zs8b4Zti-{&v*b%%SzgHYCRMi+%Sj&^&W4!f=+Q-^4;{&iBA3mkzD6BY3^9Vpj9w{p zWOb{%Qj9V$$2Y4MfcFq`_x%WmdE4PxR)jPPf@D6-GHH@HJkk@?U<0_8cTE>?1Eto9 z->ox~8OL0;K)YadvFC8!Z$d_%HWR(iTgvBVy(tQJW2NWHyL_y+ePwkwVwN09qbo_Z zT`j^A#!y~}1>(Jin^oZM0yB3Ag+EH`G^E{ zSHl~JpS+2!ck)Ig>Q`pR{4}g|79g8v9aTkS&4BPB(q|6&1i4L_v$2l4;W6y1!u>8m z1jUp5xNGNN3a{@6KM(obd%s@|5qjQ}X(`xw@I30}Nfoz}tCpct{4q^4P)D3A-hVHdQ{PxC9!t#o(iiM-G9%kOpElV-a-oD=c0m2z-zkwYF1 z^Sk&f@v}D?yyOJKEHj7+NyZvs1%+K3*tbW&E9*HFu=+M0IpyEYWi%)RqIO6bG9(?N zbG+Z#JX>ib_U4z7ledEMp}+MmEq~2;3<9io&4&m%e0t}}y^gv-U3Flo-cUX7Bmd?4 z_9E3Vw{s%(Df5E2M3Iq!$Pc%@J0}Wub)xWp^32rFde_KO)F0glM;Tr}p6FpkqZBs| ze}(nIL%y@SN%xuX8Dy<2G>Hoe)eY#Ozt4NuYDB7jbQI9HuJz7}TY{>&BzV~r9MKDK zW`sFZC72^Pa){zyGv2G;AJ{3VB`W2xA+&*okHiaehY0E0+*!&BhNZ7 z;D0{N6ONIQ%G>pL^IlZYN#)wwtTjt)loxCQ^=u99Vk+S$T2uI>Pt!NB*;};jH1cJu6T<*7+Lkka)m46#usw$zAX`g|P3f!EWcY?me;!s=NuSF~K9I z!l@s6&!3c~bXwQ2d|vweJiYEQ|7}-174Sz!W`Q;HPq3SD%%ybaSe_LjZ_!gvtlrR% zhwSHrV|I^5!)~6pUyz7)Ovl>z!9MwGKMEjmKoc2G%a}!K+3$V#kh~zi?zWg(RH1MW zt2cLjQ02e+Tz8op7BA*=>2BAb6$b7yb_{l?NvLjro48@mRDW%O$%%il49$p@YotT^8i4-=vJjt?ysJ;c{A!EE9 zEodF>e1NEFUM)(VaCN#6sWC^nte|#8xCW04M#D7nIWdgeuhW7s*xm2@n5V~cn;lJa zQE5U7;)hf5cA}P0ykG44ay-7R!tX5DvHPpXR!+p!;{XaRt-x*@!ZzY}&ut^ey$UP? zw;w6K$+TLO_94-h^a*w=h&5mDBu*u9xC~ZQjn}CICpzGKgX046Ro3P?mgKUogw(OS z+SVm*AuP*I8r6<a*#VND429)eo+CJS zP|Jys!<5*`$#dL~5~)jVVa9v{&|BDkUslo0v8_!A-9(!o@;MW>#TgBeK0h^i^E@s- z5(-2@KR|7$+(LYIsVv76=vK_4dCZ2a(=EcPs5Gr2mmN`7u5&uZR>7%~?l%62;2!P- z<*Xn)EV%fMmWvNj@^Kb=V=0yhWYxZ6mX~b?tF-YF)Y@8q7^S6h^e>`Tm~h9N$4gl* zyG0woY^AHSD|6zr4zYxFVYy)9@2*C&(y&?{Ei-A$E?HeKFVlN*4mpIn-pj7CxL9kjzgro9t_i*3n?S&b*D|gWGpUWT zBer@5HLARSuXi-!WpGA!U@;+yR}x*?FFx4VRLe(o*PO68n`&eHm5o22ap&&6NFoIX zP2+-0!Y;>Zabl#Oi;l)s<56Xqba^4V8I>3_vnqXKV!Rid zpbgbkp`e1+Ad%IVKtMVYS}0)I3PDAz5*q<-NA$LoT{hx%dO|1Kwj{<8qhLsY%;p*~(aV z`;m5SrXKyWUdMUGTdsTUy56Yq_}=3!-DPzGw!v5Z$My($QxCuzoqIKly99Lsa5 z@8*>BcXhjLp6VD8z7IRS>MfA=(A0bW6rJaqN%#YaT0d+?X_{9&_Z%oy3gk=O>b9NA zDZ6JK`y;YP?Z$K?*vwSM=M%l+dTcv7OF#O#3gjk4*cMu%2&>bL)_t8 z(i`>GRSOKDpEo`McRNqpKKdClSEyG+=&2%_XI4sREad`m<_#{9c1^MJwc{~=>;7`z zYnfsxMDo3P&**FecqwzYEj! z!~W#hi>>&%n@OU1tYv#G$?rQ!@DG}Ovv@{!r(I@(j!5-gl6g|qgMuM>D^^{TEX(5~ zARa0C5c!5~rSsUp+Z-~w_6|j2(HejBK$%xp3x8br`G;+x&6GxPLD#N#i++hc(E!0~ zEiLc7o&yt_zTkOzGjpB15GCV__uUCZ`N!`KWN#AP>Hg*NuB_b_;PHgxEYo@&6M{cx zch0H2PiOCiIOMe&e71};n|l1a(mU11Oy>Pcj#g35X~@%=q7qHl=GWjpw!51Ttm8yL z!$pY-Rn{yvPSaXOc}mW!EK?5z3;Ki1UB{aF&!&Pt_%y6MHMmA~{OK)G2Q|y(8{weO z&iqEcIUH8I40l_YO$2{EFHy$Mm)W;=X{-1E zWXDs_%rswV+Qjqf>|}-cUc_6R9cla08V?^E2Sp4^N8HQIwrYrr?BF-QZuCe(>#Byh z)2@WPWw3s6-{+l~uCT3_3X?OksHBR`x~lMv-V_qgZJK%G-(xgD-F1&-HF-hKjhT-U zT79p}0_NA~FsETT4^AeocSx@??C$c`td6kaEx3^J>6cPXGJM$9jmadko{~)!f7Dt! zXxJ1y#=F@eY#0A*t>JfPAfbnLYhD=+t+N^CX{SZzaW>n}6HFDSIP@!`+|A-hDIvQy zLZvD1D)%G)V&UauBc8e^8j4zhgZS{sUl9%8%_yO~vX+*rt~K-S`cbaaq(p^lQ#Te>j&tYAh4+Z0WZ zW@%nkV?a0EATq*8KFM65&*^TK4%I*?-`ES^%u|#@HiV=?FwZJ;DJ)~6Sv)rAIbGpi zL@boAb63+*|2PJ9j$-^x6feJN{m zLfEaOw{>zA&Cu&wOZ)gI&m-Fh*2FbI3vMnn?i04Md4@kzMTubm|KWtOry(WK&c9UK ziCN+0^_J*zO4nUshDvg~mbu%!*pVfQ0zuuqlB$A8p~v(8p{g z1hv;Djq5D3Gb^QC?_Fk_mS%S7cMl0V11TUK2`j5a#{5 zj*Z%}(ipGOshR?ZpV;p4QUZXyQ}`>VM6%w#fnd>4#eAL2XxIZ{z}J9$C{B$~kGJN@ z2MmUDNPn_MkGTL9E$uPsn!Go|Nv;DtIykC%AAlnoV@3p$DwLp2Qih6)x%l~rWaZoH zF`W2v58|@t2l~QkSJ5IF27><1a~%-<#$FkT`C56J68$&bd8{GoEiKjcaV^g%9Yr(& z3I7q?g{yok1>kY{dibTr#-Wm6-ia{D1Z!*S^st_@8odpB0Dp~<_YjKySv^)F!F-se zDZZ_AQMa1GEsiXSiA!WsS)HAgvs^-m#g}(Nh3)G3gsb-lot2SJ@u-DDBZWY+2RM!r&$Xx@nW6E9NciQePKvbBDV?z`!kbR<2?Qe|Dqt33kInHYG{)U1BTUFOBcQq>RpCqMnpH+>11;m`V=3g@HJu_8lR0QnAi;XPKHFZDh|LI6Gg+ z>sD&0J@2LE<^*!%3TsU;Rp>Dd`@A_G39i-xxnUmZH9Ze^E9OeZ8sRRkJUvc$LeRQ9 zv7_S%Oiqp-Gr`Gos{#n?kzkFwI2FIBi{+V-%!)^9@Z)VUAJkr{kF#kYqJBa&>pL@x z(bJr7YrG)+BbWKwPj6A>Og zHNJ~)uWQN^;;Ncoc(^8)E<0)DR-`&b0R*wvGcJOHlrW(yNZG4A0hf}p{6eesjQrLw zJaAfyCSKEg1*oQ@G$VnFMl`Fi;UO=pFzpk#gp`|&7MFO?2#*zrzxjlc-)<5dVj$R5 zGeg4r9FEoZa=U%6>op%65we<5BJmigqL2)kPUGJ#ez{8u^tZxeOn7)T15l6K1Ey5p zOk@pqaWp>dn}|87MRH3AaEx%k?mek8eeo@p`@$0+h$9Ff530fn5 zOFq%fOl@i}HV(-+k1maGh4oKxQmWjb`%v%%n_6uPSL5L6YZG$a5h@$ z*hibIAh*%=xrDBk6beH*-wC1RtEJ3$#M0`9tm@FZYuF!*FrW-L>B}+I6qPp#gd0N` zpY;@u#ynl@i+!-cCfKrTjVT7rnJ%+*l*MRMOIjB%Eu1YI0)7Fbv~xI%5Ut z2f|&C5R|4rC&^3YV1U|(R)6XgzvfDwHi1<`I_t^6zGY;)*=dny9~3haBm6qq)vHnb zZeYllW{CN;QX$09u+O=t^Wvk$@gFqaP51{hX=Obp#JYBW?HGmYiL+Igvd}PUY%D;` zYVPY&hDhwCSAe}<(q7|U%Piz@H0sHJLh0pUO8@xr81l!-H|S~1fZ(gBrqu6(m@?bq}D!1%yi=_TlekhA$$C*b-tYTxA(!emA?8NiX_1pt0yK&_Q;O*&Z|&C zMS99GS&@#mOx^--98s{Pb6>aa^fx^E_JJ(<2Z7rPdh!b zus5F24-l)JP|mQcCj9XfJxFZ$mNfN+HP(mGB=)P{=XQeicdj~gu8UbydRUEF2gAoc zu}RY}c-A#Q_e|)X2gMYAG^hf-wSbbrlWYf#CJ>O{RTgE4F zFg7Whb=sfhD`i}u;Y0nYj$CiTUAU24*^-6{H5F;0v)B^FLZQ$_`2&50Y@~;gv0Qp8 zBXrQt2j+FQS@%NFuUQFy*SHO@mK9S7zMITi9y6|iGZHuyKINWJd!kWqaHR$Otu+#n z66k+n{o$GJRPKPu%bg$zL!%(yMiX=(k1bUpV&6g`zPy80Bnm9;(F+Y~q_H*tO6iyP zH8OST^O@cg-tlZ(b{;}7z}Q~sK24nIYS;*`t9=NmOsBY?8wpKhsv(x(%xlegHcgem zkG6pbNZfh&(i{)aMU@L#s;_3Q!{iTkVDpU zKF?Xyquli+L1s-k-n3GXg*@_#2PEjm@vv19Rz8`xnx3y>E5S9BPUtl>U=fG9=I_UnU+y`M%wJsXJ<`%`zNU; zHoaDiY7T}`RmfJpEai#C;^$fh+nDXdc?E|B_Hz@*Du$ENGQ=B`I8~E}^+qRd%0M@0 zdstP~LRpXkhl**XS2!tOEz;&Pm-T=Y=k2aDNrWt zjoo#r_2;1Ia)$QF!!Fi{K2|W~AkeSs&=GrN9j_zurR-RPYJS+zDTjN4U};isWZ7@A!dMR_?zMgai0!*TdWxMyk!#`*R8ef7YuZ{O&x+6$S!+`niPs+j z8{lco2CVFsU z5_FQ+*}|w)ccFiZr5tx*r4h)|<0oMJg1MpQ?DmAxB^9a!U{nYwO`~+%bxTN?G2D5# z$2sz3#mJT9lTuq*j|tKryVBE$L(qrKu@j;$lS~cBytsm_NZo(gP4$fde0rDX>P(%E zv+k}{yeX1+YI=ajwD0UUCx#}^_=J_trXyDz6Ft zL|h&^JrHqoz3(O>E-ohG>Fes|8zk!Id;kCYYlw-9iOEPw0b*ie;!ukcP2@YuAwH$0x30#ETQtF zwWWWDpnf{m|8OLO|K|f**oyf5?;!ZTs-Y?Xw55{$b|U&Ww?`S6Y5wcQ0YD7^Hnk{p0=b-@i=&zySb*03h&h3IHnrFb)96 z0Pq*|MgWkC%7685@Jv@j)huM=L($%&uW}7qd=dmu?wQM;ly{YZe{*i4 z76WMLx1(NxOLMv zv(AbC5_vTP;$U07Zv`*sWme^7-|~Jqtvui8d$T=xG*r($A<9U7Vgho6fH*1s(*Nay zQ2U_@dLG*e#R}i6`^QImLBQ57Lp-x*#V7$?>wR)3HlJsPY=I{a>eVyZD&4atcM!ZR z78jZOkBmp>HF(4L1(sb%5e1WI?Td%aL#bxE>D-fsH?R__T~ZFp8*%$Pf?@tFSy4bx^8B`Hz; z;56EGJ1!la0iz-o-FGW0b*FkrXJgtlW~lr1yL!+Mo7s*@57Qy!+iCV-0U0}f+C)cJ zA~Tjsy?-=(r-EZ{uW^632~Dxu0uvybI6ezWX2gk`$-d=w^Y=mg6gsOmmShzz+i#g& zymK(MX3vJ4eK}*QYkXMKPItN~@jsBhC9u>SZ@3Uu=kf`8!8q`_g2LoSV!!JHypo;( z`lF^OIUC_kvH{*3)XO|mj#`qNGfH+j6?#*X3E`DH(4>+WMS1-%ky}~0Ow#*pnq5!x z8!8?Deq`7Ejn!Dqqsi|)m55(vSyPLP!2&N8WFK0@;gR^vqzLy@9(EYEb z-=%7{iOMxsbptYS$%arGzT)K}c()ISzPrfVG)_p3{dI$+&L+nM2 z%l}|b?mmOtKFRrc$~p5?@maigCFtyh_VKvK@yTbH-_`?-*kknPvs^N}e?%T11vXc9 zH|$d@KfkznK#^<}6>BSAb~D{(J^c+~gIAkewmRPodhoLCi>8jtIb(vZUT0m7$5*+K zBZlacLdjHq-v5aAt{^pbaEN=CstDzuHv0|L!o}J1=1t9Y36UIeI&D~B=X!LoBr~Jx95(p0Qmv5_-(^lPj8GfZ{Q>$NjQ zMJ&4aVc|#iRK!moefhEfgWD&%mfhGwsFIYkLn36PY`xKu6*W0;`M-#?y#DenI7?m- zzRrEXvGM+=A>AW^dE`u{nhzrTL|nD#MYpKc$erit|*kGSVEYtU)&%%~}p7`n<@UqMwWlWKh1nDJDh zz{s~flN9BAhp{L0B_*vRce0aB|3hQ?{#BOMSn~P){HXnf zRnkd*)p=CR4&RNr$XJH%x4DsIx?>L-SjEblKe+?n$HnKA-91Dsxn48Ra=4HVXw*zB z{GTpupmW{*^Zd2tTl4b%7VUIFZ~)#{$lQwOdq6OM)dcwB3gpPo{RvzDa4*Wl%PpxQ zX<1BRCcMXgRjNMqwPlgKrucuwWP*_>|L$+(zH<4>0-^P}{ZoTUjo|G8cVT8b zmNRaR@9!}QPPT{t*9c7~1HOHh&J{O$jLWn87Rc3;WUP1N{elOnO?$Wn3rOA!9=z}u z9Iq9Y`0LW{#ezbKJcp$YOIh&Xr`d_s@GHyOJwv}G{ zJ`Br%xwy~+w~`j*;!`i?wLZT!`nuKm!$mS+&&L#rL&#=Q|BSpmCGW5qe zKe(;+l*giblRMR8$_-c1@?U6bES!OPsq?e!qqk{)5^CRmQsZA!t^iI`U%J$tsS=e+ zN;q**ad=#B&TT5|eH7>_HCG08Iy7-KDV>?Lx;Oogk22#d=4QWFmFXdUTSq~5=&|;= z2kee=U@o%Ief2opRO7VRNl?t3)#T{MFS`DC!z){7R;~wxLaPZ4m0zSO9T5MuMN1Vy z5G%bQgNQSRFO$=7Ch#@cLD1x*n_=~MwqK#OR&0J<`|0lUhH=^5kEsvWQuvD{pc6oU~TAf0sKQTYjK9F=78ozLo9mYHFB6-SZ5yQ;Vt)BvWsU z(Es2H|JW4??iGFyEnkx(l6_v^83~Fy)nIrPCWYQ|aQ@PH@<}J`>eIOYtY71UqT{v& z>P7mpx*p^FXCziGM*pKIFUJMaIPKulq&$gv^NF2zYh(4ZzH7kBKQXy|ukGm%+hrc~ zzVosHhfGooeP@zd_U^MkKhXIU)_Rp|&k4zQ`|%&w|3#NaAH*uJt-5O{|40CSyor+ zkFzp8L_b^1&BjG8Cr9lY$2zZ=6Mg)YF0PbkW;yx!GAIVexx4HYmtwS09;es2V3F_Ujg4oJdAq1yzg2^;WFAhymogaC7ydD;f>W6eEm5`R-Ref+k>aIz0W!+ zu;X8zS~?VD{#?JH`xQ%Frr($gbr;nAZ@N^`;=Jor$d`uZT-KX^3V%tQ+>yNUehL3) zc3~xDSC8qn($3o-m$NXM$JXoju3pQ3zs2e6$CDvf?EIlb>{<5zTF$>HHub8MkQ_VCCmOnvoO5NQ0mLtoOgZ{sC@?l(2xS{;6U#lK6fg4Q=H}@sJXx zkp8dE+v2@=#5cE;oc%gbx^)J9^@u>zoCI%z+43PHVSH=6MyJpD_l;7ufhcmpVh{ev z&F<9#>M~fEN>p&Ca6jLFTp%;sT1=vjvYSpRc8Rg$+w%9eU)OM8?VMyzhR5 zD?T5uI9IJA-7tsUxILyMye9P7DYhil%6Tmw$H7wbzZrE7U*bvDa<3UIiZjsTb8Np^ zK1H*Lb+PX6a%~E+FyFyvRB)e8*|&o5UoVo3fPh=#Q7^B~nWN4adNGq+|4Zdg)9zk}y z$`QX_v;78;@(bsreV1N$35yWd|FvNsVuuSa=Fi2~wHhgMFDRFTOoOr}3N>ygzkm5D zHOp8AORE1367bE~zlE{&*XxUKpIW- z&;_MQwV)W10Fg9PD2j@T9eY>o*ilijqk>|`jvYI8RO~J4H#2*ufEWSKz3=~dzMFdw zrtCexnKf%xpV=Q4pY2bu>$c&iuMD{}W@@2TLhQ501I2ra_Um;My%wBX)jjgV1+Qh% z{Fs*a-@08eY$l)Ag&H`!U~a*a;^7&y-M(H}IQ2$rSI~{!8P0kqF23(=@^DLb*JF<| z-M5dR4QEFVyxWa>^7}0J>mK5jbDZBX#!*b%8%<5t+qydNy)f?*cW?iSD^Jqj<}7n? z(X;)T{F2An^zF`t+)<)5;#-cMcj7>)Y?uFe`^AcC=pGC=U-ja20p*Nouhp zH2+1&btbRdt~RNTZpA=kyzT#L$P^2s=L3!VZYbU{l=I^G?uYLSr+uDuVZ_hJyk%R* z%@0hQ{_y&q`=eycrP*@_8@_f3cz8^Z{%VW+t954QnIj?jLLV)d(_w*L&kqCMFS+Qw zs?XN`pUh^BX|`$TnSzVn&D+dg)!uRI^IbF6-5eaS;K7OfDVtiJI&;Blapi}Sj5m2B zci#qvOoubKyIWn{f8xZ?6%%~Aj3_?wbJ~JoAQ1(h>T+-*FY<|z_7EIaY@efPsa_%_l{isvE|Zl z2i9Dh@wL_0&VBFiSp8_6acqG7DWk2Z8+&fY_#YT$ zwG`ojX;=0vB~Oc4ccF<%qqrU~ANcbtI=EkSKXd+K|C=+iK8=wcY_c|XP}ST?=DEJS zO=mxhv4aF{3Z_=vakS~r-O~poo89%@eb#U0g=xKJu(M+x1@?YA<%Y@Pt|`s;7j)`q zY}aMYkgEws-=C&(jeAtNV&$%%pqhp=Yt)H4{S0H9&E91X7%{ZS^&<=?zw#+7*md^E z;=D6*tn;A-tB(c^_-9p1-w_`_`}oCe5?m^>Y}qX2!P?t)#Jq;|lLh^>Uf;+0!K=aT zPfeNJW%ipJ6PBGll9hDqSh~#nw0u}{=husF4m;b`Y1H8%-^P~anXQR1+nQ9ewsg}R zyQ!#+4vk(}wEyVT!sBtl=g%$guU+ZoJ>x-Cn)#98y}!TOU6dZQL zbNZF2)Hw8Z@AJrmj@V}$Ywdn||B~iSR=Lg|xNFw_N!`=ghjZ=ca_%lVvez})lzZRZ zY1^Y2ol~bJ-dca~*3h(t;!cv!x!oGa*^aw)@~9mk%*;nFU#ITv)cnnh7i9LBhZ{PL zY&v0M+jUt~`|=YfrXS&cUUw~_@Oti{&GVTZx}R!wZk3Jj($V#iK_frtMI4!%m)<83 z^<*t)lX$JJosq+vmywlL17kXhVtbA~v?1l##S_V`d;Opbex}^Nv}In}C!0~PH)Rxv zDJ_;ie#sam-S6CXSp?*i<)>deIZbQ&W{Sa4?(VO`qq6nl*6g|6Uyz@)vz=hK*mc^D z1-qU;jhekYE!NR#!uT&a`wu^AW3u4uwNu%r<0n3yQwdEVkNG3VopEpbvDviy1s+!W z4}RL|KInUDibY}NqEGF2wOuH8n6UTDtAw+|XY`eAKCX}oAKF@GRh7E7oiv!YY@rhq zmx__2*K8BNYk6&~z*Q(G5Guc07Yfc?FWjKFv@U3-&nobH| zx9r=HnbK{hv`*pYrODTad0;|v_z1yC7rGbX6pLu*(8GqSm zT1fGf(KG`>}0GPfj`R-uJ%S!Sod`_IsMPI5PH2x2>E@oSUpS?PHz5?UcJ38$FBE9)9bU(cCWYH#1oBwgpXkBSG_6?*iNHXSXqafe>ZOzWVCGZ zqzQvOw#JeNEoz>#D7A84Db22Q>cosJn+YAQ+Iqjqd8{8pFo{E%_<>EX@49PSMt!`< zEFiTR-YxR}{>*V@DfiQE-q{rY=5bgy%_rn(8%6lkf4Em{LwX*U8qXQ^aL=ipC{`2t zs7b}()BJHpl=y)OqEX*QcO2P&RENay^0UBc-3+@U&ot8Dv|M+>xo`Hjs zdiQU}d^KtI%;BLQohR8E4R;GWCGn%%Fmgl4|F9b?8dEmJUZI$z?i%~gNlWi}2XQ$N zDsCOVDQtB(^Vu$PGYdbaY^8`oIcSmo;`^vw|15amdTheCVk-xa3`y5hWnuH|yl1to zNSZw*+HdLdZvl3QKMp@>C!jd@+d0g>-H0RhgIf)cY5$Lm-(5Jkv@!chei1KgwPn`F z@SWXPd|GmSi7a^dgsMeW$=g#3rwsCs>kLQnLhr}#jJbDi^t9P6$I`57I4rpE;+5;*SX514Ic=FA$h!TD;3c#Drm8a2_s#?HQ|Ke7wCY5clE>}by*@|zvl z<(@-4KTf%}W2=?_Ji#YIE-v`+B7AODTY-qKpXqY&W0T>H{JQy%q~7wo+KTmR6D#EF zIl~CwGs|216bC#`Ghj7$$G0iaKQ& zE(liKWEF%h$ZuDE#bvT-x1m;)Xm8hb6XqF)kk99Ldo!VTGk;qX@>yIuza1lL9vm*C zjjn*Hm_WY}->u$5$Ng9HKegxo_@YFSRKTaun9dDL`Bi&q&;L0wn9g|qk49tA88jxi z-kC|K|1bad-+29+|0Bhc;7JuQ|F^5`ZW4*4M}pZneSQ7HEdBD5b|u;1Z+2;}Nmi`B zq9Ug>kMHa2Tajy`VCa|R1XWg)DoTPBxseqmSy@>biY$E@$42qKw4%U7QKrwZ*U#na zSCr){a%GBG{r4p%9AEw1+}x5J6Gegk`--yn?<*_H@+u1XIa#ra@*sswKPy9~$kkWO z)Az8~=R~%%vD7aqDJd(k%#xW@l-j(n$Wvs+ayXoV41Gn3ePKb4qM}?;Fs~rXzHFX; zc`ld^C@4@AW-H2b6$QSE@;xRdCIwmT6lEDX9Q_~< z{cJu%Q7V(gf^qql6wFij>MQsRS**T{9~&7NnIp5$0yNLb;0Nj3w9_vyFE1;}Q&eUt z3S$9v6%`qUg$ILzg7Wh6_S9-=7sP?VSQgW4$yWtC-%6cr_kibBvKMWMc;R9{h^QCg5ynr%{9V5%t5FU>Jh zyss?JF{vyxE6g@2EzGIRGs%n6{U>#6@`j| zTt#W20=y~QqI{mB6mUqHqSUf5%cLaR z#Md_nu&LsGnWD^uVQ-?y%}^AWynp{*kp(!)L{Y*hn`cr6m{U>VC7e2hL^2qT62>`O z7L4LsaNC_&;bwcab^HQBv&AR$<^1P%H>wP#SB9^*JkUMIzW;;`Wd)0+QtR9K#|LNV ztzTfcKK|N`SKVHC=A50_N$(B!>C_wL!<;_1Icm`IOh=nTmhm0pX=Bby9S0q_xaH)h znFsD{yLSHFsL|&?E$<#q$>yxqD(mJ#acdsmQ#xD*vU>V$Fr_5tH{;jb!m!HJ)ufdyRYG z3cHG(g9gk!pB3gY{hjmY%CLE6IhDejeyuj?g+%+kF_zubaXHxgt@SGJ2|Hh%Y&%F8 zo89f^`bjU&eXknTxO|B5s=zcwbXHOK6JdKR^xW?`MOtlb-e|JLr%~)Xqb@omuX^@_ zch7&bZrQ$OF)fFTd%wxH`xlz`eRAWdQ{%Ir6kmDY^5=y)ogXia^WNY*_l6l9ZPlXhFrZNQDt!)ed$JJ-q`0k+)gkyqbRhM-jPN(5HJom*1N0ab@4t1t&RAhVT4Rgkhxx`5;mpm0 z=7dgMHrKV;NuP?@Ye`eZ`HhPw#I18y(2nmgWe3iA`uN47%*F=&!a9?8d>#AY(voSN znN~W>ixYEwns`$$HfrqDTNE_wUjK)!A|CGOe$H>Qo-q7;VyA0vyPdPMNIfs_?s{pa zVT&&FtQ4_3485KY>UZCH;cd#(WcTE~0#0Ss*XFjN&J2arFmlL{(H}1?we4-W`DEDL z{)75ePRvX05#+vCP$@q1_LZY^hwF#Ci6Z23$E496H*DIpYtyb>hyQVL`80cP*VFpl zH($N~)Nl0<+EU#;SGFvbKA*qu{Fv~8S1(_lyKv#P8w0|_!v}lcf9EwSDyvE5kM-v| zbR2&4=A~V^Je!ZVjA8@E-g^6_-Hoq~9h)p%upmV)pFg&1?3x%0_mw(BqON?pIdR2| zG23Qk-})JSf0Lk9k=MQFJN@rJ{PJ4(oh=sU@7?R#Zu!bjVK0^~%i6kQ}fk=*z9{N7jQ?|bdt^bwDEq%qYoF8WNG~;w6tIpo!Q?dXZ)LUw$V(FJr8!yF6(k= z{#jn^2E;vyJf6xbnWT= zed~`WRD|Ddt0ysUCpqckGjhhG<9!l?&-UA}?dr|&q-o0!#pgT7BrKuSfzL}! zl2HZr+WEUmM9@6U|*0#mSB4u8rob9?07`FlqgOq_qPQ*A7ftJBYU~ zPLLPLT4dFwM=Wp6z{Hh(BFC`B>j(3enKf(6A5oB&wb!q2LiU0p*B${yMMVY%`X(mE z78cD~w{B%+g;6LD#^lBZ`npY4#0&xsp?y7G%8%l}<_RIOCGN16t{G$U4`$`!L$*`1v0DlI`1VQ3fS7-F-`Dlgx-x zTZeX56xkSuHbR@uJ@pLz4Vk_4U1>~HgW%rHZ96Sn*3qVk8_C7efns6KB$137q?UY>K44$C`r=xn_BRG@y7W|Z@kl1rCMux=N2T(+6o#br=H<4}W^ zw5@tAO&=NR>lo@a8lEE8|#ysI&`9O?vak1HFU9P=1+G$do;g!vsR3g zmnz0tasw^%7PVOIMTkohmDO`Z`xEyx@WHAf5eCqz;89So0XBdc=?flm6tajY0<$upp$vLPS~oXV!Qkc zLE~;U7l)o)HcdC)w~^UOeKSwWmb;yF+qHi)cIXN}vgOL%Nvl?GXE(RKw||S77fGl1 zl)h!v?4h1II=y;*D(Xj?q|=&S_2!_Jjl8MO+YFQIlA;y%O{_Ph-z53iW%l1E?pjnA)Xx_C?hVy9j4z1ZzNE=cUdZ#Z#$kq;%SJS9*{J#U&;GfdP4&pvSytOj-ZGk4 zj3^qW!YbQ1eVzd6LXB9!`z(4U`T|&8r~k z7&IY8{2bc5;|H-$lU9$fc{-PTo;O3%_w!J%ejU@wnm0c3Y=KTlUf~6AahW)RlwjXY znn`LNkgscdv}{9eW1F;0Z!-1$1(J?eH1E;;{=4^{*J=5F4auN|N0p~OXKLVB-Imxr zp9Q16;`LdvqfZ$RXlqj9)u=7s^Frec8pE4o9yP0oyEst%S znPEacmfP}r<{6UrXK{aq-kSiE#uUcTOda!;{U17+pKX+Du9K0Hq%-pVy%3$oBy57q zprkJP+a6hZW}51oRguydQ&-wHE_LpH)oT|i?5JKV*IR)*uhY6O@Cj>_zs}qxcKBM| zCL5|M4cirk{cO{ua!0bK-p`YUB-584NnXJ=hE4+yxV{hbG)SrN*Clt!JGsuxaNf5Z z+m)_G;|mfQPMN0ecAnNGgB)t6$mQOVsXEPb`W1B`d9J)?Xp=j1{9Ye@@d8QHyn9a! zTk1Mx8n?~5=cV6+lusB%T}f`fW-S`OeN}eZc)j^pJ-+qLKK29sg2!7P zb2GH?Zbb2{dNbN((yUj<%==fp(QjS)w&+-wcWIMMeY=`jY@sP6v%}0+4rLiTE_TgK zWaNiu>TbTUQf9cSbk<#iYX`f(Ip&^|MmcR)G2T~)x@*ALyUUAQE}Qn8CoCeFlbU%w z(|hj{V6b+5Ki8&f7cQT(U2jv$9Es_v_KMZEHoi_%P0QTdw%grkRFQoniwq9Qs7=zy zeXlw#s(M)L_ZiEa?ciJGOQHmA<9J%ezI8O(FPN)qJbma2ecfAqGj**WMzB*1t?bK< z=1wgMJ4&*bcC;{CInlbcQDBq6aGz$bCYJLsgRrH+B!fi@Mwxk%T1@sNdAHb3570L? z%FonoQnjfIkWl}Z_5L+qztR7qRIY@}afnZMATDsAGM&;~m<@^s{-OS#&ZN_j{%6qW z3}=QD(En5?=Kt#d|0}Or;(rUke|=H>Z|#^FR-{_%|D`Me1*5uY)c;dy?o20lh6`T* zzuePrI!RssZ$W0*m}hcxNp-9L*Zoe^|C^9V79>(9T~b>eQlDm|?)oH}0f}KmvNt4o zn~)+cN$$oZzh)$fF)7QMRKO&SG$ze$PFmB0B()?3kx7H}NaHO@ef3E3CM1qIsVs|h zZvts&U(yIm(li@V*+|mJwxq&=q*ENyvs}{IxrRPEq+|=yQaY(1f^<<%N;W2WkVuh6 zq-o%KJCdw5>DWlCqioU=d(u2Q>CC!+PA>{Rm2I9EK?>I+9f%;^UDaii2Wg2PX%LxI zI)bz>k+i{|^l%ZW>gYdnyOYi&llBFX=Gc&aeo0)-AkFY6T^~gfv?0CR*Yc>8G_@V6 zB$@PR!#@%o()ezqO@m0|+L3O}*Dae$+MQ@NuLo&|59!8u($0aTr9DV&J<>=U()G!P zx2BPDBXo{T(=X1@*~BL04Kf|6L#oYPkOnF^k6#a%Ol>IsXDKY1uXACnxd~$GEVnuw(;wtX2-Id ze!gZ|=uXYf`<+RP+f&S>`bq~+Ne-7hARK3;Qwb28-F zdZTg~seG^B+Ww@9HKeQgW{L;oqa*&=-J0~QNN0IGX>&``{&9`JJr1fmYyYt<3g&fUAwog5wQ?PI#O_3ze6;?*v}t~rn1DvsJNm0|wl$B%bU zpO#;~`0U=@7f+wux^Vt_apC!+N6sDG|Ki%U3!9eSI9YOScV5-)+okj8?+ggoXluK( zMT?!bwmaP1wnRo2r==AO1jluCuaZaw(b1cHeG6r>t83Sum^A4ziL^H<>CwrPmzOQO zwR`uHu3gu+ZoRlgi;b?X%blI?9XK$(dGk*sQgON?xYA-Bu|K81vAFFudFRewJM}#h zeY5jk<2EFnll?PEhL%OyMke_stBr?ZRGU7n%4S)U=I)x5=Qlv$r4zA!_KnsdUHzGr zty7ON!eecN*X);HF1Ydj#c07o^2QA*w)i%ZU4 zUUQE+Aok1MHS>ccV+QqnWt)Cr&%wFZyUe${RNiB7&fcDfH>Unfa=17<(3!a~Ae$Rr zPWRc?**_wPGMja+*OG)AQ;tz5E{Ky;Ou~q{Ebs0hqp^K%xMcZBMbi=n< zKzZmu=@;v>EiU&xwK0Cl*(XxtFOl(E7oDHJcl=(1 zE4pSsNuPeidg=MjlJu1Kqc1ISywrA$j2dxr{fW8njzv;J<3e=?E`CrEIebLHtVG+l z$I8m5#}6Csv21z36XP}Ij6EykhbQniEz&Kvw~3y*c-j4zv!XY-7Jm=Y`!>aQRlv;k z&u)0kUBS9+%pWaCv0ibgUr?gX`>(N9%MK6FKegO$$23prl93#e!_auUWp@_uObJNN zZq&W;%GOH;QC99cd1>ymrO(oaH`AZlX!-!1lWf`S7wcQiP%u`!8S21q_CDg?-Ljh@ z%Xaw;JQKS-d;L4NbII(Y&ZOlo`;GbC(gZbqiOn)d$wPS%Nw^dp7lJUeB5>G z9>*uFxV4CPXUwOW(M@bZ8r`#bGL@Hq^g8!mR(yh;slR8_pzZHs{cW#K<#(AM*PXO+ zqxI`0_9xTKMwmtBC%^3>zuJU1cK)R=8RSYuVE*RtzEesfXW#DM=v*Hg=kPBXBSzix`ov-|NX6qHGJ*5lMr|McxHPcb z;XL=mq zziRWqBFVw2<9GXM9l6m(_jTI@-#s9Co%!;7)?Sw_+=fye-U%-~Cxu;Byj{6p6Gg@l3Q13)lNzeWlzYL1& z(Kp$os{4W6-6zky*e!3|&R*0enWDytGJ#d<_`r+zww`;zA+0|(Vfves-CRzrdm=QV zP%IN@bc^JtKc;_~kJ{4lG)-gM>iWcX@8k}sq=lFt5?j6R#Ky2aS!TL=G zaHDOb7ro5f9AvY@J+5o%c(e8CCuc@~nbtjc{j*AN>*}buS-*gkK+c^$>`mp2MX+`F|a~5lIdOukFiB$Qul42#i+-AiJ{fOBgj+6#x zrgfqpK9VO~_t|}=_~F(q42zk)A4}=xDIc~@skjt8bRyR?hi>2g6#uYurS5|kTRPuM zzw>Ar$?3?X#L<;4#;0Yxp;Wb9=CW@UcjBE*`fFAewse}r4I;Ch<=hVu5CCZuJg)6d>${c3xuflgPQep^rM*gT=)?e3gA z%#s#crdW2R1aX*0_I$ZTDp5=1ps`t8Ci}#s7p;2}m3b~9u-1&Z) zoEKxZr*Qrnul9jmj$bXN?RKE0>lNN@b>MqP>L9_IqBHhe^X>PXKC9n4?n!{3WJea zj`Ebqg&8UF^K}A`B|k~~r*q7u_s<9FSYG>Z+q2xO`>9;pxl5yjk3W{n+HmyxiWXS@ zcseNIs`HfTGZLfsl|EiQpLBPcy<;HVWv}eimbXU+OuTkD>Sl`J@b!DT*d9;opK`0$ zvUB5m==PP~N*pac+Bt$ZqBGs)@PHpA>$v%2lA1 z_tWb688cU;|NI&{VRYe@Z$n>v|2i_`$>C=I-0w1X(2h^T_FQtTKuus9dj;S8h?MMXmtABJ9}n!c;E4Q#QtsX zi!Sb*Iq%@$=z-w_qoeny#_>)qZ+1av-N(w2$#DY$PuYYn6O^&6?M zp7PCac;}madEJ5zy4&k}W#tD3>Mw7SJa6F1=+p`mgF$ECzS^+U;L3*SiQT>*+`sbl zfNi@59orRfu&biv@XI|(oJ9l3x01&v9X#D-f|GTwi)=DKrI zeH;eroUu1AT_;ZcaAQ-sxH9g**MW>V3oLHWoMZN8-jnQLi!IZZtqNE~ z`*y!*Kzm_KamqVtpZ4;@H=|mb4PzWS-Rndb2T|T&ixc{*j-RGnYkP63SMX%lyB}hX z-=jb8bjg!_FDy53wK%1C#)b&R^Tm{HNBeDYYO*)Z+-Rgt1@FT@-DA7m=*)ZX)G6{K zgGqMpv}NID*2V*4iUh-iKVH5b=xA_n6aCfk=!lpLFU=XUFNdzR*|H$~zVv02oq=2T zEbg(|meP@WNbFnH(XHE354ORox@h`ffJLXZ^1nF-m-P%V@nycFBk+SR%Cf! zoERDF#M95UPAT<`o;7uDmknNb3}QwaMWh~R!<*pSKmYWwol_1|b^_3aZ~FI87_1Mi z+%dIzwB8d3hxadf^N+mVaBk1OY}2T(C#B zxzUzMk)yW$XfyNcH{HJLdnJ9E@G^Y1;f@ZU+Gr>Ax7>f&MT1>?7S zhOyqpCRL3p{=93n$+j)DN|$f)MK`!~{oH;xI=8dOpZnlkXf}X_^*lw|d+6OYd5m zZ27wP;jIrkV>)NAypMIbkQG+GhTMwPepPf}&zb%7dndn+JN%S(q37EtAxq6mIfCO4 z24)W{>&89r*(cI&nVF*(=2%IxBZsYP5gRjw>6Wk>a`j3?qdGYq^ovk z7d7iWGHjKhx%}Q_KmVeyhf{Y|*@ey?!AdNQZu03jIg}C>U4;8cG;R%8&<4*v+4a+r=+rP_^QVSun_RJSHy7sb(O>iE;9F6LU52`n{sx;v`iM`6 zzKUa`UVoe<0Bb;$zqZqTVK8IZ%(#dJVMn)Dnd7Fi0 znpkWoxv*;TfJXrqQ~SM23M!vG`R9)PZkyI~j?YND?Y3sXwt2IzJjsg^kJ{Hr*gK4o zYckENxFVv1`HGcU6W8QVVWiB}J+o@b)M3L-S;Z#SN9kBZ!6VN2sU`Az+2sB4v_X~P z^3_I161=BbaoC4X2~$fpl}zt2V4HoObzzuiMax}Z@|`x7@IyB5=|+x`Mem(HUm}`t z!#1T=oJ*Ty3-9|3K78d~F_X2XfEM)Z{8WW=bAHvx&HL<S5>7&~?@4hqVWJb+;AHVeF5v$V|uU&g}$a36@sI+feazD(u*qGJG zaMO=R*M54~Trh}FG(T*_rn$Q8CUjp>u$fqwshXA zm{!}qm_FG~@ylGT8`_=fwXezX7bROSOZs%#rg%Voa_VT$@mq)OteDVu$hhoA#W(JW z*8cc>tLHM^tTMav-otX+U1>dxt>`!S>YF)B=QYj^-}@@|Zp_c3XUU2syEYm*d^*`& zGMt||?$+S4DbpHlxEk4cJe6VNx{+FxfBK_b zHZZx8>TP$~LRhiLXq?@SE#EtDHeO&jzyF7Q5$8|nh2Q?NEhg}L@2Eq4Q+%)c1{|Bd zcacq)Z>N{cn+nDKce%mqK259a@SQ#N)xvN4Z(a$RUovj!^eyC#gWkk%{t|n@^Y-mz z>b>uc$gz|1ox62mF8c69;C*!V-StgJvghSnNN3L%Y@fRFPTq#>;+H4#X6{asx7lJc z+{@YL`{k(6@aenrudSrJ9$1?Epk=^fy>M*C0r#eU-gUfL{nqn!|mh7g>mJcV^;U* z_;|VW^}F&f;`7VCl|0{m^L*U2>o#Af_&hj#{@jz8GZSK$^f^>*64~Q zPn-pdmR#tjXzh_)x$?5Jb5n<4k70*;35R{ZH{?+4_TgsB__-r?xxBPn)<)E`jhK71 z+qP1hk9QAlOF3}6=~S!LKTcff^wnk!;d2Pu1%$>F@HQv5A{l&*+hO1W3x^N?9!T!x>o&{Z6KBV;cM%JxJuYHQ1y|ZtU zDHW0t)W`FxzCU|gspsR>ci@E6UnaGt59YpjEa6Qs^PB6i`f*3Qe$EM5SBmlS}~@?<>Y<08SiGAdIz1&U%K6i z)OgVdU6bN(tuu>Py}s1-b>a@AAqj>>v~(viRz-DBX*Iv;kIg#wC;YtfL)XUV#st5J z^)p~Z{r|}_kKev(&;LlcY#B?K$mhnPOi-MdE8#b|{NqpcA5>>5s{f!nIWt|rh3Nbz zn)CniKmU!Fy8dG)`uy|f&!N19bawWvRe3^bN{eAjNePP^4Vmhdz2oTlDHid;3fz3q^~KrLq@i7BaCpm;HqFW2=@ejpUM9Gkw)K{eh;H1n z(vzsf@NJ{7x8Bp-(9ERwO0(esT@M*qTdfR8J4!w>Htff`rovqZMulBlckf>ls%Jd;@2oTQg3Z^lZc6& z{=O4-WK8jzmaIdHYdV9(ZZad1yrc=6)NFe0!MHQC$wzdW_?^9=7j@Zq#g1`}b$9GA z*f&T#(O}7$3vtmL{X-KQv7_`z6Gv=2?e}5E)u?v;>1L-d=#6+Nyy(6%$#8LF(gq#R zp?)27hF)-O}P>OyiYP_pJ?lyrrv&yf|rh=42hVRco8cy#t4?5iAPm z#`ImeeB4NfHA4EgZ5{V*ioR^VF@0$94r{}9zLhuk*qu3KuG9ZpTZiq_CO3J|Y)ym>`;aex*-$^F3~k9nbeE-7w_3->zZSTP^ZOJKS9R_|g|$L(gRu&Xj!* z_kV5D=~LuO@!k{WJ&(5yv`XddvA z+_Ooid(*Bb=jLQmjTHDU^{EPu>uP+@v#XKQ*gzv}j^Xaq^{q+Mn+Z{jd z88`I)8uJRPu^c%m$B&fqGd)m0;J(?1sDO}l{T63^`LH@6CyBi1_L37*j;^)S*S}xk zH+Wg=l`DFm%$k__SjX0Q_^$8Ni#mo$-kuTf&00O8jC$3Q=e;cV*}5?gW#LI4z9kP% z=J>um_N3Xk#Up&<3sdHIHy>?qDtZ2{QS&#n(%*1&t!qrSdzN?3g%Pd#>SVFrBrkj9 zdh6lt@{|`Z_uQM+ha9`C|8uhgUAY9zXItd*D$a_eAl*C(oaK zTAg$2?VBpAFZy~UQd7L%4z>aGKoy|}4*Udq0K1^C=M_DTjaBJ%O+MJ!tApY5P3`tI zI*Oe%BJIwdu!{cCcdAztyD5*&PFH5P_6$f3HM4%Q;hyfJJk!khCnj-2PCD$ZI5Nz9 z)nwY!dm-59!71`|8-C*qz41DkLp$2`NHLkzNvJc`EqlyxM*HAMOViaxK50$KMn){M zfnnq3Q+#i zUCPYw*xW!jez=jD#cem|*NyD>cK3~$i|@CwI+dPy$C_RBb#2DIl{(Y?niuWzy;oJ- zQRioe>{5Ms#2UR4`(d%U8^`uCikC*le;`FH>2@jUebKyGN5VXeSI5t7VeUEBz~@=I zW#$!c+9HcNEC=y9@myQa@%``RIrQEwwrFwSWy{&N>~2%;h8gx;JFcL=h130Yp8Erx z3zmj|didUdPKn7uy?HMko)=#r^*3VQjw%>%_-?#~>yUf1_jU?x)~w@-l`8`W1WvT^ zlx590eqo3IwybTWl>uSByjHx_^)wl~%{3HbX8&x`WXrC$VW+U!i^!i@Ov`2llciqn zUxMGv@j54Oc2eInd*R|H-QIsJA?dw;+=02M$W~``W22SU2A`))(5HSI{MoQ~v+Vn; z^yirPmPVXgn;RMDU>eolcYdpT%^UF}Tg~y#bxS`xeZ#EC;(^Uropkgh0g|E)jq*0c z7?d_I=wv`T`Pq-*f3ns6iOnbP4iXIezG|9_J2uPAbP?l|Cv9}0tGU1E*oKZaDNjF4 z(H%c;^%aX?lPaT@&qi(V8F(f3Vf&Qxm^emvydmjm^R$2mO{3G>&`%027}gsa(HAE? zZ8CrQ!~Qx3u3@+J9Z31faRxb4itYDLHQOBW={EP&j-YN`lJA=BqKzDza;d|hjx#(Q zW@YN?Z@92!#I0skGj>zAdlxzAiiR?_=@zbft^2Q6zKPC zT;+MbOX;*TMs}0UK9pJg{yn$VTkd?mdx_&QE@sSOi9~)!XLI-m3!%`>4(iJ zPi}klxcL0#p1bD%w};jK@Aa?0YS;g%JmJ5i`qAr;_5Vz?|JRwpq|>MjXK+1u^S}MS z|CJZ6|GSd9k{%=H@AGxt;YaB2_VpNh%su;*=Yyf02Tm+`HIH)X+?6-$m`MxHeZALb z>Xw@~`q^fzzVc#>O?(dZ>2T}EkDq_O+2*oumxa6U+`IFj;M9{JKYmo5)s5ii518(7 z+OD}1WBQ1rt|5cg_-7RLPHVmT(1X{nU*F$nxbNbNiWl!sEbMf7J;uwkzj)*M^(`i! z%c(Dp=_c>*Ub@l$^PQeI9=<8bpPHGI@b3MG%J&cB_IEyBbnL~HfH{kfm&|Ot>FDFH zU%o^y#uSQgRX5M1A94Kr>0#l7X1n%pJzui>S&rbJ-V5(ko?LL8cXoU7p4+oOefsp} z@wK(5N4|RY@$*C8{Rs1@{I*xu~AGhcDneRUoKObAoSuy_Z z<`EyhD1beMCI#73a85{#e`b=#jnA4eanj@|Q>SH5Zar=oCzzkWX1n<(2M?Q`Ju^7j zkQ^IpXx48-zckO7Wm99^ni=Zptu<@bs8RFw&3VJe&74|1G1$zETtHs8w@H%&gSpP! ztrK}>t4|s3ZFKfPL_l1K^HlH1hvSR=ubtF8v+r!7MWnTLT;Bli)NvOB`Udv$Gwf+S z_hJ9tgI+J+HQajK_@;Ip=eQ2oQ4%<(>402uz|g1DsVS$iLg`i3)aj1a*1loGJDr(^ zIgK|o!zMI3;hoGGTed(PV{X&VH7|qu&S&hJjtO7$C95tpm-jH2+=?1oGG}79Y0a?A z$fD_nzRN9j!=0X=Oq9)GM7|mK^y(V@pL4DTg{=u|v+RbAQ>OtX{#mY#7(OsdrK|Bgtvpi1Ce$n`B*I>EqwFi^*V%@7Rx{3C)(9TKgDUF*3&*T`6wa z(Xc~ik$E%5zetv}ycYZ7f$LK?d+ z%zML{1#QM}Xj3$+C?{)Z{u+bJ1Ny|T>rhqn%xpzS_f4xz3b0Ma^t`ZZ*qEo+J@e+D z>sDdjJ%8+r^#`_|$=s+jk2KL_7J1wwoljp4ZC1q38tPy0Jo-%0$!)8TI8}DYT4Z)a z$33g?SPOT4zX?-(o;x*OIW9VA*n!ta@^$x&ABr7sF|hpPWBrykEB%^xNXyh|(W8>& zw5yUbFn`lIQy<->HnT43S@cw_oY~Gokx|^*r`1{AT?d=wF^rE2T~9Vmu&{1yH0H?c z&Bm(_Wo&7ylXT0HIRRT$(!{=~XSV|xd++NSzX{3Q&+SEy5OO6ljDq=y1egOBAxe;?vLsyaHUQ^4vWFvaB@QiQ3AjD2ley`s zA_+&T0Z8yE78vT|;sTETnzPED#HRIBg3#%ZafAi zFNG_?!u@?PnlsfI^AdyBxLA~smxcxLgz_}ZCp{5Zy;uxje^IK`x_XB=Tq#?^6GJ?W zK6znik1X04EaeHre6A)|Do>V#`ScFNq;j!XB#}|DKpDo9Vl0f$6YyYX(JgQALB)7T%kSDNqdAy^ppa-iuVrVvxJFqRwC$dA65!00)1(X z$-vYRGd2u-EhWB|O4vQEDUJdbk1rEZhJhh_IO4y72KhW;GA7~jds<6n>3ps?gJuoqg!{G@N)!zVIvWJy}0~YKR-a9ZP0&{SH-^f_;U{2xz zD{&<~t)0Nsaru1WX4PjYUiqjunP6J+if-ASC*1A`OkfG&5(@XH|~ z)g1~5^!D-z2y~=UoUjbgI^4@SR4Fnc#zZ zMu>R>WPtQlvI`Ok7}2_QFO7Zx76sS!Li3B$(#RuTg6OE(fSAwX39Wl2NJIkSjxNG@ zskjIJx8~JSNOO43Ws3v3Zz$qO}z3;B^*gCWDbdi!DCp}qqMmV}-4 zh=+#<43~>!-0BMii|47?J^_dshg3v1cR(>drw4|w1bq4c68NKf2N8`1CGnCRyuAV( zfNbLqR)WEf_hEr9bERA)QLGbq61Xf<`PM*`DCrDk(=eb7Fjvz>|oCc1Q{WA_GAuU~%wvlRzf{8L$L77v3h9%JG|kf`E(Mj)Hk%i4q== zm(^Xk%Jqfx6t2_kaX!G6j+6^J`m35t;Ynm*vdPeZMAy|*@2Q9h z{%|E+A)D(cNnj&Q2#pNuUP{G?#s&c(x73`1)YMc;DjlA{;Rx^@t$V@0R0)9s_T|4WQGKbj0kS1LWE|z!S0AY}5zqUUf86V2=>h zQlZi(!`4~Cblf0t(rDIa*z{ja({{OW0f~MZ)EPm4%p(jZ6hd1oQ?Gjw?)o zix-j}jX`Nbka6a!D{~MNE5$hJfc>qRC6+TX)`2%B1EL<-pIo#g zgj~SaQXmB}XjTFj3}{*_oB&*w>#pw?nx zQQ<)p%pXh%H;sk72Sg2-Tuf#uB`Q9Oc%ngYXOB_NV~I$F zC?vxi1@9uLX8&&Twu*1~B2JnGGp^%N7 z85CD4g~kN`(dn225W>~(0jL0^rXs9|UgL4NKvO{?B6$L6oWK`}#pw>XAIJf#Ny3Yl z!?hu`2aK5ftMKA;lUWpj9FUsNVkJvO#F`8OU*iiIUk#dz5aI#eXUhS@K=UgVs#G$E zD-hYkY2|P^JX|&4Y8BWlfkH@Uz)be|3YJ1^M|0&$?dvvXxQtlD3IvP?1<=46ML zTk93S*FJSIGGJHj)Z!A*o6tYCVhQAY84oUZocX%}et>HqcFi8+aVeO3QP>mj!F;IR z@@r`l2s0o!>TO9Ok&7%O0T)Pkjuh+d7io_L_<8x_<{nUuk(xumgB)FewCVvQwS)zo z6Uf@BED3asgbBPvxdgZBSqQe^fxAkNgdnV?L= z>>m4Cc{~9Kym%>xSiAn~m7#g9`*}g(iDs)$norbgiFOnf$m_~ue z$H7+N2L~F(l|t7Dssb?qzW#l;1fmhZLt+u#3dTSE{&Ep8PFRF-5(?j|ED0h=2H3(c zP0SZbpsfy;T|A6sKmns3S0J>4)Dj5rF4VaWU|y5q91?~;THYKH(3L`w44HO7N6R?X z+ade|RwB@NQYa1hfE!YP-eUn`AwHK1MIte1R_lFgMJnY2=P{`o&y1!rnaDsu(gkM$ zdyMMFZ~}@F+Aqin1UmDN<~fWdqIE!Xa$;Z-IUlaT(awFnkt4{10#3#2Jh2!*GLYbu z>MNTIyf=yRV(2d61QXWU2NqkvMN=jv;-QW}CQ3wc@DdK_m&Pa5I~c~$-jH=KFP~sP zWDlylk30b%jF7AknL@-#%6QF5EXB5grBIO;9P_E)ZmD;f4MG|0sau6Kg5RRNJ zlR5(LLC6=eIO=zC?07kk4-7Se*}d`GFrV(-F(!pcjE9R{Z2|bf0aU#v>+5%@7C}0}O*z!^zeB8rKjWB0@nxtH77&S8e9XZvupx0l^vpL(Q0A^~g;U z97k;dA-WUBL;<0iL?zTU1x24AN4mQ@Ik~E0YE+67MaGg)5=Q`quKrHLi-aV=BUJx| z{!j!QCg4mC6Bw8c1IFqJ>=WP>(%Ub>A=KMHD#FJr($AL?**_AVb0K65*n7^Hl2>kaNB>C6zwUGZ;EUcbbN=iqBg$4%sh5wPvj%eA` zj7H&N1T8#dk4Fi?I!Z<>8i@qtli)rkyuDWcK_=@(hUqwm5orlnwUv-K0tGVJ9L=xM zR}@F3;lV|p1uST>JA$Ta@1LWHuPIidq`(fxwR=*6*FQZDicf!UwH0!AQIdopMjgEvXYypD%W3h`(v zj0{0NiABH`5geh3c|zn4JC>ANVdXH6~Ss z0Fi%=oO3*Q108g*WN~+gh*5Omvp{cpsK(w!f;diCidzov4$O_~(S5#rb|)yTV|@(3U>?NEMz4f=OMtK2`;3Xc&8~Y_Z z6bV*=hO&lHYCl4DYv}AqsG3E5ARZAs{B6t1r7QVKd%vyuW!f_^JlA~f)xr~#3{3yI|t374rd(EwNksX@pU z16WBSkxE(MM1{5&u-)+z1;7Q$|2LI%KzCqhlQvQ<|k zsgg1tj=)EEl%ohWS^CF`ZTP&R9E}hW8)X2LGKr#Px|76s^t(Qjt%{o0KGy+Z8dLq- zM=bnXa}E2hoD{r*1DOKAtm1Rwic=Lk;PVq05sJAwJ5k+fPEJl>in+;{P%emvkwQEu zRBe{QY^6$pYEDHk0u%>UraAzRK+(m*eHOq9P$7bqjWZ6CYLJo0P_#kIDiKSP3xFVj zJ{FS4QaKL~%%CI<=qwM9=W$`J8ifc85n`T5VWVz9K?URwR3n;M9F>Vtx16ndDX4U> zD&9+&fq$QVM{Xfdge>5@DMM$tRfL+V-v8<@v~r{Sb8f<%M2K|hEq1uGTi!UALP|LqNhVBrV$aqVgb9r+a2()9H7VU0CiPQjWi`!#&(B)uvojhi&Ng#6Qf!Klimk7k;xcda3F$GLd<8SSC>gD^~Dn=h@g1G)mR|-gv495 zG@Y{a2dP1V`D@jOu>OQ7JNc~*tDzrKfL7w*3J3R#)fy;Bo&=1>BrZD{tb#<~0a3_* zHtPOD_v6km>UeFsAN;Kr57fv=YB(Ai-zxo#dL$AUwI>n~m7wkx@HiYk*P00ER#)h- zSoM$DOSQd0WT!L?4ds=ZriB|r!?bYwt!bfAr>iVNRE3>YCD9D)YQ?qqU-gA>0Kf^a zR!m#3!K;Rbva%WjtMQOp_26iA8C!FL&FlX=|O85N2UDfANX(=Q7J|c`^udf?5&{D>5yqIwz@lO$6Q#EtWe~4=Hs2Rm#C#S{z?EngtgF5xGWpPI z3kZzBB0~KmW4yxsfR~Deg@;B5`ubtkUJ>Aei-bnZ(xK^ zkXK-^pDzUq3;~Fs;Q?4gfLBlugd=-JMFxQT!T*B-ef&Zq{QNL)Kk(kmJID`j8H~#} zFx<~4(jGLRe&+)S0QwVT4;HPTPau5b*WV9x-Ya~7JsI5S6AD`E7X>Z?KVrUK!Ct+= zSi1g!1c0~U;5IOBazvDOL}XxORHPr)J2ccc0(KN84?$ledSF4J5r{fb5q|an zA=1kp{tlV|qyayJ_uf$vfsjam@{xYw;Zb3cfuSLGSU_luU$h_SqgNE1ElADK5HwUk zlhE)1uu(_@L~J0X0{p=DU`j*CU{sOeUXTP4k>PG zF_`O!K)es|ridt?0D|1g*tMGHiE=#+h9|yJb2~KOG>evrEfe;b>WQW5wQeg_21b!x zYEKktg9VLz5>z&)3I{8z5}`v46O4FWq*_>DU8MjS)daEPMJdp^Bf9^qaYyW;f^GsY zrN(}!-#pv)Z+;`ts_#Bpsn2iZ*Vd zt-$}+JCgtR`ft8|-T$vH9R9a3z*>Nh_xs)XKk!AOI#Fp18iPS)xS;+23>pbz{#zZ; z_WJ+%{(o)ruUR<$HyGN^f1tuspPZ=p`HxH|I`{@$??R*g@BF9#$_qdL!IU@v!t`G| z0m4*y1cWJBb?AZv7696iz&o)>nDhdS20c%i2xw-kt8z1fovG?n2-80u3!!RTTg$Lv z>l$sMMaE0EvzUg5D{)0fng5ajXRNvPLHd zfRBVBh4MJWNBC=s#%EVNLy0~^Jn%c>Hd?QG(;8XHrsM!%1)*fA)ZG+q1~SEqy*0y3 zXyDdL^P0fBNHnbo@TL@;)TvgSf&(SrTzC3g7I{PV41)S}G=V%eJQzq-b42vP=y!gw3LS%c?%=*CBECknRuhZU_WIBOR~bOa1%yTg`2s(lmCP05vAIwbY4HlGqu66W z(ZC=?LonQK4OEdgko@+Tm?dE)N?76~jG>jIT<`_$qFT?86Ett9|7LK+rzCugFmr3F z4w%3qBP#Bvo066P3*pL8>@kMep4J?CBQ7fr8J6&`k+)Y&?vY@ z`tvKw2MYw8BIKHqL*u0)SVjYGR*@wEMLxh^n8$VCa(FV41jV6wLIGN7<*pYbO9qwj>>xG|7M6A3z(&;K0bgY9|N~hb2YZum7GtSbwfW zl=ipngi){{F7W>TvK>`!tKscL!XtVlLf~Nm6~z62V!i-7%Y|Hw>gMK#%bl7(YcpCM z98_DY;jOrBhZhp_q(H<9L_~{`n)^|d2b`d)33WZZRJEjKXi1BeC`2v?HKe*4R>jDL zC?1T?K~lzlVF{94Dpl5#N#PbtsSGb16X7h$6M&{u@W3$zum>NgCRoe@ho(GkLoSiP zoJ5?e|IXd15JRt^4X7C}QZdRw9 za_FFUzM2(s%HIWmvM_8e7ZQPU3Z%1-Dyj>NE1=y8+N;0r>SKrM;#5S85V3h&SvuAg zPQM*M^WyWdaO89V>mC)t<4t?T!=iDvOf{X{KRYvaL~4;G7W0Xt931%E6fQ0|tIe*e z3=pOOz?Z-v5lK*@+#XAUI07&cEDToqz=BKA5^96U^{Y=_Le)1swmnW=K2Y)YYM@#V zt3d4t;GPZ{OPUPJmeNIFKH!E0IdP0wl5(Kx!*tL#4dMg~IDe=WjX_|d_+jwy7SJ$I z?KscleYIB|90VHV3Z=xX0zA|P!N$sS3hXg1G_f(bC#`yU)gXq;V0g}00)A)&Yy<76 z;Nk5+jsuRma#M>CXiXVUbqp1UC4&YTabN}d+8*X_@nT1!r+7Q?6bw}8C`0Emh`H$8 zLVmh(MWCkQxoH0Z!3Gk7XQ1qWU4kW!@z6oXH*CP<2fP#5HGGak43EP_hwdfvVO`2E zQ;cu$Lpw(B>P^6@P83|8R68dLZb?CVjw;7NWy;viZ2D7lZc^%IO;pq)p4nil(gR?gP)aj21-p?)&e*(1s=5nwK`nGy>Yn@ zd?c1Yz>?J3of^1sKnyLokhy3o=JJv!5=Uxzhxpf**!4w*V^(pOH`)^w4tI(DEpt&} zM2Pu&WWZcX)>3KmFyPq=;3-P=La%`fV<=kI6CKi;uA((k8qs*Qf4zrXUt}6YR?<33 z$V1yUfa!y8PY8s{4qB>p7=8_8u%M_~Ruml%B+w~p9>cj9M%U7TQcn8|dbhwx8Az4-pDw`8ET3L^YDG4K6oCl9{4q|p@7z+v*9${5xc4i0rI15R{HtL!fIQgNdYR(OLi$r?<13-abikA>1@yqZ@VTMGb5~ zPMS8oMR9@1E(C5c@)coV_OCT24Um)OtQ8p_wTs56SwfKzI3;|grw4u z1h^(N9gaz>_MjprqY^w8j`H`wQ2Kjc=TFc;;wTjdG6|I#n|j06#D%ofqB@Y`P^%3k zY=Z=;6 zMkcT|%rU&MnT3^lM8MahIK znyFgR%EtcS8|A2)hNmzfNM}4tr5Sdn!;tiST>c|YJ2C14w3I9$An^tQGoBp2&Vb?}5Wo#Ey z*-`c8j@roub+;Bp=YkiGP^)7%Xg$^&nTASMsv|c@x7S35R)ZE5`%AeDl!3sGY8c7u zkByI8E%u3_H^8{4AGR`@j$s<5Y7H=$f5C;ek`}|l6;j((Me8saM3oZ3hx&G--pB;@ zFA15yHrVTeO~bKOGu`kMMGb6dBWf{hASfNjR>d=cJDiqI)JXnK%!L6oDMO2K0YMo! zHbafg0>82G9Ep_2Ax2+^ZqyeWQM{(Bfzv_61zbzb5om>tOVSU17^EG zEJC~%Ogv5E-$y2}HOxr}UuV3(!=~ZbDh_YRh#Q8Dkd?T2b#KJKVJk497pBERsbc>=6?&>86qp4#IUG;kJ>P@ zqD5P~!AyahDpTO=7vvY|_pdmoOfV#-7JcakBj#?Zh&kNe-%#LsBSQ(QikSO^hJ^U} zG?3yokO487+UjKBo(-pJ?l|rb*I$6w7ns<*LWs{mbx|2GjHqdUkz20|v=Uq;y`gSa zs^-5E-hhXg+RAjCaOsWzs{*HD5ve>G8y!KZEbOQY;p+{KLleLea&!iEf}D@h>PPVg zLD$%4g%LZg{@&-R6F4z)713#c=sxH`{rUztYk-5b%hVG6L7;R3oUQ_=VP1gv;(DVu z0GvU9GgRPoEJP%9@Iq&I@ML)Hrp5}aV|=qt;7kIXsRDLQSmo+68ai0z!OEv5_#}yV?7AlD8URisz-cOQDscZ&z$ya{sDLHJE2A3#4nw$F z%u@tPkX^OP>0p(k&76Okx~UU5g8*l!z~LT3E*1)0&)Ul^>j(};<*da#MxaaroT&oG zx3UJKheXy##x(%knE-cIfiscYjR$%DV&s6N&RUFQ1nNS7yQsjOv93`G#i@UaxdGrb0-UA>r^3y}xDha-9&5A)I7}vLac&SO zodBn+!D&DlrlWl~L=duW9cTb}^lCh&Q66RLlOu99&|A;+LP zVZB9vUB2QBX4F}`kHH=Nk@Eh#+$KTYGQghNYQC35~faLDPZZI1Y33u_oLbsKZNfmJ&{G4&pq5RHxM zb%m`zFk0QJNHM;e9XJwR3NYB~*@GI;u;55rECr7gtK!67iSRV3h9TF42J6;ETQCEU z6RV=cs8U1Bk~E0wHK4(&bla*L38gk$osJhK;r|lgz-9n00#62mXA+$8>qw0n;J_kr(PpkfP$mJ+RDnaM z5ak<*177eA)v%sJdnXzI?o5CyB{?1lQqmn7ORAcg`jH(NY%baiHafv>1hWB(^N8BF zU=fE~TlLew2~8|Cbpno%s}aOuKOD^t{p;Yw$W;q1fGd~qq(Ft$9ko_)S711}YBL;& z4b4=|9nFBd!D8dHi3hRNW3@K`oI!wVEHveK>)D4I;IPje~(^oaD2vz`HsdP0`_k#G*>`S zSM5rLPAoKa4lIZTykJ!_#1}n%tU=&_psvpUepY}{YgT~yU&{&*JK(9BTj14OC<%jr zm_*SZD|UZRv)_Uf+@g{XFDIajn2g_4q-~;1; zK7{Ek%`K&{XSMJY#nnv<43mISN&;8|Ks+6fD2>IVRIERio>U*B8<2r++GQXBTc(@H!uq+#`nZmI9t28hJySt26wA9s*80GvjE(=_HAJsJ`ZK-FWKKI@+&f*y#RGD6>p%@~SdXb)_Tw6l(058tO6k49 zVBjA$U4x-r5Ht~kjKCib3%Lx=JMr<4JYFj_tOeCB!(0(G5r9NNHz@|hSD;Y!WasLO z{`dBE4QN;ls@;!qL(oL3B?6vR=a-NGewAuIkG@VtyY+@fsTTEd17Nr*YCFR#0iL1~ zCB~mU3P$S71%&vWomYQs!f94YmKX_7#&w7!PA&|FiXUjJI*HX9*su!r4-ORJGpj;F zXiCGm=y`O4dX;t6z=n0O+WiPB;W8`bN&s*n;5dVL()ylvP)}^tp{N*6*=V09~6J!HWh|B?Dd!I?bbY zY!pA&rbqCa0ae8Ss!sSILv1;O{rY z)dw3T2enCafJ#Ug^+u`~_=ItuRB4~rxlZF3bW{kTRi;wh2>GJkRD{rjS?Tat+Xx`r z@xvGDV7b&lN7|XHUADOq5=OnT2zRL1L_~(zxrd+ds2QzOMrMDvRgj7&ZM3;25S2lo zGiqp34LbrqnSd{1ag=)`YokIYE?y^{NRD7rVCeEU83|j7Eiw z@{uL=S8O%G;cC}*q$QOokk>K%`wS&~Uv#b5VoWUmw*9jv_?bZC@I$7ig|(@F=06 zA%w39jzZ7c^#TnS%rvE7uAa#Gn~~Q6oQ?}-x>7LL-}?C-I7+l=S4nhSFw<2Bce2tP z{6&&fB&Plf9EIJrYXv$knCVKv9428U3RwSwN~#k$5y{dxy+1A8L8FSVp*}VpMg6s_ zBswnP=!{>$>l@-|2skd`=&Iv18@9-60Y^y(?XsQDBup^6ItN$p9ME6E)0FV)gDnvO z!nraD5BmAaLh<_LT&Z-F_t36f=(v2RtIv9b&(p5oX3$!}8Aym|S1xp1zSCV);4%qd zI+PXpJ8(3k+C3gRF5l@&`A%5b^&fbHz;XFbSIYMWpI`C|IAW$hM6Gf8&QQvCVEpm; z|H_;r38r1G;?$uqh^3}HRbCa@_|JmlOO2s=RERiH!s7h>*>+S05}(@DD&9c~Ln+^3 z38e#GLiv~ANPKEns|+Glp_K2@thy!s{vB{!zB82aJ(|}bomvYxl3v=?Dt--xp_Fh$ zrRcvf=SYBPm+lN)!ZDN*E+!_XK^pxRaCqJtRoj7U>c<4ZCxpl)uzse#hY2{IYZF+@Cl#4Sp%EiMZyc8BY9Sf97 zkDeBrweHws{(_NW^mdRM`WGT$b0JKmc<_|O+%9Dh#WJy>EOYnQct|m4j zsW!dBB&bf%+&3fwix7)M2@Q}kHL(#vwW$>*L34uQDpyTOR#cx@x6U*G8_5`r!Z{SR z_2o&$A}PL^m6-Vd#JHUiwlW7@eXo;`go}=4hh>WRX^-$+8C1dlYiDX=qd{p?XiSuY zW-4>g&{g6Q+Ypr1Tn(M?x?mIXP2*uTzFZ+ZF^G_GaF?Bu|KVBXc=zgpj!3Fao5Bl} zden=ZEEJ{kxtzoXJTtN0$f`%cseBY+ozDo;iVT&w)`P)RkATCJDSxRg=EdPixYD|m z==~NMp4daxdSs94A#4y?3?JHB_j8f7BE!|C_0$?X-|wbAd5?I~u*Mc?0e%p!BYNZ< zWPObX1mj;e7@LN$XA+UjYqS!5 zWywE$N~(-UY-&m60eXi?xG6l5T&g@LpsrM}6E-n&^+R=hl5mxo0Q1g-EOn}X88{X0 z(Wh$Nqz_SP1iD(z{W5%2AGAK}q9!_QSnEE0h)O5W>9vi$zUs5qr^GjaZhz{z`f0F8 zK5)48J$d)H$Z!d2+wZP^A}dBb+}1}VPM7c!lVs@d=epPK*F=U(z(ut$QKj{jb7f6D zeO^-<)_S4l^WuqTlMqTCK9?&1*oP7sd`_n-?xK1Mc2~$|cCc!dCDb%m9r)Z7E*~`^ zR$dEt)^PwQN_g>d8JA;^fiL;2c##C1glmr_K^y@xNqOpc3Ti`|4j5PPsB+x&S;87NUjuw{_#myc|1)o@;CAi=pg68_891&1fIu=`T)UIU4>6r zgB9OUDGHQN;sB$J=R)$rOL5vkdLUzt&r9Z_W|UXMi4@9M_)aeY7rs-I8_cg~UMay-bB+?_<|Qdtz=Dwo$N-{Lz*!P|wS41Sjwe`4Pv+q2D~f7;^jQ}{54|L0P)S{0lpBT%O%R7 zk&@3+cpO}C!E2+0JXF#C>th`ySl6iVKs#&@eK3-EER0XYSW!dZ#~|<{V=!D%P*K5e zLcljPCvZLFR$>gqQULuR5Wv)?f@PcpIbZ$1f5*9Ysnxl5{SP_U`1C=&ii={j8o3;b z`e8{dz-D5W6vpDgN@gjgG+;9xp9Q&`5cS|Ycq%fS6;<3vz~b?-L2iRuN z4S;C|i{MQf`vbZ{Z2)EkFbdIWq@1BCz?X_}P&B!T@cFSkc6IHjA#4C|#pBT!)QTJ) zgTqQh%NTMmA&ngq@dL*YMUdoCca2zs8q0|oJmhQjX@tZOBZ5IU2T`F~3<*JRAs_mq zcdp=FZ;=?bK8Q9L*Zt@$9IwC#@Uzok)hKY$E`y>8^a|HU$`u)pHm<1c8A9`;Bg8=O zmHZ0Er#iO{+0Gmul+oO3vX@f3#Rkn?!u;2KnwW;!mdpj7fC#d-b#PQfq_sW%FBTGt z-iQ13iwX?)^M&st0=$BPRB!MrP&?p@(5N8d8u(6qw@+wruwRHT-axR|0Bc-OS>q2U z@(QxX%?BQ?JUAk@9GSV0ZI#vqm_0F&g*cx8iOvR=Aji74Rz*>$noZ_a-4yg71}N#E`*T zT?rw@s-fqk006f~m0bZ$^lQ)1n#JK!OcFQ@wIQOGa8#rrh|7q1`b~GBUeo9f(9SF# zN2%Vyq*w#Rr9O}X*ib6^Soc7r(9$`L4pqYi);=P2oqJf#Y*F=6*~8!Tk78Z>LV?aI z;i*O<<3+?5C8q!0K#{`?1ZYJrh{qGm(BvVOZ31pSAe|%P6K1EF&q~LI3k;tF<5SFn zW8n$$1tE$bMi`p7`G@30HR-41QMECNK0>a=?PVywFo>cuFfley!j=Pe1-crD51up$ z_J9a!Lt73|FHyo0NR=(ASW&I)YwZJJ(<^U-as(G<;7Xa&C8~a_J#Jk~kvc|31b)^B zFr7HccBIg(fX){9UBs4g0X+mP;=wzxThesE{Ans(1S9}4f4_Ru@R65jHkIxJx;>%GZcF19bHDk~dLk0~rZB&@M}Z~a4`+sAj!m3XTKzWYn-I6e zi#X|!^_4AE)AzrfH03j?)r(AXA~cp7F(Se_td(O(4Di) zg4a~dqpqgo#~}a}qd&hM{jW}vQE7&hyqEcHd|x^7b0hE3G4`UfTrt74ex=>l)d|Om zY=Nj^%r&H4xhg+bWW)^Bpo3@5KS?LJ*X~E{l5SGC27@Hgj4zp-ww{L#3g$=gibEo7 z9kv^{oE$oK3c}+4UtzX9-EYQ8!&>?P|B`=a=cTD&u_DA1ejBVGvK((A+leE5S3x(a zVjNFgHZdPCau(WK@kuxVVY#Gkz z^on!E(p4!LYnQHwh1A6Rw$o%W&6ch&S*2iEh3nabm=v=Ll|Cs*tqyc9A+{MW^m)Yt zG^{mb0oex|oMl^$4ESRzdC0OqXf0)9Ol!3NHx((R^hvEqw8s}(M8M%4`OvCtL0Cf ztSu{l4w;GQnGOkmsi)x3vM|&Hog4ME@S?lJ!Y(~WJc3oDG9$y24@7wzh^#yvBAaTT z9<_2^e&R!{XNV(4SLN)2{RtK~jM0vD6f5r`ts#eSiV4DTBq_M%2%1LJ3zA;a@g`GE z_$3`Uwzg(s8d&%V??C4k3jq(^oOwIA^v0{G=jff~^%Lip4{Gj?hQW25!O9Vn^8*JQ zY?FtxQnE{eb1Jt!o6=(nhDE#$&UDxz*hWij)xud09<@wCpw5z2i`?c}4Cc*zbcabw zzQ@jgI>|UYr%g4uT(r$~MfsF!8r_7(4-~JMaPZe8cx`dHY}N}GLf5Z``vU34)$Jnc zN2Ows?RH5DNujcGAt=%9HJO|j^(+V#mDvcJwvKee=3rGr9lCX)uy(dorkTQGRYC|p zv!m5=KF7rmu$qbZ&_%_%9P$?4sC9O`1X1AC+o9pF@l(2YUIfc(0f za;fG&OL>~+62n`js_TQR<8GRb#2ZF7N4tZiG^csa*sY9VZ5ox6Y-TQui(e@uQcjTm zF6F5)GKrie+lqA8+IGpU+82shT`>_Mn~@mJ4BvA%6ScD7O{aknh4ZF&9O!<<8GGGfr-fs*JuFT{#mYmA3eMxjTaD3;T$!rL$W;a-_|hwH+f8W;n~YbmGIQ;WQg9Z0bdj z$8%LKT8(=Bz1(y__uWoIWuS}Z0O`ukT#n*UqPKYSsYN? zgH(|Rk5r7e<)L!ah3*W+w-@PYIIb2fYr|U2Y_;c2(7^M{@bPmxoIy3sRbfCbWpRVr zTC%)GwmhBdmGzd`Fj)%JrN5#0N`09>iEf#B)A#O)maSa|Rp*dpFG!LlA{zH?rE3NR z7}+6Vr&>0|*mpF;Yt2d9i#2%+^1c!X8gAaQi}0)~ZlFUzpM0}sfCJN=NmH<_P52eu zV2zNuIkRxB%wo>gFnR8V!$ZGP`J^>ruu!-dZYx^dNmY?a&8Qchybh%AU?GxKx#>dS zU*%6xkb)n(JE$PM*fn#8aeNLWgY9Gq8Ww|1-x>tn8;<@mb?0cN5)tc-v<@M6G*ME& zr69!SYQg(xW@dMWrCj!@m5Ln#dZGaEOrapcQU>uGquqeJKR3PB(7BOuDq>q#UrN>{ zY#VJ zx?F@SyDG20n>IId{M8&E`4tRH`?Uqkkq{wLT|U%e?mQzi$@~>Hart9>N$CR_cV~kp zxxo9m<`4U?`J)HA=Ii-6wP5}(><#}#m*6#ij-0vtE=#$K@Rj@v5$;8~x?=k;U&?32 zKpqveK^4vr2T(p&08lnWe$*AyK};$VmPO~WeS{ct*Z@JG${Z=n`Sml!IcJf0(BrJd zvlp17i-1QYtp1uT5m7xYU+tw&aqEiN^`GYCT*{kJW<$=VT5KoBixT8c40^tz4Fqh4 zyMzDw9J}FqhdNc4UxXWG5jM&WT5hZ1(4eNflp$6;b>$8TMw5s)n&melaI}w^;Ny# zan5}qBaK0mBI!x;btP(DzZ6`kBtrLw`2M<41p0CsAaEkC$zIJH!{+jW7txBiY0XEX zz#B)8l8XT-I$Vsv$hMUAZ`qBiV|so9qz@xq$Vw;B{rqy~fgZ))=lx_&($iV&eSEQR zL4?#o-uu;Zi1J6@XmS;{sTghe^N*LS=k~3SFZw?Bx#wraul`a0I9om6FuqHR(mWK+ zhU_I)WWw9j)~mHxj+4oH*}|4_u8a?1Y4DXXq{vUIlIUn0ey--W5lUND{OoJ7#z}@- z0NG=Z>{%xx!wZk_fBsS zbi|RlP#zDWJ|Nc+WD2!?F5@EV$CemNp&sv4%TPT9PnsMAk}8C+vRLb$2JuS`5`-n5 z&Gw6mf-pLK`W=aR@j_5?eyV`56(F)jkqJcmr_TNzGy%?jk^bw4E zr0J3>9Yo5m2%L=bn`(n%@5QkA0q5f7zSo~w-X7*zs=#0LW^eRHB*Pprb+(=0eBWGA zvKh;JQ-_0^$iM~VuG=b{T!O0jh`GEM-EIsxoY;MJO(4mVrFT-2`^HDA=W=TnBF*<{ zLm&0q(8mu|9Y6_j&iD8Per_wFXek^;0`PFcDP}c-Q+s)J-UJubj}T0R5$ga8>GKvL zo8GWS%@smPF{Aj=APqB@g9zfqnUWgTSV=B1CD$EN*21Lc^!&@PY*UZGBMcq=y_{E6 z%bV1;UqA{4?MbNQVc4x@LylY=BXLaS26-&mi!F~*eWzc^x zG*qkc9w5FcK{Ld0F>Ejag0>G|cyY%|lB9==OmK_p@5(H_T@DHXx^UZVUISgPtv zaP@0cbV4t4u8NMUmUzaJU@l=Uw1ioKZ(3rgDZhCsi6pCBt!zfHt7TqX#`0P4E6t=T zgIN5sUV-pi?o+?XyT~#a7wJ@St`4Uzt*j1?5EN-gv zw04-kt3|4`cA{aa1Qt0`_BW{h33h$C;+t(&kp#q2St-3lnsBvpXvEw*mg zh-H_bf>c6X@E)GMeD~e!cPS`B*E$^UGDu*-D;w51e71OUQ2c)Q^p7Fe6yXx4U$+Vx zCczntf#}P^gOiJ+!;@oekJIVOtr-s3EO15K>gciyI9~8IwCoUIQpN5|wqH34*sLPo zdVMWeRxF^J!l>$b&X2OK<~!gtg1@h5f=!1FkzFW@J2BqESSB)QY*|M z#SD8Roez#F)%utP=<2QuWIbSU2QQG|DX@IP-Ri32Iv}?D4p|@fo7*Q3WNyEXrR2kK z`Gr+YEA}Mo5av?dcq^Rr5ShE)mWj4h^#z6aV>kZckg*arg4nV=yvDeFOlRYuqzTm! z_i!8xh})b|Ib!R$yDw;_mTO$vs@i<9a+4itu(RJ=qk1&>C)B6D71&)l10&X4kU>E* zf0okVpM#TdT`qfvp$8oaImwIlr5x5D-u|Q(^lTR0d8vLd0fc$5f80>ObdcTe@5Rqz;IDT#%2L8hE3PuI54u(=r7(fp1V(lgltF4F%V z23eh#r0_41c397l-_)`N`DM^H)$F3!)8JCjiI(Y}lbF&|2V~?9ke4A7dVo+ar%Mqj zm_o6W?us*!5S@+p?^HcG_>r0P?WvCQt$|kcLJ}%Mpev&=<0h zRb0;{_&Q^93zvs9x&^$xj^QSVirNL`my((k9&22@td?waqYM*pCx=}k3Y0|o1v>PUs17<(IGe4aEX?Mx_&fja zk$&-&lxI8H;ylQCIBa`^zmx2d-!NlWn??)z7Fp}TZP=f`>p1gffK!WVk>VD3`gx;I z-^1hi;rpGZL;9h^00AI>09&*I6u%JuAx?!z27Mfl-#Sceutz^H_AZ(xyk~fYeg5G7 zK9&EUHy)+Q^lrdme@#e7h%Kj*CkM9*W65+sogoW%Ilk9Db|w z_s|mVnr1H%Q~~B6K7C}bE2E1s5KK?qhTmx${?Oq*1br8#ZHHSVN}`~pfiBuGncr!f z!?ylGkbS2x1tLM(Z1C;jo_uP5Fuq@-?xf$SJAELd?roxvKgfOP(D!Si zBV@vveeJmdRE7rBiNcx5pM5Ji$HftAaNq)tM$`JTUYTH#cpS58$M3<41hZ&a*;|&g z#Z`G;5kSulrzzoo@ayp+-txuZ9|p)LbGT*b?VfP3hXTI6K-PQa^TH%QMs&e3y#C|- z4|h7w{@`{_wL8xGNQpHkD%=~-S59rVno*`zg2>wu zG07el!zktji`PP8FY;I(mXni6P~0@V62)0tAorG4qBG+i6APOtprOOW4^nExF9Pbg z&a3z$eHVe9sq{XOi{Kw}MZM)3u;n?7-`aW&{KJN8!0w`W8$4$zPk@wdbzP5wLr<6! zkcC|!-b*n&0wfyViWw@^U?V%qb~1dBqAsP59xE_{C0w;GpM;Y@hAf{MON|$b_8`&& zVZoC{K~TD2??^14@S4>ub#rI{@5GoMqfyE4qod=^kxTfP&h=y0phEydgigV48gY$i ze@z!n&D)zBHHFbv2rYpb+mc`OCA%PPEt_=CS&N6GR4bBm`RMGyi_g zj6N}SZVsN&#fO)#Uo*sP>P+TvGBq9N z7}{RE{qVZ@*W>ZY=zC3$%7C-boU*{w^Pe$kU zD&Y^J5M`1>d-<0a?~A_g#>KT|-4phqgJM)19zEVqlX350LTw(%Tvh* z|1n6$`Q_JL9ddNAHTxKhp?!AeDzDQ*IDkD?~^a$vG&N9?}>kv2r@3U93_l#oDT8JPuqr| zum@@83ksR-9Ui3L{qSzvcPWA*iv0K}{o-HFwtbNzF5KXglBKiJsyr|Do~8qEB#TYe z&BIKa_4%wCvHs^ENSMco3}a~)K4zX#)y_#++pspm3`DSw=3>OOoivnG)++uy2jI6> zws4gKQ8^;)k)+2KlwN6D51(_|7o0)&@e*1}*@1fW9fSNL0ZXjb{t8B#W8&vO9w#(H z5WhrvzQ>y7tLvGL)c%u8JzNk|P8$VlCsIKn02t8_o$z4zYPg3ZSeb>4OEXkxiXb#& zj%&lN;BlO7;Vnp-1S|Y2*=$Ck7-2Gkfm-Fd3>Vdck=Sou{C9G7ITJ@Gy~lvj`Qa)J zr{$b&ZHWxay{n-;w?6bP8MacfU|Ai59^zn9BpdNNZOtFWVQ_@PWB*PEZr@$ZXRrSC z%woyx9cX?;Bx1qr-k6f2{#XxT|0H)-A`?Jf4eH}8uI{Z0L3rvL&^^u}W3sh0x=i}RFO};jk`>(5q9elH5goklA9CfQu!fy>8tes*peq;_46+N3 zQ|}I%2d@YhlPv|YgoB9$wC%JWG^Q>Fm4Y%$_SJGarWOCb93al~*c@ zELN8OuD*ncP3r4#j)TL;=`AM?W<|2f;%bnt0`}YRmskIqo{nI0gflVtf&crG|NA5V z_Z9#5r@^M(_&Zq{^xt#-?}Yz5<^NXv-wXOLTN3wgQ}*{JI((?+L~lq?w<~efFwjQA zaZ2Ju>N`@+z2KT$#7uEHo!?mKfa??Cyzw{^kb{2l*%hut4C}E%L2Xcd9*e_1{}*Yuzf01M{_=m@CSgPV2tN3X z|NH--|C-6O<*VQE$A9Pl{=xtKul(Qdw>|Iw$shTD(SPNxko9?q$V8jF;Jl`W4Ni#+ ziJMC@O_4*oia`!aC9!^R$(V6`5)+iMqB4CJ^;7F>g9b9>!0R;R)cj2v72#Nc2wc^` z*9S%&b`nF5H^kRI@W*+SL|xGzeLoW;5`b{|PWXlYu0e=J8K(Dl`}96ZNF0Md>qJon zku_uxM7aWJXpUm-50b0EMXV)Z$5(Bd-=c#m#sA?0m{vGVx>p^WIZ>oZD1~OY=M3?0 z_x^p_^S1l$Bl~frY4Wn&ccnvTUv#fY)(erowX?Fl@?L2;B>QYYsCIB~JxZM}njRW$ zDAOaX1*ntsB>`N-cDcwycTxCdvGw7&lJ4jWnj8l^8a-n4!g{B=tL^XLbWqe%| z{FGbNx<%`cPp%z&Dy;;5!goz@4NQX`J<;(>g)kmB~_(c~<5l;3ofmsS8U_ z)pbkfFN?D>nuS?n)T<6DXP3bbTU}iv4S^xJ-U9FAodM@%(e4wd1!Fj>7sq#~vI(gg z$G2Chk8dwdR?iCb$)2436s?Cb@Yd6D@gcbGU(2eWbhbRyc0$LG{t(a@W%Gzh^Gh(D z=PAzG4|dXfog!Yh6>K0y+igPgXYu_MpX`0#jWbguVngxz{J4PNGV+bzCs24&N4Ow#M$j-8%LQ7>sn+}wB+4} zo&^Z(Agk5G{MdnSm&;9Ks$P~}78}OY)(cE;GSAfF2Pplvgjt-FOtE6{+VP z8;D9M(GGc~tXQQv3+`b!-ybv$*X2xz7_Q{kcJtl(+A!RGLuHB7ratkw(g(7ujo``7 zhLPu)wNVqnC+Rm)92_&AaF-1E+PHYl5hK=NaDim*dg2))0InNr(w5IoXn-h&dASVs zhgpd_i1B5Z{?KUB96S>I8?X_xDG|#tU3C=y`^UAIxZ$lDq6(3f4ATmS>AKBYd}{3x z;Vr4ILW2%*(}H7U1+ZTqGwkcp`TH?-O_C0IHUnBItNDi_2)BtZ{%_-6uNSkV(XgLlqLr!~h*}k#GwytZM-2V9f zbsH%`i%)X`5rrpmWh~=zpB2CT_8Xb8VL@BcwP946OE^+L3W^@_h&Zs}|sz_^TsmRfyxro|hLA|1*-o67yYTn-ji1HA`oL{{yx7%ZQ%g|J+9L={jpy@#8l9n4E13n2@aT!aQudsjC^ z(S|EEIKf2?DN_*RtzhK;P~kycL9Wd!EQP^`lHyxv5@phTZB(Q?H@iqeqx99D;wE9IdB&a{R__v8?D&O z)T}M1&4SA#U14yoHHu-;-oGAMuS#lHr@I+`LH|@KlYi3vqW$lviR)lUU-&CAjmf9= z?;OY^igXGY+zz50m6)#yMWz{;W+)kFd(6g?brh_Dx?tFq)*TvgB!UcJo%tY)1m-)abk8QOn-bq461 zoGyt~5p+xFEd>HgqmGSw99AY~AZU-1!;@l9c>G875@$^lZiD&dzA}6<2QTvhwZdJh zx!t)$T9~khl#RT~_M*1KgYn6j5a;rjSls6A09|qdfvwC6r>0KpR{9-BZ4@3u6U2fU zP#1hGN2jMjJFMt}O;}3^SFm)f&q&uZ_6`TG(lBBX>Jc#*l zwOTDm2RUgS(9Z^{+gxcAUwf6&T*t1K+Jem*)%s{G7i?ku6XXgHKQfmu>Oc`w4Ye_$ zh0M}I+4O_IlIr{((|tzqlkW!HgSq&fGf})Ee}sSNS*D-=*8$bEE^muJ{?J-ai62YR zado{|-J)b?g$5Zz{O-vCyK^no_fD0KPUeX7xpV;`f&8V zRQl|zI5lv=GvVtk{DaxC5)F;Eigs74AVY1K2V3! zMJrrH15IM_<-h2o+6YP^T_fHMJ$Y!rc@&6OV8D77?=>QxksG7jp!Pa-Pm0u`!ibok z=TV?*!bpkX^*lb0o*37SZ3~msXv*Xjo7)F)w)dTfAUbk>Q?D=5w=C!Jmt;$RXZ4OR zBkIH9xxm9AdS*asC+PI40pM_6Wolo|iPd=SEn?Ht|^}91-;ZiiV1ro4Bgi5g4fDLRrR^a^_%xWBu4q~Kt{g`Ti}o7hjp+v4ju)w^D}9s zlj7jXvy-RKjvp64zd57Yp8q(@z%aPWQ+0X2@-jX=I(C*e+nvKEmLyOQfK)pR5t7l@V2=5tW#``EnV_b0)lr}iT( z6k5x2KV%mBY9&+Z!z~MQJQ0~J-FC>jhoAZmeFA{MUf+Y@6u%!H{lN!Mr$GxpBVZ1# zcQEXvy!N bp+84$2%DySRyq%Wx%JiVR9&02kjwsQnjo!A#VIC%2D863t1 z!aDBu`DJ3-TlUg zkNTVW96eMsA1YqpyEDJu%rwhFzdwgVF~1?#=S>w9(3v((*$cPDeyn0N^A)jFG|G^X$yMheymfCSdThtA?S3n>Gc3hsFrEx^@^8Ah45L<%%ywc!;3RbD*6c_~ej!a|h4ybUQ z6wzU@LCIqi3_}i7B0RjbgA_s<30{(gW7t`)Ch_YbMYSD33(uq=IE&~S{N(QiRI>g{ z-h%&W10>)0zPR}m3<(Ane}Fh0(qH)H!~gP9`>)#Q^wp}$zkIa$%YHKUT>09u|JsQl zapZfLll=K!c^bm!!krd0dG`z1pXUWV2p^^!M;o9V9MQoF=jutMhLLy3A2t{bWB~fx z(eB5M_|v2Gaij3KQU0*w_%M5)J$>%q3og+)#J?gxLHC*XF1@Hcj$W;B&*H`HzSy%t z_ph6ua&YjB|9|l9j*g$5J`MlhK8*de2MpdcbHx2dLF-|;^v+Z{;3aX_3z<9bNp-Dn2 z3O?SHOa9*%i{<7gzmdVi_Q?Ov@TK+T<}ZDy7W|=KCs>tWI-@S7nhf&myr242?Iw3s zm~Cc6*E*27wd;-WN2xL^UiO%4jy;RQ8KnaTB6uXOXLQ8;7I2Jw$i?C|F zyUmDjgJ`71U_8lcd0h;Wk~+C;CGi&PLTUG?AIh_P4@4gIw@o^FsJ2OGn_gTKG98*j z?oul4lS+YuQM;d5ew47`tSITnR_Fvc7w)wa%kELuts>TBzxBmY5u3W6JD8h{E0{40 z)gyL>9%2HL^QUsC?0blZ&ys2@M;&i{08x5{m}Rn5+H5@e8F>Jbxx^AB41C@9$Es>N zA!#EQ2?b@t>V$`|uh4*LHz{lQsg^dnX|0C_>W0WH3t@_sh46+c|7&a1e^x;*&O1X3 zt1sAJL7$<1goGh}4}nW;Tlfprr5+s|9ZB<$RW-Sq*QE1;soC6A+}$p#)pUj0f`{N% zMCmKhqH{um4N{~VpvI)oR`_h8;G|8SQad^sTs4Wzy`H zspDwlSh&&bHP|#Xf28C@9q*L4Ssu4hIn`}sobnf$1%yZ-xC$nI(So#txZnWvX{RS0 zg;%+~Lc-CS|6LLz_w7(>rDA^!)9iTZCR|-MAMR($yi#E>dshH<(h6pJSlS0C548*3 zOJwtdAX4^U0$8AfNeljIVy|DkeUV-d_Bud%9X?G8m1$};=Jy!VJWz?7V7ZiqDa`!5 zUM;Cj45}wxNhVqoU^E_s@7f^7(1;;2bhxC802eW^Q&*w1mG%ju!``><_5jU?djeWCjE!B@DFyuM?5Awr ziE;P)@e_~{{(d4{H9b}VV(=#tgMU-E%$4&}cOo^881dRR7b~6uZAQWZL@-UN_#d6! zE-E#od|zM{msocjPF1s%X1v7ZKmmwB_^gs zt2ISIWV3RYS;k!#!Tj z^jbFY1a$nlARI`3V_TwDPo{KOE%9v>o;1aP_ihlk0MEB3+wwzg4t@W|Vt;?2qlfAb zB%~K3VoH&+JIy&qY*1;N)hRtxbOLtk8%>uOUZ_o{=^byo)$iWW(OBn^rG|GS?eg4iQqbH-#HA{8F(E;?CcsqR z!O&X4X3uJ+e_n8+mbF~!ij7j2&0FK=D6V9<4CB2cm6`Tofk~p%tgNAVAtcxlON6ot z?o}N7y+wW;IhV-*(xWd%+KZpqjiqKKLjw-1Zqdn^YpcXg2L}l^*~9E$3|Z%2#4R}` z5uD1#9oml8DV%u9wiKP4dzOF11^hca&hdDx6^7LRZMmFZa6Vx4N~K~mg6Hsr6BZ{( zSnQk4r8msohB!RrF%ChMpJz;xc3C{p#D#4mlG)yejv!KJ=<8^vowjb$&Qn&HbAw!= z%r;hz3js~0w zQ0)Eu_G1zLw%=i%`dSRz>5<21ev_C%lL%;%7FJvYt|6$0L%xsVx>ZtPmV<-18nb)D5+^2tJ zaL4;G8vDE496eN*8?`IaJ=HEud;05rJ0j0{!Nt#I7EJ&Gm41-pkD>@E@@2ecYMaP~^7m))p;|ikM%I7IjNT*0sivxS0 zBEyWc*q6pmQbX2=C{XPy-9%I^NV6f#)g}qgl50H)mu4YRj(koj2M)*!w=kg!1;#`t zswPqllk-TWMgsMeG`n^@aWi!XedXZ&8w~nKWY7b%c*X(~)KzNH>yLYkziwBRc*Cc* zb86zVc|R26p3C$o@aw9m6MJ6_pGbV^JLv?epnGCKNY2{G(q z;?8mRS2_SImN*Lw8gESKtQNmFaM@;{G zAHT{SeWLYDf8y`*Z;7uV|HebRfAqEfo^mQVA0=PWuXIv2d|edS*{hVbZo8NA6mH5> z^HY3=#m-ZvL+>*337nS`*XOGM#GQ*d%3g7GXGx`$&(TogI4iAT%f2jOAq|+BTn>Ye z%Z+|~LbBGx1VynG!8&n%ax9n`1C!6@fyuf(TRmKN6(z+XTzW^84f(6O_f#G3-xhGk zo(Ia;Jwu5Ob*%)el7a#mf7u@jvlJh&;5lgdR6v4#4Mba*u0^^YC^#Dk#t=g76UcP zdw8x zp8v|ZX?1d;Rqk4_mk^h045o7zuF@{Ft_fpW>3n){SnPeAyJobquxQrhJOsPZY-TBQ zPUl8N09!LU7-nVx*&g#ek+I?>4i25h%af4RIa@k8Q?y!Oy{wi( zmd8VD8z)|4?n`?!FWUNV){3}U4&A9TYBuZQ6dq6$O`W4(mA%VCv1F)2j*u*#-iEai z1gwS0)N+U0pp)mK4(@cH^r-Rt4q@kL1)xnj7dBD700My&o~9)fas`W-ij#UM6<@znJT=aSKKV;5~c6>&bZSx0+ygSLlhvDLHzsCo+KceUGhkSk0;P^b> zNy!J@pm@sRw|{x{ulDQsV)pC3!NFjE%M7xi?E~MdLt{T5F>d8|=^m;-4C*C}wcj0P zBwbNccO(7cW-p_=4*9C?F%P=~(2AVf27J4h$~nF7etvSXmXae(TgP2hUqJC^=`^)N z_&ZH3x8{+?{px^#`17eA%Uh9?8&2Tj7(>#D+;5m1VzFB3rG~LAIyLx9t>EMyQywcP ztKnK)dNx-{$w&OVgIz+K2=r3BU`%rgN3B!%gsi$|Gs zj8mp;Gtbn=T&^q4E0y~z$5s{#BRUSd5JqYWZXnZXU2{!TCMjsKFZd%fvN!FtJ&}>_ z92|IF@O25lX@3<-C&ULq07-x7NF(I&?o7&~Be^-#>7(|1#+SY|8NIGnCF!t8PhoeT zi~@of1!S00%G-Qh2D4}BS4-T>WU{IVHQ|k$6B>(Br80#vv#0}f%Dn%>?ocvPjgH%b z?~x9^913L$3j}+8+z#S~^$6Zwz?*Hl*YE@o0h3R^y*dttN5h+pmt$%6)hg;dhe5C#v5$$e_K z!Au{ZEni8y8}628$w(r&)V?waSRakuxDXFkQjLbrrILl*sx?KhlVDV?$wgOMB%Z9J zca=(Z`Zt`2w~&8n0s@Q-G_?b4NJW?V{D~Lb>i4?=-J2n^m3Hk^&n8L=?;;{woo_ zwCi*JdtU%szHDDB^vj7+rz7OQ&cojX2gL0Hl@Y%4oqkt2qx+-c$N*4ed_#Yb-gtqf zTJ{sui2G;Bb0K)~onzP>DR+xz%Mo-TZF@0|=#n8cqtfP{EQ#}0 zD*}A$mZbAQUOH(Uri)PvcERE59k4h8yi%a<{h53HeR_@_s!va> z70K|Ysfrav7c^@VmiBK|j&!q)XeHL)%8EimG@Ay7H0EFn3C?J1F~92ZL3YdDT0xn? zs1&W89Pp%>3xEDiR7oy(W(c)zp2BpwU{WoEN45#*t$Udc2vtDkt zaQ>-%t4u6QGA8TbaWEx1d0-#zp&EYQ9$;f-yWagl?t-+@x*0q6k{nhx+9;tROkJKcR>0KL9kmWwN&u4Cj(^3~+ zJZNONtjbSgt>~PUUpVNOS*(mbFef~Q{EWMfhQmw%ftnHF*vt2%Z0W%>^2`!0ijtoW zWlJ*cph zu+l9N?@oM8Gr(1ZD0P5&NIYUFaBb^_l=I|f6&K)w5gt(uJZQz*;W5wq@PL;hEG+#i zynu&wDXqmy$t+ahSSxdL%MmeEW@SLbq`1bRfe7-$31XgugfLJ`Cw#lU^hA*8?tOfb zogq;pR4qIqz6ZTkTbp?k~p5jf+fm9ZFYg%DmJQ>K9 z)5)lykz_So#zZ8xC2nF>@xCrGTzyu2^QKdslG+UL0{eox?`tC-&PJgZcECF zJnwO(?7q@Mo^?&ng81O!{( zZtBTSHt6_td;&W(+!~L@(#jNa!HYv?CwG{#fTYxRsypriXN>xwUOGW&X3`(sYHk@s zz?X*`10iN^4Z-*9VwFo6tz+y;$lp&*Fu5@pj9}+|r<`i&0yaSqg%}(HxR2k~GjB!H zSanjplp22xlJ&{x{{##7y3;Gm17_B93*UHK)}nIGPqy!~vf_g$@DQ;$)2fwtFs_L! zbKt_hO43mIPmxK>IdwTb3J_08&wTlP0S4Dexm@0Al@V;^c3mSUbpfJ&jq)i6{<~j4 z7+;lU4MDxp$>n`@myAb`eV2?!k0tbSx~b0o2^n2aw1ew3xE#e9!=f}&Ek6{jln2}c zX6hP$D*n~_(*ez+?Q!VcuY+o*y=ToK<@$_?AT?mEx!w@*vnFM&4d)`83K3Ia4nbZ< z@>}i6!@E%?VOO);x(&?)y2C8{(_z~7+l80M#Shw5Z%!#UcFQG{i-*(uV3e4&uwFC% zm}?fzR!4CZX`3}mC+N%T9|ej0PT30i&<+^Jm4& zSMT4BD9HXM_;S>u@ie^K`OVD@{r&Ozv3&{MFP;@I!XjN&-yMvfj8E>r_Nl*}(b0pn zGwMoyL>#tP6sF?bk_7UbdXDa6x8C)SXb*N&rrap36&g@na1;im((gIny-6Lm6#;AW zDC~E1`7(ivr(3acU5Q8DEMF^FV ziFb}(r)eud-v3<|*a8#>tm)>qzE)<*VwMC>{x7EGGHAv(h8YncgPp|dW=g>Va46i%3>Qq*d6BBnTMX4Og>vQMOl^7XJ6N zGKl)c4-N)|{~HgAgKv+)O6j40*&iau92~lD0E+mB6-EvIn_qZF29ae|xAS0V8{Jd# zD&gk@t}$;^B1a;W(~24@O0&_q0R5-BzZ*{4;Q=>kN8;v}AZBaQz-Oh^dK)xNoo4*9?|psIr8STx;=^uR=7V zs8j#dF*k!)la%O0gdJJ}e__djPsLEJ$mb0u;NPwFxmGDbwH2Xrr2q&X!+s+GVi*5( z9o(!8KwCtn53C*4Vaj3nXPMm}Kk~%(;a_4F{=rUHyC%L~3ixNc+M@G27vf$NhZ^DL zBgv7CXVfHw$xd$5uYy-kp*n)cG!!>tiNVMZZ|jW@8)HOcgySV+^FIlSF&fC%{0Z|P z0>1aji(lUTG%Q|chs!A` zXGu4@AOxjr$7-6%rxE}1D@CWMnvXty;QyI4lTY)Ch}}lP{#u697JR2KqeXo=A}uh# zZ%eGd;m+}cG~6i)xzw0(?WPgd>}1zLEkR-LN5@a&QhQQu3A;@5VT80uMI?@NeE8@Q zK@jIC*O`W0-8+*#Lg^o0N00c6-axW!j_+y;F|fDb|vb>#FhVwwUHqjD)w-!ZE0G`s+2(@ zyZr4}VJcm8*wg)Cus%j_xaZMUa2PQh@c&4KQTW!|W?tRttB>&2N3l3bA`_$cY(Q=Q z_G5heaW7NP*;P(PdxfZq6d&nAbKMRvG$;irPR93lJw+c|^t{+S5h4jD-XZ>9rp8LK z2&|nX$K6VU@@7$nosuE~!SD~GPA2{?3XNz`sSE~a8PrH?(b2|pxJw$5p7VV$U+A;J zY{4_=r}{bmg(}*?Z{Hb1bo^-eMQ{CdF$n)|tQLpfX~1rd(ND6XylJ9%a@pXWk!C>@K%PA2K%)Sa zDQh=xk_d-%UK1A~h6dTWNM4T%5<0FRe<=12^8niTO-&!Jnfo=^`Aeb^BOT{EU(>(! zH6dOdCRoRl8#T!bq3LxGl(s1^{=0-G<9y>%pHuPyJ0<#wJ0ixyU33;b102Cef!NCG zJdHVJ=Kr>yPYiC?`!uf+d!85@xuSzKZ@%vLM5+s#wu&b?jK9ey=lm#~)dHI9&~HW&M5e^>#9tjW16L~+)Tek|AhJRl+;b5sfO z$M2wNk55sPa2g2<)U>|Cw-2G^5259G0y(Ri36=2qoi8~yGNs}{rmqgC4H*=2UYm#x zp;9~{WmZ&1uo(FLoPy-9j_9YR{GNSs3q3Ys;~j z{0ZkO*#3k&Mh4D2@Eq&N45dJv%X&mod6eKl1;rJ(H`DUCzbDP{L-nMwFIc?aQw$)w z+{3%&V-^wwVYHRdiY>S{Y|a#{vuesGOqR0ua1)sVA8U37-ymPq`$57A7$>fzcssy- zLmz4Z4n19U6dQC=HAqztyiy!#=}yP&;`l8QYtM4VM(*jNX=ajI>4+Lc{k`fC`tv+4 zvQA7!(JyT2mpb?-rw(k`&0h#w02&}Jf))^6qWw8PS*I-1=@i`_QXyv0+ap3747oTm@yOHE)Yg#vdV|$r#P(^7HKc-XMjPP$0dQOuB$^XDj$oXF}A4_Y*Y4b|XBDW(W zOM7SyNF*L9YL}c;-XaN1&a1t4Kcd0JAx&~}v)Ep8+jnskZ0_1oFQ5Mz@$lb!yns{p! z6k;WR4sW+f_m7KLWmd;+9=R%fNJC0X5k54d9M$02VBczC@pVbiuw{kXD+?=h*~HG$ zuc?Cy{T*xV%WH~h>4bjy?SnOwG~6S#b91dp$0DFs)*EZtx$cezXObYGDP|QbEY9)A z%Y!{v9FBO$NL)KsTYunIhkrTCS{cyv*jf=W7zoyqc7HH*C8Z7YAZ|Ty8p4GaigM8; zwRErK{b7r~mCTB2$z>%4Ye1_p$|+Y%ENxU@>q>#c3iGvjzeaI?U!miN>MLZ(BcuMM zg--bQvMcv{$Oh;ws43g;@&kxsyg}W^aDS#nlm1Hu_$uUQns)pN(AvnJ}mw&?nmM^&%dtQA!Hf`Ga5`A6&Wks+#Z8Z_i%+>sf)AsnX51o5#_9CWa?z zmSPSi(XW5JTs?Q5T>3&WexMlGIq`hq-iED-9yVcBo|&!h|-dqib%&JTRjK2jBO;Z4NVm0 zi?B#xw0I}*3Pfmby2hd?m(^lcPGWeO{Q8W!r%3;`O)J>dJ)?D9#`) z=)B|35TSbB%L2kPK}3lWX7L_y^@U;+O5)0e10Ay+3ZVwXJ8e|d1Gs;3J!dwBOhD{8 ze_v$=1UCg1(_oYJFSuH(Ti2Vp$6n2@4 zH-HLqEhRU(Ye|HbKtVB5k2?j55$LP<9jKXq*h6N1{|~`HM&d|ugevq@BP}BA7W&$G z;XCEF#s3+^*L~(^J>Vkn;oT03H{pkD6D+jSn6GFq65$3A$-)TIN#ub(DIsPDl#@jn z-%+lUq>|f7RANS{jsW~_4Yg!mG(^zGgZrgbeX4bJ8XM?Erebr1D*|IDS3bq;Aw8BN?mJi89A{`wPMj{&*85(;AHcw3E*@>g7Ro-uc^4dQMOYPX!FD3zqOdF-$Di|`2doT%(NbtpzW>6oNBv@CC5Ot{LygN#rjFS4E6`j3nMGnmCh`yVv&_k)IW z0E2%rLNi4D{?G5|L;u8&=>0qe>Ub;Vp2>HtK`F63^|>xV`nEft((yIa;E6VbE1Z|N z6;x>W&(86aDMvUpLWI)NK3u@lnc6NI(6fJ3j@7YOfme`@5k}sFV6q#|C zYHWVcQ0-oJX^Ox^sxmwuMi9q*86&hcEXES`$Rr9CrFJ;g#QMvt7e8i?g<-71AFCl# z9(69#bB&|?36~A)8t4+`Aa{&|CtL>+t|}DbQKb^5dHCfEe|gVgFU#5fkm?bOy?LXs zVBx4e#!pvD{5p;GWbIwv1`kC9JFd{wu{8SYP!^z6#C&Z&U3hg$lL#~R2IDMJnVWG2 zJ(f~O=1l2{^sqbJN20Fw7_??medj*)9ByjeYUAxbOCq*1V^LKv z`+K>v0$JmVXU*S7hNvPDt!0Te2C>^$xZ>gX1?#5t#EM@qP(c`MkOYt)h*?)+p@T58 z;6+)BGNKSadmaPm=}^fSaYKo6PB9i=L?r z<3vC&=c6&>@$auegCn$a9fBF79}SY<#v4ThLl#ml6cvYb znc<#on|eYt5}7k=bz2FKhOvZV#n4Go;8XX?+Wqtw78MUj*5xq~c}%ao&$911KdB|e{UL+(~b zs#nibb0%?5_#Os4%(ZncG@3?BHHvF<8CM|oU2@r8%J6`tUS>7387H1{jIHy^(Wi3UjB?)yM|D}7pa!i;K;N^UTgejhG`S?du~T2{k+1@PRBpo`sZ%yxwH4O_ZKpDSZCpf>_k=^%p`6;%s#D% zDs{b3o*qnE;*M<+W?n5si?}B4kZ?{4EOJMiKfa+Oqu~`2+Cbma8r~mbim}B&+2hVe ztB29x{Td~PNYjI)Kn`j3%{9ys!65XyE2upm7jSGHnVs6F)kKSMUOjfRNjz9tI?r;^daiCoVhm*#ydPL_T)3lr?{_>7Vd4{UR6?;39OW|3}Ds! zR(3aqFCRta?KK#eXM$VpV(`7Qxg#-YYXJkDDjXVE@+Lt(8@kP!#OsNcb&6*xn(-33 zp;BZjQjL_8o~+P2Ww;QxS|BVjJPaiQtq*m!5G;azmaO8U?9+EKyA1=N%s!jQhWk|f zp{^7gGNg1~2#{2n^MvpK0&Q&QrN|0;F85uU-4@qefkLy3L{wt_xgb~S+=mfFh|JgqJS=wghuA?Vi zI<}6Uc_Mck-A4g7kN$B%_2E5BzhiW)%*l?G`IowH(RYuIT9A{|?W6xzF6VAN?mRkb zMIupN_{PsY_y>VnNV$k%-Il?QF3(lfh?37cP=k*Z)mSOO)>v*V(?ku*L~jy;cUd#Y zY?eoAkubs~)=BM)Cg_Rq)+ol}YOB~wG%c!+B--J3*Gk-T-hrBGEzL*I+tlq`!|Y6) zUG)Ey-srNs#Y2Eq%Du6VSVsK;TaXC%>ympGvA~+hHM`{9eADyNC96 z!{(vGQOsaLcbats7;haq6`y^nLD)95#}IEGdV3i_UIY+-vvs*5(xX?v-A*NYEi#eh z%`TT!H6Q#F#Q+nrU`&1+!}=n(j5N%8Wo^vK$=EvX$M>%{iftFe#prf2!FCNVgqlza z30COCyND7D`s8gB*}Y?md*|>VLf0-C%t*;)2+Av+We)kzwq=l0_kD1Qcu~VF{R)MD za?#Vj$a$t`xhM4fzxy#g`}=JjKS;l=9+6E6YTrms(sE<6SVA=w+go+CYPi}cd00)Q z!-s?aZU#TU zI_r$ObL3+hd8^h7BU8evZ|JQfpU}uBJ4U8bnXexClt$iRj1As>{1dD3h(><2W8@!S z{qpMURd?{MBR{5*AMY6X?EQBv-af1AKyNJOy6f<292;o|ytGd* zkLnO0CkLm+o+zQW%?c}4O#vXPFT7T?$gSwR^f443@l-?-yY_Kh$H9VInwtjGQ(wEb z!JVh_5DE3FfM#5?;odoUE!-AC`(ekzgBi7=@wj%qAR;`GtKfU6*|}IR7u@3$MUM{U zAt4Wu%3v*MtKR3ts3IVCq3vX{9sgN3ZL`pCV|38HR0YKSANly;$1J41H5nYR~l zH*%a7%1fbWD|eUr`4xPZeme*ns620**?LvckNIDJ9 znO?X%JdRW? zoj~Lm@-Qyw&PR&F^7c&a>Rium-SZvC$*=Q-{z(#6=apM|u~~|59aDoXsb7B;qEDn=AP{s8a1AABqJS<2PS0v^ zug{tZ16!80ra9G5oUgCB1o!njf?tPC7LFANHIJ0|RVwA4#x7hT#np*8RBAkmCoQ4} z4Ee*hfm)xR<^B8J@;Aj}W@Y7QA`88u#qD}=C8J2g%P(~b-ZnjJ$6x!>nf!?P zxf|*1jZQ1F*c6AjZa8^tHKDX<*(Juu+w%8H{axq5PuJF+AzHsZdyPltUwC*5PtD9!|iI18G ztJ5U+Y^%}Ha@Rw$_u*XUUue_3$v$RagB;XhjH6N>Jt%>lFG4zHwN#LBv@BqmnRd4F zp>#7@5A1rzgd@m=O?&yy0Y&&c5JB^k16`#ndb>f?9s~6C3?{{0HiRqHpLN4TeV->~ zwNp3whi)2(Hso0mr<^{%?;BZIkIG!idLAp(RIu_ZR?h~vlis=J1{sh>F*WyTtUQ2J zVr|v{h6TB{`o>+4K=OjMoUDb1K zwlw#htmoWAM;2=+W-q7`*jly*a_FZ-)l}TmD_oD}SnxXriRtg*F>mw*23$N9`=Li8 z6QozJE>_1O|3QlUz2Rv_bh_7ss=u~PjGZaSXp)wu{K+Zn?pOv7ntl7FxWUwRUVYPM zX+#3ToI@5Ix5tQ`aKnp@%#skZ0ALI*2v8K54&=Ahhf*IRLfzjW?D#<%gms;5cD3PX zLuusRvqZSkv?6_!Q9PSs(8L6+y<(j=mDEL;BL|3|!Myu2E8UAY5^Sb|mcT&8%GF7t zFCyywTt!~=-S|dy9Dcoz7ATW-8q}AHwO5;#B!@YUi@hI$2i@*!5qS7?EHzO2H)|BA zg+A6HmZ>y(&Js%^RjLm*c;=R6GoU*w#JF_lWozjNUZ`yC_UNFk>T3q{N>^X;DCp9>qlLc;rurDQj$CY!=DrH<*XLqIL;b}Sqc5uGfv8aY_v^;(^_io8B znn!ipQRYROU7-@4O)^ra@dV#duE?=>N1JY1mg8)Gv6@cKmgMeb=pM^8eW$cQDHC%U z#Pfn!Nr=vo2P*S{_!2p!Ek3fDOMrvFV0h(dzYLQ=M|8mfh5ezlJ9EDXG8OTgI;HoD zepl{hgBT~&t>Jd02DLpqrBM_rG`L>y9lU0M+&D@EZxo1~t5yv|nY?d^oJLfDp(8c`6?4#mB2bJfEaF2JC2 zD`kPnxKc*4LDq>e2I-7H)(QcM3_6ga3ymvL1QE!xU>R-&WspmOrNqcHRw`*-##T#g zDc?wMpUd!*Yg#{}w|D8EU>-Kzo>AHId@t=QdT!Vq7&}1hwx^|}HO5P69DCQX0VCUy zXqB;Z{M%0S9>9Bd8rvFo+;MF1(eFsMzJT*C{pjz!CV({VNHD%)uE(BV?O1PM4v%(V z4u2wpx$n=8(PcY#>?iB5KQTHs^k~P9T1SDe9No7VxL@nIzjN8~Lv=3OxGGYNJ^H}; z(7UY)keEk1lK*KxhP$u1@6E7vbkum|e|C)SdpB$y{p0+)XKi+jj$?YX+>fDjk9TO@cjVrVdi2bW(IM-{JM>roqVFEvGr4aWoeb=+M@=6?W{!8r%-O5{ z-|QM4Q265=AdJ{1@vBBZfd)GY)zbl!Z&7>}3>~jF7~Q zICPAryMpxM7Ixt4DQmH&e?9hz565a}Cd{$Zt%7c&sLJAMS#qy&ZnVN&!3d1zu;HCa zjGd_B;?KZ_`yS=b<@YHv_`^G0{Fk&Yj3X}FW@LPEV> zHP_U@TLV*@XQYMX+;I|kx>oUV8Y*a|8ypIjndy&%FBLE>?P6Bm`p57vc-B2PRq5~7 zck)pE`l614&~>*Zp_JfL1xv!wQu0V>w0F~J*HR0wE(87<#sGsBmqg!L2% z53qLXmbsZZD9VUfg`O3!J-t= zjpT1%rlfOM#o&S@g}fj*K4jdSjj=x2pPd>B%s!e zt2$^cAhco(u~i~qX!MHH zouQ8IFx0UOb&R22*jdlUI=;hLCo*Z$0|oZ5#FLR&~70*79l!TA^K2N z#jl3V_k-;gm}3!`<0vqzLc@=p@pg;Mv53sEipBsu7}JiQPx&M2^sj9w9!9obRIGjD+?!iq?}mJm9H3 z;HlmbusqM|>uRLNjUV&rT~6qM9?=6cR4!(9_q-q8>Ac&4mlOYUGtW()lf%0l^+P@D zhjQ43vuM)-9^U1=AL@ZW)Dure!llKRikI=9P3EZ<^wla(UTZ zi@RunLsbKZr^)CHB-uRlU39{sDuqM6MdqK&FMz`$Gs14{0w_BJ`5?rv1~>CcPri{l?(|NPqMBGcFx zwc?^48q@)cKtxh6RJ?pYEPnaPb<5ycCGIu%ILEWjXVNb^W!j@p_)r<*dr1fq#de0( zMLo|YdCyDkZ6BX!?d*&CWB*-`N9r^o7DXwLPN(D@H;6XgnmxF^O_O7HhJhP!|w#3oynjw$;Jb9hI zM|wJ8uI0;1MYu0bcYtgjC&z~gJDsco;-W)gf&_M|yr^c}u4a85%NBw-aJ0-|XgAA7 zxko4p=y>HID!h^j0AV65lsmO@>4 zum0?&%dEw8(Pmg(nz`%X>LPvW*Wl{psd$T6Y$A~?c^L^u@j#SW>8JYRY(W2WTtjRA zA%grCA?3hqM(ebLdL%*Ar7NS5I>1vrzGFKM004>YDb&9gFZ#h3JH`e)VkL*}iJ@V_?&cw_?*0(2F=5cf#u&3mnj}7x(9@_4nsId8q!J z{j2i6S}nt>Fkay+)*KkAT)%mkybYP^8w_>D-CXj+JJ%4tfX#|A16~#m} zfxrFMBP}~e$I6^MPOv&Xn(_a)z&aayHU3A@I(>J>gTZye-tfMN&zVB0Bt@PP&hpAw zQ#I>igepfzk}vl!`g!@1%cK*KZ$gw96fbmO*>5y}c1?J)MUWJe@2F&rY{&xA=}3Q* zSU9d$L$pJzah5EHmP*T-4N;vW{QJ_rT}b!2*o9NnXmuOyH6AIUO&j!?A&@jJl+r`qYin?0ojejNWs^w|`BB0^ zAE+LWO>SoDPUjGQ6zOZYa?gnWjiy5?$H-x;g?#{f<=d8d(<7B0vOL%v`)Z}>7@0Py z%)c9Vb_a34!#t2mfgPY#W9H5=_d7-hxcqPjxIE+izU#Uqjb83BdT!zD7#&yD;SRv9 zj{fGy)AUz6Mu$ClxC3yjqjzAvJ4S~^dAI{`tD{p0?Q7-^fjrzHk*~fi>Sfh-f3*Xo z4T(J3A(6k7!PeLO)K`oSbNJ}ajBQ$)7Eg8dt8lK$H1SMkJ|Tm01U2f8SXH;TF6e3G%qp1{laTz(tf#0i3U* z{au%@j+HM<8H538FsB|-Z}v+|Z~ zN(QM_PUx4YX6m6Nf_4R*o6LI6Z^{k87fxG^C=^C5B1S2h@Qi$pgaXzj?`40op0!jVt~yN5r*CeQ%A2TjYw@zPJ8ZH)iF?h`qIXliSJJPN zO1gJGg5(me(?vd(?{NftdorI`e13;sy?R}dzv%$gm+RQd(4I@Dsh*QKvd#iK+sU+lz?Y$R}e9ADcaBh}v*mn0sWH-Pe!-7oxAZC>s6j zT$<&(COF!wQA;1X9&A*1xB=5Uu+yluO4=)aU7J=hYc7a1V`Br>toiDe+s5^k6}U5Q z1PP*VYbiVGD&CB?<=!b=PWsz4o;*mK#(aC94E~8jgs#U-+xt1X^Pb3!_l_cDEgyv4 zUz0EDSD{%&Zr&~H2HA`_V&oiaQP71dl$?+3MgvzZL4c?a8F0%LmBDfy%g6V>Fu@`r ze^rUi8g92N$x@I$!Tg#Ni6+>n!c#88u&fpkic>Ng7%$RqwVrb!P<_oYE=`GnQNrEdXYP}fQ^RPCO#@s8R9h$Rd<%{2s9{o}Lethu9I6?~WIRrVEyqJuFs#`TnCZ(+BBciKnzY9MTF{(k)Q528M1kj07vWhiKvwGFfjW%tMh8nP*% z*;nYe???iFKYIL!-q!9Iusk`*m2q8XGH(60B2h_dAASgS!=jpNfupu>yr^!%*HV!W z$KmC>kG$KYpxW>R2RI<^%HU5DaRm(ovYb6(y&S5n57k2(Dz9VfsvuVD@T^%oL`A_Q z2#|CYzpk#Eqn_YR-oH57Mz(*cW5^H6>Mb5o-IDsMdLkC;Wa_JAcNlrLu;W#lV7)GobV zhcT|{MyoC^>PgKwV}S?o?+6ST9yKc$Y$VVj_KWjY$SIvR;?(|hE#(LNS5<6L&=%pc zsa6gqO==C_pjnf&3772oZG1EORlC-SLdg7ErEMeKoG1iu*1HgDChze}`2BoB$(Znf zb5#1R;y$={GP3xkn1wuzIEP@Y!A%X5{igNnuSe)AyjFV^HoPllBu~}nW=0I=v?-V2 zQm(ijNKpdJ4`hP3ta3L09Zg*fQN>pF?Op&5Bh{<(Emb_*Th&WWbsD@v-MU7PKoWP`I;=&-_ z7_5P=CQmX~wd!x^k2l=qJyz8HSWo@k0Z$&JJ7AxAa|H7S#__M8sib>W{JJ1&;kwZl z5HEs^UCueZFkcx*+JtP{)eT)du@fqVf6C>Ii07Svxb+vN-~MGrZttox7xTOdR}ooR zfK0`4yquoVfHfg-(BwAutu{o}FwacMzGny`*x8TlyWrILNoH(Oz)WM)zpK1g1? z1S}LJR8QTD*S~tWkv`W`G!@nOY|wFlz1Woy`=)Bkk*=m4jdF6`{65w&#~0Dl9F9rr8#2;+{rP) zrfho&`+DakcpBrLMc17Vi(Y}0s!XjCi4*YsC~aSf;uL_$YEq*u!KbQP&{XMDk*866 zz9bMb@fQ4Y#fH}1mor4(hIgVw`J`;CxPf>hBjCI#)rd1OaWBaIm_f8zI_Wkdxd&MO zATOOneVU|~lzdbr+MUau(3yqA6Ro>Cm7q$5lV9mh{Vjc{jX*Fj!=RhjK zcf`;`&0!vq)U2ycm_o%@IndPkp%()OXMB@cNXaf)0Dpxc_{G*3qx|4|h#tI#!3LmSmW?PL1kNoze!)*2vCl0@(*mv8x zpT#7zb%<^lT8SXolf4V?7Qc+!91EnGsW^jakUmi+q-KCLdx^^0lNOjTdeQLqY9lT|CT71?N}bkso!j1J<0-tEr|Qj+4XTbn>~s@UD0{Dn2PAy9 zKmt&3(yh*fN!4fJqEnlX`X}hOD-F(#2RZ>R6(&#tZ;olW~fa+|J$cRNEt zf~$g+aNk~bKi&qqX>o-%7|6yIq8AZBnP40N4aC9sJ^`hq;>4=$v^Bzj? z19=#a<8U@cv3Cys_2NFF*v0S1$A7Q@Ca_8gq)+R1vgYiwihzal&C34gV91YN%&0^| z&D*4}pcr^DpKQj`{zmyefqb8cd=t~n1OyLlIFSf)sHkff4R-!Dr_P2GV=-4!gD33f z=hbb)xK(b5M;t5kJx!6%D8#sQhCi9m^z_eF;*-DgA|(+t3i*oaW)7~a@KXw>@M96| zgVCy$KziSr0t)jFS40>`y-T)8{aILDEg31CWoVKNQ52}`hHMcr;2394zV9-ndz^#d z5hm4sOzcnyNY|2$k?kJI`2G#V{w8fF57nd%xEl9z7G-L$#IDlyh(2E(3?eewHPVYc zKy+um@xB^w^Q8#Jty@VYiKMM>n0Qz34d^*K8aljbg>RY{t5U;!X4z1YInQi5Kk-T_z?CBgViy zPrd!@!e+p`b=~Zy_5{$z)Ev>4Co{YXomz`q06k)39f%DimcBE3zuLZi zyUC=E_A@`j*XIgZp`>TfkZtN}M|>449gc<@#$b!N(3Apg;o=mHF=1LGtV(ctvgRav z;c8~Gj9Lu>xyI=!BYsNUsHDR|R(&nn$bo;>Q*M4jO+~BBgfkM5U(ws zUvyXmy+i3D)D+bkR3+An-i;R@FtZyprGQ4%PCrryj!Gk8DhG?iXSFhua)n~5rj@ey z58Zeew4|lu5pvG zEz_OVdXOx|D*-kNRFw0I&u?OwKo8zV+ljk~0AZ(A$_p8Uve_f-_{>4ac$Mt?F~)k7 zJj$E^uEn>Gk<#E+ZEqQo@16zC<>=eD>5Lm0L~gNkpdm$~!}H%Nj4Y+cd#ZqjWCa|vZ8a{$WJ4ynzSvX1VH$oUXcMAG+sT;yZB+1BMb-Dg3PTZ4-+%OoAZ zmA5L#S(5;*!LVeT!jF?)T4KR;noyEvlF+1UN$vfTy`<5dK1J$-_cd0W2)U*U{V*c4 zb3{&rAEj0wNgRGE*_!+Qqv4cLtV8a?@FE82QvWpK;xytdC&K5!RRRB-cQO6?k-0u= znoqpKt9ZyhoFa3>H*@9FY`IhKpgoteB?v=+@W8>f*pa@vpA88P;bgrvF}_}eW(qrLD4(E~R6rO= z46q>2ND4*C~wo8rwh$yH7$wT(vJdC-P zAHu*b-NCT9O+8;wpr6ZRhOvOt3i{B>B4MLAyK?HOr*XCJoM~piBiW9*quRYgBX|F6 zKIYo`rf+U>AW){&tGk5nC?g>sGL%&fMV5CiA9xY6kuF?4H6{OOZJ&{77&^5fQIfPZ|B-h zaWt)OznrB45ukDnT@TzHCdcnSp3#we_v?o_L1$IV05*`;frKr_0-r zBk676v4660DW)Vs6gEy3I4Q6NZJca+jS>**8lJTXbw`U4+HF#GXY8dTl0YIqK{7!B z^9Ua_Fi4wTLW!j6ZRDKgaqdRsFKv8CW%ndy2Pi)4?kA~VDfa8*Xb5Evih?HkI@j@^ zO*V!a2_#Hv)=?4eGTn=VLziGs)xS>3j8B3K`a>oc2s==*=SehBIt?Ayx?x zDSkMP1h*JewnF|Ud#|^8+Vn4SyO}vJvT7!9pt>6hL<>B3IrM0`P9?eZMRD{ zu3G?bpID5^)pm)?bsjk`t?0Z=F`yDV3 zUQ0XRG%Anhfy}X74bSj#1Z1~0Y9M4c{v;1m%(yO4uMzbCA?W^&Vy6$)QA|a~_ATG1 z4NDqhW}VylfHsJWA5(y5?^>g=VRkWP-q#L?Ke;8|Nq#)fj+7{PAB9M!`D(OTAV>fd`2uV;CK5ZK6Wc8FS$WW!x1!zE8q1=l_4I4a z%Jfp$5(0x&>Gdn6j+XTl%07-GZBf~PXKg0SB1!DSFJBy@dUxa)abu+WHwCv(5ZngF zP0$ZNXx&^`bD>~;=fd176LZH-jm}( zG0}75(G=Uy=F&jNu7R1t7W~=s_*nXS~Rm7Uyg@GlHLFp0XbLAC#KgjSZz8)QtSf8kJ2!7 zg3AnRcPfyPRs{)ja|6X`il`bbg;T93gqXQr5T50%_&&Vzx5eJkx8J_q-vT92ytjK6 zkUfzgwCiS_j*H*ORTT>+Nqwdzb6%FA(u%WWiSgQdeBvvycPJ!6B^3MdiH|tSH*fNX zIMV;2lyjWfs2+~x9twWeG}INJ^q8NNo@7PICLlP0zB#vSm@Fb;g0Kkfs#+9>&g6H1 zH*L5%v=vMS>3dCyn=*JsOXg~h@W_4Ux9U^2^`gx zmfZ^!Tsajk7)fYV6Gl<)D<(4Aa8vK`zclTR++csU670H1$H-Qq1Zu*e&^hye?CR^? ziK&gZ^v`}u2G>*Vovkd3uOq?|+t~|%dWtmv)7X2PzVE(3lCB;wF?F<83~Q$CxWW1> z0$2f&LHmHLvW==j_%>Hu>*e64EgPi#Ii-7oQ4=3C31eQYXMBB;tzfxvv?XccRHQ$R zjtn>+$0&$2Kny!dbV@^IU{K~T&zK5D*&-%-BVV`GjC^%1rtt-?%p5;i&&s92lsQI0 z)j>)ckPv0*O8xxm%rxa+UcLCyMBV8Fo+2-+pA=mj3U4)k`w1Qd_yX!fqL{mt3Ob6*6y``(MWU`ss z%xs0II%3is#ICkK4+76<%egfxrmklzBL3SMeZ){T=eT#Zpq{ zD2lt?N=&$qcca^{ZH5Bq!60DF|6qFH?EQ0EL)W!xNfA~hk^UB4b_)wvR-LF zrqb0pXkT-;yv5!NUkBl9AZT1VaeY)!U05%j!hK>!C|QRc?uFn*Odi>>C>*Zz^(~w-G!5s^FbFyAC1$v{@Pe7YXCpq2RCM)uGk#|dSr81l zR3lKv^aP!WvdbEc1kLj>>#(x2eMgJMz=WnM$a zh^G-cT`FD=qjn^_VM>i)v$BsrYkR+SxLt~)F2SEddB`k z9(G?!*`R2P#vG)0s1V)%cHl!cjJ^n4Lmm+up@T&buK@|&VBU?uc+#^w$ zA>I%OVr*EYfU=YsAFae z33!Ov-)8&)ULd(L3dMxt!gMC4A!F{B6vW@WrkFr=M?R%Ya>1FTFH_PcQz72$Y!74k zU~8Q{rq7+*SZL|t{ic5Ht;lhX%jXHvvg5*a5|cX3gyY#p<*%@ESku96<> z1rh8iqX^7PT-s{piwS(uLX4F2vTKAp*<{~EBW8or_PHkM`7P+uVkQ1D(v$;oWCsJ! zit?uXGWrQQM+^F=0k`bkR@4`LrDmnf}Oj<$S`I1#ktz%D)d~l45`@M zokJeM#t_l%kHUruH@4(>)QK0F1K%_=^Wz+~S0z)v?0SUun^sPON;+BUu4)r(1)Xv* zn(x9@P@H13?0SgJSrC$ls?qnag5Ip4dC$d3TCb=yAyNWyM$1L$3(b_cUZksZ!=(=@ zFW-PthMM;XpBZ?}Ne(yhuFC5RYvVRz%X3IS`Z&K%e<%lc^oCed_#3OzT=ZJ5L<6AE$>ubtGQ}{EIFly&?_fS6} zre!#b&;~y*Qa%{pxm84Z= zOIxMU6(fG7?*qPn7jjZ=m_Zf<{~7R#`mvvprDH< z=aj!6>%6}k&*^_kH=d^iMSChhG>Yr*$_dAmUA$O{o-GIii2{l^I$0&PD(-gMb($lk zmz`xKl1{ur3tdfjJwrxgaT6RVRu`~=k++jxG`nB`=*g`*w; ziDyKC?P`aAV994FT;pgd#)H}^6^eVDfp|}b6*0`k%5?LWcum~j) zEaN&{eN@FT;Zh&eRt!Ji_CW-04A9ot1WZu z){7~F^EAlH_%LFbaQE`9!n>GoR3mS%6$^bM4gh-)8t9W=g%M7bjECM34g#rp1^NA+ zR1)1NC?N~h#-{eE7d-SWj)%pov+`0S+({2!A07rInzaSm$i*Lqfv7Kugnn1$Yy*sE zd`b%K6ofXve%R%PaM4>-Xu1_ibpo5cNtsWiVz`?ZLfjret!3_c*$Ni3U7s@y-1WB6 z?cJ%+ws|-DK>g7#K@i7yYX&M2#A3J3RQySpY;cX)2a`1;qC11JL_q7s8j1S$S$e`Y zj8Elb!F@4qU*@0`_F|-|p5JktcTKxW=wxt?&)2hH{e-nRZ^E5Cq$O`Jm(6-HBt$+l zY|O$V6Fsu=DP%L$*Y&Ir7uUgbXvKfzFxoM#xA@=EvnAzGfkNbgJ}VQ=w4ENEF!Y6uKU? zF74#vz|lM>BqZmYieDPXUn%i}9d$s#q5n$dub1k*U0#e|JXi;t+tf_!JY5LG?YEwPuNzE30mP8o2`AddebxnK{e`u=2 z7>_COLN~!K@%SOS+@PoWhL+@^ak<3v#3K=R6a6?$%4D?d010+$IZ7c|ON&@gUeC>4vMflp>Ia~$i>dPP_Mp+yTjVksI z(4u24j87azHPsX}QWe@5OCkbUD1w{%qP-9~=d~9dNR4bU!5!IQ{}Y%sMn{BYE1890 z*4N3>tXFy~(zgy2E4LF%LiE0MkQJvM9a(k9cMzAL>|9`Oxl;YWd(Nza>~K|yo`vwT zY)KDH`<|g7#9c#(A;~C~+Ctf?fSAT*C5=v){!W|)Yhv!~P>EWQd8)p)=Cu)|T9%R^ zw%7K{nZI!s*+7g)53qh`G|DXoRP*0NWggQXB9-3RvjeEDoFZDyJ%!*NaVebL5f6lx zH-u|y=}QX@UMEcD0*G@WLOSTaL;n5k&Q2es-5J?S2_`9T}7?h`D{nc z@;u+OH!uFX+KY2wAQdb@{SL%dyA(J`?jdnb%Zx{#q;n`~Ejf_GAc4`;d*nVc$-cCV z!V?2WvEFm@w_SS&_B;Ve#+VGj9k_5Ou3i{61EZXZ2g$;tPFM0E+`2o~L-}!XS2sOR z3@=xVC5?*tn#(Qc06>3;HobFZ?TBrY+FM#spn{TvW3M=r=WNqbkm!6=w83_%kmR1B z6FvK%Y0H1i8wSVjQ$QHSt*sLx z@p-Xy*bLj*ZNk^oLr|4wR^*%Fu@9A@Sh~dc2vG|Qb*MzFu{m+yc0#f~3*&)yq(a_n zh83AfY{Kc%XrK2O$mR&t7unQe@X8$$jihL@PYLmk4vvbw7g9oRgGp>rs18gcF$qrb0QqEyQPTY1`?lZuyOEtfR5!9zu}P_sG&^M^Y4}le4RmEQ=q3yk zWj+Cz_Fz9xNbZhn9wM$O3`arXK-m1QcR{52(ZqN9>avLX1MYz=;ft--Z6QWSo0(k>g+b9fY^JJJ+@k$^~~Up>#|Cb*yTO-HEK5FCC|RHi_D`QCR| ztJPw#MJM}qT+sU)lrqtXj6o#w^4GU-U%iaM;Jo^Q-jPmpD{7G+M8oMfwKyJLSs52 z4RRy&zmw-?3!a&c74D70FJJsVae|Js?#|$h1|=6#d}hbDj8@iAf}HbKBC}{03n`a1 z`URzl(^&Z=UWm|{2|iNEgOD|yOEZ@lV>iy2`v68lTm^MzKw6+7@}AewGCd>dQ_=)i zH%XLtj=!D5!q)aLr{7Kp@>0q+?e;1jI%8&#*&yDLWi2s1gEP0$iuElkvfkMOzVSv` zoUqMAnsP5|W&c`Mm#lhYPc`RVB=l{x8X!giGa>@L9V&mbg+4|amA;9HmxX(V zj}aF0s(mv>Eoeyy2$Qs6(h}T)p-xYf(h*+XE;>CNvKxXA*M^eoQXv!2TxnmNqToVRRJd9Hf+nM!sc5P$?XhEtUG(`>;GxbSW&4J;RAekRRw*jGS6 z(@;Qs8YmcQHb_YNycePbifRNWH0H5d=VDbY^X15%LTw~96uvn;mbS?v<*$Y5J^j1a zQYd6dFd-VuLn|AvPYTE3e?`6yiw|sc&|vQ*1Ci3DvBwhAUai8nTwg1G<=dD$(4Mt^ zJBF4O{kXVX5?zv7d|zRgAHgm^lJ037F2n_A5Z2XI(y=sl6@p2%HY&>6_rQ#mIli5h z*kd|`*pw6^$YQrD7xK#bhRK`xu5(d*qFvxDsf>D%b}2E8WN+-%T)vlQtaVGO(5R|$ z`ne2O^(FWIq*#^apRzLe)}(>2+==ie6?>ph(ZcAIw0E(&}jG0 z&v#FZ3knMFq^2AR+vj=5IYnX_v~+S+z;Xj=H3vMaSZi~KH{dL|Us@L;Zk8SbD^C;v za}4l4&%llMWg7Okbvk{hwoZs)B{G)1dK#PXROt@ZEPpB^=G=UaMem5_A$*X)gOd7{ z%%TYD<04!~VqIZBaK3VsRBSGfQE}YEXDHY$@oW3Ezylrkyxe9V-@gtonOrqWWlP>GzpaBdVcJ^e14@t>H1aGZo=8bn zLzXy+a&^}Pk>n1-q7Ue1bm_E*D$^u$sijz0AWyP4kx|j5^1S`hlTvdoj$9>Kg2|<+ zn9RXb&_wgbTE+<`m}-vVFH?I8_pt8?taVRG=vVPGVW6yU9^oK~X;6hB;SEmL73&3){kO4wERnm^Er+Bl@s!;hP#!{+LJ)L4nyg6VaubV|`8CdV`pj*Jo-uH;X7;m>V$$5;aJ@TG0jdIylPO zqO98+Sb4uJSe4S^rMN9l9q)zdU6l)k+MW|V!6=+oFd^xulp>Ms^W}PuW>^aX1C+P> zdaIk`R7;U&nd7#<@!m^D{3UJM;p7{0y3T<89+MEKuX0P!uy>o-q3j5D(4#avIg2g| zNovpoXL#+;m2S*bjvohC0tT?vnp&RvNiKZD7!^qh(PKnNUrLLM-Uo21im zPWT?10Wui2Y&jiKtcEVd#jOT3R!SvP8D6BM5~T1ONlp?zJqS%@W*(j&1~wd28XB~G z06$)K*XsZJiXL6eNxn?xtxoSu?BD=eoLyCm!fzo*y^ap7tm|nzD6I zN`t;Z)UU(*m{HHsNAj(Qmc<-YQxf_He9KPXqeAc`X*tweKQ4e zUw7=+Mkt?-iwPO3NA|aGCNzQ6U^sCi)FsaHj{_s$;$i`JL ztIDOr`|~NbhVaN)EY`-63eT#;*w3az*s>-{{~^7tm8m&mBq%XO6SJwkGn>L59jN#n~`YON;aL0>WP z!$s0-^r4S7?-|RA2(~GO+4cKG|uuLOK4!MrlHgs~#4CdkiRdujb#Q{ti%& z9;yQrmJBt?kwwqG3 ziIk;x>C=d`(<71B9@c&A>F^Ru-kmS%TxI+rrp@ZA}iv6VVfOG^|W~)fdO{l!+nR-;gBLD5n7d9pR-ApiWZNp z0iBGuNl{_iXo8-_x+W(=G7Q(WVb=$GFL=$=8Bu$<(Ie5JUU?)k%ZLN< z)r%j;5&b4wg6ME2s|cc9x-}+1Z7V3^n84C3C8o>XmO5Oy-gF=H#l3%7tK zqWQ;4g9O$i1%Fu775?1kdH(mABjRfEIPI7+ck1bgtnkJ6r{sK2jE4M!U8M`T1^<3 zA=ZD`prUwaokYE_TrLM{j4RTmpL+}4PSmAEMX?3;BK(omo|K6&%Ic2zd-;6QBE|3{ zkAZKD160Pa?^?ns0nlo1YHc&OA>@1Ky_EgvE_BY$BD2UOt*?wjF9si}5tE883hqPL z1(x*Y9Ss#gmPW9QBe`ri+gf3RpYqa6LRVH)KrPvEK2E_9zUy(9=-1%JD=l8*z7Wpv z8|G$bB){+yQf#7AunjWyz3|c(wI}(b!L{TJ^Yass0anQF?tr0Io2T?@h$!W)K zM5~eB8RKG3XjC}1tpi~7@TqKZrGcoi9$AHnQ)D^}qi=~KXkLjUrg;&v;B(gHje1Dj z8gXon4~~kTs5|_2-NQUsbY7{Q-x85*EMmqff?(?h*^1Ptj|kS;szM)uqM1y}mM;aD z4|11-;ogZzSd_Wf7R+I;Y7WE#iLL7ru{Db{P5|? z>3H>JHQ-&Mf3X4~d*kZ{Iy!jtBo0LX;(=iL-4+>u+*-pS;bk6lz2z4M>iqom!<+RFCc)Z#x%NMP~F+8s?*K(&&D$!M4 zgg>8Zl%t1ru=dPL@u2Zxpa;T z=}!GGc13!H`bIK4BfF=(KPvHWN0zv9`%-AFnsl|}pe&<1(F+1|0yCm`Vho$1j>*+> z9%-P$pZvPJE^m$V*4oD5ZsGWXpCzAir)5hXE!Oz?LU?wxNCv}8Y(D#^a`sQ<>=S@0 zT$z#{=mi9ktLwrVoz74m#sTIa_3PxCh@xx=4lTfB#b}J8K7g?aw2knIuQkVk>VwIc zVDT`!pfY!W$>6QFKxJ~>`KNOFlrKBf=XOAd_xs7&|s z+qivZmuhx~f+54N%;Q)2EiWv zKYK1eS8bBlzC(hZM?o%ra~^(s4xWdwGf0z;X2wjLT|_g-0>L~M2Q*+dy^-*SK+Ows$zBKBBB?6HX0 zqhjyloYc?0lQ8ALa{S&C$U1eS2x}H}ZN>S}=`dy*EmFkmFzrOd?$fC0 z?_u)jL3)_T<#p1pjRMOr6e?nD$5o>a}- z_0sp`6yn18EnX<-O5w%Ec4suk&!F3*O<)unFV?IyFmwN5QiMAowxrLU>? zMEbUAm2ehp;V1YI(KjuQRlGpIs63^D!If}ytBTFtRBgk3L-TF-B zMb6jUzm!Lc?|vHzDoUx@q&Q(vzAl8sbVQEsY2#5Akl=}c1W$rr{X=Q(n0jjQlU6s8 zuqQ=e6jNNr*X0ZWJlI{gVPn4}MC#5<-Rwmnj^>)%=H06A&j#ynU-9Tc+E?^$$B}Hu zk!;6dxbjPsUjMC^8$lv-t=uka@?TfF>s!Kt@CSbT?KiIMmhXHO=@@E{PNeoIK`4eB zXGR>n61q%un%m$`hC;b9g9RAHA-M>}E@{`n*PsEVEd6g?s+8@sf5MZ0B2>?>qaL!j zvc%a;m!?meglmWvt(>*4%Wv4P)Y!^E;AJ{nMRSqvv>wsKqlU{OKEf2)iRT27C2wQ& z%huiVjDsmOs?napM^6bT{b=OOrUFGg)xqCn3raezxuVi|9mKl&Rf-oy?y+oBNNAj! z+ApOwX^v)$O760nRYZU0n66WnYbZbD1k(AdmCx6^Hm)A<=U*frd=|7|8^)!z`mw$w zfq20K@(Af?2gUCv$A4_ru*Y(wkL5@o74OPh&PTkLsCrUMkhz@Rd0B6c%bciHCU)7$ z!7))2oOADsZW*Oh+)n6?P=N(f3@WWUs8?fq`6$DD1JZ49Rm~PAT3NRdNipI`SJQ-B zr^k(<;n;}N;f#B*y#ip6veuC8^?6V&;ciXaCMAg;D;M=e<(k2A3Z`ty_p-{-umZtj zNSG_e{k&mWBPNB_N{W3KU7S>GvQg~lA&mPX=^r4Lh%=^74o-Gr^BQ**gyz+r+i!V8P&pT?3lBV%|e815z_D>E!Zu=c+l16>U8tY$z-3 z3~0tSmz6oAeAn1!v+K&hojE)x_I_^WktUhfKPo+}sh0(Q0=ESlTCkJBer&NJS{Z{PMYCbFqq(tDvLA_LKN874E#5#4 zk$}HYxREJO(NQt=*3*JM11qUQ$@XwpBcqL08?G>(np!)(wIQ6KkqNg>tBKu}OlN%G zR&;+8kw*{GM5K3LAIrWzmVJGM4Q0lvk{b;9r1_>jas3-4ENFdMl`&ij)@`#YX_+J5 z9)~QnLNc$?VJUG_B5P|hX_lTJQ%JV7eljgDPYOC8w9+W57>$-}uQ);!^e*gyeHBOQ zG<*enAb&rvI1;Oof47A_aA(1hWZ9CUqs)T7L)ngm;#}#@pDNqoVe+nbUtP9SXfDbQ znZU1m)#9V8T)IN(zhADl(cp9p}Uq zE{~HK8NF0BpM-;6UMjhJYYb^RHHk(Q1vuQo6)1Gd7VD*YRYL1jf&!)6#$LVC{l(lg zssCKh-pKlGy(`I}P3n#}Cf!aX`y)Pa zSj)%A>1NK(R-dJV5mt&E)jc1&*ca!b!xHUdz1M3ZZ(;aT>7x?p+z_jhB_Dfc ziDSAXMH5SlVV?Y-jcptsgV^P`8{5!`y879j*ajxlrPNF!9sZ@$XvfA#M|>gkzIc?c zc&ih<)rmwsHv7qmkF09+tNi5LN9IAc`^is50H2BgK2f8nIIFKKjsx1QtxZj&!%JB6 z>3UMRTnw$AsD5cyD9h_CbGj&f`<0urUTuj(?G8&8C14h_lEcU0xm)6{2O4-ikoSE` zm()d&rk!Ee*x6CytPGFjuexRfuKTMsK3zGBXPh2h(Ef?$r_8@*Ia-v{K@2hkMZz8x zi+kia(357LE%PMrRusn9d@fD9;uVmXzT6rwvsS7(IMVLZUhVI^^5~&DuXsOS^+e2C zPMXVkP?!)_X_k4BETP0trWF|rnQbRl5+HQxn)N*wIoYmdMsc6|i|R9KC;yyU>#9*w zt{hpe)*wr@rP4@xYDv8sRlsp0vxPLPKUIL%HNHoS2s=M z$>48_alE0`hwigk+gnti<(?$@ba+rufMq+zB!TO=*oRl|yzz77;JT3z8iH9 zkw=G}8+eakEp$u7(9m6rp`B$XeQ>weJ|p#rqe#xfXXa#f;H4}ALodSd5)J$)nY1@o zhgt9Pn4I*lZZFpxWh{IcF>L{xL=*o5Mf0-hBnSTc8<-PYLW)90%a;4O-c;wfluQ0# zNx6h`26{?I^HqWcwA;(cmS_ggkDW)@GE;(Z+{|snRDXrhji3=NOGaz_Aj`->&mZ{A z?U2}6n}c;c2H!|>c_c>GRa5B>6J#O`3|KBB@FoI=1$(&mexVM9^Go<)@>0|Kb3I*` zGk<`HJ%^8mf2D88lqbLYwbtJ82oY(+A^7DdX06&3jEqwWf;qSh=Xy}c3x%(Ls;ULt zWEzKE7c!h;-%c{xMx#P`!DrQlu&fAMblpyZt?&G8zZ+Y0jwVv@kk$SokD5)+COjD8op5Zu*1luQVrlB? zP;ys?N5KuLqSE+@8*;e?Tln8vj<1KzLFSP5h{1JA(Bx7y@I{c;%K9~t!M?(E(D-KHsL|Y|z%uz9EV;X6Do!!w$ z0;8N;P)ya{{qkx*>hCJ^=s~*5^vjp#EDt4Vd3bC--z!)zXH8T5QZ6s6?y1c3l*;2D zeZcdId3ya`_*^t;6&l$sb{tu|xRGKKZ$=)_X^FUEtJm-wk8sR?XxnI1Q}P<@%L_wItwmzqQI!Upu9xu=1u#n znZrX#9Uh(}whnJ@Lu;^OZ{?m#w3pvqH>jrg<$l|;wY(65oKg*Mw``p@Q zS=C(Np(FzjPm7Opp_?Q+MNTe|L-QY&Rs&~uKu2}zVmZRgPFBjfMC#^bzc#?=rZ?6s z*`cJ#g06pW-v*T?nfxEZO12lZ%bUH(RF4H+Q`*qHXqI^-6HVOV-tIFCzJ`N)D4yTE zN|u+#9%;U4sl`vV_|JF>HENudi^LA7zN|EaW>#iauRrX7UNk7_@@ombci%fok6~i3 z9)Z4E(;rnicO4ZuHV)O!pItPZjB@O;aR`24eOHc*Tyhhqs1%{6ZI{Z2sTerY}cH7!F^qD^PKvo%Kt z`)Sci_?*v1Yd)){u7rT=#95uOFIbB!1JIMMpw;Z zM^{4_Kd^j0;Q1(%IJGi~_bPHp9l&`N{C31MHJCrGFT-^?I2}aWO{*r5%CI!MTLhw; zH4~3s9i)uS68B7mGa!B&S!=kG&f&X8ESNRoZ#au^KIz4bZpU zPw2bsIbr~9UP)&!w(3!AZVo=1#3Cs9dhFMVzGIO?U! zy;HZjKFd!o zZcwJZrF$Qt3A#0?ka)6J3_21NknS|c>%DJE_#{HX-r*tS8e(1uC};7a@xwHae%#+b z(A@v5Iy=Y2dnh@ zY?kdaJ@boMb6YvKpYgJ>=U?r)JmUa7^WO)OrsG!o8$4}&`0@WtOPc1 z@**3`_60@L)2JTU`tXuEv%1aVNHC;JU$3sK4FSqRPE2*Q+0h|W7G`WO@=Jt4H}x~~ zL$m}W3AXO9@6KNT`u4>y5l}aZS4OvT%gQ4ZhU%+XIN})F6FZ2W?1~S*@FMsaCF1)u zyABktufHbn-?N}x!dh?#5;X7Y!P3P5QA)orZr9+P0CWTX&|u0Cx%9LG|B0zqQAj^;0FFe+~!#bzDjU7Nl zblwn5h~+1ukh@N$!F5m)nPHtQtgJ_W5F{})!eW! zab(&?I!FKv;eBw}-RY$t540}A^?Vr=qmiw!CiKWN0)Ac8?>Xw8lZFs5DiLi;^1$l9 zk-NUsP#(h*lCCvz?>hIdx`^=BxbNgZ1N46CF2t_`Fo(??{$%<%;p0>oC=7a^JN+kNdl&JbtKdDK9)xVirh>t&`Qq zY1ilf#wh>BZ`IJ{9_YKcc1^iBD3S;bVc>`YnOD3=Y-3SGL_x|OO)vONj`T>H9L3g0 z-L6L(ZSs#4@J)OiJt!!RtLBnXKn6bWB(E*unxRxE;3tjixXGJ5=+}8<&A#xz8Wz^T zg>hEsLP;>``6{2w5b4m?@}ZH?jzcONUNg^e#*R&Wjm(oSX!1!HY3vzaieSz`HfAyB z4do9<9FIGaXxxWn(C&To+NT#B0BN&Y@?bUrkE#Jz&Mw2NuCA_8K1Jr4M`GzsBzh-# z-+U{AV`@{PPFQ6daWWp3l`5hn3n|mwL&!P!8qyx^voQq;1JUQ;_&hJz<54v;)UYdO zMS?djs%0|XHw#F9%jbyu_DWxn}pa3UI!&S3zfw}T?Q%k~=u%M&W zvR+7J37z3Or%v-TJOh}|m<2_Wh=M@y=^hKe&+ukD^o*_e?74rwY2!#;dM(%W-inM9 zA=^VSD1;V&AN`_|tUq`)PsJEV!1hB|HUMlulfO5J0&S$X!}^BX7C;SvGNSwhk=1EVKk-uVb*d~;_Gf0^N)?Mi1z)w(Xx}R zb&_rz)d_~_T|3s?D11PyZ~!5i-DNUTcz^EAUK1?|k?#|Box?=+d?i0!ltD-QSI^ge zG%o&9Du1OH9>2fo>(q?V6@(7{Wc>+v8R#S7vlX3VK3{uSVqR91*%a+{(CBWQFuO^` zn=hUH#L;0>f0NM)#ajAdniZU}up-UOC)M~3zhN--=W^o7nU7h*cw4PBugZzP&{R0R zm3?`v?5XNN9E4aU?cT^!<|Qff`>{v+yURR&sO~c1&k3&|*svDc*abwdjmW5ii9YZnmA2ssaaLq5Gem;^bs7 z88iLf>B48CMt5|A2dlWCcSP~>172R0OQKZU`t>9J`ce9I)!RFeLjVr-JXtS-9Ryh5 zzjC-EN;HpNuoBt+O+5PKSPL<=vPvq7GUFGnr&IyR)!ilr8aHg3~0NS%ReP zOVmB5Fzli8hMZl6$*fmY{o+5KiB_}Ja!bZban!Mk>yG8>(+J||M2HH+jfs>!D{b|$ zKB5`?vREn=DtS8BbnQjbE9E)T0JFAt&Fph6FK~{coC}yo6x)d4e|-zt|rZR1wC5s^E&)8Oi5cpB;+*M~!JlBs{;-L{mKNsiAZuLu=z9@@9fM@o$nLyW{KV+6nQW8p&* zGDtq{A?$AInJlL^ZFHKjl4w6=W{HXKmAV%_!&qow1LH)oSLc>m?2>5_!D&Ow-!}V# zvPHc}xL7%$)YwP*GLAEw~T@k0j<|-*b>?zZO3W?E(m4?%o z(Ie!@nYpmoGh80~!z6y#Rmu@C5KV4R>hMk5y(f8DsCd=$n>r$P$ty5NQg|*52^j_| zVi{Fna2bO0bx!@DWLA`+mf~uzhgWBJZFN4|7P(bCwH_qzlaK&VQZteuWc}U=8Go)U z%{cm-!k<3xkT;EofgEjTUI%)4zMGKxW8W}1@O6yl?e1^Px1YtJ#Zgnh4LsW}UkZ7a zsGX*_X`48xR(3G;%32Pu8$Oo#XfOCF=dt}IDOQu}k;J-t7&PhQ{?0j%AF6YXeF1xb z>zX>z@8zxN;mZ((%U;UW1TvunAn9${jrUPci2~BNb649F&#-0xScfFUFG&1ukG*ZU zT#xy31?1{1Mp1k2R{z^v^ZDScIoq9>GGusTT=_R2pk`Hyc1(}s@C6F4%52btRsuy zyt*o97is%Nm7O%4>@#?6w~^qE9lerBWTIM4m)GtRPo$ajxC_i!*c}}}8UW}2rCwrlNtZ@oM9r3n*kVQn9PjsO676np+f{Yl4jnIx2s$4j zag-!v>Md#?S`vdILK;j}D;Olk7s5NOug|Ht`l6^16-v9z7$2)%)CjRt*~x51{~KGe z{}8jJ#8IK6X(GBNaQ#w1)qIHx+=|^+(>XdvSWPbTs?~E;rlG7IWLskxO{atp3tPSC zfh`z{q3@uv_xh4`F7J~|szoD-%7ZC6&c5KWzxR!($@J4Q>3mq;0^B{OE z@Zu{DDr(XqdHPJDa2K-mazO>Wz6zz+xj$m({z&3BdUR%l>WlN&*`9}0x~Zo@0%fi& z>TzzxK-#F)N|5y*nHnn^31_K9y?4*$A)SN_^=9YbB({`T6@W(-Ij|+wR|qqgZc&ls zX;y+MNTscnZ>G6YfSt^j_(AJNLS_Ox$ zUZK|uxoCcUg!5KuHUx*N!9mq>^JYGB*Pz=Ya`K6=NIyk&AWH==@{-bYEDyvKhl}u4 z+DX=w6Xa3NXow9Y+B}omNVbMkbj;>lElGHT2vyRH(Dv7Q6c{;5^44s?1R*lyXhCfo z(OK%NAjCIO($EO$G`-354tIrKAT)=czg4c*cPH@ zHi9*b5R%x^s4Mw~h{SbBIliz1RCy{FW10zkr{BA%2&<+nit4+tzSYy$l`Nk!6HJru z>&j#+;+ohBWsX)rFWK zD{bExvwJLp<_~V2L=kap5mh1{l*y|Hmq!J0QBK6n)se&=Qi4&K*KS+s0$I0)&h82E zV;pXNX*8vHV0m#tFWUPu!!#!;0E>dM6ZBQmtjnd5!q8bD1B}XX6c*wSgV0b};#9jA zK^P^yUCztdZA))(MVFIrXLw%CgMYFzs7m;AzO2em`GYoi1i@7}064RVZ%d1b+B#8 z0vewV@xPC7snFXTDMI49s@N~K+=L}36(c0PI~|;ZF~Nt)O+JZnM>;B4N?iBDFM6ZZ zx|vqDQ|USgTUGiwDIGPqvffg*er}9Zt8K~WrKZ>Ohl$(uHzs=gAdQLe!y^Tr3@*Yl zT?t5M@U=Gb>$!MI7bRhun5!_qh(K~cI*|ou#f57nFi7MKuBf_)XF-RyZ=1+Ude3pz);&5Fuzsrk|q9bv&{e%vv6jd-Y!H@wn5>6$G{S1 zq<6E8Q5JM%P{*I0OPHc}1Q6Cic4W(0&sAxHR8sj7C-ri&z9uSib>w)_-9VJ4ZdWxs zhFq7_dkzzY^c!w)H;5$Kc8cO5*PikJvZ7^8buvDAv~Qj6Gq9F>2r~~hSM@ok-35rm zMFWF*GvYlN;Ppnru=5#LDt*R{L!ai4>8CY|Zr^%de2q+YpgT2(s{D!_D_!ForYC0h zZR!rZ2TE^k=DI&jc36PWd(^lQGzI%{XFOS45$UP;NKwRz(ecgo^?D9^0^7+;ZDs0#Q#&~J4u+D9vvt&rxj>R)%lA~2A_Cp&{S}L3{voBF ztY}lh$lKvKj{wJEtPf&aI%|n&xya9o+I;2hK+2>khi;u#uUH}g0aJ+t1~Y@NYrRWm zr4)4{V5eyz%twO$ww%Kvc+^&TYKqWhS8*jwaUj>+-YKC!QFy>|U8x#uJ1@ZGC@r~6 zOcKAWl);9kG2+O#M1C1+&cBlt*Y*&;lb7x#OGucm5j34wLaIFVfD214~M!e;YX5}|TlntWu6ePnaT?|w3zoHmul zqbALQ*+o~M(Y7EYrw!P&510fe3PA)#W zRv-i%Y4@r!#^y~(m)~j*w%e773bP1QR`bhxvymv}bz99oS2-B@K=Db;Q-WQkc%m)8 zqxElxNe2ynBX!7|x$^R zUelTRa}+Eaey!MBRLiS!krjVgmuY}%d_Gcu%dVW-O7fic>VGH6-VJY`LO!>O=DDybb3b&COL1Yq9vmB3P+LA#7==N>h z4vT%#Zm{I>-TP{OIistQ*6xS04W{te*;_qx;|sBO4LE4fZKgr%On3mOY$~!gu%Q}^ z#`$=i*ohHarwkC9y^bs#pie9i89;+zCevEa1YJd;*{PbT!ax+`=#D;(1HE9AphOTV zm-#{M`jYtvNY#qSt)*SuW?S}HOv8wns79I|cw_bB4k#W|_LVO%_lfR3f&N4Sg_sS- z-qzOwz7_@AEJ+J5m9dF)@8YWS>nn6Z`jv^lgv7X$Ty1KF&6VW1ikhXG;?SCT*Hn=` z=eNoVN3bL>Wl0opoF$7rlD_u~VxE>RK^AMt*c0MH7D!RKtShFg^{YT&f1KTjgYq@h zC}S2|GOnG0TnL}L)FT&zgMcZ-GNRyRwF!)P#zLx;k4wOhsH|ZjNh536qD@Tj%JM42 zg*uFZavvPa*der$D20CH+Kb9I)@5KaBJcK3W{iX_zk%6J}OxuQRW@2B#LA@@&jM(X>E)&H7$mzkpKMGstn9%hA z)3eL}b3wVy8tp_h8frFP>8WQ-XV1~W4WcRe?GuF{0wK(`KS-<%EqsHl zyz0d42F%d@l7izLs{YE5KyqCG0%ztp5bb;1oYC(vM?T1q+c#7fLJ%6KnU0HJm;DpC zD$j}WlQcv*ofZRVFQB8aZ_f(b>F&!gqs8EawxRDqh2@E7 zLV|v-nv7ipitgXH5P}fbOi7r!oxRL=Jvp^J(z&1Rjj?Bk-G!hBgMCrWB_NWIA`HaR*Rw8X&1En_ zzdUCm2E_?dd~(utJBx7HviHIfpz!Wi>2MK@*PPH!p4{A3$hzVM?t0?ri#TNnT0A9+ zdLpk^kIP(m7?kX2)pvX~b4+bBUXccA!9-zXBIC`{mj? zj7@g3U9)SX(@VD!JWaF2y9=a%nwLlm<|Zm8MEWIS&PkIrpxvS;uk>g)riU~R6FrgG zkais%9Z;dnNHq}U7O6_9Qj3kIF3kPGK(QVHCDl2kvEsWb7Er|;6fYFh=*&N^F;SZJUb~XuE@tIIEUU_FPITHrkAk zAaNVHSK|ZK4)ym7di)^$f=Ge|#^0->Eu*EW`*%c z6b2%CXi}&)FQL?b5Oc=j6}52nW_XuUAx1P)A{pma7(=*8OjWkh8Unl%VmS2@a6T?& zi5V=Za*1IN_}93Usk@()DqFwP=%S~sa1yt}??Uvl_4-yrzceBSQ$yuBCF3l`(8S$_ zd7EyxChuHWx^@j9rwxQj%fy)NF86%Ji0kvlBU;b`b&9=Wu!LFPq%nhUw7%x$gz!Y- zQb{N=;{w<^)^oGC?PZ?(-Wer4V*2>ss%1k$r!7EDaqfkCFw3%fQ2*Gb&6DK=D^IX- zsMwWe%`CIQuoFn$IU{3zIFL7;#{8i%(rO7JG;-|)TaJzZQ%MEiz2sg+jn&xnA4a5Iy47ji=*I&S$<|o%fE}dWwb1j%3&8uvjm2&sd&qXRnFMpC3-&m`lSk zZfMm|x>cg_`OC+geSB#g2@t{bobhkk=#A^8=ttcE#N>NgFCgC%5-%f6{l1bQ0(sG> zG<-R|#WmnxPGUETrdb*{_UG`SO&ZUk&B(h}rSYbjRZu$gg0MtZRmZdR#`k!QMEFiZCkz;gLF{)UD7rWop|OvN}()C*Wy| z&IyiT2mIoWrB6pwIDq>>iNfxo*kj@@K4M{|rfs}kX@yMD@{QQ9XC?7Nu5X~~k{I?w59uLX zAU!#3hkD>}@QsG5_w>+aQvoWUZy`DO<~wO%$2r^;luf- zqK^6aAxy{qCPq&lq=`{sU5NCBlv?#X;j)Y><`K z7$xgI=7D47EC_RpTgq;nUhtSru3o9^!&E|(lYSlYAqAcH$6tkl>FGEU;*{tz>jV27 zkkA$FOOoGdC+4?N45fNvPKB>r`FGU->Lz5J7Tz1~*c@3QP3{b+CS)XHqhA|rid%mj zk~w7|Y|U8NBoS)QN{E!E_X_5j%OCT7E{5rd4tkv2T@2oNNBO}{^S6y2gw*v5Z)*1k z6=GOahwVCML9r0bbN+-LB&2n2O#}F9Umq!DiB4+8+ZfkFd4hX}#4+9L2((6Map%>I z8TA(~mTWEUK?}6vRC=)sw{eWl%*Wc7SxkX$CoN-x=8ogYhrwJixQE8KyP{sZd6yZqWxMn!9J471&8j#bl=4*KG*(B0xS7@_-wgX)Y{k5B}OQ>_4 zKuFCSx{42zG2NXE~&XDMv2WOShum@iVmnKdvf&&@ghyyDs&`U zg0VM|fu00-zdaVV;99oAxC1uI<*~@+v67etwKJQnXIiY=KChN+yTAA+n`K-KYH?q zr9RsFx+Vr{%M6i!b3310EgS9KMiDJ~3oFPhi_2Ma4m~8aySThsF^BKBP5YDn{!LFF zq<@qDf>mvI&oFaCl*Nzq>S_su^mjR(X6Vf2smy|f{70=?ramsND7epsZR=rFY! zAO4HW_?F6|iBRR|3L!qdS*CJkZH9Rz4onL~y$$~i!N<)*&jJx-JeIX9$|9#wuQ8=S zwCEEA+A^nGcE)3hH}Lm6?Lxt1&eZ5?VBuw6?OG|QwB>x}dBFD6BGK?u=0{{S5|g~R zs-#wE&Ee7nQPkofY*t#8w3w~iz7?olNop(-!N`Ja0M`dSA>!b3*$dm%5xuV1(Q-to z6J4`I@_MB1g{{^%xTk~=$ZiD`XWuk2TvgAf)q>c35TnTIa_Q;|3OlS&JVTa=r?v$% z(esv3DT(8exPNpMvVEdj?a#V>(_)yhW}aciXlfsS=GA41Lc8P>;cvkXn?U|3mYp&f z*!uIdUAOFxq?n-7hPvlk>3K@`6n^t_v$nUl&kzM&SvRnx!fxBg1we@}kd9&O(!**aSe?de^j;7$Wa`W_08smdh< zvit_hmDn(raFl90J_|zz$z4_}lp4*re|)h==4#k&-ot&_KV3;~>d)#nu>Zle1himMqmTvh!8{^M;7y-gB(;Nq#Gj z5xv-@B!h7IgBdevNr(#`8N|5eh;p^8={Dz{s3b5l5^FhkheY)x?8l;=`qh@xx;=mX zk3tlhZ0TRwCzoe2Azm@?zZ$4*!E3Y^EOr&nCcnS-V+~U0$W`pCay1*^Z*hfN7u5Z* zzUCYbI265i6IWgZyi+lpTm^3VzWdge%!dn<7Wpu+(0 zt^MfF&dZj4b=CR0{^@z_T%yU{hpC_K9~wXUT@)FG!#gwJV3@v7ViOQ;3BI}2l<>oP zGs3=YPk@&AzVk@G(>>3;i+%_yAbpH~I{O27*!P7h3O9xLOe`f2SR~K#bND~fF`s)h zxf{R%>MWAv%hDAwOEg}BX%%_ApG_T8#NSbCwoG7`g)pcjAyHnpQ84<8c z=42k7cO~)kp_>i^-K=1YW_vkf-^Jwx#P2lo#It)S=!9EN+EnASlr}vsugCC%ffyJe zF%j}d`d7O~x(~)*YHCXvXUyukJ{*Fvpm2wMkSd;~L6VE!1xw&gGwEwg&YO4N)<=K; znzE6hJqWx%cz{Xp`mgCwD9 z8`4|Tm+G6{xnb#l^faT4J?qWp5;~%dg`(VDL)M6#a@u|UQf*D~S_#ehV%IF@&qVaB z5}mzk^7dCd6>NU|)!DxM*U;dI=O!|f*i7=pw-6xi28?)# z0vG+0cv_#=GrD6H>B}**_EU9(AOY@u7o75CG@!QM(BdZI80JE{XM2-~$}`<0&f90d zY7xZ=pODU1Unf5#@m0BOyK5f#hn%Gw??bU9kc~Cm22&4MMGOYEi}A zTjp~dD*zLs8BfP^cz6u9AJ<~|hKX)P310)Z6^{4ONl=&6_BO~Jr;KmhIHdfL>0XAT zd5h>vFaTqn{EJ!J3_HwLye1rYE7RO_0iDY^G<~5wZ3_7mKnWo;8#i4Jn_Vo^f-()A zIpKp@!pX}Qnr^3Be}*sd*Z6*uaSR1|c<^7+I?H&#?siAe;{N+u>6KU^cn8=l_`3Zo zZrAUNy`IzhkC&_G-f-N104Up&{thZn9;AaxuhDWUw>e6JeyrQ_`nBD{6SM*)nOwAlt2TQuc{a(&j*8$s@wmx}#7rsrDh;&+(WR>DN4>V=-AbP{ zp0doS`PH8y_^dq)K#g3)nF~bACW;;=&pv zM7$+@Dce1Xe700r?DSSJ9fbx?2lRzvvk19Pc(1f~0pJB(9*hA@aOus10fr z2&E$mg72tdm6=Lrj?C!Q1CK-xJnGW}#>Dbo=btHpGA*1r*JzdRd=xB}x{PcllGkY) zF+@v{d-x?n`8e8#(*6)nj8$Xs@!|!{SJr>6blabNeVENz24Q`Wg11X`)#6BEIh8B$ zl_=t%%Q(}5&9Ay$wgDDvFRe4FcaQrAY0?3a-dL}j$6_WlYp<%+MpXzu`l#vIxOqD8ke4*zs_605r zy5yA0urSMh032(>c-O@FC=<@*vYbJxNaR6lgsXI zQtp}n@)+fw^1K9typj^VMa?l3(5E7IvVpL*S#F++GTVN|Osq_kAhBT{x4Bc}4&yxo zsrp-gJb9?rAFmyl$k|#P_v|+V*g#WO9e42di1YBpe;-OCAZlaE-KvPoth%naG-N&H z@=WWiAdq9Jwp3Ix5L`wp2Z#bYT2jo2fz3tb%5Vuc!HPHI&{FJCoki6*T`#S0hiO*% zK*P_4+f#Sc1sDcqB&% zL46WiI8DD@Cr_3aqp9|~2m)J`CR#I10*mz4-nc<1MW8IeATI)AB zriu`j7(nvep65lvKJNTPx_^-l4>wpJQKRB@Q@0fI0Zzi1?;lKfG*HX6f{&pBOm3cNMxL9sAVslHF z2x52G*^*0DmUWr0SF&-^6kSffAe%i8FD?5TRza7|eP8O*RQk2a^f(ELu8PQ7k)F^! z<5A2<;I3xtma`TpV!hL0*BG}fFRzbQBHKtC4s*Rqc~$t!4l=6ec(_5vW=->neDji- z;O)vO5hI}5NiQe;fr%l5`4=m@Ab|JEDeH;1SxkU)EW7`Ni-E#mJ738?gTWpUgmr#&#Jyb z(oUR0dvhs{;xJ!F7|8p@r{Ds}C+Ce*fo|^~B6Qc^MCHi?Hc>(6rJQS>(#CDJMz?aA zpX<#ww53v8LNfEvmg{h4XNA^HF{1!-uG-ow(vs*PuA4<9RqfUlx;(h6+}6{Hdpkdg z8lFp!vj(%{d&=R{kyN>A+aPHJ!`0hT2Pl<(Y>|TWIKJ~nLs1I+kEOsr4W^Sp?kPmm z--<3wQuzi#Y{CTQC{2tPSE~EK3d#{|P7}KN_XrJ%4O8G{^0%FFtZu$$5;%i!ty7Eu zk#y=j&CP3aBx@pE33$R;c`5Cu{>4tATboz(`@CSmEy_@vS|BDdj1BEjlgI-Nnnn5V zYb|8;OLZ1|Er5DZ!gzufj)5|XKg1wjD_B3F(3vw@W3JH|W`LIk(_%Z?bv1#irG*ej z)&se1W@`<~fiKs2Zm#H`*u2o3o&$hxv<(%+xc#KJBJ8JfSx%cTicIkVN%MvU3Eh1O zy%^#S_App(G)uyn2#16I8@m=Ly}5NYc2)sx>*n!WYNvDfbV&bmbb|kRWNmg%HVb27 z7zNLz{KVh-5L8jPqB^n&UxhEdjn!VlJudJH3O>7w#hU3ca6|1l3qVJUpz%>dWw`{H zU5OYVMC?L>gFdibt3TbAMp zTmgVA@jy4;H*|I|4rq&Ik0*1W6-*8h<%!2Yza%(T5%{o_7g8T4bLtv~eCs=InGQpS zti;fW7Yvdc>~;6KtRJ*2I=)TGOXvHbzoRoSr2<(dX_!s(QfxO!#Se&}wr6EtWv9bf zIy#Hl4hLMnxN?S^dQs4orDLdIUbD+otl^`IYCZl*9axHTqz|R97)!Cf zkmK+ShpEQ$*^`_!ac^-V1}h7F{dLtp3|-oi9qt_|Y{o3ygLAe`$=q$S7uYa)BK?G+ z$OAJ5ldid?_>@*F?QDo-!s;ous&Q8vheDPikxA=07?nV$p(bsG5KL}(4|L|Dh|i^l zmt!>(Q(0Xb&MEkQbm!64#l^*3IEm^BlZ9HP_P%RO`#Y9Ad8m#h1;`)xrM_v?I}TU} zW?YRpF!qz#%bJ&MdpZzl^e>p<%Tz{Zfri|QsAA-C+z-Bi^lQPgy4K}T5Nx8xLl-Pm3c zg&F9Q2JU$Sv4G?2#4^S~utx?sS;>(SkMt&qQl%ALF~{OkDw(4WXqt13y?Lvqo%X7e zJ5H>NHZw1*{3BQWd^I3GtCu_ZTioR1w@gInqedDWzayVd8x_aEJ;yzeRFDLksS5=C z6V`88x=;0-F*ouQs6p@1{ru_-3s1owXAL^p<*U43=Ox3o>+{i)be08=*;Uk2X$`A< zG6YAEyKXP6IX4H+=VpMh&EMAT%5=1`7$`F%Lo3>LU8zI1N0^Z?A)e1Zzok*CpD0Dh_Am#b!0>1OATH5b_`CC&flqK2d(B|Kw>h z;f26Sm)S7d^+kC3f`NF6fCSr!gV<~k1ltJP#xc^O+ZTzU$vGw7mV~0#QQXF-$yya# z07a>@N#qZrgxlNss{DfP&e4#Ls=p8Z$l5r@UNSu%6LfOkV*Hi&FL@sy=bS1dIRd}7 z0>aeWTG(5ASffo&N1PK4h%~C)7E>Yi?<>-Y+X6oLZZ;yzL~tVFevQBW&LK}8s&j~} z7`F`a3nF2kTjttvtaHx)l_i+g)3|Qjcvk#PZ>O=CA+|H2lww5Jn^_qLiT<5T(xV=F z_7?=gIQ8q+0;;&ZfIxbEF^c1>D36pGi+=raex3eU$sZC>8jl%A>SWAJK050p5#(&q zlUSr0Mx}!(XgD^W)}+iZI?P!oYz?E}$E8nEcIM$Wq35jg3a_LG_@e`>k^p;PoJk6= zxZ~FK9?hPle11OTAktq_K%sqG@&DKBFU*mgBcd~18A00@O#jf=EJ5XnuoRG2EY zV(Foi*@Q0POOtQNt1{Ny@+UUH>F4n^rEmhNdN&)3vq>%^zHh8xBr)hdLF%`b=k;ny zHQ|pAMtWP4QkvD&W9xFwD%$6xaXEn**_0qZmTVV(4v&+@{oy}kMVxVc!PkL)(|~Q> zsQ(*31Qd>2-5?|ss`ga_5uf~GZWk?wF$9exI3_LgoR!NhZXs?1_-G>s7L3T++dWXa1rJA`-NS$QGA)vPjoSB}ZfH-7<6owBfXxC!u;VcaB zn$zs2X7p5vapl`5OI%uG>twGxig9HZ$*)R<>h`9@hvI6`qDy>`{5Zs+ozpW+0o9ug zat)u;TCSB$+#c*a7&<%XNWvkElrdF;^|2>%TV61DO}36U4o+gad+O$_HDAI0;7r|!jQxB`#1>FonCn;)x zjVX)+tPq8fr0;cyRV|%LVvq~&7Cd!{hZ84|cm!Mu9xej$3gR878kH`H#53gH4B)|I z2g7?&L6s|jO;43ilGYb-eAm9l{6|@C<J6O*l7MWH@+9%;R#&VB4_P#`-}G70&Rzo8 zlQx7W3_+AuIVM#(X}w&3;bvqjQ3-K`YPVkoaUVv8M7BkG79KIvjoJGmEjACQVipe5 zY}h*#YjBs!(!>n(e#do6GdVHeNIA1yjD6#+?gM%T_roUX6ezZo2)~m~@xc^h#N9@J z&YHc{rs3HY$pl!)ye}&)2eqV8XB~AAvk@};)MbK~eFIv=uqZNZSr0&;R>s@QgwKfzmYb@fDV?9$rWz1*4nuU6IdVwF@GK;Sf&O3;W#&;8jhZ=&j#F!G9{_G5jHp6=*iD_0p|4>==LICHD`}z?>#NgtCJa5fO)rez zU?OWvCVZ>DATWG>yQ)TpVTm#KW*O}cC>!q4P=4Cq0pjU{bb#m)W&|81+^820 zyQKe@S{#p~;T8DJL#{DN140=`3+r;LgLI|x58Po3T z90CrKvYILX1LahdGu*fNOfL6**IkwrfRxN}E&4d*>qQ;}$T!^^n}w>i z&#vYA!7%*inEvyKYM&42KZhy?Cx-`$dlMK&yjA#x_@-vLUZBC>CZQhE&;O0X zoH+J<4MVM}GP}6a>&PlATfLQfYABOB6t%onG7I?N^a4b#5~iAX)s+P(BC!Id{D$1cleL>KW&aW`_iqy7A!h zz2*%%ZbhyRx`QMl*Gw(h6Rb1b9_5!zAbii%;#JO2E$rTQ){YMOupKd$asN5h1}RPJ zuo$!>FlUCpZ|LJ0KE$DjQTDU-d3cclz3zaOT&Lw{CTw@MnI5W+`e}cMi>D9L;iAVL zg=+=J>LuHkYrtHM>#X>RRNYJIbQ%3C81Dj-k8IMKvtzr_2LkNCME!3X(gL>^aJA!Q zs_iAD@w9J@&7)i+pU_sWHW(zhM%cjlHFvvH`BK}{FGy6EJc79HqT%3ZQi`jF0zHWx zi;R2Oa!b=x-#caz-1$lgqb-QybUFlw&@DG8bqePy(!k$=)b3OYw@;;T`_+6pS~VkN z@u%V47Nhgq(N(i3{-Q1(Kl~@b-MI~BguEJhmcC87=qT9a`@hohFkK+OQ zI3B?Jh6P>IJxDP9Db8SQ4-jOAnF=?O{GST%!Kv^bP$UjPQw|@edgKH1BrC&{2^7 zShyNjalmpqb)&VFjdI}%&p|&d*y~)0u-X4hGx43Yli$7h@ie(^&Iq>>|DE-#zV9{Y z^rafbHVH5$)+=Ev-mw_@LX3gm=(ETv97N3Nk^VQRgG+9?SYptTq}#2KYUTK8yA54o zjg%2_9{r>Z%R|>v@;X~qNqe&*a-b}u^qqM#;+js~PqY2vildoHryIwho%D(%% z_b9jQ{^IO*VV410KRv<`b}xPLWCPi?ledh^++p+gZwp+$V+K-IYo_6+mF0mX09G6w zo)mj$`ejM_EvS#rbe}nN=dPQM3KB?LHRa7&JK2eyjSNm6@r85pC~1QcC-f{R))>1= zO4X?hyK9O?a^ixUqqhig#mk|%2v<1YFw{MOk!TdzO+KUFw@3smk>ny2j$TSn)sh1t z9XT#OgzHHM$R6#+Lo^zE9Ck1Rn0G{(Ju1?Z8Bf&NEc`( zS!p3wr!}8smA8=DoKSA!1gVMfMqMYieZ?U@SDzCsN}lg#d*t!>h|CB6AJ`)a-v|Th zhoagksC#*(3NSLDU{YkC?R=bnoz#23pZmAJb-~mBtkwmm!uoS6tUoW=n`EmyvBDA( zS7n!U$u-bf=fRreY>~{Eong!F6i_iBU;e_!-Ll12hJ7w&zgKx-u zx$F#0Vq+x>>MmmVt!{hf>K|>b#4AT6#DyKPEG_f4$x_XP)|z=V>(ynGbKQ?O%&d2j zY~`6NOuVi%X>Xd5QIW#b*wfQR+Z!uhWd*3n#`iMzQgBJj=kuVAuUgU&vHp-S0bjd1 zL)zFAhHk0T3N9wmVJBi?j3BNOi zAn`UqNrA!AUR-c#OBd(UG5c0b=khUDMBuleAroZcb@RE??$H@YvsSZtaSEFSt&h+* zQo8j|-5nVIDluzZ`#umRfm%D4Z)e$hcDQRPq$Q8?y!i}uQYKaf)D~S38y{-Cp|On- znSS1imot-4|IcRd&YRh^6PwT`@!M)XqzI~Kg|lVS{8u(>Dm7o?)?qd}zu?_Ld5~>e zw-;A_+gajqlJo8(ZF;J;4F#EUGSA>Od7BqGZZ!X0&nk@w^pO{!$Wt#X9U$JXo3GX6 zvIM^npVYK)r;AzWM5t3PUja)oE%&)$@s}t`iK$sXNufysdNZ>Pqy2!t?^`OO$Ajyn~KZU&X&ci%lor1`&%qL zeUKIly%y$)SePf7h55tnN|LOtIlxiVupFqJZp=oC-WQvnKx!#tUNpXpS;Y9U;Gb-F791%vM%ugu_P+!L-nOri*l$m}< z&WYd68s8Ei_6K!;)8qd;xmmi^UnGK*1eG_xAn z3bai#ZE7uAXjZk9IV4dWwY-ECTapuL*yRWPR(HZ`i+HsyWC0OE&wn~BBZaatSVOfA z8Mb4f>C|Vt1czcPznYWY?W(mN;qdS^Q<*@uh1KY^fM%SIVo?nvEiJefqQ@fRyk#0K z9;X%EF3l9VXPF5p4YtOG=#di9M0{IaHY?m%dDpFv3TmP&VKiNG08=~`Vs7W}$^LEHyCY7H9w9YKFVY%P z3CAg+w~-dv#lKM0YI9?1z7VTrOdI%fFz0(D7)+GL4x@`j5lO+lD`ht_R8a^0(T`5ECexk%!M>Uh!!piqs5SEC#2V4 zCxP4M(9_p+EVWIV8tbmJUF$NgoOOyNGZBK6$Og>gC>LYtYq9Et=U6hW=89j^@pHpS zZ3Ubtp6&qirp_?gTgKMO)}4sg#dTfmZmjf3eJ>+@eE-^CYgL03815XIEP5Uxze@%Hc^f%I%n@D2jT(4%N{v}4cb1q;J>h>aS`U=ej zQCit)ozW8Knn_M+>XEVmkQXCcvFEJ@ky)T6g1~JnZri9$wQ*I9Ljh>6MG3;CaV55o$2@E_vl|pIAnSL*Bzglq;fuc|5C)mzv-sjVG7^M_~i(LZ@t(7Esy2pVCdYVbs zzBMUpJM~D!RZx-U0ebizxk+_gHwPR#uVNU&*&ka3+SB-GAfwfWZj#&-Q~5@z*NJ89 zR&-XaN*Qz-%f9$QVpn#GwZyROB4f<@-y#IPyo`J=s-eo`{1MF6p*+Z~9LQN(*ETrc zwI~Q!0v>_=+PY1;QA_XG%|qx}On;tjo`>1{vz1|tC9E=aV&0$9+2q$gX213^J76DB zJVL_}YEJ%{psIgjOQ_TmOe@-f>&O*5+FLAQDA)q{R0-~5%5M#GLtBatP`5JRaRy9a zB0m7Qb1d)`{M2OuYS;CGbPLNAb5$W!(M0-wV$%rY$S0(ZQSEzD&1Ir3syVl|MZJkb zX4@-AWChe%L|eKdu}=f}V_GAO6qXedYH{ew zC_>4yQ*aI3NLRtsW*kvm=2XlYR8wh%7_oE#U}No3c#{jkTWtVgK%T#()^lZ_#jE8~ zNZ()2QL4O(z0{>+)(?UzH#683`b5npF;0vS<6&uiBpFv1)s2KUEYchh95CW*ro@97cUY(Jt=RkZpZB+4lc!(4`1_Gt-hhBhfK$FJ`rKPW0!)%1uh_+s z>gz8jiGY=%_*Fzw&T&U|rr1uT(*}hm-hxm(5c%tB#R^cWNi=F77f8}lGvmo{oF?lm zZ9a8{D@jWa)LXf-s!agPE(n5(r8Z*6pRz)Dip!9yL0&PVJ|9h@QRSMHS1*3-rukEc z%L!bp6x7#}el9B_F-Z=cB%~Sp7y*a=xz=cyBpu}$>|DSMa0UdYBk1BGW)FS?R#GW5 zVii>0yrTT7mCMv-0Vkx$+)koXU(GSfThT#ubnU4SLp&L1&@$fFlwXjP!&GB zmrPm=S664rNQzb}f#WqR0S6RcW7y^#@IN^e$p(EBI~>qk218sg;kgxbYG9PBO_=*b zKoOwFjXCpY(%6Knw%z8nydGH3WvPzm>=u4V*w)teRlMzR2!pls@%=9?b(518(sXe~ zPQAf@9Yp$`*KkL4mL z#Ddb6o!KESVmX!~mY@tBjS6RLi;wJcvVHL*+2^!59!SQU;p;{8q{oiC&D`_4l%D%t zlEL7?OEUkzx&Bn>4Zd=>}!=)1=VuQjbFyK4mL!^id$pjc|lO?`MSb*5LFOi z4Dd0boCucLdI_jd*Z|I^+*~E^V(m1I6hW_v= z{nUr$ibQJ!6xNq07mOf3MDjc|CUD=xAn&QLXI0^`81s@X#JUmCVlXed@+Q9Ch;m31yK2lRq7 zqLqU@nX4tac!PTWIpr-4-rT^epA=}u3|*EgXYd|}{emk)B+ji>TS*9!)lR*NP_Ob5 zg&x8(w)`abD>d+uxeO#88N|C1B>gpsY54Z7tbtQ0Xv=_eMKQZA;ew3}AHD#NB}^3# z_=QUsokrfYyJn)uCCOoJ!!4F-WXhxy5V~|ZL*QQU<0R747em%e#a?}(xjArTwv|mh z2z!Fyc=z$l|MSOJzr3QlO80?ZKb%E*>A0EGYEGuSWbv7}WVI?MXn_|Ogg1n+4wyXd z=J0;-+w2WCzZF(oavkt}e3x|&Q#LIi79a(S4e!MiaLbyv5?k%8M7WA5%V50Fo)@7hH5w{(m8ZCS6X(V0y0O_YBNubBB8n<$@G ziPZyPC zzY#RE8Zsb8lGA?`d0mn^bFa}c_j-QbtSR^ADkt#m=!2Dl1@URgi1E-!Vmgv6f#D(L z;2;7cs^1gQpwnFV)ggJlFU4YTse`E3#O3o(W9%8Xh#`02LXzl<$m&XVR2f^(7JG() z7~HUAorl8<+KoxGxRrm3xxeolervL}jwFG@V!AeWIa2B(45hSAk&qK7NNhgM9Vi1m zH~!{gLM#h*MY1}?lm(hBguNxOwOH2Ra*D6=AQij)y)T|VNbie2g@D@a!z064k#gf8 z;x#X8jFfN*hyiT8pU*wYpN@})6oxt)pUVGAoATrFleEsKs2$W>j#{KoM8t*Eo!ZaN zIT7rWY2;{~EAnOP!*3Zt$)~9>P7_rCe@l4DjFsy(LOL~ZlA?Lte5E)-u{10p5I(3) zcdn~yCBT8HV)bz5q#V<7{b`WAR3UIPB>0;uwzLJl|97Npj38)VlWcdn}bQ&#( zSdW?+4VQS`hSPTIvhdQCN9>!bT+V8R6tt8{iS2;?(wUSex@E+Ywm{&3AqPu?8ZDPP zIf(<<*Ih(Q;SpB^x!>F-;&UB#)a7yY2vO{{N~uxD#ru+u16n3$Q|F{!rIf__V5ww_ zE-N#%x8;p`NZj_R+hG1i=%H;bb;*7pQ2#|4u9BgIOnjuol^QHWEp#`&Cx;H_iiw5i z(F5swOIcvqbw!wH*@zpFjs?$-G@6Uk@&fS9oQHG5Wq46vu9u<`Kx5A`h5(X`W|NvW zlQnCkq^+Esq}XnCwOm71HLwZ;x$|bE$gy|TY^L#jo-LeaNQ&8zK|W?(?#HkO{@8fY zj5XqQWZ>fmwDH;D4?PCZz;YHPfGeMN?hz z#Kj-oTt(J?_8FnSV1^)MwUD~_@I%0QTv}2+ySmxuFAPI48cp&Hl6!6gXphJ zX*C6$d5)eNDQdD`>8auPXwa0O>&xub_Ef|D@Z#k^@4JQJt#sGXMYU3ejMW|&uRinW zY|>Mp7M<@}S2rJB0ko(RvC~_exTK_Ym56Q;F44&+s%xbMu(ctG+C|xI?sSciPIrgp z=4D!LtNFo2jhF=6m@Hp<+0g%jw{OtQC)J3Y#{mb9_y0fay=h|`*O4wfU#(x!f$fO2 z0T2rpiL#ubB+6okrM;Z>Gq{- z9w!w&Q7oOpaw8Erq#8F0epJ~QgBt@3ZZOO7D$w;9B29775gX(v5+(SiO_?j8Hh~O~ zi7`~*!cgr-a`cuLRuLuog;fi!@=X=Kb5>&^$`6L^KJgw$&-3ermd!4qB9h7u(G;_V zQNZYf+F1Isut7J*%2>R|DXF1UDbA-e#@MKqm=E3D+@n~Cs1x?PCLHr`;ayAdO#vPf zmgtl~!vernd8rnJFjtVz3WnD<<`*foVl;Nje@e3sL<`fsI(1}iZWtN3{5*_W^hqmf z?Y8u(%FmZ;v{GF1@<(2s4%F>*_tH<%y6M9{iG8d^t#3BIxuE%9+#@i-sI}3;Sl;z3 zK3go0@%Ia!Uyr_V{Xb|$IMxLGBL3-c8n7Jh!PYkM7n4;j`L; z|BBjJUgM6Z~3zj!2JI)f<`NFG>!vdrMj&MYH+XzV;acWkX6)f20Hmy%vw~rFqyNR_2&hjf zX)1D~*rrWUrjWNJeg@;@be<%9aihjF64u2&7BfH_fWmZMj6hh#arU5>{sn1b7_~4I z1Xx%o?10q@sZCWx|9IH1$hU8OwpF;Sm_&d%O0=qFq6+B>2g>ZspFZ;dSP98|Mv?`v zTWtqUR|@Lbp7$%Jg#oqBR;K&XAQd$N#*gEma^HARITe~-=CvjnGK)xF$MWD4uii$H z1f^%_YFaV$7{#`X-b>kuV72rfIM{o+=Vc}x@!TDS!h%@L2?``WO{BdGm)EsUi|b?s zGRFiQ1oi4-kJTcRmsei{EZbGachZJx> z-j(3JU=;h{RzF8R#&m*C%L=J19P`?kO`I@F)Uws4kIoj;iK%zXKls(h&iF%0Pv2|H zM?zSCPUgp0!HJc9iJC8ynRY@Pf*Y}g3`}KOvwsS-XCo}oD#;5-z*I~Ne!Mm>Us3+m z*2E3SyJl6$0!Ye%(CG`$Tt)acP$M8H;0|cr)Tw=5a)-k&J#B_aFy>VT2xNG|Q_Y}- zSIOcI3F^LKe+z@HY6jZQ82${yA(}|y8%qcN*9Qnt{IK7SoRr7!5^(mJ&A{`$8TWM5 zU#~W#Uk=Qd`r(j2{6;_7TsJ+dNJw1hAAvAa1Fpgs8*(hE+u_J^D)_)BDdU=-g)6V( z+*x{h2HefhkK|rF|3RV#$*fme=?8Fl@7)THKYxm9@5bL} z$!XmLw;Gpq5Incp_}nmfZl^5a?pb+Vt-WQi91)gT(YFdn6bVsa1u<)@U@m3?n97E6 z>NZs)F8J_skW9ITl{#SvO4S`dh_}W;iKh;XKPbMT4@ilgs-oLri*b_dcQ5Dc;Ra9 zy6^JNy?a~tJ6mvQQ%K3^^gDgLCGJ^B1|k{m#4Rwo)OpOJ_LVlzU|Gm5Na!}f?ni4r zkNV*76^+IT1u8yk0y>aW4wrH=DG~~$yrAPQYYspRX$8nah5gcKNnAt#yYM`4nK;g7 zC=KWoE~C=Ex>L}z@PTG>;&gVeao%F}-M+xp*_<8euv?=W=|nt!xYdr7Or)Bo1U7`5 z5vVJnT694Nx1<==_S>WqVK+Pw_O^wUS>TOYUCE>)wb?bM>W0K>QHt#{GfX;wb)FQt zL`yYYE!I?H3Y)S1E7aGvEfTL}3 z{Ry>^`YG4o%2o~ee(Z*Q%V*5LZ&H}6udUGU-Bxjhh99_uWR08e9)4IJ)E{t2ggYho zm{_8TnUk|}Q4nZG5a?T8{$0NK3#T5R{+!MlpKEU5o6FmN!1e*?;Q`z{z2q0X35{lGOrZtsJjka0$?Gi2@$d4j71Vf-+4qn^#M-)bKV7*;f?kYIh!7qH?gb z{)?fKMa_w}7fre-&w(Z9)Jn?{@y6*a&QhuS_YZ%|bfdLBU(x1bnZ=vP+Z^gjKc+c$ zwzony*=-qj+MpW<1wg08YI>Yc!mBl$vI+rm^YF~nCRkeS(&gvN>!8jZAf`qPi(r`1 zknAQ59aPz@kg=INrF19BaScXR(flD}=;vgf%QDi{NOmeSrcGM5me78yj-DxjuSybT zIDxCy^+V;(4gO~R`b%K8X-S6yhp!bNaH2gRc+c%KK880vSjkL7rOmQ{GL6%fV`iGE z9e76<6+t$6vlM~Rw{IFsvN{$KqU$uQQenkf^<*0xA%mA*SH`KxH^k~ngSdi_Qx$N$ zpH+n%0HxWh7jkN)$E&V_8Iq_uWN`OE1#D}_kS>}&dItpbQ8(YfO^^iXR@V?q$Zeb0 zMB$gpZc8b`xRC}e!#(5RM1VSDa3ot2k;COQbhGC0dI)8blj^W=BC*Ku9V3wvl}a*= zmzNq*yuf`SOL0=GES>@4s<1U6j_DMS6&n#CyUZ6z>#4b6E$t@V_RUIh^%Xk$y;~{K z!ORcj5k^`Oai+D7SA%lz2b9fBQP4bpdEdm0NwlyA@fCCe)P7Z3>Taa|>8O;jimC*n z#IR|L(!71aN=uUnW9Lm_i47$N8$yQ+Z~4552w#AAKsPu@+GaP(JQ?MuS^6_tj`HJV z#h0A7<&`Yzm8nt*ZJ$-h?-PT_Jc2rwM7Na1?M%j{Ye!a5AcGC}^7V;no zTXL{#^fPVNt7r1jB_UU+sGi)4JExA2x)qZpjs9Yjr5=e!nkypA2ap zkXH~Xo+7z#yi>t$zc`K97o^t^>^aM1G%wEh#+%J#(}I=N50AuGL7j{U?T^H0YzJx0 z6Ac|WUMpN8E+nm`JoS3zmE~t~l~OKqlnNS65tMb)8CIRg27og-1}5LPcGIP+ilG-- z3>3n1RIV)&!$PW3XkrBJ#(ZB7Wf_b?EZVjGa%YMQf1_%v@fiC#BU9CVr$v#>n~ zHTuI%M_bib;OO^mr36Q$(Nb3X2`L)u3BzgvRhEtFwUknCy3fidMdHE3y@|`zdJ6b8 zl;@L0y^_g8l|bVS#sm|_DI~^9xN?+N?g8D^t;;3fO18H0bbNUq0fU1)q$T7Gj?9G{ zz>Z?`X{O~6SR#6g&?gY(x5SJ)tyh-1U4Wp*M6|%Bl*p}aAB98wH^6en&}GPxI%QBq zEaUFh1`EzW;sA=$QnU%nq(hAb7;4+FQV^J@Q+S-utHhpJ;hF_}@Py_mRV?s}Quh0K z-B*gIBZ8wCDX9f1SP?U2 zi!)B{#R!Q2`O?j69AnVb9s@iviVO}*8ew(Lu!lS|*x4L#2$zFuE4T_a{DvGKwgQQ&%tm zo2gO4wonP%vPxJ`h$srQF#1Zhp->6)x4N$`rFytTSAbuHIUH93q029T`S5wK)_3BW zF%JWNynaLC<(^a3|jpXf}y^|Upvbz#pr}A&ytq!`;~>_5KWPUc7Vg|l;(ga zbI5cX2fs@=n*Ip{o@1rjBF=G1ug7fHfur};7?JZVS^C%i%Hj*iwq+r(O^9+qfb^UmFm5cs$j%u6v%4Q>M{mYAyD5@k0c zC`MRz6D>Rf$STBSfrm4&Do@grgrNRl{-qL45rj-lz*xue&jHl!MW_w~Ms*laI6*fg zRqP9R7u$1SoE={jM}G8E_v|>CEaDDTEV0o-!JyI2l_jT=+B0%HG(n;16pO6|L0`B( zUMb|J%}DD}UTHv+cz!B^E9oY4ysKt;kwWL5nPA@_d_lyW4nS-U3_34+C96%@tkeXA zXrI8{;tP)oiV%vlB{4Qu#Z7&o{mq@td&BL`d(qn9{|x)<7<;9MNedgq3-3siiQ7`E z*6d#v&5R(-H0h~0Kv{zcoo9md$he@!7Xp?tCo`Nu-uH-Np26m@04P+qzC(@MMW9w; zm`(Tl4jy=dOy7eGx^(0*ZLB7vm!LPS!Bk+PiscM4>U|Q@@hZ4QIBdY%-$KYQvI%fN zBdZ1~9jY-G?X`p=!Bw!R3&|&TFCy=dQ8gL5?Z9x;X~I>Z`q(EkS)bZwZ!21Rfqg{i zuA}&&YVw90Yiypx68M!4_m|Xyf0QFdFc`F`2s!ZLE?{uA5rC^5qQjXmQ+8|$po5}r zQPSXig;7xpO3ue+>PjO4-nL{mg3?1;1@BwUVg)?PCnHI+C2gbkc}3l1n?8%(OHd(b5uV}wmp|)r`s;!2RCev@}x>+28No z7G^&j4#sLzO&B+#kz55GrVJPuMP)0e-Fm&`+eUmTYiH69X3>-&Fo2#QRF~3)l@nEK zKh<#Td&sc~=zkAUH`1ROaMCY=P3%RKE2mm=hS3sC2@BP>lF5lsKNs=S>ch)oNf}?D zdjO#tl$bWB|IxiqNza?TzLyU>HoBxhFhyHzDI9ve*G|@@q`Y+bR0j!ymTR5hXY*U%nA+ZP9(^U|UePIQ_ok*k!? z?ABujwFB%NC&b&);_>+a7S$m3Ck9v6WRheeUQ;@~pjZOUud>nEJO{V?7*b_M?+aV3 z9Ib9~P$A^<`nRUQ&AJu2wLoEo!Ye0@Ll;F*HWeStNo&B)jHxe%?=rqK@eFVvPM&E? zd^WtdPtzC`fWC;%^2xY9deflj*^&uGXBvM*Uw2R|!5lNKnoz2{%;7`^mz_|C-JE1+ zO)J%Uq21`wa)C$yz!e+Q(7KmK?rMYN@C%XRocu|NvBFM zrjcurPPI`>OqY;OIiB}|{g^F}C+VoM07^U9Xp!MVv~a_lYL@$^1>Aa6{eJIOVD)Qc z!TTr+-uD2royS7E>Ie@$XQRWU5*}3sveHGDvKX;16bKPy96rJHN#J)LDHELGWxw%; zZn}Fe<)YBO8|~TGZ-E#z^uXofO+z)7F*pg`b_^!tM9Qh2P=2XV?YX!@Se!=C)=lq= z)r^C&IpIHH?-ONQ@g&JBH#yDG03&5vY&(dClBN6!2cY^$7%6W~aXTmI2$k|aHb}QF zSj0=OEs1O}pqme+FV*&-;6W}IyjOUy&KaGzT?3t(TAd^tSWr|D%nURN# zvTu?5Srt1o7+?1*0G*1l1Q^?%u1fv~3(@~)IhXk}=a0>cbV>UCChwQZP`(;sBx|QT zhN?yI5vdmaFR5j1R9-KA>|Uo&!qCp{qo8rQaeS?inJ`evnd zqF;{$_9?AzbL-pGI=A0+a>_?Tq@s&|e#Pm)7@>vI)$b>Z2d&?qE*>~mLCHIapyogR z=~o^_KIm8N?RL-o6_)OTqkjd$zCs5V&~`;d`J@h-$-9Mj=%qdUiVm*89k0;A1}(>u5d2e?89wM?Mg_QUHSeBPWMQ(q~g-@BDk8Ic;lJj-+PR1(j9SPJNG0Y6Z* zKVNb>cv}FpKwtw^bZ&)zBlu&_6f9M3M27%%T^f2%7up?HWo88_VH`qIsdA5e47O1Y zBw@jP;Z4Sk`U&RS2mm}gYYIW6q~OK}UjEj=PHcw@U4Uw2<2}RTYaH7~VEh$zh-MX* zl!r-}2p`#X8+F~FxhtC5@f-=7fdXko)D=z^7ce4#f)(U*cc6T6P}=fbvT?L9#RGAg z#Ve^mh3M{>S!>dj>pd+O_5)2GCtT!>bPw#-c6n^%V&AO=v<^*f99-p{3&Aj61XZ7S z0}->)BIPTE+}=PQ3u1l#L8^fVfjLOt^JJ38X_itnHt0!CIk^wp`gaK-T@h8K z56bt&CPLV6f*kM_SuXS$Y@*MA(&&oibQ;gopUL1>`1~ef8~I!sMgGD_#cH|_^-CRQ z$y7uZLx4FfTbLUyE7BoaL;_AIEP!NSjXUDi@FfoYXr!`tY*T!=9+mg@N=uZ0l>wDa zh+{y2l;2suBJc;$H2b4sUt%;0>%4cPH7L)DnKFUvrG24*VBETG>t-~W%p3~cm83eB z+Z$E|eQ9&5w3nC6uAJivRHRlm+b38*PA9?>vM{jRENyAxM`tz_38Q`M=z!|ic$1bo zQDCh8D9@X;7~tVPQt6QA<*Nh=f)bqfgdLvip54;>kY@Clj9`Gg3?8~xO%mK zk1vbOpiW|UwJ*v(8aW%U4{_bgcQmJ0r^o$-Hc+IgW#bxbD?T>5rROB-Y;j-BAz7$ z)i|gdP^i*sJEYk%cWg^-L?u_2@qqK0mh4=U#)HFE zh3xh`sV3vjz);Z|X%S)B`sD)ZktvQ_$iWzq7^{l4rNh=C+=+Wd%Z)6axT#&85+IPqwNxdK=m8CfquCmJ&Tkj8+G1hFUS zj3N>7=Jh75NTfS=1;>y$upEJLtN>FWkUpC}Y9<>*@gh*r2QRO}y$q;AkZ@UG*6Ya4 zN-?HLL#GpOGeH5i0jmS0qFzERJ2!X?8}W$PjV^S7$+3feTXthR9wf|yTGM^56cPI?$~{uxHDFa=lN^~ zvRC7+9vIu}ZCwGU+Sww5VM{FGk z@CPu&mUBrd=9MB&)+p5t94_nSw2U|iC=1F)g((r$g~$Ub229i*kF zq%FJr0_4xI&x*f=O5Va5u^X?|wHd0sh`5phE;`|f7;g}f5tiqsH{*g+2;g3IA0@tW z^P&>aS2e>LAG@G`%bu`gs=qjuswiAxSs-5U1<3uGbxm(twd7ndjs}y`? zTLo-8g61v+&jW=y-4#x_ud1bcW$l@03({bqY0RUHq{N*gAYf9^sx}jp9ga>CK!Zzs zU2+OnmADCWpmU>X$)#x$Ul@eY8*C)e-DDeCJC5{BJTjaTY1s)GcDMkQM&I&#+71c9 zo<=#t1}ixzHftl9YBQcn`OM-VL~jmeM@g-EMuV000qn-EaN`!=enX9z{%zHWkw^q< zo~*km+ycv^rOP0b2tQOlOVqd~d06y}7-aFwb-hb84Z#XN+EPiz4R4yJw~g=6TWG7d z*1YCA;(W)-Y_%P{VEyHugoTGS8^A=Um@d}@EC_zC5uxH%i(~}vgs^!y5OhPQvIuS4 zj>sVq2-RTBLvY6~5ebS)UqjLi*H>w@6RVxD6va;}^#x{PSV_ABCCO2tr_qJe96x3t!=xw6W*pc`a3SH3_ig_yKBP^s1Vu_=@6^8(X3HX02!&)jDU{x4_qh zWX3SGi|3Dc8>#Yt%6M2+9mEfZ5h@g#B6>@bJ`721ICwa#LOpY1&QkP4ggx-XG`0vD zZRk3Yz0mO48(xJf3<)oazpBex+ibE7va~K(ts{zg2v*=c#t?QLPhio++n&4!kkk)@ zqsvIpC&KN?meXShFj13n2|`3ent%PO;qxZ(j-Xr^%%!9VP+0-#o6VB~z(+MZ1EWTvBG$;ickw*)X#JvGm1jhj z8hN(g??r2GywQQAK6qvQhE2Z>6><8vRS{>;+=!;?-i2OcmSV&n#7<7SmMJ|*Y^tI_ zLbH=p$^v5XY1o)n2kRe}uirup!{Ve&OgCcPkE=1#Udye@5bK7X(O@GAlbERF)@IWg zNqnOCYA|z1%cg(Pi z*}pH@hpvl~foF}H(5$Lx7B9}^yap|;BOgJ6#pwy8k{yF4x|W3N{cPM>@1 zMkxWnK+-k=mDE9A7hMUL0kAAVLmTVdYIv8~c5eX=Muzh;QJ%qw{7`7FXJ|IDhiCE1HE&`@D3$DBK5ZB!-_L{M30CP4ZDZk!g+c*{Tgf zh?ENji3ef5CK8s{T4w$hOzMY4b#Cg$Kz$R7zedkd%L5Z=mmxiaf3Ibn58Nq4HcJf5 z0tM)WQ$G{LE5x%LlUhnQ$zz|@=Ph`g@~P}(w{A~h=dG7cAvruEnMtl`QlavB5M6kY zag9r5w4+uzxf4+E;g(ZBH3a$u!80OU`y*cyK2#f(fJ!bGr?K%^vE4`7c>_`51$8xN z2HEF_)y)ky_OgX#z7Lg?nv&B^nSuyoX#oxyQK_!XzXG>?z(wI4;hAnTCSKdDtmlz% zv?Zk7PsrUf3q;YcPK+jF%nu-9O1!CZVrE!G5O=-0!SCf7LI3vhlY8Mx|Nm>9t9J9s zdf&9gv!Mh}{}xN|7>ap7f(#n9YBytz7L_YgBJ4{!2-Au?6zs#Ofz3o)GZNZ0s~T5m zwPd!Sl%$Ms1h6Fb!l)rgX5%)fYzpF~PQ8a(FVPxv^E%oxbM%fDzDSJr3i&>hl(koQ zPe<<~5-k|NJg$$0;WSk5%8Nd}HC`QwvoZWSh_l53m&$!v<%**@Su_X+OTgk*4TkxY z114iPz!5SaG5=Ej$1DcS@s)A#1jvLQs@(U_LIQ%eJBx5(Tw1ObmhzA~1jW@wM zuGxMzOY+b)?m;^|H~8rUTk8Yt7XCH^Y?4%pWDI+n-Hm15UNBtXy4Bms1%;rfsDGtc z!}wgf=DSciw5?PoK~IC8Q&?a9$>335Fe4jA@8QCHIcUnbP=)!rcydZ9y+-0g-LX3m(^Z54w=l zY}vM!BRE9F*`(Jn!`@r#f*2_EjiLq#L7N{Jpvb$`ndPWBqBqoV>kJ2(LOn>uCIx*1 zRn6ERKc;^!7ir9+CW4)#t~^5n<%gJBkb=o7lxLBKOE)@R5M~`%UtlVo#;fvz5+&Qk zY5;ga>O?XiH@ug#N}*W13cQERVa3lx=RiecWYdAcmMmzXs3)0qEG@X8ojX2p>eJP% zJuX~hjoaJ;0{?;VR-z-f)sB5jX-X4pkA;U$=lN1=7DGfJ2X07w1I0~p9W{W>LBWxu zH?hA{s9%VuF7wc(A?1VuzZkGMNR@9if#AUb*_e3>?iGn3v?IwwkJv70a~CQmGV-`7 zh~`}b66#ITfxb^vdF&ex5-_kAFE?J~&{!jd_6!$M%G@P*|E(*Y8s+?gfcsLqv*oKlq)%$y~Ban-`WBD$^&EiIHy?4db1H?ohvIsa!*g%TmiGlCkdv% z)!n-4OZC@~k-3&u@C*U|aWlK7#Pv~?)Iu8b#xsMwEWx=--4fhQ`LP^~rbmhcZ3>i* z5f3e$kCxK{>z5Q#CCcukSwoJ#yEl;EqT4te$FSj!yG+FTfw9OtDd7GwgvO3(|Ogl?8$j&H$(#~5? zwo!{Qp;43sG8LY)XHH?_M1=qz1joU&X?^(xC)_gu%k?Hhq;cUDBozU62n%WN)) zR666JLB#Ll8q*R;h=-;|95v)aV7V&gs%44cJMze9{VEZ82ae=09V`TgV_EoM4wKrb z6d0mA8$3{|=c`+HxA0QBWNqmPF!(p}=)xw(fv+R*C9x+ugfd-2_&uX8p>#8GtZTd? zG6+WqenPG03IkgYaviOeIpw5^{G*1GOJ2$p&Nrp2gd-xx>iD55?KV&q^RPIh8FJ5% z>*#xQw-NB14Z)XNgx5up2Pr_ z$_=)2B#<1@lM>9I#lcebuvGu8syr9b8t=n8xouAJB@~WZaP+q^ZD56=IR|4w8(R59 zZe(VT$4>9YNV6cX&l{5#j2ek%A_{ZY>`dw8*lDV;ZRykqACz=d1S?y_nl<2BA0_I3 z94{F>QmY-AkwC%^9lioKW|C&_!>g6DdE_pOA;30w63NtkIC2WEvA>81%*5#guqj+j zmd%5Zpkr4lgd`}{fc5?>Q}mF^H|l}~^$?*A*qTv1xmgjqp(s}WR*GUV$8kH4<1R2Y z3tdN;Ko-00SQTl(##;!VCMCS&HH@MX8a;tIQxVDtD;{X!1WUV8)wh81J%;q)Pp+IZ zDjTfa-_$?{8VHM@%n>S^^>Ky$C>f2EW8o|Q_K9!y`@h> z|Jm^FD+b#ZsYXFFD-OWpIH*JX#~uNx5%oDN)h zEOs7{Dex6F58GgJw0dDfHYE8GHx~|zsu}vgI?Uq$qXT&)GBgbHSj_N%#f^R#_=b!;Hu!oflYStVp=_Dy0iC&MsNPzudK0k|uf zlhtvx4Ik9;T;8kCL>_|VsJ$Bmwt10} zXi;0j9Tqcy$G}Sq->WgK5#uk&G)72#%!!T@oH)WYd51;gI0b<3go`9nvMILMVZgt( zG)gUre57kZn}!xk>Dfa6m2`~KmdZ?@mINnC@^ajKHG^|T*AxZTRT9)d?`1`W(~QCM zK_#(AxZiMD@!1M0SzE2B8@=P0Qd|<+`jFT#Sv@8d9bW$*>26x+jdw+JpU&LhQOwsn6=8o5vJHok_Yz!@PB7xDj?Batn! zLYIv+sWiC86`pEDI6#@he@K91tC|*VJ0f|GKdi6P5!BDlL<6PBLz33GoRUc0D8S75 zuAl@YwIHiuj{|~54mNwi@DH?eVlP2x&XeU_9EjXT(XF2dPe80+9!v6c9s?AmEp2ID zgUSW^my|77^WAk&0A1Ht%ilx-q|D7L(aAJ$x^6YtJyabrEjbq&q7Wqmn&`cYZtd8J zfDvfraR^8drA0GaMnE38V{Bi*k2OF?y7JNvm<9zqN#IJ$!zPrMu_ zRY=4v5jPCHabYM$kia$lq0wkegIQUcqAi$Mc?w&ig@?NmyAT{UJcsjyQ4&2MbDeO= zV(6&67@FD7t1DWn*GlWBY|xufZzj>wJHABcQ=da{X-co(6*CBjnYi&jY@N=NBx`-I zbV(u%=ar8pPMmI4$FJU5J^tTqK%?I`woe;xn4oX+oRhe)voX6yF()w*Tr>B^WgU1a z#>#{GmLAZ$cl|=|(kQ~$>Rtgc)<@kN(6PX}Tt>jNIc1kksI*ExbcS92DCWBL`p+52 z+89=G7t)X$tQq$JW%wRJ46k3-H|+tAfP)q*wPP@z1NSKDhRda-6ljAMVn7_6e&m*c z`$E<>mZg~%wVpNes;-KF9KR75xHPC7K|%8KWG>3ex-vTtnBgN6>JQ@;IIia8zogS^u{xXVxb)rG8(8Bp}kxem2UDR>BfS@KtSva!I(V(s zAE$8#{0JPIqNV4((&o7b0nYn7i=k=xs)11y26ok$+)K8;wpTQ;$#Ejniy~V@4M7Nw zz46}q9r9yT>D3v6lVIuMB!Q4wf7#1g9f7~ZE>O3+jC^jKZZyRzzgiYfQp?BrXgTG? za*`5Z%?e|FbNs?)wUNo1puJ&LQFNy2h~ACU4W+xV-<4|{_)1T9s%@7KPhbk0Uk=!YCj2;Yyqq1jzOwI<6 z*#Td^;o@0u-yAqDBZcbPRU>jyisI(&Ok^pM19II8B)ddK+&PLA$e8BnKuxp#bu?HQth3qL82M{ zZW2Ljh8rNsaR^0Ah`CjY4EEsjASwE&y-V2CTENhO?{Q+p1glq*izDmk5ekP0cNQGa z>&(Me7&PjPSox~UU#cWZ!Y2k5Y2bv74kd#N#)85QZLE z>Xi5tPMc6`12@&#wC!{QE-dDYP_8HDsri5Iqg8aCc<(4t`JQL+7H1N1Dfz(h${H1f z{SXp+LOQenQ`cNgVJVek24D=(RT}LG1c=-p1XtwqI6GaUuex$Y%2%~lq|^*&VuMIF z4vCuZYd~epqtsa(FUKjWkD`ybKS+z9KDrp#!0Zb(kJQ3Yg6~Oz&7^!HG$VcTy-fyG z<%0Dt&gwkveIXypeIY$`7O_dax=9hLp^{Snwkj#q{800oDw}Khw=c`685W1RsbkI^ohSVG(r`MFe-i422iCzhs|aWXqy$FAu!w z_|ymWEAUn$WUMD3LY;Lc>4F0rnP5EzJf{A*8N;_CEnYxWyU{rItSZZESEW?4ueKheKzbg|R>>!dL)1lC0GY^#cF0gb!HZVr8StIvrkI5s)V76j9}YcO@Se zkUAzBQPFr~6WDQo7~a@Pb_(W&Mq^NLhvUQbO0KbPfuZ;3!rkkvSXKPU5?6mtyr<&Y&yd529x)FwdfY%F z@`26f+&^4iw2Btn&G#PJo;P4&?}966uwX*`;2Yt5B5XR&}=u!94Xh!&@aE z#Z|9z@KxcRV#1lU$_(NR%|MXJjOSPAinkYU3_+1O*(5lEKnOrmB`9*wD1 z3ckwHj*`5uv4s>=<4<2u^10m(K1`)*3+B9#l>d|}0c+hrtZ?JOs;X0lRbmepzeG6{ z@Hq#=P*e%q0aWit8lxkC0|}x{Y8G5V#W;77Vv8cl1WN)mgjyO6FE;ES1}Qwuk>@;3 z5QZ#BdJ2+#+0;d8O1wl;!liC$!fJB*2x&s{T&cIf7^0~q6&Aq+M1vj+U*tNRp0I>U z+OSI^bd1ZgU4Pi!F4=`E(@6^hfe({w^RD|(#2q^5T% zR*^-o-yVTP_WIS~k>3RF7`#Pj&3YhE|EM9K0KS?}x=-1(4^}J0qPSVN=%Aqt)8JOh zFxB1ll!(>e3hw$BPqu1!m;1EthG%k7%b;Z(n5`of$MuC9fu&sqMz1sqBjjM*TqSMHmSPQrIbFyqj!qZ3qQ57W&EF;7(D3 zR=0vBNiNwEf+3V91^(ofwVniXRKs@L zDXGTZYf2Vw$Y`OIvf^fLmoV9!*T9FJEX9`q)(V!Hr|x2L3b~1iDFh~(011G=StC1Hv9f`{;35E_k^E4n}j^B`sB3rR?~Ov5aw5)S8F|aMf^u ze8U}F4EB&%jN}CJCSs_M2y;72GCu-shkCwY@x7r6)Zn(NKt)o7>|6_s8vCj-SO6Vi zx*)OXg@l<+}u`dz-xm^*o#is8Qwp9DPoFcgjw~E+}3XfNhB(Q@r_W|*ZqIqgY!zJ(M z1i3{)laRijK{SPWx{+6-`+)`x6=;H@9Qhn;Q7=R&La!Y9Tp3>xdDLnl7r59L_$HEe z!fQ(XNYk`HW?>qznWXp}MPgDj&*NeNF@{8doOxs$0wxQmo+hUC9IzZZQjoM%%Rvf- zWJHfRnN+hp!>mz6B4D_5$Hf{QtCSSq-wxE`HVab&Y zB+AstruonZoP(Xhdk^c#uFa-0@12^c4{@1Mcr92!QoxwaD~5^ z+9Z9iwDp9(2bOs`*&rR^QwFPz#cDdd?35r5ic+|u-e@5if>(t1fr^;fdgTn;_XhB$ z)5GkjmS(A9C(KcdZw6^oAQF1gyNvK} zEFNg~=#xC7SZf&t;m3*B>u5hsC}@Q<4m ziyJCT4Q{K#6geR$?#LQ91~_n=_h!&@d-IwuRI6vMS5h*6JkS>i|ufeu0@mdOmskOW2@KG?|BvRegynlZK-Y>sMCE=Ri zbYFDt*Sxz2HwZxriu8BM7@#HB%CL4A$m|+l-5G9HUX^MKBtO@|QW>M7cZ1>9uAOLo zZxak^Pz*Kpi)-ncm!&|IKBMk#KyJp~=8W=!c2dVhCh^RdDS*7e+))SuD-*aj2O<-V z8_l=myCkv{D+U#XFU9B?vH(_n5@0PJmieJDD5bnf} zkUu)0tWx{Yc6Z2!AuJ5#biSn#T&{ZB0{atcT3Wb)rdBg*n-+LsU#11!z&6WA0ufwP zj=xm2g~7y9eCCpI&{4($748|hvc#7~z~h;S3zSo5H#TgLh|$9U7w-c)@&X;df%#ft z2tYR=^Ac#hi99MbgVL=j8AD8_l*uJHt<$QffE)!tDu^JI+T1rkuA3818tNDgZmW(_ zSQLe1&mxo@@b;I`eX>FqD|gM07{{597|OSGAy*3sLA8N3XxEd}DiVv|CWl2C^jZ>AAN_ zuA)0m;)d)L))gginHizF^hR~&YYQn+%=l<@zRTOfYN9FqSEu(>D@j*G>_AGDRYXa3 z-Ih|(wKi)k*^X6pg8gZWP@QN7jp+Bfn_Yl@;$Kjo?Ut>};`inNDvvBGzHtcTOi<1U z2PMs@suPaOz=pY}p;XFAT|pXarM_faMd%^u7j|*TFxAGa738_@mwmU<1h_*cz@5MZ zc!bID6$>CHz}H2;hB*`=x^SIewJ{+gx+LR4^&ry+)z!XcCPR(&4`&wym%t|+U1Bf- z@WmI}|8)$IJ79m@sY{P11)?#HjwCfO7jK*`rjrL~UUK60!-K;2>=1Z5t-$rX zMfU~+?<{hE_^eQxfv+`Af;Dz^aR}nDJM8u!XpsqxF1WTM%LxO&oP*t2^-(R?XK z+nxyA2sjAv3mpI*^Cby9qzD~>CClqHn^EuHZhx>l?2}G|PrnM|kV=XFID`_9L8hmm z?t)K>I(W($-sI`oz2TgkK|=|e!7Y}c>1*JP-WS%e<0z>Q7YZ7oP z8(Xb-r#;p=M&A1Z6CvKQsSSn7pj30BB3^qIy|`^tW8$caq-!!AO_?#DOZ?Kc^yA>( zPgpP2sZ*n~dCs`dT)G`c&bBlu%@j$3nSz9BSPTor+%I`}NC>Xw$-Fy)dTj9hGzmdK zn~FN=4uaR=~`5*javC8mZLOS;T%%;8s~)qzorxKR~nsM4x1x_T}WN<=8|VawQv@7F>Am1!M9 zyt3RE=asiWL1nsTPKJq5OJtluzs!J=e9q7^_$?sgFC+@UFBwihM|Fi$`VmFRy8$rx zTwR^6X>4FNM{_}9I^b*(A3{yoy0jGI<=o4;en~_u3=X+g&;>56RdfY{zd@cYGt9?8 zgSf^l;P4gpN{W#%tsO$$&oIn8+z<=+5?nV*3JOCIHq&?>h}+ugaL?5XD)wkG1hB1; z_?so0B9TW3`bX39$YU*VtD4P+Wd<40FrO3JNtqepIPnlTdBj`{z(QoSBtQ$?1^UZD zI)OHsbPV?Qh$~ClT9Fj^${c70{+2boEIBl%1*n0(z$8T?fHR}a;}Ic@>MV0&VKBr( zkrhMZN02FgQ*voTU6;YF)OD#N|NBJz_mTAXk75fk2!HDGh58%|N}-q5miDkZ=)yH4 zJ~p4m#o3fy6aQgQkE|=v;QCZGtpZ@f2AggCXB%0W`)za6Mh{1bbp(gRB>74(G1p8c z1NTDVs=x)US#_vw2HA<1gkyl}H^d4q?*GchD_mEnoWZ}Oobffg(B&65>~8qhZq)j? z`uXQoEBx@?M(xL~R>Q6j2#I?@NZgM4-8XjM@q=0;rXos)NDb9YM`mRLHctD;lAC6W z)BSH(hI*!-hml(%{6Mg)68y_D;RtKW%7^rhQ>)Nx4O&$z`o%urvGQx)HpN{YMueRm z{TQ_#wxTuu>zC*sOQ)2NJH-MS$mO9?-%$G=*44U%Hp)RBq2O+y z*{Q(yG7~&I1kPRAP(>9|>@qSRWLC?YLi?ZF%G-D`aVn|5JuI*ks)$+|`N%6`_Eot~ zHv2ntw)V|fp1Qj-8B2L(s-fwtLHY;P3JeuY5{`n`Dxnm}?1|MXplum@$4vBFQ6~T(5bL6AP3KM(r38f_aawME1(Cm9K{tE#Ovb$nMcS^&m zCF|O{CX7nxi=kF`<)R(&(fG@5nn_*;)l!cW5 zRvz?PJvx`{I2I)GV zh&(wrwork>vmpbSK;w$ZE!jX-`0&~?QuYKI_Y9E9MPk9d?f|3${6}*UVERk1PNPw9 zq((t=$m%X~(p?69xyV6`4aoup+d7xeDVI7TC2WH%@tC}$i4LI;m12Da{hdlp!ySYL z#BJ?!sa%k;k5-ID0+(Sbmq%+1W*;*(YHhl>QoWUKTUKPqm_QL*zG7~vinlP-wOmw| zj9t`~YJQr78ABRFaaL1wc)bRKeApe}CZ5zfZTO0klK0bmoJ_2#!W5yfni6}wQz-NToRDGKjFYoTJ6YH&p%2u*jdlz77rgE%|H; z3*PE&F6?``z=bvhg&Y3?q79DnO?gI)S7bL3E^&DuqF4#PUg{ZXfW79|cLAES9rgOr zlVn70lK%E?ujl^XxJe@MR;MS{TW%5lgF=NSY!i(h@kcG;3ipeLb-pwr{C;=HH4}#% z4^D!jwg3TJb5Y~U%S0w=liNxqi`cpdgun%CarY>+gA;@}l*4R;ID0ILP_-&#tJktt zM$+*qt+2(FkJ)DgLmanMsXBrR#Pj!deF3FWswMOD?N&82zrbu=FH_;v$Ewx9wIfmA z3-NF=8zs9EI5U!xsh%q8>bW1q6HtukKDngu=K%1p=wI|euHTM~(op7La4TgFnm34W z%V>Lw>ury>q9zkcU05aY+^g)!r2=0T`<1|W+4VCJ_oXolquJSZR#1MMME+ni*qdfS zfjoZ&&R!}6hw?SfMolN6fOr#h(0;jC`I#IzEPKZp>?;M`J(i%GtiwgYCbpJ?-Y3ER zE)R;qkgv|1I?;wuzR3|EJw@O?U0(RJ);@vy9wG*+ z<3$p~AxI0olB^siov9ORp_~PjZ%|R}Y&nfHwsM~3QdT^Gg94@n50IhrG!Y|~H0AO6 zrZG5jlg_fBMGbGw77XAx|JdSHzJZ8^=*Rm%K`+bMSinebD%QZ(DZ};000a1qBW!3g zb>Ri&S9hcH{BtON$K{gS302SY zIHOz)a$8wH&P!hjPHU(@_KqV_IE zs-~t3fSW|p2fCW&u9X#@7Oc23&$H7Bg8Sstsg%?C_}*h)Kqb5%5TS z;S}RZkPW3-8ONYP&xBs!x~qi5U}j~{@3}B-e`nDnh_o}pc^V9E}0<*uZ6YNAe`4$orHFr_yYfu_<}9}h`(Zqz@MTAS0{|i z%Qo&stuyS)=Fu(Y?*7929(uIJcEIK%T!sbu%hnCs@Z~Wnz|Ol{83d|zuh*h9C4bV_ z@uIsFE#KyYan;GJhN4a`Zwhey&K4++o}Zt0Nd(-OEsra~z4y8+)}519x#3%ejKpt^%XGrW`KB_|9-* zMisM8LNhippBSH(RD&xnnx`-7>&Azvy@8b1A*jBJ%3tg40`vQ$cr2i<>&6F2VX#~y zqr9~S@taD-jNTU^Y52L-I17qst2?0R1;{~!hGBEbpvHc4tg*r9vj~Yyrn&qA$%i1) z2ZVfdaMF1J5QtWm=8rCR_Ve1X7O?i6C?VlC=CZYJAz?})w*yGHDj;p(=Gc)rS_MX3!ER9~WjuCGVCHZMH&(+4 z&OsHBazPR;pg;#0JWeKH6XVRrUj~m6lupFE;0;Z*fTkr5oAID~<}P*loi6q@M05EC z!bdd9MuBk-!f*n!!#Ir6r{(9wfl|(0Qb$)>LVrPRrAVhK;FrTKW$%SGtICyVa9uIE zJ^D2ScOZ5H23n>csMOL;3hND(Ooq2r$wXmJ!fi(%mRRV5CD7|lqDnaWkPRKB%a!?; z&pE9<=#py6o`$rjf~w%fL8WUF)_!d$nS%RXJ4lRUAh@xlLX>HyV>W54nKH#160V~Y zMjn%OrkUEc4w82@{Pdz#_0V#Bt75To9v%Y}>#iiks(j9ymcKpk_MrtcBkL5L3zPw&BY zLMe{8K|8wOH2bRDl%vn^O4$m~E>9zqXBXh#_~ZM5;5_ z#LPyX%u5ln)o+|`JRgkRar^iYejg2IY5ueOse9!cbE^0d2Z52CsEVLyan`W^LZ}h} zgU`Kmyqq7-Vc&E!*L$=HlsBR zSmVx3>OV9n+OsxhZ94%3dx;{$b!3S(_^>82<;KLiVM8&G;jI+&h{^#q=+I_bDIe8f z4R)hLh+7)mk6w)y9A0yOcXJqKA@89a&2%OfjK)L5f{#U_vZf1*^62Z(GYuUl0q!0Z z*~CytN2yE;hEffc;)M}dOgztRzG%aep zUMrpW&^#4E>ctP;oyfyqh!{e0B?s!jnXgWYLc+rQRf7&=Lk}tt&~d?VN;Fmmeb9#X zsBx{uH3?x&G|Snh=hhCz9L{51Ez5(NcD06EYTE=3@QHJjc1E?ssjx&IlB7Tj5)J*- zY)E|#dzROc=e^7qHBA_i-A20nms&E)F?KMbW(XcxGC?^}aoDU`xL^-1l|qMG47#cT zy$CMk4y@C2ipl`1X9Nh73`(}f6!Qt%rM7`8jU*vBs3vdnhE42XCBKHofWTSqpo}LT zyyyZMqwRx|qDYOWc%x!cb4GN{xtvus*y%ZO4NHOWq7HuKA0$>cqJl_H>!a5c#HUQ0 zHIxaFW~a%5a&C#a6{J5Z5^C1G-JyVn8Dbb6EcxItMvZ`+>zc&l4=E=_iB-TX3Fjba zx;MhtQ=kuOsLBJOEh#F-jqf;hXU6GN9GH7C)6!~W2JwjEAY;fw zQaLFAKh$x0ASC5&7Hdt$reNSve2)1zEDpe0@y+X5G+!RUu}DkY-G}8%r8P`rJ~}gp z#rCYl;g?x(WbjB)FwxvG94cF4LsMWpORf0k3-3uSjY2wCx2T!6LEWd3v&|#8#A$OW zZU-?qM~N4d3!B^kW8sq9fz`tHOxN84A#^B8-V4}fIQ6m!rG29h*5|2cV=t7Il2!si$1$&Y`oXFdL;)a&D2fAU2&l9B zJc1|^%JOmxrBpxG2T4@$lt;uC8<-K-6sNmQ4ijh3C_>H|{*>B_)GfNZt z#;zy{lD(r@8oZJuNJjEY{92l&tR`aFD74n0sg4}7Sc}Dbww!owY{VH^1cPv?k~Nw& zzX@1{!?0?4yur43i7V`KHyG=!wXQI;Ph?&2AN&t@id87^GS3*c;=LZ9Sv^yX1oz`SHs3<~C$RkNwpu5x_*WfF(+fw5&v|m>+cN*Tml3TI1;Wqqg-gSRn z{`U1flTD1R);;-~Dr|&oJ=hV2&DOQE7B5QMpJ`(HCc|H#=e? za5e}b0elHIV}{xP^Q68pje!JNS46s612l_BMlZyBc?}PrU1%w$MP}*B3Nsg?7@&2J zqG9YqUQ!|X(TbZqi;7>vn(2)Az93WaheV@3W2v}fJo%)l+Qq6y76pz_*0ik~PT~o4 zS6#cU;w+ypI-_(xTBeH@UvVQr8`2x{fV4&|2LPKR%+^ube}=IVh=#=WvNoE8Nw!MZ zk2PPwEsVVQz-gQjmU_%iANb5ydQ0Bm>1N5fnd)7ujrna zno9UC%b4}*O)1o<$<6O4fiR>bG+a44R!47+Fp&xiNu!=93 zToYP*HBq}^WMqdHq5Bi#0evF{NjaY;a}zYjfbd`gU$2>M=mV|;7Ypmjl*@gPfT`uw zLsiw7(tY3y*dsCiS{BfXSmAKsWCWkwYAjttVTs{w6_&UhoT^-&uu{sSKiJ*e+8u10 z6MUo*3&u{dsDN=$fu%z7K0~-`(zNT+nAu_M)`wth>@)Gi#1=mld`!mx3zYT%O3ocv zt&k4i2pBb1;8liAj(=%E&8K+ZjaQIwJuK+p*qUnui`BqEBI!@{%edt7nY z4wmBqbugd0I~{~wY?dt0j@n{y(2@&+vaBmTVw)UOPM7AwZLd#t8s+n`pVx0Y$s)@GatFRn#S3=2==K|{`K5@Y(79xs0%!LtLZHhnKKT=CWb@t2y{zIr{QA|q& z&WdZv2SvE+7PKu)JV1gXGfD<KhkwY3d@6o?<2P?yaonsAtsF}gsixfu7f}r zkTKE^2m|~H$pP}7d+jo)DtU1?Y6dHKo#gJtF4T0Zi$&EkzA~z-gQWGzw%+ITCJOw~ zSRV{q@H?LQBUkCNltUljhq@n6#=+rEGUQYh?=i<%0Ldeus5GPOj9e|&yDw?~p>g;` z44wXvQcEB%lqUg6{Y8F>KVsPJ_t5Lp@2S%V?X=QzkVns8d*T(o+3KyshQbcR->R^~ zkdT3gTm&lq*m=rO42BolkL%3_TIa!(F4DV`+Ih40c>e-QzTdsq`riGAs2KM4)$5~! zS1%7Qd}jdf5ay1SK6I2cNvEktmGVGJ7|})*QAEy)w5S(jPy{+E@g2UoK7y)w3}K&P zcqZeOH6)?JmAhB~R)!exp-~LmG`Q_&K={OT$y->k`|5ckn&S z)`G15MWt-s!FqP98|M=@HT1mQV+ zzOk7LjTX4EW4HrpXF($vZa*fdjNq<a;{$rXJ;R?#}>lV|Cud*QqOU)wU#%n~DS?d)MD;`cbH_Y9T(&SClZ2vAVj? z8SlD;t;BbsSr$M1Gv;5_V!Xk8Db_CpE@yS&Y8b&%>qEE$)^kDm(FtKVWekQ}NHo93 z@kxD$Zn-L=oIVslL%Eb;K4tWQvIZQ96>G((0~UkT%=lvWQ0bueVTr5Th_P#^GBUia zDkHBeJVT%Tx@(VyAAN7$mDP=m3X++#Y=|3^QxrDmj_VV2CpwC-OKO zR;b`GbI9U~Eb>6F4r`+k78wis#G5GO*V>ighrp!E3>O=pCzIqu%+$mK5?)^MRYpHC#O$k*(;JU8C1)dUYTqRS@ z#-iAmxbip&(^+;#+9+S9u#E8tETT~4RQxw>TjQu&(^sn&vQ-fCs9-Z2=Pt}y22(E< z5X$Uu$YOyz0G+)h2xAL0k^~|``O5}tlrN0IMr#&Y#B>LEbvxibgwtl)1E%_hL(fB` zouHh#$k)cY;*P*%l4Md1IP~MhVGo5{o2f6Fip9(zj=3luLKYN03LdrFIAbFV@A%5X z&@Es7SZ;hBu324#wPaZC(umzC@Z+?E0Nc{~!QmqAMvvmcool#%o}{O61?*A7;d8C% z$IanS-RNyLNjV4T-Me?eh)HXxnP3=nHzV9nj0|D#ya}6t&C2-FGy#@^azl)m%xYtI zBNe~|rnJj+|CzE&aTeCWp&jC^;)H}$HgJQr*)>NEIg*00#}HVy5+16Rl2ugn{d3=K z@g8u67!VUNvTF+YnPq$L|JMdR{?oKnNVFImn;37$-A!_CrBbwbn6WqWbWxAmqH zgNLILY$S6r6up$PT4SFPpysTTC_!@!%Ujcx8IW1GaYPN~(#nn*WxD1-+w3bA@WVO> z8mB`8b|kogkkavFdKsQ|{W145fS=%~>sNHv%`E;qob@O;?7?`;C*9BSN=F^-QTcK~ z1}Q<42fq~v*mwzq6ZPTS)Mt5ai6rTvCZbTvVl#u>&}AWc=_mqmIK@qhs|^KbhPPF4 z=F;WoYG%u+51FStX<2#>AkyUrp9vMUW0)Rg z0HzuP43=9l8R@|%7e_Z*)5{PANvNP^%3Fz7QZ7RYj)Z;@e zych*f=%rR_h3&l=leit6ui=Q_R)t2|4??I#@u-X$?290_%z?Xg!_+m!Y&EJK>Z z>mC|>AUvwAV#IvAh5CR(B4ChpErB7s6rEQ$TyH*W+cJWI zOzQn{50^>hsY-ROWKn1E4)!<2DsPMr171| zt%d7~Pus|vfTZyFaaREXUpNY>W;cim>1QI3ckb29&C>d zTg!gNO#ENK{%aN`^W4}>&8@7HXNnWF=~3qBtA!?O)xWXK>^s8rYDA0jvln9L8E{aX z55=a-b-d|L-r5_VO@V?ICf)ev*SqDhQ&%KJU#UCjDoA#DY?EC|`oHN~B)ckKF6YdO zbXXPE_&QpP3#V5Jeu|-9CKD!_e$V}^n}Dm1mwuwHUXKsh+OZW8dY#St_uF2ASl?y# z`>yTR*=9Lwv8i46dFOtqW#1n4z|T|%4Bq>uhVS!R7dPE;PuX@~&G`#_y?%*6 zM^SlJW4vH}pwz>i!E!co|jc%QIjmWz|Jvp=BXUlepH3 znkC)t_1fFLJ}qs{_dE9cCKYrbD(Ju~tkD~~k=<1I+=)JlD%f1VRrFUfrPv%@tP)vD z+QlX$>Oj2P39~pA;v^xhbfnq_VlQBtbN__5=me?6n#8B^L{uXxFEL*awIijsG&{w3 zi_O8){8W>iTGi8TQdDWEEU|f8l_h-X20&-`l5&_bs^$P~pWNsyB$GJ+ebJQy@@|)x zU^y?@2~=M`W3!8R6x-~^qyg|Ng~7&x$bZ-0ifl!k+|I~gCzv6oXvB=RP}7Ly#CuXl z33q;KB#YDw!;%QawU?#6@d-lF4Cz9IRA6hYIKF z*@gr$c(5s&5OAHo;1{Nud@eXa-Z>o4=V-GEszH@*Ti=9SyB1MXQb4=c zoO=~DAS^?QKg2Yc1sMc^%TP?(QEp~leg8rPf^`q6doCzU_;bBI@R*YFzE6jQVBN)2nnl^~9b$Q;G6o4sV zTp;{UJmz_`+8l5wEA|`Hw4PKxd2E?3l$I2`^F)JyqsU$c6irqNgC(}&8_OzC7;H(N z5%5Bg)^75l=Ov*RqTfL0o^Y_^!iu-WA~%I^<|YWz=aLu*jDf}kRY1Qq!Pf(GdVjL1O8pZr*)qo1zs3>3AMluKK>4^t+NlPoz&8824~1+Tq* zbFf}fq%1gDpfgFc_XW94XcnA2#|4LJQMkHy8{-hCgv^U2)KT0RArC-M zE$%yqWR7G(QkUy)HRE7b?TtYDM;vqtVa<*p zYzpu!NRK2BIwY(3s;Fr;b27L3g0PCp`($;TyAx_n=`u+E0XdC65f~AZ(-Qp>QGvh@ z_}6-bL%)?Bp(+WPvS*H}0?OwKjg z3!Jq9x2j`jbjb{Nn4K-=tIpoZqQuhl(}q|ipADgb;aj~SK(S#>PHgFI7JqQEDVj2Z z6d=tM1H3~C!qak|sd!csg`|LnOaadAn4kPP! za9n&WF36Y1+-t#5&-52bku(mNF5LL!#drEsA|>w2fxRa_<#lC)xlEw1rBdDubNkUJ zlJm5tEAop>@S|f)-yMHWW62%8aus_3XryS4%`K{8Uk=KBlYB_xi4uZDGbCeb`xK{*l=IeuTRp`C5}rPp;VZgcG7J&6gt?vl|lz~ ztd9~ahJ^5Pv~Sqn(S8GVlm-E#dBta5i2v?Q1@MkWIH z9KcDI3pZh{*jhVP!!p{4an4BBgxO!ewN8Bv69q3>zAjeZ z-tKDoZD1xmXf#nFw<6_m$*wfI)k@pTt}RHUidcWPNd_F+tFdgX6_*LK#*=2`rQKkM zcVUi`c#+u8g70O~+w$ate?07Ux55)0oMg1jc)tPePC8XXwg#7L89K`GZwH$#VKxdv zufbrCeRO&S+3I4f148Yfy!~~L_Tk1~N|DPv2jp0{N_FN1x^jfI#FecC=^Y7=9J=oJ zoTJJ~^@yQc2C7p}4A>BtAz*NyWT6(5YOA)R3Fe~v{<=0efPU%@QNglQP(7)1v^=+@ zpQ{`!Y>khWa$*m?5K+>nqhz8?plJ~ZD*^p13&Lfq0pxZ(Fi6Cu#kh-bCK&6*Sp#sT zu;Mc@2K1T^@h-pOG)+TZZ1dF!q}T(LNW!!OO65m!WeG?dr8dlBnI$qq^jT&B`YTIV zO0>!`h=FmbP)9cbyn#jw*#eA}eM37E<;dA6rDFv7Sz?XK6P}Ia^2^Q`>uNZ524oo4j zjvDshY_B+MG0XLVAc7Q?^o(7sZ z)}u{hypGt$4HLL zLXqX_gz?6sDN}sGn-DHeiSO4fKv1bfwj2%fTGBXZ(}-VPXpsi9&qWyRmx>_8!KcA% za<=NuAtkeH_T?PbcEKky{H_7>Bh;SPQmn2;`WZN^w6?9cCMq0p%n~+>>O$)h$&6Mu zHo`?kd;$qSvO^JCrhP$30M#?08wPCVNNR2}#F)uW;x!bOW>CiJWL;8p=a6BdRmwb+ z1>C09_-A1mrIn-~;vnHy!b?g6kbSAU(XOZ~s;b>>f`qFKW>*-_%}NFhaQ&ON2-mMN zfiGz4OSc&^G^qVmu}|I<4KZW@WD{06Ecelh(7L&KQabm>J}{%sz^((dCKbjP;#7ad zG$eeXq>4{$MevIdl7Y2hDZB~1Drh3syz9iy92@hMXocIEg;BaTaU6BLhoTraDTeXw z>~tQFZDu=vQsy%k1snLVoY*fcSh$v%Nt8tlACS3yC<&V95ONi=TshE%*mPh8c1t+M zH%nnLg}ZVI`imOxaulxGX^}`Ict&Ox);$)xLLZ6V(jc(ZQR?8{6Ic?dZ+X z-p0p%zh-C4(t)jcq(Bx>ED?^XCW88a5}-OR{Q^u}IRR`4*x>O*U`Q?l=1e?>lSbm8 zjtXwn6_J+K>{H^RYMBtj1?H=9QXsZd&h@~3Fr75*V;*9H4z?}@48~;v4K)XF9{fGm zXRsx5e6|Av+`=Rxc+ho0@`vRlp-@)Al$A;#wu_vGDMU*`c&u4Gxj1XrsnAMV^^1e> zVU%vGxIx4L(E|d9Pt^=QZd7X+TL;RWs7TL-4s+hrYN2OS1OQz8sO83v4qR;z1P*ni zuOZ^He+skXx%Oay1uG$7S|!Zd$?%B~&Rc5cp%q=uWi1jwfEiay_+>L?p-10v-p(Xm zmB_4!mNS-UwQMWyDy%U*Z;hOu!$#<9rJ5E7p^ZESRIZ&DlQ54TAldvN5Hl%EnzDZCM)^b|h07$P0uVsY1hKIbatgy@dP>qDMWAq*cMj#P%>B(^QFPqA6%NlMi8H-2fANIe6K` zI(bak#OyEt6~NH3&Zt2Agd?XB-BuKop;ysQ^pj7Fgz^ngG*sugV=*uCaRRYWTQ)B0 zc-VB%Z2ecP9&3&m7L#ob zX7Kic!b?@>wDJn(Ffgp=@|f^glrty?g3~`wFvB|b*UmD-zEHfTV?ObXa~2UTO%&EO za9UI!1j;zD-PCrE7^fX2n8?!xJ2bwYfF?JMLi4jd#X# z^xI^~X%0H13b5#uBQ6$TuOVKT*hhDm~WRY;n*{|H&5YILh6kAi}((VfOtyQl}Qi;kD<8(@) zTyEQ8Mm|MIhX_U02n%8nMu`XJG#^(}VI>?)$Kpz?(Q*C&6?oYJ)R_`ql}-7YH zA-6GuS;qXFYNL}=C(A6(raU)Ef+(U_FQ5Mf+u+M11Vm`i^)jXJX}G>C1Vs!vV1awQX2R&2b#%>@JwjvxUy~iZoHg(tVY+NU;2?lXA&nF6i z2RCRZ8qSJj zInJ}yR9lx1RLaoS^*B{08R|b?%MY_FY(YZJeGYBPP}gc=YJMb8WT!|ltFWfVTm|61 zet0sD6!E)-KJ^s&)DvP}S`SHR)k8D`q!pw08$pFA&xn@w1R5=898wv$S*a!whxMn5 z${zy!-?+iFp~}MMZBdIx*sv688kB3&^@w9&Bwi5Vlq0G%UG05~XxoHxX;G|C!sgjcze1Z6?ufZCg6b%g!6ISVH6#nWj z=xkOBVByl8aV|sss!{2zQkf|_nCN{fpDZ5@Oi>cPjCMhWD6rXZ zu^8KU2bQKlAS^-%JehmwbL@+=x=07pwdLuRm#AI6n~e=ju6ItPD+R@QjQh#N7zncx zAJegDzD_pwv^C8?h;X$E##viK3>zwCB-kKoOnNO2{zOc>`KP_Z#Orv=@9(<^4M*)fVxB6E_#W(Zt2>pWML80q>3DJ zys}G?Du{JS9&^0v{Jfivitcihc9Ze4Yi>$v$=-IQhndkW;LgFgq=k(U#FonRXHA{% zyWI#D6&9%-!J3#kMr(UB(CT2V#PIW4(9s=9sJv_Z9*#c%5~-$viuQ1l&fT+|$Kb;_ z+b}0)F703=SQ!FI8sl!^gFXoH?na!ERT~Au;naJr$a&NM0|G8ust+RoQ^X_ zZ7+mZet^>0a}al2V;|xX)t=CDp3vA?Iu>d$wXf&P5h&dV=IX)O-M$}F0)}!&y~;d4 ztS~j#*Iet06MGxQlR9aNZUQ$B$tq%~Y~<6>%&OZIMx^9APe<=pM6Y00ozSmB#Jy;; z9IecIo~5`EOyXI=65NFiPm}rL=dd~Ze>WpXHNgLG-WL4-o)sNUG_~xy33sIZ+_}^OPLr*hoyp4PoH#Ggfm`YFcJ$={#fWafQkWjsA>_AfhxUe zVMA=)JHeYMuh9fR*hZUVMSmC1voNZeKe@DiA;6)nOi&@8y1Ix>0VbW7s*dQ0Ku90wG+UjdUn3dxtVpN60$Jh-w{GbSA_{f;6S^a*pc+mR&>EeL_ zSJBVZ_Ngj6-c@+krUZ-z7gkmtqc!XL0a@%KkWnDe4Dep#>~sl74*ln6vE$tk-zA{* zbdn1)hC_fMc}5ulX))(r}cbiGhV|Z{l~-g^y8$ zY#S$xK+*tQmUMkG^meIOIa%Xrd*&p)>{0&ubD3l*Ur3?w;8{%)sXlCSMG<-I$ZLmW zSe94Zy!PG2o)%|%4Tu&QuC06U;P6%F-o35+9hnrB z1e@{mq}6c-aWG6-`$=PQomLl}`-epdnIXv3RTi zkSNz+)+nFj^@E_RNWpOySjJ61dWxi=OgDO&oL9!`&xvCXyq*;ENR@`!*HwDWc!T8D z9w&%KC$8V{g-AkoRnOs|XT8y^jU+au>pf7W0KB6WQJlaiOj@uqQeJWJdcjALPIop> zKBP{sh6qXkU^$a}3o@~xEjMLMtd4Er4sT<^Q6VP=I*2n)CaaD(yZtrQCUdWe5`jQXus@FF zIlPM6U`1mNZZN)X zoWme`k`^2k4sxX^Z2Y2?hW$jm6e)gL(q|#+(6*-fpjbaWMX2o$;iFuyX+D;i3_rSI z^h{U~SmM%PY;{ZQN2a_BhczNzL-8D$lMA?wNqUlC7)Vh6YOv`9tR>^t+tqf=hQ(KY zUT0_C(&68~AH8tP;l%$qOTZ?7ZUhUjcMv|v$3+-OH9tQHbIxfu|~kY%D~p<&aM)6#YwgS$ynFho$+8RTZCVHn+; zm3tbhA8g%L^@BlwlM@TPb%uoG68WL{%XZspjRVxHr7C5*(DWM-ccZd>C&(BoC6liO z!exNjBU)K0Yjzz`o?$>8%$vVL3rFyrz8%KrXnD6Js8C~C@lUFC&{3O}9o5Q5H-FJ| z;}0swX9mu8#wq`wdy=dcn|atpiSC2U;5bA|u_aPUf&;ch<)=(2g8IX7_~)$U2bcy_ z{*IT3T_$u72Nti`*kMqVnL-5vNdt{dO~cae)y~df><1H!OTBuFiq_!r<7hKiju&QZ zU?@@Zt_ER05hOS*2N@DGFG{>9^)E-8R8w=0+0YG!Fb3>>WNzM}*Cyi%x%RL?8fC71 zP#oFg7_()xOe=;8$5wp-J9=__6R`fxdamuJytuaC{Fz0G2-Nt}!g0=2hK9GxX~ zv9=U-&!#7>r{);!1gdFC*l`eGR4Nl)I9i`3mmO&RXel4ZBN#8t>3g1KnxUB!1Rr)GGnU?NO_!(mQ#kpNl@xv7I^)5cuxbugjyfPCSlbD@=@m!)8>xQ6gU(hD$^DPV4;9L zY%HD2Qy^Pxg0Pv!OUwe)$vC<-RVEvZ^0rnM7*SiD32mqgGLgXVwxjx@VB4L$ z(dMg}HuOGO732?CCkpgBCD!T!t^w&8n3jWgq!S&DQYq~FeSGRm09aA(115VhmsF1~ z6ud>d4p&a0(3yAKDMdwK$sM*eL;?zl35$#!>Q3=VjA#rYPL7yY&@96c+u+l7=b%WY znAJ))2@G7Y;dm;%$hk^SGp&$jA-JJSO){PMWkMk)#m$X5N-zZ(WCg`i&)MLV%;&jC z*8D6}!U*+NFav-!Th9zJGD35fP!TXR$ic3NQm2Zll@lRZQnVf($`ozLuz^WdEaxdh z%!(i745WU@sho)2+0nV{_jtK5g`05)APusR$ZXMZLBw+1E;auIjShLGo0Cuocc2_TC7&*-`SKg$e`P zA&zTV3PM#2w7W>0Rw!cSlx_m$W<0lD<_~R%&}wVJCpb+{oxbMH;-6fn!53(tlW_ea z4VCH)-hFkI3JnMLLg0I;&(WsD+XtB|1<$B^}9=Z6fY&= z;M9lr`f~;GnNpcClrm^3m=&-NMgd_p@sj8!^alY&dEzjE4;R&MjvOQVLJ@=T36;@! zw^0^e`LJf9Uy~kI)49>dgw{eVxynVsVfl;Y7>sR{!G*Ubi8NSlZ9I?9AxCoJWnO0e zD5p^BY8!nUGqB_+TJ^DJwWow-0bIn1WQ8UqdTm7wBKFWS(V@C{!%ph0hJqbiw^Fc! zFFW3pZnO`)PBU%l1YD1J#v$uoD=cj-O9UQg2ZbZ|o9I7Iyus>r>YFBkh#9iDsGUUU zBYG_**+E%kVc=kVo>enGaqTWVs*4e0L}C*$q+l~G;%6+tYoVM4%Q&t`3_ZiB-LPy9 zXIA3TW%vhs!6Ts&Hkq(GCkr6(HJK1IE)d|FH?@1LuDuXr4XKXUqT14>mJDWqFKXTm zKvPgP#|Fp+Oi{@5@}(xRMTO^#mM6Ybol-SV#;4?9>2{57u*gqOCy7@P$gJnpgo=tl zD+3$D3#QgsHupWHWQK7-hW5s+N8-5YD zDi4IgE2j6YR<;Rlz(6X8(5;WNNe-FGr1!jqwOK5k6rD^ES{3XinEn-t z-=z3xz9?yhV0%((6J#O$o;oD~P~6tYFfw50SV2ueB%9^aumGWYWom^}IP{K*+!f2u zBX$ELfe`QnLk48;{b~p&va`)?g(q4X zxF)zj41{ws( z65u0=1HD3gCe(`9_<}6EJ+zlIxEa=qEPRqvjcRBn0T2AJf5dJIJ~UGUkF`8DDxS|d z1TCno5e(!ROW93fJ|kr*H<6ffh)ke7{@b4uKb zR*IxT)W~d=YLg!8#yMw%FJC5&n4Z8@zJ7Ih)bXoh7lligH!_AzW()-X^qOz(gQ5V> z&0`InaO0q$+~}Ej`eiy2=^phBLXu){%_k=_e7s}voR)B4&GqQDCbw<=4Im+i) zBi91hLvnF(md<$D{3(wvvTy!T2uXH8~{Q#LKy(s}FwbSF81j(7q1Lq7T7QL6Vi zl`fVvU-WYnwePC1P9aI2vxq>NYoQ^3ThuR95o9i+#W#oQx2mhq$tYczIfR4F7utMN z+luii22czv0nuv&7$0CJ%yUGl zGMwr%2g5E_oL7Vv0UEOIJR&V{H#3s5a>aSpp>J$zFZ>M@pKa3)tffZaS6 zR2T*v1YMo#P@@N6LPki~CxC|NOfb+K_ef0>5W0T2qzjZ7pZSVuhs;G{9aO&?3dT8z zHlz0)EES@dC2g_0ms*(cs?mzqw1;6B(P-{yxMT3)O&_QOmM$kMo~PDW@&$IW+!k%M zfFWVTGILE+YV=pUc&I$vgL&kO*$pl}!zoHoX%(yEu17tKCN_91o5Wy+il zu5Urn(W1eqWt{<1q}7Vsfsmk~+H72RgNPY3fmkJ~w!Q`>lV`}bh?7z!8*!<2qrCzv zJ$zh15U%vjmfpC)>rIACr|2Y|2qtxK7|@{s6uR>XsdR=3+?<1%b6cmeY)kr)QCsL^sCq))o@g@ zEs zfQ;=uyt?A#(v(zWwT`tMqcllZUs`kopPX$52d_nF;Pe@o144Rqb?jLZ@GEjKEvd8` z01(*#=`>rWRBbpNtH%_2Ay}pjX`W?29gBvlhEAm*ghm}px^C&5@}+?dOt6?wZZ1`u zrC&D&+kZQ9t0ZZwJWUGzp4IPBL@13mR!?h8$jv0c?~C zQGO4jcwkS_OJa_-XY6>K&E+Z@Q!g@~@eoyfSuZW8bcPIjWfn$*^g*noIx?-u5;a=8=|bXof6y&)n`siYm%c9i3b4sv%v zK=^UW77nQ86a6^Y{K>oBD0G0NQT6kH@`4e(z-DOMPUrc#lLK&;5`nLgJe>VTj0?j8 z6V5-F=Rg6frE5eUcU$>_(B+4b_ zdlX#IZA`)^)vPdaJXC)6nott`dqV>y;r^n1!lXD@arW(SS(=+5f^{4?hm_oKEOkRg zrL9}3s8n;Jw(&#}t%q3;(PPJi>82otcQAGw?6L55vSIwjq#(>Tx=E$DzOyZw2#Lwi#)!D(H?RXA;!h5ZK+s zZ`k;isZ&!YYV?JZTE$-vzzRg8;7Zh5pEVtG$Sc|GNblx6@`$A_UI?!UmyL z#B1ei8Umncj@N=M29HDn{n|~i0}imws9WzIDH8HBQkaF3j-@L6@dknDKM@dgaTn~t z{|UlZ>V9_%x4<%7Xq`EA5;tMDc%cD*%zV+*!A4#iTl1d~#aP_cOL3kMm-USZ#ZU&C zI+E=|;R(SHtBWFt0zMdnh)TlSFu-obL9OJ;H1`EasU#c3^L&|6`ElU?KAwo<+)4R8 zPrTzwY}ayCNRES8M>uq&aD#@r@iFEi_aGYo(nwo>s;A-@J52nLwAIUHKah|(As1cEtK`zY-!?94hyi1{LUvNpePs3vFs;UR#YvNO*diE zD>iFG98GbC`ZJ&VdOEN)5G&-b_?6{Vv`3SbA33Jh%oBV>(w;6botBP01iaYYIz^ij z_*WM?Bo2_^4a4p@jmO9D)DclzQiAFc=>r<-VxCSAS9Yezs^pq+{hclmwA&v}Yg0a5 zf}o8hAq7295*sOen(k!?QCT}Q#ce2eXx-R(Z%$TisI#65KM79c%SF0iYzBpZt5&d0 z3kAe(bJqwanwhcH2NRJs1W=5*bqPV7fSIlE2EU6!yu&1ZwqMy)nDUG~`FdvvpX*wr z{g8JAxqRG|4}v;V|1j6_G?xPwn-lp@>mX95AXjh1NDKjn6cNLe-l=z112fVxS-F76 zE00@C*sVyl4%kn~pp3RftwsG-Qi+APd#gQ%=@>XOl+wxMgXuk~HGET`K4!3;pXJCx z=t@?(ROlJG)tAHROXdaTpPFPR&Y9fdoXICi1`L6d zCSe-lYIhXCf`wlo4z29c@31vzeA|M`2QDC*bQi$0l6cMuU}?6LJlaPI>~H<(K)q(= zdL*!rFlmjLcJ~*gWwm@OLJY`AY(aWbk4K*DJnUhC1D53Qvb_5t-qu1s>Z}f~>J@fPwhaWOq1pnhxMb_A&-~cehgX$nhHp6U8dlbPv8vAlx|N81)wi zFZQD!cU+I}z=bd2fE+~b^awcN9G#_k#_ z4@H<0U;;s>bF!d>Z&PH+vAx2cx-g^|_-{gyAzoZNo~(S=D?tB2FOn4XICi^xl4{0M zEa~bQVds4C@_<%%cXDwDqa-ES)UXj0q)ApvXK3!_%jW$2yt9ZW?{P{9J?KtDr$dRj zVhdsMjC)c00pBVNG8tyiQhYQ??yNHCGBRw;SN8d<7@6f=RIf2O0;-mZ+I6&rp{bPQXIYNrF_wHW!W8$Swizjtfo8h@TTwzxM>qvuPvp&1Vc z+jud0oI{T6^L!b-aBRT|b}5X@E%uxE)X5Nwc65}x^Kckv9(Mv}hp+!R&YmSJhz(01 zGl%?D647F7G@ob^Q*v^GQZeHc(E-C6PIJsropCOyL;0+WqLln2k$|uNa z;S)yA^q8Zbj?m7VDbwz}`vHY=k~B8 z!@Ya65^h7ermfp5*91R5fR4F0j-CEg`FR5YXRk4bvM?sCXR$jZ^Zul%2PnKDECEZ4+r)l&i{rP8aX8d8EoVw@dlk{v=ex8Qv_?HuE3`zYd zhkGucET-Xnwfn<(l26SGdz0j&dtv6Due|UEt_SzR&z_hZSN@~BI@8l?^Lqel2kiII zse30U)7W=%=&tSPPflE{z7_p3ojL(89oy&Mi5ic+Nc>#=VACRP?|Gk{Q&&$JnvU~(h zhChGIi!*n$&m@Tj+F4@ihE?NP&oHHcjap9%A*zUQ+bva%v1m!8Jn{vHSDw9m$jJaj zGb{8bl6RN6!)1cMQf4Ne2ijpS^eV zzKZ+}Pm&D>f;BYSrqY(!46cGb=xt=9(WR zQGDu?T@N@3#j`5O#wuD)A$s~)`Fnq7d%KNN!x?PXmhgoi2d`VaXG9IdZK z2VaXVQj@l$3(2+}3O?g_Zq=XG-3+f8NwPV#ktFUfSa-83LtT~OPwwuW1M*qtdE%JG z5iI@N43ZKGH-fMzhBOj zEF)i^V9@Pdf2jAigIJ(#-ocj;xXMHIq`h6U#-69Xp@Bc^3abgmEr?xSsuH5@bQHh% z`s2U9xn;(GpNh7_&aYtT+dA}}pUB$Q1|bxN>HhInIX6iHSFtJ5BJBrQs*jmmsf`R6CFqu#wBG?6%`AExkq&y)J@zI~R@7clM@ zbhI5KLQ_+jl5iaE=*J3h(rdQ}(?axs7!ES(q^ew_8>Yl<_jpI(vtY4-Sx{T$=#u zE58}Ct>@K!clEzaj-g`hKCR~Su8~<EG)KvJ zIZv*CJhvPl^T*Tub+z5OXGcb62k?)soJV7Let1Sa9k{FR&`F^w#2x&pmQ4M{Qz#{4>w&wp-X7A)25}nvvX8au*P&w`ooJ`?2>c6E@G{4la$kHpoPq`L zGFM60zq9x9@F4n+VRy3w+^mg%w?oc0aMzU-tn4xqlS0YbjuXmkXRiq~1upK6DMxm% za}3oCF&n4zXthXqhCe{)K{^U&S_H46+}huDta|}2>B;OYK6b0|GVexCYVrj&clqWD z-W$}uH!$xF+ELw$!`c^z=EWhtc(458X6=ic=EcqW7q|GujmN7wI6z0*f_ZnV{@rbP zcMk%tYTw+hpXZLe`GdQ9-q*djQ~%;UdGVRM6_fM2H}BOC_I~XOZJ8JEw?lz$;O_Dl z$qL=Ie^l-GO%7#J(8wU^G%ucP$*qZEOU=ErX<3^!g}7_{aXgEvcIyQ}(o0|}EbMXG%;A%lQUb9ZeQ@l+5$bH_{@v;fx6B>m72lO{GRVf^lOHw?j_z-6AZJd1G>VNU zPvX_a6xMMA*6z7&3D&NAwwO*l)jGN7k2xejFM)2+m$<6{$j_7#`r$j@=ePq3pMBp6}WTq(zEDUqF8wv*mHI0pE7Ol74@C1IlWf zg*kBdm_~xV!GvV^Y~#(F&i#9x&27i0*Th%D3Cma_v*uC}zlICkB6xOAJ<(1XE zz6>(#S(}slt7P@`((T}WnKwPzfBJmyXrFQoDE0aYoKLoJ1mpL^my^*)mUUed*;e10 z$hP_oCbA(&dhFJ1SE)Wl$aVeG%E1PtkREQKebzBEh84{<+FwMD_!_zSA z2kRsv@DC6K1&ZbWetz(%VabdcrIyPNKW)i+!IJfwmTd5oca(M8rPwOiaImr^iwXP* z53mRBwKf0vfU7;Q6s6gFs}CM7Ao6m78{*YgNx|DSob{sOPS@9Hx9hm|7x&BeH~6HQ2DwR=QS`hV!cqJa z=4!yrEy)M&zH!Z=U-&@qii}EQwhW>Yfpa{1{5tAyUVC->eY?8uuM!6_!*za6 zC|j0Sw?S|hKH;qHY}>QC!;389a&R5*ba8l_y`OH}9=Y96GHd%*N@n58I{AQub;uCk zdVBN~RHV3EWc5TH2yfkC!J?!A%{VQo-`n2YzW(A5cI;7he^nUeJzny@rwAt&ymU*B zLBG$sPfHv#@aw~!@Or)+-#vpso_P5YE(d#iK-}&#b{;&2INr%5S#`azWUuZ0lM`FT zC|GtU+8-YFsh!s^e`vQNBi*9w_ ziD$dN~}E1WIr3lvtl`s>)Nc)=_#ZIF95oZ;XK=s;2eMp z#2tP3=lT&EPUPwZ0$9%oV5R#~r?g!bAcIgGe@(Kv7Ua}7VA((|gk(kI54b*K8U&1K zuwC}38@n$ zgYA3Qve)uA@7>~s@HG99?4p54?!d?M6l>dIPx}OX8t~m~Ul@U=w0Zxc@Qls-R-A7e zS)NQjU2%Kfu3*oyrn$P=vU?LSMb?%Ry1j2s)NH6XwS6n~rYa$ZP%h`5q6y{m;%>Aj z0GGVe5X^hj)jJeFv)e^TW^77jdl){%F>#EG_c)%wEt^3k;Q=7v(L?mBlfd?(`-AQK zJDuU?U<>SQd))og_~UN$Z9iJOzj=Q>x;NPD^mqDO_|-m~n_a?RcO(0EcLR5qBeV{x zWc^2Q&aq62A7B<+q*-iGzc`;S(j_HWzc@H@*CYa%1Eepg)3tNk+T3y+Xmpn4ll*iQ z9sXk}_#}_x>G3=rpSn4{*o%6D{_uY7blh#X9u2ncMfbMv4eWIOe){j{Lm*H;hmv)h z=8-@`L*|W}e%Le)s9gFFKY9}ugWnIfdUl8QJ|x+aD}+eccstm%`z5@mjkLiN~cysz|WpAhG32W%U}P0 zH$zDc*wWj-4Yu@sz-6SHY&L_69~>-SeUKp>34Opw8XB#`iQ;JDrwncn8ipV8W|cB$ zHMcjwMDT@q!%P5FLA0nxHMdCP_%(+e2MCdpQOl07r3Ro@d7LdOh!o5R8?Y5duoA>* zf?2=V45Ok3)x8iBmcU4*xwc0Lpi-y+;hU^H2rQ~bQqMpG)F7!<#^1ux*xIWAp%YD# z>~wLa(@MAkT|u)cPx1;gnx!)Y=K(nc@LB;p3ku&}HpK#Jo{_N}nejCJn2gtH7$yx` z3NXwu$}7=2X9s&P_b@KZfaF;^1G?N*0_Q$U4;IVgMd?|hKz@pi`dIYKJp!4>^jIcY zXYliCCICF8r`WgDj;6(F7=+8;>?%G&N9@iXp$_PiS9)9-zyDcFx~HJHftzC;>r4$a(fXIhGwsJAz~GS@(g<0(HdB@05F9&YQ1vp3TUhsB_xj=GA#w1oinf3V*frD zxuN?UAu{=4Yy`@eLc-?6(GQRVHL%`hfMEpvGTV;`v^p_tfydWD`sc%`LKz8cfa=BO zJwS~EkPa5k>ei@bL5S)eupRhSInPyuK|EMTT%t^&-~mwHP?biH0=#Y!=igxF2oC|B$E9=`?&>>BK4kv++sr1a`TL#8E_By$kI0KLW>F0ZR{`zo>tRbr<@8Vuyu62=A|hu~xt$9>011v_LpOci)eaabjeR z@_8i;C_|#)mg71OH+^?Cz>sd=77VHT8LWeW?F_wtH{moVS3jNCdIsq0J<-oUmO0j1 zfa1+s47#TJSB9|7{CJg5MSjDux-Qh*GmLcT=4s?wu0&oiFeg_@2551rRt?u<#>ivi zd3<8UJdy1D%@dj<2tOGi{PjYz9!_)gKX!a8Z4;S1nWD1@fbT($cDy=}-vD9N^#!5J zf~K$HwOCD(u~gc?5(5p=$`GX$Dl~DFPhcpE0GpmyP-&!OnF+4Cc{%MEKIAGaqW5rQ z7LuvRyKO430wqHORD7@nV^u2LPCkigU3EA_P+SPet1oCz<`ynoh(|vT<`!Y$s)bD4 z4Q`x#NEMae4V_>Na{?)rZ;T3)O5homnTe;z>FE-yED7zED#+XJsMf943UYj6u`D{z z(=4%MiLK~6h-zxzk^+bDS_L+G;p=;m`HTvX0s==obted?d-L63CCyG%i6d#i0 zo;FnKh1CZVplyU}U8@2ezP1X371U4_k}?KVs#ZnAuqJTImOYpbdTbq!rt9XJ)Dt_e z?5y3*cDObeGQb6b$j{5DgFh#J;Lo3OY1+~-5hL<6%ei*;1OW40n~&evx#@DbK`&U} zqRRoLUbEwq_&Ax6oQ%!639;hHWwORemP_A)_oS@@M=D5egwvjK2}S6GaFB>XKvVw+ z+lxF1p1^t;(6!JCjgHE>0Za-AfC$tnPx+SUN#!p1K%secKrlXGjEdbf)&d$5j_puj zY>5)x3J<%R%$b10`0E)eniX7I%W#z3Z!WwowoW{?T6k6KFc<)BMVZ0rV8tdil!~el zR1;ASW$V5maI~IdtWU^*t#NkUlvxvL-nmDC<~T0TsecxV9wf@l@207iEo)&_g|>d4OKg1#zUKqUp= zfp5k36wcJ$I0-a@vy)m3pqq|3R;ke9sen}mtLwyj)C+y{Sa%VNgG4{WLoyA(5uXru zBSbfC70wf0>hsh>7m5+*6z%YSVAyu|rlrpYh|uj@gb3}}O3GRvOyxHyDKN*{AGD>o zVGR9-Yv5N37n%+}?zh{Oww9Np(v}~R`9f;Py03keK4VSH2|w8v45yNX6KSAmMC-nf zb@lFZUA-siiNH`rk1W>mJ}_3PfpQa=Fxp~SzpWrv*C1&J*f59-uqJ_q_XYz1X<65V zx+?)OP#6{<@2qQ`OsuV($h?V_S?dwvV}p>ExebQWBr6e@^@ztF+7Nf2%TfiEYl^Oy z6mDW+aRh)|wk&8R(+R_?A+e&|aFU$6|6#QnQ+RO9o4>Ht2uOs4GR(&`=bIQKGM>Ws z2;@dujMm~9LC=i8pJSPTDTqL}W+{pQWRC$N$%vw%GJe!6>J`E46 zBhcw9Z4y`Fp(+jJsnr50p3~4QX{>HnKyIF|8is|#ua1aQ#`q)_d9`|j;Mtqe9dq>$ zT>J8Hv;t2c@7M7|jvm+f1Q6E4w0Ihc z_O>@cUk_A{pg{fk87CE*bYx_Du%L=|e;yZVzx9>o7vA&Kg=!h1=gRv!ilBGt+7vcX zo4#V8!x4^TMMg&35686@dzOAfoCP>Isb5TO8%k+0YSZUkSsA~2vR7sEoivaeUD4FacXz^7{5z37L>fNjBv=x+IbM;Uq0AIKri(4Umv9Csp8nht!wPo#w zR6X4YOK?{!^>uH?WE*a$I1ok5CiA6?O+_*s1lmoG-Hi%}5Cz(7xP;gII2{*OKzRHH zbQt$N)JxaEdH2fX8o0*ug*CBG|hp zE-j^6c_3{=cLROH_KIkx3hz#yOL1f2y=|@Hv+q`}}Da9ZBuzOau^*Q>yfu00=4K-{eH6$Q&d`J|t7DuW7$<@j6Irp9Wyg$@{zzDyc`K~K>4iRr1YePzExi#3PZOH zT*DvY39~nu^xYzGn=1#gD~gpoMqDZ{1`7{`%?v(^rC zw*EOaBAKUXkuLcU%~l>s)KMs?VkM@fSgF}zi=hi9oCjo|2Sy2g2uMrJ6gspQ0HoBy zYKvr5;pR>lBeArx<()M8Ed@ns*UXhLloIk9KSj8$vl^{8o{TL%8APow^X3pitHCQ( zOL_F>z{0i1NBirt`zKeix2R#G#x$Vz4Wvb8;ZO(^&lNoMZ4Z= zz=mFOn4fs8q`+Z@SABev_)^4?xD0&?23eh2@Z8Oc=nVkI+qVT^tdm3)KhVU%KRrzs zo?k3XWjWSKfjy8RM`M_`2UWFH(dU6Ny3#{f=Cl%cLBC3#R>h9nE zdbes{!fVAGW3dV_v(U8={&O{S&s7#!O_?dHOb}KeHiuhGZ1GZ98IT4e}?kK_qp>+DM$NxX$ka! zH$>E)yznllJ!G|qb%zftRk}eK3{vMn0q0(ydyWaf_+k`{M6MBC{w zhgPsdF$pY3Y*7bp0TgRB(`4D--uoQv_tG4X$se+hsOfcS9hKK=C|550sRQvK6xxJ>Y zn|0#x_;Wh*e@-(~uqZ-b^c$a^QJYUaJ!=j8Zrj-`mq8JK_f?IVN~v-GJiEUFe-hzT zH9mQ8(C!vN$FF|(YXDV6@3psQxnrC;lE1t`=`TtH)orXHON9P=_d2GYBEcW_L`D=r z`K|Emwn8H^{+@(pW!xb`ny4reG-ZV7M-B~ZTil|v6^&;(#IF>EDF7Et41MK9GI02b zc4+l+7V(<^w`l!CYU(p4F!@T?GRcyy$bQp1A2el zpl6`1{_KJ8gYH_V-$D}n{S9(Y_Nh29vf7AarOFWd0k;`2_%m6Kd4L`jzpx^e%~mQR zRS=ph3BQNpmy2ENsWZeqza;1sxg&LP2tkZav_v$%XuYRher=S}`{Xes%n! z)vL*qwkiUgN=7hHadA_JymH(8!X0(Cr2iyfCN~_Tw94lrv>0VwPjU5X9jN91fmDWu z#lv^QxKT4lRo{kq8BvinZKwd^3;)Nc28T4SYLO?kH0Z|#{~0k{wp`)b&ljz`3L0x>} z%AB+vY-!oWxqx-@5NK`s8Y;dI4R9;5*il6cxtex{N89UXFUkz6lN_WNITaVoaH%|* z?Vs~%`})!H46!YrHsT}Bh?~Kggxag@l4$Zes^~XDTm0+ok)M zu@XT>M5NL~rgb)iTQhEjqLC{8w0D9@4@Cmkl)(7FjKU1#q^>lDpK*$ex{yHLLE~6}r zOU4~|QOrX*sf54nX(t zX7n9o|E82_m`Lt?BnL1d;w``9kC|Kbu6b4feSUibzU7DyA|g@IJYU*vg1crNLLO8n zpTawPn^By&@!5(|)y0U6cK9kZW`Y@Mgb7(8UpoHh zcKJD+R`csSi!1}V87Mq6v$;6UDFi_|Q&pT!_`HuMl8VN}OCOr62=A||hNy$I?mggV zEP`FzCenhCLn#}Tl_HcN`qR6`xAC_e#7>A(i$Bn$Y2>@0#d-SK7MQ}MHPUxV%n=u< zNIofXq2A9+_|uKQ#ise+!cihYMLfJX;iXCJ@b&+Ge{x(CZVXSUU|c)DFK&{*)?>W) z2Dbc2s`Ql;)3Hq8%v0tLX%G1IG)!|9Bxa}i;Du-!5PMXYdzjw$c7RD*aUz_4BKxG8& zUr$kx=)I_AfP<^7Rgy-s1!+c;{p&9{4(^P>ym5R&axzXwrQ>!c z24dyw(ktMU9%9fUQ7LF@g?y9$j8e$WP8NzoSxltEXE09sUiwLHANk>RzxGA4Vf=$d z(Z|?us^Iezm5nHIrP@&epX15Az_~#=!tpgjn?d#Muom-HD`v&fKM6823?_6-is_<5 zfCWu4XATF||Cp1?`%)RK&=Qg1*~cpo?aRoL*oe8%@`yueF{C{bMd@rp(9-ychDTx= zp5Z68!>u>8w`IE3bkyV64Q|CQ2WQa_Ok`C$)Z&N;QimFyGDBA3bB1(YkP|HQ;J zDw_NE)q&u4t5;`9@V6RDEC>1D0X7t$`N==FRx4N#_ zEyPkmZkfNB<7HdJs`dH`&2*9be^4bj&_1HyyKO>Uf8Ahb9;wi_Pc~#$wQ?;^xPg-u10Z z#y2z$Mq0}SSGQY1i^-9z@!n;Ac~ciGbp5*-%@wuI{wF#WW!2eR9$6vlw@{}zlNSr* z&^Q}9UvAg(-6|1ZevZ>McouX2hrV?-30<_@KLm= z>|;FPvTt3uvXG@d!j=@9z{s`HsKb9XISuVoKk=X#&1TuW7}juK7gNJbv;aR<*$216 z%a4`!lEVaO^Qm)(ec4YEtSq8}C$A&Z+GA1gXrPbcu@_f{06TkbGPDJ&rxkdx!&6Q6w`!Ipa8#G@D$k#ddtfJykhPZ83_q&z4w4Ia@^ zR-K1bx(3smJ`!-^B|7?hP6G)&V{yvXwQ`f0kja#0>>pj?6k+wHD>Qv`55Ali*fMt* zVG}qY5$W&T+X)wyhMs3CvEkT@#y&2k?Mg`A8{+;ASa?&sAF2F^SpL(rlT0|(`LcK~ zI)Z4LBBv{vrwX^F!L0OA7CXiqMMbP1DAV&nY1jssGhp6ZI_duIfa5N5vP8Hcq@XQ> zjpm{U3)%SV)NR25@9BOW7|~GF@i;iAW$up5t!ca8+AC8@j46c|5q=&WSk!wqJ&5zQ z^9qxcx6xvpQdI)^GG;$iLoQfDy|DP6(*sQrgOjSa)XR%8Hl^@<<%ikhxqX;`#q^O- z3PXt;13UR1mSjyUFJ8-Fv%DbOF%7&S4aNpJg@@$IWW#sTxX`TECbr-InO4Z!^%k=N z6icFN48Q(<$_;toM%0vWY0|g}D}}Y1sX9^BE5Lct`e{L(2$DzVEp^mTxH9MQls-?7 zr$n@lVa3?JUWisF2Y*5=cM=&^`C|Buk$meGC(6p+qGQkaHiM?n=Z}|6d}KSxWL9Vt z`;}W3U-y@RKXm&Pp()pLnQnuAU;I5^9-9)F0dZ<{Kl> zeCrYf^c?N}!mdl&65f157#z_5qS!57n^hh&zE{0}cR$2#o1ORGstW@7mU^rbztG2toK44|x6{e1IeKI`2Q=49-d9++c7}w~?Isl(q+3OgEXLO!tLJ=u;5}|t?Pn$y(?+5cp|C~G~a|WIeG<8)G z-wRe`?mUP#xnXmtRcLj!hnY;gP|DP)7MSaF%UW6z>7qQfk=z}AiY#ku}TkD-yzZkm8kUmPweIe-#ee9dcaSqA1h`7vp? zTd3U0E;U!ZhN%KE-aZAJaFn!Rf9kA0>K=H}c>=x{mqYYL{DZG<)Gm%MlpwmvTx_8f z%D?Ts@U{l)6qk^4Z3OBT5uij-1x2tkn?PZ=J0_#=WsRS|6rLcD>Ul)I>VN$sR^*gF zttH>+JlY)uieioRx${3McPAn*Yx9TTwiy#bk)5J-=WW7{BY*4FjHV&5sVeo^py~D??G0A0jny*^+r;{JwEHoM z%B4kar4Zy@v3$9EBdZoVAUHEn^8G2Uu04~CIibJ;c>YG zKP;;!)E2YS>tes(oo>orn4Jxnu+97{lT*-W0DqBPmiBvxT^9HqU!>$i#t>jxg{ZZL z#<=c2{1`_gNL;Goa&t@cdP$q-ade#9B~Uo?j(jF4)KpfC-K%TW+5w|--~KD#KyGcE z+Z4oUHJ#sMB1wg>87CivE5^jHnP_g0QV#tlrNaWf6_2DCGmq41q%-3_QUJhx7m`B{ zC?hLFO`YU_jYg~<<__SF##bjx=qxv`cOjC3rJPAMk8xlMIwb7bu$_`h*+>_TjUPqO z)S&SXWV)BX6TaB&20x*WYAby8!C9YkrCyHVn+}ZrPDlHnvhtLOM_~|zNuE1UfmtXs z_1|v{v5Z#pZ5%noN2#mP;h1uc-{yI8aGsPn#)d@NxHvgHI@ol0jG{H?eHg5n^yBGZ zLJez7MAqb~bK5e>K=aVF|DGXryBc3|Ux?V6?D)AIn#Te&L&W0fC#juhGwTmtq@i23 zvE#c{ ztKF9K@-MC?U|QMe8XDSj+Bc@PfG5UR3)lfJD%ay<5hE$K-Q|_q+&^7cnoD^#92{B+ zkch84*@YO8rfWUm*5>kHt`BN1vIa|Dc74FbEzxx?4kxWCpgotc?;xR-0KUj%``u-x zKOdoT;Uqm67t|On15@RoyTi4B2t>btR@yHAaZ8W4?iCSX-}~>y?hl}I+RlV6>ej6y zjz=*pPg+BN&#Qrk4^;54LnYkdUWpbTxE?^F!H42&0bW z<>$B|hwonUvhJ2ach6m04~K_6_x@rm6gxd#;&0dz14S>BV)G#I6;A=8SYDl8S7cCPvF#l(NeNAx$6@|jelk-rfjIM*XoMxBfy z2BYI;`;J%nl-L5-Aeo6f5K^(!dnpL^X%-T z?$zz38N${LK*?SpFHQiJ6N(s4z~f~>uGxAZnwi1P#WhKCG(`v>{I#5m*@wW=A7Sb~ zh-Yp!KIBHYCR^>HCg9Ka9=XEPL7zH@sJ-*dGE>fMuFl$1tC$Sfy}LITo>mE7z@R}Q z)RlP01>+(h>g~P6Pc!%%=V=Xlb%AD4tKwm5-m8UA3oiD8MGZmlk?Wa?<1Kqk$5>kGxHm->{=wqJd~x zafZ4ABV&FUTA+NejHd894s?A>`z8LtbLn|)VU`Z0+o?KH~VHxLP9mJAuvH=aQ`!g!BfXe>vnSd)3LcDalwJ#2)fB-T3gyE>}r2o<#EO= zq`0gbHGr@RFY^S{vzUNXGkI{%t3O{@}~o*xqA&6jl^wPF<%uS61E%m^fZ0z z*}}d$u!J-H__*rM6QKT9^KyH}Be=uO-qA^H%Y-`1qM06=$3U1N0+qw_TfxRYw_qxGfC88;o<$u_DOnk_1&F7@zdL^Akpu#|7Y%js_ z6K*%9X`}48f1^x@lkXh}mk&rTpboizRkc*IQXmz1w&i<O9s4r28=9kj2VTsP@P63p^nbZgTmXp4CO_oAC8gL)GW`8b z9QOE-mqwa*S6_Y1i4bzI|H~JlN_2|;=-F)Vn-{OX@JTD3*%v9Uh}ui+X-0gRYH*&2 z=^KGq!ZWUm+s{q5o-l$ll$pV*hxN}hu5OB#8$YXyn`&adzIU8;uK}NqfLm{-u8*MC z1J`KzZLgk}n&TZ<;wR{Hv_z$Mk3Oi^8yJ_9NIraID@13l?uVwJn%zrK9fWLDO&x^X zhH$0UDHwjZ+-=bA?0%sFM17tC4-c;;!)yV2Wv@K* z9X^G(;E9r&Z_IcFW-Vx@+2|YI%zE_Kv{$!KxuW!it1JayBm!THd`BCccCdosB>c7M z{`2nG6xryd2&zYcw|wtD{?|j@xgp^ojWtwYCiL)V(n!CI%4e3WyRBf_(Lpu^uCA#m z0pkAEu4)Pnd>w#ipq6ZZ)a@~Zoz&=K$|Ubww(Ff$mAu_gjCx}#RxEs=Wn`OdlZhGT zNvKd@cDY=p1CszlL#sNFWgQG*b&pz&&=86eBAjUv0y3gJQs6LQxHx>-g{yt@u;IS2 z$t#D+{;B~cX;)M5o6t^4djH0=IV`5xI9v~w4PUNF{{BEDO!ID(NZm zLJ>-a(+kMWZ-)h5vRU@VMFlFK^ae zBD*j!%dw_NoU$6@M2?BV`C;(>`q?AAVPv6zj0&#RoC1F0h|^x27`E;xili zR{hV{bJWqv{*R-HL=1h8hqt~>@AiwI^yWiC?zd~2aAUi7@}C{!vvz8#*5nmu%TRX! ze&;xNfB#v)l&r2CM}eFCFOA}y4KU}&7b4isrt@e@35?_E z$Lovj&L!c?8~bYz2~->tSP3u%Vwu*G-6@q-nRkh4{N|RktJI!#c5LlAk867if)Q~&{Rrl0 zO<&s1X!34Ho20bA7LBz9D(*h54S$})DE!vFs+U}j-kP#K)?+aZAKx8(&lYXFea7QRZ%z+5dHS)m9LdF zD4xm-ua3 znaVnk<7dRa2w?zWoc|`+r_rZ%a)bWN2e-(i?!~zaliyF3&u5Ax{t10+zN%)%&}IDc zI@v^|7zT4#OL_(u5S#2`i`{o@=Gjeg(A-CeSxD5AujO@I6-&s7%vA@Y1->pJNBx_ zbaF}OEG4NYci*KOw?yTZ>CjP^=JGC_Gzx+&h6q7gT%v8q52DOdz6tDZURyCr7JiN< zlv=s~h^6!W5^9cmZ%Y$VG5h9~HR1AU71Bcs_s>Q8urrmU?G>qD2bdvE7hAQ$<+|Od72ghk%Xo@^-44z!E253Eqc93wiOlf=q$(1i!A zcR|6uigAuFXEN7}f#~h{AxQ8>(nOYbtfR6kNR+_R?TE}x{1pp-%y_ly{}Q^Pe7aKS zQkYDu*wcu4i3G_GBIwTEC-CIZ@to`Unql|I5p0*|`E--h1FRJWMLvL|8zcLu(tut1 zuS#FxX1zT?Zo<61=+4m^62U1wxH~p?0lbh~WlmYhQXW;YbjL&%xa*40tXPnkO1S0| zbN|qB*nqv$O5YKrJKxt}#M^IHn@24Vz#?M$E$ z5;mNUuQO8OxeyI|B9ufWnqghD+57e35xq&v`f)>Op9owVagRzIL?du9epOqm;~jyVeD$&2i9O&iS>W~;O-KdqgpvPQBBq@) z7LT1Gc7=B+eE5Z778y5ZlYxXnwsa$DtEt^YS7LZ2WoJCL+OmhgNq#*xwjq1f z`WBfw5u4VYtqv^l84+Ns!j)2SN%ZEGQ8Sd%&X4UJ>vTKD{t_mi&?`>%V@lRQRo}Qr8 z5h|yuVPV5ga)IaF~sva%DiAOjRR6J!V9VAFA64aylR zv5i__=G184n)MiV6SSj!i6x%W;jN>6*wx_}w21w7_d5z2WW4uT;O=s2_H*|a+2@bT zc-_8eaAL{&%BXE)L4U%GAl7a}Rm*n&cJ@@gUU_^E%3%7LHbikfVRZD5c+cu!@h-;& z9*9IY?~8NAQeK5dAI8w|g8Fx2yK}d;xX7(;TkOXj98m}Zzv$^lZ|0S&#q#hzm&vyL zh-!vQi}V^@6IJxcV-{lkXT@(J!I}gGe-;5urG3?EPgNi9n@v1qpiaR|8M^1+l^(Sl>-fJm$8>;pt_^jDSWjUYUo<{RPXZ8Y8%dcHs@{gy`q{NI}5 zPKj{RzFW`G0tH7{9IGe)Gt2a@srOS!766@%(+48fbeNV}bA1~Bnr0$m5IpaA`CaWj zNlh~e5QhC)#@SN~aDK91Kc12K_$;~a0Z5$z3maT3M=9;?>eshaGi zUaTfu=MFqaI+)}#02)JNy9^B$YT|3+J0AF71w47FyHUH4JHrB7=V-qUY$e)>Lz^y( zIUcnu4!RvOny238!$y|G0hRWuE+dT^nv0ctPs{p1GjccHZ7Cu4NPtjrxZ} zV$V#aO-l#AbbT55bZxwVDz7zRfrzBNLO@FNrUHfA`b|OrHEp=O>LGR3qP_sVN5sG} zW=(lry61|Nw;KA_l)D=F*K;2t&>pGjmmmwZt*V-UoIO?75SZg1_mXigEt&- z+38*3q!YWZ+4@)ZywoUN zEuSoQQ@z>sqMrt-R7~fO9Xlz_jsPOHCBtqX_+y7Tzr_&$D(PER)v5W~r|VkS^W@#- z;y%TEdY9n%Nu$iu2tXw8JR*=&{!g}gRVL5GW0RS4NrS@BabAN=;F#0W-J5xA%wl=l z*ZVNSZ4J0>g@dr(57=qz5UuZc>p=MH{b+K@iQvBZ?W&4WJAAUJQxE&E`1>(2R>Q{l zbfB|PIN!b5O+lnNY%6f=;4n*^w7dx`-n&2Julk*K?>N1*C{T6!)c*bVy+FBvDa^pQ z0(`s(E<)A`fAdqH?+=tV!E8VprC41aaz3?M^xQmDUDGfi8VhTRqcxY!^Sz56gr%}CQ@iYkgUnnScke?Cc<{!$PufghmG zIvTR33d4_cupKGOV0W<(4Eo#-B_25{)fefX8(mss&FH=&n-@+&0{+#i$?+}?C|@>d z5f*q$*tJTlm|5_JuU;7)8?)0UM^kEmM}DaISpDl;am-;8*h?}zYXCx?(1DWhG7Z?f zlU}u2;`R|)GUGJ78eiRh!SwxD;s@Ko8Cj{>B>n}5R{0Wl>q#$?E0y`hpz`nATj)24 z#?#jUZCg2C_jpoa544?wBtNrPF^le5)I<$&Zf>uS>h=GXi-I2B0vtI~3z-rbs1~@% zh{gsv;sRd6zvw_+1}+f32*BRC8{Nv#mz)BDUCqXSNhbReWvc!$ z&zl!ML>M$u$pf$&VMj}!=%sZZ#{iW zwbA#m=eHRMuxCt75%v-Yftd=w!hCj~qMHySewrG?-+jN8SRuz6gZ=}N<3zc^MC{F9 zZl7Qr!NGh1Q(E$hb7y|yUoj>HTbLMJ=dEt_MJg9@@|JwAaZ)T$Wrf2D^5P+4;m7+E zLz6uE5gS5%zfGuV=#{(-LnXD5-PY3l#JkekL1|d6FF(HgHR4L5F5oD0k1EA*TWlS( z_&LvpaD-fqSkkdq9cD#QmR3!KG^9!$nt$N(x#(7h$WpSWgvk6`lB;p`0}fkG#0y=V z&BTA%99u+Cqzjv>_*2<->Ht8d{58KYMEZ~1-}P~<-{^G{xQ0ize({`D(N)rAhSCiu zGvMUD-yng+Z*TXO9!kKBFGHBri}{qZ$3gst(>4``G)BB?6mqCFgGuVOxn~1Q%tMhK zp{-NtJRL36Z!>$V1DShY_Ld$|=NR8Ykg$;q1#hI3OUpdV=R$l3t4UoTU;q6f5#`{Z ztt++g6IFRbpaJ&;YU*>kGQdf_xmtc`9e;y4I>TiR!`}S@o?+96N6(<1sTq|K*v4w> z&jOJUeyG#s0q)D(T*KS(Ou!5XOe>fCP|)K~Dz*-609w9nJYgiAfs#yQaZ5VDtouh} zJ*2%^McEUZsNl1fWN0f4g4P{;3jQ?AD>fWZwSKYHbs=;q=6`?mmXm+W4~5_$p^k&w z_71~jBbK_KDTx$f<6|1yyOX=6en&+a@W-C!fZ)|<8ON5cGzK^7rcg{R$VvX8$Ktfi zPw28j#0IIFYE*ygl^&e|PeouJ1e?pqL$xN(OACeQY+cXoy}ozqA)Tie4ZXp)Xn zMR1MMgU7+)axRe0O+CY&Qd&rZ$+d)Rjc;5WoHqaM-w19^!H;&k@VBb)bQ8Pw@NCU=V*YFstt@fXLaGs?3^=zA+^SDkSBl{k@0CI2s)6E?ge+K@;JI@|D z-6rSv&wmnBtJYXz@;tr;E=`gvJ`smv5i8mG*!rh|Mq; zoT4iLE?jza!9fpb_egFJ_%5*YSg`+JjphB4(1*O=9dAAo*f*d+zs~kLgp>kxn0sy8 zeH(Po_1bd|s)ca;+Hc)9K2!Pt+EHbKHNb>mx1XPQ9!ytmMF4beAM#k{Hs|d9bz%S0 z5@|2R{q7+b@o!o3z<}G+MSO-5kif#t>qSEr;Bv#AfJ&Td;S~BOr!-9>@X1L?CFu$GZ~I-cH7_bT_!<{=lUxDbQQ)F#FDD`>l=rw_H+j4??M$L1PtARqlnmV|=&g+(WB+krZg zOFi2QR#>aFbvAax?r6^+{!cQ9JKU(FY8GGh(mFvw*5wlSglce|Bw!46mkHJXeX$1J zpu~{Qo?h%{@JbN%e+^I43&N~+itT9FyHNk9Qw519Qlf$^z(tR@sv8B1ik$IozoX$+ z31{%VVq9rRTh={WuYjMgE&tBaU_iq8?oWVT=x3_nX&6K$xV!V#dhjI> zH5i!tF6S3xYs%JO!!{!-E4wCnDx8SLCT7xHh%Qu^iN=gubJnXSQ5EiFh{{tTjA z!nuhG1f56J39w6kP98ZK@gA=p29;bE!z)F_v7T7bJd%!!n1&Rhx;Q-MI2MXb&+y@0 z1djm2NA6umDv*7Hi%qw)O!34?_u1vY4NO&COwp0|2-VR8~cLrD&>7y(MzXa2VN5FyyxPmB4gK=)AJ^Z63p6B0s zjI3PfZx0wU`iDvag~Ok-eB-wT&RkYFdpsBmE>u)K0T+2HB~6DfK0#TgXC2h>CP%Vy zq#vy8W)EedNBQqm!52{T3n=pi^!o)g`{ue0U5@_52|F=@lsI2?O#+;rY|}9fJ~>J~dlcz0TC4 z!l*Yoc74UI2hN7~?tU?N_X|t}NzF)~yPL^*jQIxFEKKqZ+@f>b)!cw63v>r&J|zVb zveaL|)+CUDnMpB5z3|QA=S~UB~`Q|K9>TWcpL| zGXIF8=^r?jX(VkV-B4{Mj7re&I)a6eK$7%N!$T|8Cuj0j8y2*=*Vs#nTg!-=Lt?E0 zDkX0!I^}9I@X}~*QqI$k9#*$0@th>qw;_;OR0!Lw(tN1_0B%jZ<>*9vhe;5xQ8~*4 zp3Urd&WjD7HY;R_2E{sTun?Ano+*N?SiRk|EjtES0XKSes#AXt?auFhdlfdvVEl~WzKU_bxoERB|BL*92_O*K1`*Rp z|M!bd2FuFUVsTsJ+Ms@Kgi?LJ@|Z zbHt(;e+b59@$t%XC^CDB0oT#d748_Blw>}(0LqKfkL_Yg?`Me0;QzGMh(o4+oGvC;=eMgNyPGA;O>3#xZO_+ZRn>NY8uW|S?$ z%D9jHDOMe)^q7PU85y6DW%zpNKkB5^J}PAlO6LFe`}UEw9wxUPw&^Y4Wxe>)DW{nK${&~9unhRTS|H9P$@aEXaF}}n;X)@jKJ3h>4k1}DZcHoy$ zwOUKLFu6T3oqJ%Zt}uP%F%@^)2q);X>uF(PI|-QmeoYH7TYIonf!nZxn%V#*dU|?V z3KrdA1)G67S+}tKaGgw`tG~$nMxXSa9v@6?=B&L1ru3;J9t3=R*nb2a6;8N0%+btM<3=V{S~GGu|%p&yqV(g{N!T` z(hZJYnAHIx=;Y(@Ib)Y~rKs2~`xXF~&2RkCj``1F0fUr;r)B4;c>NmXuy`FBqFx?A z&?qivd~k>zA$h0Oi+ARVZE~)~En4#oMhvYyhh6jBx*^y8hRs}FT)w;kgFi>#0{5S1 zY>S_urjf&cm`&Ht2?$CPE@!#vUY{KTz+Dqj)D8UEfDEd@UAxs~0Q#GO(Zm za0rlI#g1RH*YLZJ=Sfi)hM$|8%;gL~Qdq8#%5tt)KdQFi~ z6}VgWo;_}y{dS*z!I2ZeE#pj6NB(|hg?8)AHsMiSs9YqJfREN9lZ!X;d!F4|%DmYZ zH44%9(3FJM(sFvXJ7CHPv%p;s_lz~D@?MwG-`+0$Z1L8nLK9g~%ip&0KV43>2-_fD z-!WY z_Cst1ItlQo;S_pe>W3!k%Vq;UYd$kKh?GAM6W4S^k`O=PPN&=+CdTr?fxD!92gog? zT6U;-GW}W?>q%f|YDqB9kQYRVg!GxjB+|B3i6W14h*sl_bk z?dsL?+4={lXY{h???fu0KcmEMwfuM*THBWr)Q1w@ND9q=kaAna&r*<#Lr`e`(7*D9 zwT>`?K;p@+h+7)nk&qz4>7Nz*o}Z=>$(BFmz$ho2O-w8paoX4jQkKXCiJBv|u1xT=PLt7Rj=woN#wG++?u0XwoSqV<0L{83|lLdJO^ z8AevCvfIqk@2rPvLgE(Sa&>?n)@2uuNS-fn%j~g0qsqIe-?Ziy0%g6_86IDokQYhSCp ztT}mi4Hd{5U>YFRF11vbSvJV(5Vf;Wc!3v{dHM^JkP#3r*)O*Rt#WS^snqK%+aE_uZN`Sqm4-mSbXjVyaR}=_C!=+y&5Vn3SS;uAm7a)FNu{ zt8lYt#xm-2YL3S9QAXyjcvzju4u|Ez`WM4s>knwvY5ADTHe&JBK3Uab?GGn$uFgl< z(Y&;ZGafAOnDmmI80QV!i<7~&sXYufs$M+uil-6lc`gYvJT9u{xV%-QM)uohPmrZo zIMCCn>~alpM1y7aZnExEeb#g7fSJ1~hOb3M(DesPU4M-HkF}Ggb}$Xu*h90%?ZSu* zJ&O(_Ri0MO%@LM4tWo@Ib%$!k!*F>. +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +# +# Public Domain 2004 by Anthony Howe. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# 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+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; 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 + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + 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 + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='hibachi' +PACKAGE_TARNAME='hibachi' +PACKAGE_VERSION='1.0' +PACKAGE_STRING='hibachi 1.0' +PACKAGE_BUGREPORT='Anthony Howe ' + +ac_unique_file="$PACKAGE_NAME.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS package_copyright package_major package_minor package_author perl_exe ac_pt_perl_exe ruby_exe ac_pt_ruby_exe php_exe ac_pt_php_exe enable_port CC_E CC_E_NAME CC_O CC_O_NAME CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT LN_S CPP EGREP LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# 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. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +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 + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -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 | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$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 ;; + + -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 ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + 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 ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=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 ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +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 + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# 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 its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + 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 + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# 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 hibachi 1.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 \`..'] + +_ACEOF + + cat <<_ACEOF +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] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of hibachi 1.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-port=number specifiy the server port number, default is 8008 + +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 + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to >. +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +hibachi configure 1.0 +generated by GNU Autoconf 2.57 + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. + +Public Domain 2004 by Anthony Howe. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by hibachi $as_me 1.0, which was +generated by GNU Autoconf 2.57. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +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` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&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_sep= +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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$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 + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core core.* *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + 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. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +package_copyright='Public Domain 2004 by Anthony Howe.' + + +package_major=`echo $PACKAGE_VERSION | sed -e 's/^\([0-9]*\)\.\([0-9]*\)/\1/'` + +package_minor=`echo $PACKAGE_VERSION | sed -e 's/^\([0-9]*\)\.\([0-9]*\)/\2/'` + +package_author=$PACKAGE_BUGREPORT + + +cat >>confdefs.h <<_ACEOF +#define _NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define _MAJOR $package_major +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define _MINOR $package_minor +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define _AUTHOR "$package_author" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define _VERSION "$PACKAGE_NAME/$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define _COPYRIGHT "$package_copyright" +_ACEOF + + +OS=`uname -s` + +####################################################################### +# Setup paths +####################################################################### + +# The total perspective vortex "You are here..." + + + +# If localstatedir still has its original value, then use our prefered default. +if test "$localstatedir" = '${prefix}/var'; then + if test "$OS" = 'Linux'; then + localstatedir='/var/lib' + elif test "$OS" = 'FreeBSD'; then + localstatedir='/var/state' + elif test "$OS" = 'SunOS'; then + localstatedir='/var/opt' + else + localstatedir='/var' + fi +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}perl", so it can be a program name with args. +set dummy ${ac_tool_prefix}perl; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_perl_exe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $perl_exe in + [\\/]* | ?:[\\/]*) + ac_cv_path_perl_exe="$perl_exe" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_perl_exe="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +perl_exe=$ac_cv_path_perl_exe + +if test -n "$perl_exe"; then + echo "$as_me:$LINENO: result: $perl_exe" >&5 +echo "${ECHO_T}$perl_exe" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_path_perl_exe"; then + ac_pt_perl_exe=$perl_exe + # Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_ac_pt_perl_exe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ac_pt_perl_exe in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_perl_exe="$ac_pt_perl_exe" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_perl_exe="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_ac_pt_perl_exe" && ac_cv_path_ac_pt_perl_exe="/usr/local/bin/perl" + ;; +esac +fi +ac_pt_perl_exe=$ac_cv_path_ac_pt_perl_exe + +if test -n "$ac_pt_perl_exe"; then + echo "$as_me:$LINENO: result: $ac_pt_perl_exe" >&5 +echo "${ECHO_T}$ac_pt_perl_exe" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + perl_exe=$ac_pt_perl_exe +else + perl_exe="$ac_cv_path_perl_exe" +fi + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ruby", so it can be a program name with args. +set dummy ${ac_tool_prefix}ruby; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_ruby_exe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ruby_exe in + [\\/]* | ?:[\\/]*) + ac_cv_path_ruby_exe="$ruby_exe" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ruby_exe="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +ruby_exe=$ac_cv_path_ruby_exe + +if test -n "$ruby_exe"; then + echo "$as_me:$LINENO: result: $ruby_exe" >&5 +echo "${ECHO_T}$ruby_exe" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_path_ruby_exe"; then + ac_pt_ruby_exe=$ruby_exe + # Extract the first word of "ruby", so it can be a program name with args. +set dummy ruby; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_ac_pt_ruby_exe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ac_pt_ruby_exe in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_ruby_exe="$ac_pt_ruby_exe" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_ruby_exe="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_ac_pt_ruby_exe" && ac_cv_path_ac_pt_ruby_exe="/usr/local/bin/ruby" + ;; +esac +fi +ac_pt_ruby_exe=$ac_cv_path_ac_pt_ruby_exe + +if test -n "$ac_pt_ruby_exe"; then + echo "$as_me:$LINENO: result: $ac_pt_ruby_exe" >&5 +echo "${ECHO_T}$ac_pt_ruby_exe" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + ruby_exe=$ac_pt_ruby_exe +else + ruby_exe="$ac_cv_path_ruby_exe" +fi + + + +if test -z "$php_exe"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}php.cgi", so it can be a program name with args. +set dummy ${ac_tool_prefix}php.cgi; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_php_exe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $php_exe in + [\\/]* | ?:[\\/]*) + ac_cv_path_php_exe="$php_exe" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_php_exe="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +php_exe=$ac_cv_path_php_exe + +if test -n "$php_exe"; then + echo "$as_me:$LINENO: result: $php_exe" >&5 +echo "${ECHO_T}$php_exe" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_path_php_exe"; then + ac_pt_php_exe=$php_exe + # Extract the first word of "php.cgi", so it can be a program name with args. +set dummy php.cgi; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_ac_pt_php_exe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ac_pt_php_exe in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_php_exe="$ac_pt_php_exe" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_php_exe="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +ac_pt_php_exe=$ac_cv_path_ac_pt_php_exe + +if test -n "$ac_pt_php_exe"; then + echo "$as_me:$LINENO: result: $ac_pt_php_exe" >&5 +echo "${ECHO_T}$ac_pt_php_exe" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + php_exe=$ac_pt_php_exe +else + php_exe="$ac_cv_path_php_exe" +fi + +fi +if test -z "$php_exe"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}php-cgi", so it can be a program name with args. +set dummy ${ac_tool_prefix}php-cgi; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_php_exe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $php_exe in + [\\/]* | ?:[\\/]*) + ac_cv_path_php_exe="$php_exe" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_php_exe="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +php_exe=$ac_cv_path_php_exe + +if test -n "$php_exe"; then + echo "$as_me:$LINENO: result: $php_exe" >&5 +echo "${ECHO_T}$php_exe" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_path_php_exe"; then + ac_pt_php_exe=$php_exe + # Extract the first word of "php-cgi", so it can be a program name with args. +set dummy php-cgi; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_ac_pt_php_exe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ac_pt_php_exe in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_php_exe="$ac_pt_php_exe" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_php_exe="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +ac_pt_php_exe=$ac_cv_path_ac_pt_php_exe + +if test -n "$ac_pt_php_exe"; then + echo "$as_me:$LINENO: result: $ac_pt_php_exe" >&5 +echo "${ECHO_T}$ac_pt_php_exe" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + php_exe=$ac_pt_php_exe +else + php_exe="$ac_cv_path_php_exe" +fi + +fi +if test -z "$php_exe"; then + # Note this might be either the CLI or CGI version. + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}php", so it can be a program name with args. +set dummy ${ac_tool_prefix}php; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_php_exe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $php_exe in + [\\/]* | ?:[\\/]*) + ac_cv_path_php_exe="$php_exe" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_php_exe="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +php_exe=$ac_cv_path_php_exe + +if test -n "$php_exe"; then + echo "$as_me:$LINENO: result: $php_exe" >&5 +echo "${ECHO_T}$php_exe" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_path_php_exe"; then + ac_pt_php_exe=$php_exe + # Extract the first word of "php", so it can be a program name with args. +set dummy php; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_ac_pt_php_exe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ac_pt_php_exe in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_php_exe="$ac_pt_php_exe" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_php_exe="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_ac_pt_php_exe" && ac_cv_path_ac_pt_php_exe="/usr/local/bin/php" + ;; +esac +fi +ac_pt_php_exe=$ac_cv_path_ac_pt_php_exe + +if test -n "$ac_pt_php_exe"; then + echo "$as_me:$LINENO: result: $ac_pt_php_exe" >&5 +echo "${ECHO_T}$ac_pt_php_exe" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + php_exe=$ac_pt_php_exe +else + php_exe="$ac_cv_path_php_exe" +fi + + + if test -e $php_exe; then + echo "$as_me:$LINENO: checking if $php_exe is the CGI binary" >&5 +echo $ECHO_N "checking if $php_exe is the CGI binary... $ECHO_C" >&6 + if $php_exe -v | grep -q '(cli)'; then + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + else + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + fi + fi +fi + + +####################################################################### +# Auxliary files to be modified later +####################################################################### + + ac_config_files="$ac_config_files makefile" + + ac_config_files="$ac_config_files hibachi-start.sh" + + +if test ! -d localhost; then + if test -e supplement.tar; then + tar -xf supplement.tar + elif test -e supplement.tar.gz; then + tar -zxf supplement.tar.gz + fi +fi +if test -d localhost; then + ac_config_files="$ac_config_files localhost/test/perl/yahoo-ticker.pl" + + ac_config_files="$ac_config_files localhost/test/php/index_php" + + ac_config_files="$ac_config_files localhost/test/php/sendform.php" + + ac_config_files="$ac_config_files localhost/test/php/info.php" + + ac_config_files="$ac_config_files localhost/test/ruby/index_rb" + +fi + +####################################################################### +# Configuration options +####################################################################### + +# Check whether --enable-port or --disable-port was given. +if test "${enable_port+set}" = set; then + enableval="$enable_port" + +else + enable_port=8008 + +fi; + + +####################################################################### +# Setup compiler predefines and exceptions. +####################################################################### + +# Tradional cc options. These are different for Borland C. +CC_E='-o' + +CC_E_NAME='-o $@' + +CC_O='-o' + +CC_O_NAME='-o $*$O' + + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +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 + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out 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. +echo "$as_me:$LINENO: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; 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 | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext 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 + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + + + +####################################################################### +# Check for libraries. +####################################################################### + + +echo "$as_me:$LINENO: checking for library containing socket" >&5 +echo $ECHO_N "checking for library containing socket... $ECHO_C" >&6 +if test "${ac_cv_search_socket+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_socket=no +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char socket (); +int +main () +{ +socket (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_socket="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_socket" = no; then + for ac_lib in socket nsl; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char socket (); +int +main () +{ +socket (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_socket="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_socket" >&5 +echo "${ECHO_T}$ac_cv_search_socket" >&6 +if test "$ac_cv_search_socket" != no; then + test "$ac_cv_search_socket" = "none required" || LIBS="$ac_cv_search_socket $LIBS" + cat >>confdefs.h <<_ACEOF +#define HAVE_SOCKET 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for library containing inet_ntoa" >&5 +echo $ECHO_N "checking for library containing inet_ntoa... $ECHO_C" >&6 +if test "${ac_cv_search_inet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_inet_ntoa=no +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char inet_ntoa (); +int +main () +{ +inet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_inet_ntoa="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_inet_ntoa" = no; then + for ac_lib in socket nsl resolv; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char inet_ntoa (); +int +main () +{ +inet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_inet_ntoa="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_inet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_search_inet_ntoa" >&6 +if test "$ac_cv_search_inet_ntoa" != no; then + test "$ac_cv_search_inet_ntoa" = "none required" || LIBS="$ac_cv_search_inet_ntoa $LIBS" + cat >>confdefs.h <<_ACEOF +#define HAVE_INET_NTOA 1 +_ACEOF + +fi + + +####################################################################### +# Check for headers. +####################################################################### + +# Need these ANSI C headers. +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 +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&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+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f 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 +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + +for ac_header in stdio.h stdlib.h string.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +else + { { echo "$as_me:$LINENO: error: Missing required ANSI C header. +See \`config.log' for more details." >&5 +echo "$as_me: error: Missing required ANSI C header. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +fi + +done + + +# Need these I/O headers. + + + + + + + + +for ac_header in arpa/inet.h dirent.h fcntl.h netinet/in.h sys/socket.h sys/stat.h sys/wait.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +else + { { echo "$as_me:$LINENO: error: Missing required I/O header. +See \`config.log' for more details." >&5 +echo "$as_me: error: Missing required I/O header. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +fi + +done + + + + + + echo "$as_me:$LINENO: checking for SHUT_WR" >&5 +echo $ECHO_N "checking for SHUT_WR... $ECHO_C" >&6 +if test "${ac_cv_define_SHUT_WR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + $ac_includes_default +#include + +int +main () +{ + +#ifdef SHUT_WR + exit(0); +#else + exit(1); +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_define_SHUT_WR=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_define_SHUT_WR=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi +echo "$as_me:$LINENO: result: $ac_cv_define_SHUT_WR" >&5 +echo "${ECHO_T}$ac_cv_define_SHUT_WR" >&6 + +if test $ac_cv_define_SHUT_WR = 'no'; then + CFLAGS="$CFLAGS -DSHUT_WR=1" +fi + +####################################################################### +# Check for functions. +####################################################################### + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +for ac_func in accept bind close closedir dup2 fork getenv inet_ntoa listen open opendir putenv read readdir recv send shutdown snprintf socket sscanf stat strcspn strncat strncmp strstr strtol system tolower waitpid +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* 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_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + { { echo "$as_me:$LINENO: error: Missing required function. +See \`config.log' for more details." >&5 +echo "$as_me: error: Missing required function. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +fi +done + + +####################################################################### +# Generate output. +####################################################################### + +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, don't put newlines in cache variables' values. +# 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. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *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 \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + 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}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ 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[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\_ACEOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +_ACEOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed + + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $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} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# 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+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; 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 + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + 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 + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by hibachi $as_me 1.0, which was +generated by GNU Autoconf 2.57. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +hibachi config.status 1.0 +configured by $0, generated by GNU Autoconf 2.57, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +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=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + 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 +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + + + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "makefile" ) CONFIG_FILES="$CONFIG_FILES makefile" ;; + "hibachi-start.sh" ) CONFIG_FILES="$CONFIG_FILES hibachi-start.sh" ;; + "localhost/test/perl/yahoo-ticker.pl" ) CONFIG_FILES="$CONFIG_FILES localhost/test/perl/yahoo-ticker.pl" ;; + "localhost/test/php/index_php" ) CONFIG_FILES="$CONFIG_FILES localhost/test/php/index_php" ;; + "localhost/test/php/sendform.php" ) CONFIG_FILES="$CONFIG_FILES localhost/test/php/sendform.php" ;; + "localhost/test/php/info.php" ) CONFIG_FILES="$CONFIG_FILES localhost/test/php/info.php" ;; + "localhost/test/ruby/index_rb" ) CONFIG_FILES="$CONFIG_FILES localhost/test/ruby/index_rb" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@package_copyright@,$package_copyright,;t t +s,@package_major@,$package_major,;t t +s,@package_minor@,$package_minor,;t t +s,@package_author@,$package_author,;t t +s,@perl_exe@,$perl_exe,;t t +s,@ac_pt_perl_exe@,$ac_pt_perl_exe,;t t +s,@ruby_exe@,$ruby_exe,;t t +s,@ac_pt_ruby_exe@,$ac_pt_ruby_exe,;t t +s,@php_exe@,$php_exe,;t t +s,@ac_pt_php_exe@,$ac_pt_php_exe,;t t +s,@enable_port@,$enable_port,;t t +s,@CC_E@,$CC_E,;t t +s,@CC_E_NAME@,$CC_E_NAME,;t t +s,@CC_O@,$CC_O,;t t +s,@CC_O_NAME@,$CC_O_NAME,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@LN_S@,$LN_S,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # 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. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + + # Run the commands associated with the file. + case $ac_file in + hibachi-start.sh ) find . -name '*.sh' -exec chmod 755 \{\} \; ;; + localhost/test/perl/yahoo-ticker.pl ) chmod 755 localhost/test/perl/yahoo-ticker.pl ;; + localhost/test/php/index_php ) mv localhost/test/php/index_php localhost/test/php/index.php; chmod 755 localhost/test/php/index.php ;; + localhost/test/php/sendform.php ) chmod 755 localhost/test/php/sendform.php ;; + localhost/test/php/info.php ) chmod 755 localhost/test/php/info.php ;; + localhost/test/ruby/index_rb ) mv localhost/test/ruby/index_rb localhost/test/ruby/index.rb; chmod 755 localhost/test/ruby/index.rb ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# 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 || { (exit 1); exit 1; } +fi + + +echo +echo $PACKAGE_NAME/$package_major.$package_minor +#echo $package_copyright +echo +echo "$as_me:$LINENO: result: prefix..................: $prefix" >&5 +echo "${ECHO_T} prefix..................: $prefix" >&6 +echo "$as_me:$LINENO: result: datadir.................: $datadir" >&5 +echo "${ECHO_T} datadir.................: $datadir" >&6 +echo "$as_me:$LINENO: result: CFLAGS..................: $CFLAGS" >&5 +echo "${ECHO_T} CFLAGS..................: $CFLAGS" >&6 +echo "$as_me:$LINENO: result: LDFLAGS.................: $LDFLAGS" >&5 +echo "${ECHO_T} LDFLAGS.................: $LDFLAGS" >&6 +echo "$as_me:$LINENO: result: LIBS....................: $LIBS" >&5 +echo "${ECHO_T} LIBS....................: $LIBS" >&6 +echo diff --git a/2004/hibachi/src/configure.in b/2004/hibachi/src/configure.in new file mode 100644 index 000000000..256a8b1e2 --- /dev/null +++ b/2004/hibachi/src/configure.in @@ -0,0 +1,210 @@ +####################################################################### +# Thus it begins... +####################################################################### + +AC_INIT(hibachi, 1.0, [Anthony Howe ]) + +dnl The autoconf version I learned to deal with. +AC_PREREQ(2.57) + +dnl Yes I wrote this mess. +AC_COPYRIGHT([Public Domain 2004 by Anthony Howe.]) + +AC_SUBST(package_copyright, ['Public Domain 2004 by Anthony Howe.']) + +AC_SUBST(package_major, [[`echo $PACKAGE_VERSION | sed -e 's/^\([0-9]*\)\.\([0-9]*\)/\1/'`]]) +AC_SUBST(package_minor, [[`echo $PACKAGE_VERSION | sed -e 's/^\([0-9]*\)\.\([0-9]*\)/\2/'`]]) +AC_SUBST(package_author, $PACKAGE_BUGREPORT) + +AC_DEFINE_UNQUOTED(_NAME, ["$PACKAGE_NAME"]) +AC_DEFINE_UNQUOTED(_MAJOR, $package_major) +AC_DEFINE_UNQUOTED(_MINOR, $package_minor) +AC_DEFINE_UNQUOTED(_AUTHOR, ["$package_author"]) +AC_DEFINE_UNQUOTED(_VERSION, ["$PACKAGE_NAME/$PACKAGE_VERSION"]) +AC_DEFINE_UNQUOTED(_COPYRIGHT, ["$package_copyright"]) + +OS=`uname -s` + +####################################################################### +# Setup paths +####################################################################### + +# The total perspective vortex "You are here..." +AC_CONFIG_SRCDIR($PACKAGE_NAME.c) + +dnl AC_SUBST(srcdir) +dnl AC_SUBST(top_srcdir) +dnl AC_SUBST(abs_srcdir) +dnl AC_SUBST(abs_top_srcdir) +dnl +dnl AC_SUBST(builddir) +dnl AC_SUBST(top_builddir) +dnl AC_SUBST(abs_builddir) +dnl AC_SUBST(abs_top_builddir) + +# If localstatedir still has its original value, then use our prefered default. +if test "$localstatedir" = '${prefix}/var'; then + if test "$OS" = 'Linux'; then + localstatedir='/var/lib' + elif test "$OS" = 'FreeBSD'; then + localstatedir='/var/state' + elif test "$OS" = 'SunOS'; then + localstatedir='/var/opt' + else + localstatedir='/var' + fi +fi + +AC_PATH_TOOL(perl_exe, perl, [/usr/local/bin/perl]) +AC_SUBST(perl_exe) + +AC_PATH_TOOL(ruby_exe, ruby, [/usr/local/bin/ruby]) +AC_SUBST(ruby_exe) + +if test -z "$php_exe"; then + AC_PATH_TOOL(php_exe, php.cgi) +fi +if test -z "$php_exe"; then + AC_PATH_TOOL(php_exe, php-cgi) +fi +if test -z "$php_exe"; then + # Note this might be either the CLI or CGI version. + AC_PATH_TOOL(php_exe, php, [/usr/local/bin/php]) + + if test -e $php_exe; then + AC_MSG_CHECKING([if $php_exe is the CGI binary]) + if $php_exe -v | grep -q '(cli)'; then + AC_MSG_RESULT(no) +dnl unset ac_cv_path_ac_pt_php_exe +dnl unset ac_cv_path_php_exe +dnl unset php_exe + else + AC_MSG_RESULT(yes) + fi + fi +fi +AC_SUBST(php_exe) + +####################################################################### +# Auxliary files to be modified later +####################################################################### + +AC_CONFIG_FILES(makefile) +AC_CONFIG_FILES(hibachi-start.sh, [find . -name '*.sh' -exec chmod 755 \{\} \;]) + +if test ! -d localhost; then + if test -e supplement.tar; then + tar -xf supplement.tar + elif test -e supplement.tar.gz; then + tar -zxf supplement.tar.gz + fi +fi +if test -d localhost; then + AC_CONFIG_FILES(localhost/test/perl/yahoo-ticker.pl, [chmod 755 localhost/test/perl/yahoo-ticker.pl]) + AC_CONFIG_FILES(localhost/test/php/index_php, [mv localhost/test/php/index_php localhost/test/php/index.php; chmod 755 localhost/test/php/index.php]) + AC_CONFIG_FILES(localhost/test/php/sendform.php, [chmod 755 localhost/test/php/sendform.php]) + AC_CONFIG_FILES(localhost/test/php/info.php, [chmod 755 localhost/test/php/info.php]) + AC_CONFIG_FILES(localhost/test/ruby/index_rb, [mv localhost/test/ruby/index_rb localhost/test/ruby/index.rb; chmod 755 localhost/test/ruby/index.rb]) +fi + +####################################################################### +# Configuration options +####################################################################### + +AC_ARG_ENABLE(port, + [AC_HELP_STRING([--enable-port=number],[specifiy the server port number, default is 8008])], + [], [enable_port=8008] +) +AC_SUBST(enable_port) + +####################################################################### +# Setup compiler predefines and exceptions. +####################################################################### + +# Tradional cc options. These are different for Borland C. +AC_SUBST(CC_E, '-o') +AC_SUBST(CC_E_NAME, '-o $@') +AC_SUBST(CC_O, '-o') +AC_SUBST(CC_O_NAME, '-o $*$O') + +AC_PROG_CC +AC_PROG_LN_S +dnl AC_PROG_MAKE_SET + +dnl AC_CHECK_TOOL(RANLIB, ranlib, true) + +####################################################################### +# Check for libraries. +####################################################################### + +AC_SEARCH_LIBS(socket, [socket nsl],[AC_DEFINE_UNQUOTED([AS_TR_CPP([HAVE_SOCKET])])]) +AC_SEARCH_LIBS(inet_ntoa, [socket nsl resolv],[AC_DEFINE_UNQUOTED([AS_TR_CPP([HAVE_INET_NTOA])])]) + +####################################################################### +# Check for headers. +####################################################################### + +# Need these ANSI C headers. +AC_CHECK_HEADERS( + [stdio.h stdlib.h string.h], + [], [AC_MSG_FAILURE([Missing required ANSI C header.], 1)] +) + +# Need these I/O headers. +AC_CHECK_HEADERS( + [arpa/inet.h dirent.h fcntl.h netinet/in.h sys/socket.h sys/stat.h sys/wait.h unistd.h], + [], [AC_MSG_FAILURE([Missing required I/O header.], 1)] +) + +dnl ################################################################### +dnl This should be in aclocal.m4 instead, but I couldn't be +dnl bothered with an aclocal.m4 file for just one macro. +dnl ################################################################### +dnl +dnl APR_CHECK_DEFINE(symbol, header_file) +dnl +AC_DEFUN(APR_CHECK_DEFINE,[ + AC_CACHE_CHECK([for $1],ac_cv_define_$1,[ + AC_RUN_IFELSE([AC_LANG_PROGRAM([ + AC_INCLUDES_DEFAULT() +#include <$2> + ], [[ +#ifdef $1 + exit(0); +#else + exit(1); +#endif + ]])], [ac_cv_define_$1=yes],[ac_cv_define_$1=no]) + ]) +]) + +APR_CHECK_DEFINE(SHUT_WR, sys/socket.h) +if test $ac_cv_define_SHUT_WR = 'no'; then + CFLAGS="$CFLAGS -DSHUT_WR=1" +fi + +####################################################################### +# Check for functions. +####################################################################### + +AC_CHECK_FUNCS( + [ accept bind close closedir dup2 fork getenv inet_ntoa listen open opendir putenv read readdir recv send shutdown snprintf socket sscanf stat strcspn strncat strncmp strstr strtol system tolower waitpid], + [], [AC_MSG_FAILURE([Missing required function.], 1)] +) + +####################################################################### +# Generate output. +####################################################################### + +AC_OUTPUT() + +echo +echo $PACKAGE_NAME/$package_major.$package_minor +#echo $package_copyright +echo +AC_MSG_RESULT([ prefix..................: $prefix]) +AC_MSG_RESULT([ datadir.................: $datadir]) +AC_MSG_RESULT([ CFLAGS..................: $CFLAGS]) +AC_MSG_RESULT([ LDFLAGS.................: $LDFLAGS]) +AC_MSG_RESULT([ LIBS....................: $LIBS]) +echo diff --git a/2004/hibachi/src/hibachi-start.sh b/2004/hibachi/src/hibachi-start.sh new file mode 100755 index 000000000..988851c34 --- /dev/null +++ b/2004/hibachi/src/hibachi-start.sh @@ -0,0 +1,182 @@ +#!/usr/bin/env bash +# +# hibachi-start.sh +# +# Limited implementation of RFC 2616 and CGI/1.1. +# +# Public Domain 2002, 2004 by Anthony Howe. All rights released. +# +# usage: +# +# hibachi-start.sh & +# + +####################################################################### +# Do NOT modify the following section if you are security conscious. +####################################################################### + +# +# Reset internal field separator to space, tab, newline. +# Not 100% effective if the environment we inherited has +# already played silly buggers with IFS like "IFS='S'". +# +# Use #!/usr/bin/env -i /bin/sh on shells that support +# option passing and #! lines longer than 32 bytes to +# guarantee a clean environment. +# +IFS=' +' + +SED=$(which sed) + +# +# Get a clean environment to work with. This works for all +# Bourne like shells under Linux and Cygwin environments. +# +unset $(env | $SED -e 's/^\([^=]*\).*/\1/') + +# +# Path of safe executables. +# +export PATH='/usr/local/bin:/usr/bin:/bin' + +# +# Disable any environment file. +# +unset ENV + +# +# Disable cd shortcuts. +# +unset CDPATH + +####################################################################### +# Minimum required for serving static files. +####################################################################### + +prefix=/usr/local +exec_prefix=${prefix} + +datadir=${prefix}/share +sysconfdir=${prefix}/etc +sharedstatedir=${prefix}/com +localstatedir=/var +sbindir=${exec_prefix}/sbin +bindir=${exec_prefix}/bin + +# +# The port to be used by the Hibachi web server. +# +# This is NOT normally a server parameter, but information about the +# client connection, but since Hibachi only listens on one port, we +# assume to know what the incoming port is and listen on that. Also +# for the purpose of demonstration, we can't bind to a privileged +# port. +# +export SERVER_PORT=8008 + +# +# The root of the Hibachi document tree. Virtual hosts +# are implemented as subdirectories from this location. +# +# For example, to setup virtual hosts by name or IP: +# +# /usr/local/share/hibachi/ +# localhost/ +# index.html +# ... +# 127.0.0.1 -> localhost/ +# +# www.ioccc.org/ +# index.html +# ... +# 64.81.251.233 -> www.ioccc.org/ +# +#export DOCUMENT_ROOT=${datadir}/hibachi +export DOCUMENT_ROOT=$(pwd) + +# +# The executable. +# +#hibachi=${sbindir}/hibachi +hibachi=`dirname $0`/hibachi + +####################################################################### +# Required for most CGI scripts. +####################################################################### + +# +# Your host name or IP address. Ideally this should be the server-name +# used in self-referencing URLs. +# +export SERVER_NAME=127.0.0.1 + +# +# My web server name and version +# +export SERVER_SOFTWARE='hibachi/1.0' + +# +# Predefined environment space for the request method. +# +export REQUEST_METHOD='1234' + +# +# Predefined environment space for remote address of a request. +# +export REMOTE_ADDR='123.123.123.123' + +# +# Predefined environment space for upload Content-Length. +# +export CONTENT_LENGTH='123456789.123456789.' + +# +# Predefined environment space for upload Content-Type. +# Look at the Apache mime.types file, there are some long ones. +# +export CONTENT_TYPE='123456789.123456789.123456789.123456789.123456789.123456789.' + +# +# Predefined environment space for cookies. A single cookie can actually +# be a maximum of 4096 bytes in size, but here we only handle shorter ones. +# +export HTTP_COOKIE='123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.' + +# +# Predefined environment space for the absolute path of the script +# to be processed. Required by PHP/CGI in order to find the script. +# This variable is not part of the CGI/1.1 Specification. +# +export SCRIPT_FILENAME='123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.' + +# +# Hibachi does support the entire CGI/1.1 specification. +# +export GATEWAY_INTERFACE='CGI/0.0' + +# +# We cannot support the following common CGI environment variables +# as specified in the draft 3 of a proposed Internet Standard +# due to space limitations, but since the draft has expired and +# on hold, there is a lot of lee way: +# +# AUTH_TYPE (MUST) HTTP_ACCEPT (MAY) +# HTTP_REFERER (MAY) PATH_INFO (MUST) +# PATH_TRANSLATED (SHOULD) REMOTE_HOST (SHOULD) +# REMOTE_IDENT (MAY) REMOTE_USER (SHOULD) +# SCRIPT_NAME (MUST) SERVER_PROTOCOL (MUST) +# + +####################################################################### +# Nothing to configure below this point. +####################################################################### + +# +# Start the web server. +# +exec ${hibachi} + +####################################################################### +# Beyond here be dragons... +####################################################################### diff --git a/2004/hibachi/src/hibachi-start.sh.in b/2004/hibachi/src/hibachi-start.sh.in new file mode 100644 index 000000000..0ead27778 --- /dev/null +++ b/2004/hibachi/src/hibachi-start.sh.in @@ -0,0 +1,188 @@ +#!/usr/bin/env bash +# +# hibachi-start.sh +# +# Limited implementation of RFC 2616 and CGI/1.1. +# +# Public Domain 2002, 2004 by Anthony Howe. All rights released. +# +# usage: +# +# hibachi-start.sh & +# + +####################################################################### +# Do NOT modify the following section if you are security conscious. +####################################################################### + +# +# Reset internal field separator to space, tab, newline. +# Not 100% effective if the environment we inherited has +# already played silly buggers with IFS like "IFS='S'". +# +# Use #!/usr/bin/env -i /bin/sh on shells that support +# option passing and #! lines longer than 32 bytes to +# guarantee a clean environment. +# +IFS=' +' + +SED=$(which sed) + +# +# Get a clean environment to work with. This works for all +# Bourne like shells under most Unix like environments. +# +# Cleaning out the environment on Cygwin prevents hibachi from +# starting and would appear there is some Windows/Cygwin specific +# information maintained and required here. +# +if ! expr `uname` : 'CYGWIN.*' >/dev/null; then + unset $(env | $SED -e '/!::/d' -e 's/^\([^=]*\).*/\1/') +fi + +# +# Path of safe executables. +# +export PATH='/usr/local/bin:/usr/bin:/bin' + +# +# Disable any environment file. +# +unset ENV + +# +# Disable cd shortcuts. +# +unset CDPATH + +####################################################################### +# Minimum required for serving static files. +####################################################################### + +prefix=@prefix@ +exec_prefix=@exec_prefix@ + +datadir=@datadir@ +sysconfdir=@sysconfdir@ +sharedstatedir=@sharedstatedir@ +localstatedir=@localstatedir@ +sbindir=@sbindir@ +bindir=@bindir@ + +# +# The port to be used by the Hibachi web server. +# +# This is NOT normally a server parameter, but information about the +# client connection, but since Hibachi only listens on one port, we +# assume to know what the incoming port is and listen on that. Also +# for the purpose of demonstration, we can't bind to a privileged +# port. +# +export SERVER_PORT=@enable_port@ + +# +# The root of the Hibachi document tree. Virtual hosts +# are implemented as subdirectories from this location. +# +# For example, to setup virtual hosts by name or IP: +# +# /usr/local/share/hibachi/ +# localhost/ +# index.html +# ... +# 127.0.0.1 -> localhost/ +# +# www.ioccc.org/ +# index.html +# ... +# 64.81.251.233 -> www.ioccc.org/ +# +#export DOCUMENT_ROOT=${datadir}/hibachi +export DOCUMENT_ROOT=$(pwd) + +# +# The executable. +# +#hibachi=${sbindir}/@PACKAGE_NAME@ +hibachi=`dirname $0`/@PACKAGE_NAME@ + +####################################################################### +# Required for most CGI scripts. +####################################################################### + +# +# Your host name or IP address. Ideally this should be the server-name +# used in self-referencing URLs. +# +export SERVER_NAME=127.0.0.1 + +# +# My web server name and version +# +export SERVER_SOFTWARE='@PACKAGE_NAME@/@PACKAGE_VERSION@' + +# +# Predefined environment space for the request method. +# +export REQUEST_METHOD='1234' + +# +# Predefined environment space for remote address of a request. +# +export REMOTE_ADDR='123.123.123.123' + +# +# Predefined environment space for upload Content-Length. +# +export CONTENT_LENGTH='123456789.123456789.' + +# +# Predefined environment space for upload Content-Type. +# Look at the Apache mime.types file, there are some long ones. +# +export CONTENT_TYPE='123456789.123456789.123456789.123456789.123456789.123456789.' + +# +# Predefined environment space for cookies. A single cookie can actually +# be a maximum of 4096 bytes in size, but here we only handle shorter ones. +# +export HTTP_COOKIE='123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.' + +# +# Predefined environment space for the absolute path of the script +# to be processed. Required by PHP/CGI in order to find the script. +# This variable is not part of the CGI/1.1 Specification. +# +export SCRIPT_FILENAME='123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.' + +# +# Hibachi does support the entire CGI/1.1 specification. +# +export GATEWAY_INTERFACE='CGI/0.0' + +# +# We cannot support the following common CGI environment variables +# as specified in the draft 3 of a proposed Internet Standard +# due to space limitations, but since the draft has expired and +# on hold, there is a lot of lee way: +# +# AUTH_TYPE (MUST) HTTP_ACCEPT (MAY) +# HTTP_REFERER (MAY) PATH_INFO (MUST) +# PATH_TRANSLATED (SHOULD) REMOTE_HOST (SHOULD) +# REMOTE_IDENT (MAY) REMOTE_USER (SHOULD) +# SCRIPT_NAME (MUST) SERVER_PROTOCOL (MUST) +# + +####################################################################### +# Nothing to configure below this point. +####################################################################### + +# +# Start the web server. +# +exec ${hibachi} + +####################################################################### +# Beyond here be dragons... +####################################################################### diff --git a/2004/hibachi/src/hibachi.c b/2004/hibachi/src/hibachi.c new file mode 100644 index 000000000..e0fac7a0f --- /dev/null +++ b/2004/hibachi/src/hibachi.c @@ -0,0 +1,155 @@ +#define B break; +#define Q if( +#define R return +#define V getenv( +#define T "DOCUMENT_ROOT" +#define S snprintf( +#define C strcspn(u, +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define Z 8192 +char r[Z], q[Z], l[Z], w[Z], *o, *m = "404 Not Found", *e = "500 Error"; +void +X(int t, char *u, long j) +{ + j = S + q, Z, + "HTTP/1.0 %s\r\nContent-Length: %ld\r\n\r\n%s", + u, j ? j : C ""), j ? "" : u + ); + send(t, q, j, 0); +} +void +A(char *i, char *j) +{ + char *u; + Q (u = strstr(o, i + 5))) + sscanf(u + C ":") + 1, j, V i)); +} +int +main(int c, char **p) +{ + int f, t, i; + struct stat g; + struct sockaddr_in a; + char *v, *u; + Q (v = V "SERVER_PORT")) == 0) { + R 4; + } + i = (int) strtol(v, 0, 10); + a.sin_addr.s_addr = htonl(INADDR_ANY); + a.sin_port = htons((unsigned short) i); + a.sin_family = AF_INET; + Q (f = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) { + R 5; + } + Q bind(f, (void *) &a, sizeof a)) { + R 6; + } + Q listen(f, 10)) { + R 7; + } + for ( ; ; close(t)) { + for ( ; waitpid(0, 0, WNOHANG) > 0; ) + ; + i = sizeof a; + Q (t = accept(f, (void *) &a, &i)) < 0) + continue; + Q fork()) + continue; + for (f = i = 0; f < 2 && i < Z; i++) { + Q recv(t, r + i, 1, 0) <= 0) + R 1; + Q r[i] == '\n') + f++; + Q r[i] == ':') + f = 0; + Q f) + r[i] = r[i] == '-' ? '_' : toupper(r[i]); + } + Q Z <= i) + B + r[i] = 0; + Q *r != 'G' && *r != 'H' && r[2] != 'S') { + X(t, "501 Unsupported", 0); + B + } + *l = 0; + Q (v = strstr(r, "HOST:"))) + sscanf(v+5, " %255[^:\r\n]", l); + S w, Z, T "=%s/%s", V T), l); + putenv(w); + u = r + 4 + (*r != 'G'); + Q *u != '/' || strstr(u, "../")) { + X(t, m, 0); + B + } + u[i = C " ")] = 0; + o = u + i + 1; + i = C "?"); + Q u[i]) { + S q, Z, "QUERY_STRING=%s", u+i+1); + putenv(q); + u[i] = 0; + } + S l, Z, "SCRIPT_FILENAME=%s%s", w+14, u); + v = l+16; + Q stat(v, &g) < 0) { + X(t, m, 0); + B + } + Q S_ISDIR(g.st_mode)) { + struct dirent *d; + DIR *D = opendir(v); + for ( ; (d = readdir(D)); ) { + Q !strncmp(d->d_name, "index.", 6)) { + strncat(v, d->d_name, Z-16); + stat(v, &g); + B + } + } + closedir(D); + Q d == 0) { + X(t, m, 0); + B + } + } + Q *r != 'H') { + Q g.st_mode & 0111) { + putenv(l); + sscanf(r, "%4s", V "REQUEST_METHOD")); + sscanf(inet_ntoa(a.sin_addr), "%15s", V "REMOTE_ADDR")); + A("HTTP_COOKIE", "%*[ \t]%80[^\r\n]"); + A("CONTENT_LENGTH", "%20s"); + A("CONTENT_TYPE", "%60s"); + dup2(t, 0); + dup2(t, 1); + Q system(v)) + X(t, e, 0); + B + } + Q (f = open(v, O_RDONLY)) < 0) { + X(t, e, 0); + B + } + } + X(t, "200 OK", g.st_size); + Q *r != 'H') { + for ( ; 0 < (i = read(f, r, Z)); ) + send(t, r, i, 0); + } + B + } + shutdown(t, SHUT_WR); + R 0; +} diff --git a/2004/hibachi/src/localhost/CHANGES-OBFUSCATED.TXT b/2004/hibachi/src/localhost/CHANGES-OBFUSCATED.TXT new file mode 100644 index 000000000..7f381ce16 --- /dev/null +++ b/2004/hibachi/src/localhost/CHANGES-OBFUSCATED.TXT @@ -0,0 +1,16 @@ +CHANGES +------- + +The major number changes for such things as code rewrites, changes in +syntax, and/or dramatic changes in functionality. The minor number +changes for corrections, enhancements, etc. made to the code. There +is no set schedule for releases. + +--TODO-- + + +--1.0-- + + Initial release. Submission to the IOCCC 2004. + + diff --git a/2004/hibachi/src/localhost/CHANGES-SPOILER.TXT b/2004/hibachi/src/localhost/CHANGES-SPOILER.TXT new file mode 100644 index 000000000..5b0a30e96 --- /dev/null +++ b/2004/hibachi/src/localhost/CHANGES-SPOILER.TXT @@ -0,0 +1,63 @@ +CHANGES +------- + +The major number changes for such things as code rewrites, changes in +syntax, and/or dramatic changes in functionality. The minor number +changes for corrections, enhancements, etc. made to the code. There +is no set schedule for releases. + +--TODO-- + + + Figure out why Links browser doesn't work. + +--1.0-- + + Initial release. Submission to the IOCCC 2004. + +--0.8-- + + + Add support for SCRIPT_FILENAME for PHP/CGI. + + + Restructured directories. + + + Added autoconf configure.in script and friends. + +--0.7-- + + ! Replaced print() macro by expansion in status(). Only used in one + place. This also fixes a macro expansion bug in status(). + + ! status() now correctly passes the size of the status response + headers to send(). + + ! Fixed transform.sed which incorrectly transform Host: header string + into h:. + + + Experimented with configure.in and makefile.in. Not really necessary + and the macros tests required in the source exceed the size limit. + + +--0.6-- + + ! Renamed error() to status(). Set content-length to that of the + response message or static file. + + + Added more details comments with citiations of relavent paragraphs + from RFC 2616 and the CGI/1.1 specification. + + ! Enlarged header parsing buffer from 4KB to 8KB. + + ! Changed parsing of request CRLF to allow for just LF. + + + Fold case of request headers to lower case, because of problem with + Lynx not specifying headers as they appear in RFC 2616. + +--0.5-- + + + First attempt static file web server, with virtual host support. + + + Added support for CGI/1.1 specification, in particular "nph" CGIs + with a selected set of necessary environment variables. + + + diff --git a/2004/hibachi/src/localhost/Img/cygwin-icon.gif b/2004/hibachi/src/localhost/Img/cygwin-icon.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2b81cdbb368f7240e092cae8d0a5adde576aa92 GIT binary patch literal 132 zcmZ?wbhEHblwpuzSjYed{~;8E;!hSvE(RtB9S|QR&%hKqrGMq@2mFf88>6AKF=wT(&2jl66by)Wz2ac*}J1_o;YnA1C^C39JVhBw zN+d@`I7mZ1QdTHKRyRduFGFQEM0GbrOi2w#LO4}UKUY;RT~s-3UleIVIcilnd`vES zM>Bj?GG%5TeRCIWV=;AUGkkPANJBfi^yC*TWFg1ubLYO>8pg2LgJVJp^E`?1niB~Iu zTribcER$9XA zA&Evrf=W}0Sx1OjSe-;nnMY8WR!o^+RElC~jB;&)dwr30X_9+?s76YwR!XH-T)0F^ zq+VpPTwJ}0JJCBo<~u#bJVC;L8N@xYrw8S@3HPc3{;>eb z#}wMe4A;dP+}aD-)EU~#Biz>|?864*!4T%v3Fz1p{l@_P*Z}P34e93;{^tPk=@9>+az4 z_TvBl|NsC0A^8LY00930EC2ui0A2tm000R80RIUbNU)&6g9sBUT*$DY!-o(f7KA76 z-9dN~GiuyOFr5+)?G7pt$FZczh2pdr2ze0Q1(GLY#%!l$0t0v8ZYW8|@*lf7HQdP@ z%5hI41_mHd2vI5!Uz#stXPS_fXCXu3E>?fl8=wNe($J^SSrOrfdBzu0-ih&o}G2}hV;WHj|vqD z5e5hlodYA~)9{Go=wrm)zIdJ~NGLEMfB>PVPye|9pg;#B`pRLUB0>TK0832gp4<-5 zl?W36bmPY)k(3Ap#ww3EkDmAM;KPgmA5Xr#dGD(vZK0%r!Ml`=v_ue_}zLJ1^`a3Mhl9vINf zicqT9;y?P$7-NhB!bszR2y&@lju7fN;WW++1BZpppwYl1jc`$%1P+J=N|bb-IAxVE z7DJ4l#Ti&C@Wh1GoG$r{06qYXBs5D>wp9du9t0Z-OR z=bisKq5%ahw4ebCe_H7V1{JjbFaid(P?JjwE{LE)FKS?bfeS9E;Ds&{PGc-0le{v` zGM+HA$pa7=0D=e}AhC_8qq_Lt7zz02$QS=%*=jK%fMM$b6;QJQC)7mK!Y{sT@Wz9| z{E)yd*f3khA;JhVgcgsGkW30&0MZB}fjDpqwo#J0?E?N0L(DO^97D^*#L!alfVj|t z3o^xgU@kHrxNyq>x+vI7HNS8$?}O2RP=PeqNMr1U!3+UH1206-$Rdwy$ioZ_L+LPo zVl1Gi7sQCMK?@0hK}!o`Y#_!lad`2?25l5m0S0n>Q9&=cC{O_#zCc3_Fdw`up&1J( zW9fyLo)XCj3@{)8AX0e$a03WDSX;D|+VVHX0jerZ3<7RA;s^(A9OH%pw|rm=GQNgf zfg53LpaC>#e4qdV3+U3a+tsKM_l0w7!^<5ubTGgOmQZqq2RhVnLo$P>c=UcrAJeq( z2oQtJEel-m1qK(ykwB^04=b`AQ6<|d-IYIG&;}; z)?Mm?mU@N_=s<@XFrWbqU;qu2K_?ij!4sLl1Q~o+xczV|MvME{F+T8tTj0VGx!3>( zaDj_l7~=yhC`K*+egKAFjEx$#z`!qBRt9Jo;}j}T!`xb@q7@jR0Uq!a1$=`FI)x$- zkNANM=x4tcn(6~?@J}(^ATs08A_O7OfFqF6h7X8<1-ZyY2=3^DHaIZ^DhPuad{GTi zfZzvVaDf@{WkD*UXbg}L0SFsVfhvH&1gNmawNSJTW~71$MF@s92uGzCwJJ-(15hy% zWTP(`0~%qPQ21D9z6+kH8FQ%J7IfeN2XtTr4KM%>W}recoIwT#&;cf{VYC)rDL`5( z(1Ez*r7txoOgw6&BQ3R!I#5CjcmMTwTqkfR5Au!A0ePy;9QfgteckPUc{QV)1TtwVvwJE9N;C+q-zVbuXk#?gly zbN~cE$ej9q$MSRLju=AoM^7PN1x1tpbm7L}3R`@PQA? z(GGnr*y9|Ug>7mpyIR(M!yE8u$2T}jTqt~FJG})AJj@}EaeRXv<-lxmr>l{G0028b CllUJ1 literal 0 HcmV?d00001 diff --git a/2004/hibachi/src/localhost/Img/hibachi-256-oc-nc-300x150.gif b/2004/hibachi/src/localhost/Img/hibachi-256-oc-nc-300x150.gif new file mode 100644 index 0000000000000000000000000000000000000000..963da77d42bcab673399e2607506ca158bc3e4dd GIT binary patch literal 227717 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

K0xmcKcFLl^U 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�!Q$S7Cq#r`vH9HKfvtdQx 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

RFC 2616 - Hypertext Transfer Protocol (HTTP/1.1)

+Highlights: +
    +
  • Supported: + +
  • +
    +
  • Loose Interpretation +
      +
    • 10.5.4 503 Service Unavailable
      +     Interpret "refuse the connection" as drop it without giving a reason. +
    • +
    +
  • +
    +
  • SHOULD weakened to OPTIONAL: +
      +
    • 4.3 Message Body, paragraph 4
    • +
    • 7.2.1 Type, paragraph 3
    • +
    +
  • +
+
+
+
+
+
+
+
+Network Working Group                                      R. Fielding
+Request for Comments: 2616                                   UC Irvine
+Obsoletes: 2068                                              J. Gettys
+Category: Standards Track                                   Compaq/W3C
+                                                              J. Mogul
+                                                                Compaq
+                                                            H. Frystyk
+                                                               W3C/MIT
+                                                           L. Masinter
+                                                                 Xerox
+                                                              P. Leach
+                                                             Microsoft
+                                                        T. Berners-Lee
+                                                               W3C/MIT
+                                                             June 1999
+
+
+                Hypertext Transfer Protocol -- HTTP/1.1
+
+Status of this Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (1999).  All Rights Reserved.
+
+Abstract
+
+   The Hypertext Transfer Protocol (HTTP) is an application-level
+   protocol for distributed, collaborative, hypermedia information
+   systems. It is a generic, stateless, protocol which can be used for
+   many tasks beyond its use for hypertext, such as name servers and
+   distributed object management systems, through extension of its
+   request methods, error codes and headers [47]. A feature of HTTP is
+   the typing and negotiation of data representation, allowing systems
+   to be built independently of the data being transferred.
+
+   HTTP has been in use by the World-Wide Web global information
+   initiative since 1990. This specification defines the protocol
+   referred to as "HTTP/1.1", and is an update to RFC 2068 [33].
+
+
+
+
+
+
+Fielding, et al.            Standards Track                     [Page 1]
+
RFC 2616 HTTP/1.1 June 1999 + + +Table of Contents + + 1 Introduction ...................................................7 + 1.1 Purpose......................................................7 + 1.2 Requirements .................................................8 + 1.3 Terminology ..................................................8 + 1.4 Overall Operation ...........................................12 + 2 Notational Conventions and Generic Grammar ....................14 + 2.1 Augmented BNF ...............................................14 + 2.2 Basic Rules .................................................15 + 3 Protocol Parameters ...........................................17 + 3.1 HTTP Version ................................................17 + 3.2 Uniform Resource Identifiers ................................18 + 3.2.1 General Syntax ...........................................19 + 3.2.2 http URL .................................................19 + 3.2.3 URI Comparison ...........................................20 + 3.3 Date/Time Formats ...........................................20 + 3.3.1 Full Date ................................................20 + 3.3.2 Delta Seconds ............................................21 + 3.4 Character Sets ..............................................21 + 3.4.1 Missing Charset ..........................................22 + 3.5 Content Codings .............................................23 + 3.6 Transfer Codings ............................................24 + 3.6.1 Chunked Transfer Coding ..................................25 + 3.7 Media Types .................................................26 + 3.7.1 Canonicalization and Text Defaults .......................27 + 3.7.2 Multipart Types ..........................................27 + 3.8 Product Tokens ..............................................28 + 3.9 Quality Values ..............................................29 + 3.10 Language Tags ...............................................29 + 3.11 Entity Tags .................................................30 + 3.12 Range Units .................................................30 + 4 HTTP Message ..................................................31 + 4.1 Message Types ...............................................31 + 4.2 Message Headers .............................................31 + 4.3 Message Body ................................................32 + 4.4 Message Length ..............................................33 + 4.5 General Header Fields .......................................34 + 5 Request .......................................................35 + 5.1 Request-Line ................................................35 + 5.1.1 Method ...................................................36 + 5.1.2 Request-URI ..............................................36 + 5.2 The Resource Identified by a Request ........................38 + 5.3 Request Header Fields .......................................38 + 6 Response ......................................................39 + 6.1 Status-Line .................................................39 + 6.1.1 Status Code and Reason Phrase ............................39 + 6.2 Response Header Fields ......................................41 + + + +Fielding, et al. Standards Track [Page 2] +
RFC 2616 HTTP/1.1 June 1999 + + + 7 Entity ........................................................42 + 7.1 Entity Header Fields ........................................42 + 7.2 Entity Body .................................................43 + 7.2.1 Type .....................................................43 + 7.2.2 Entity Length ............................................43 + 8 Connections ...................................................44 + 8.1 Persistent Connections ......................................44 + 8.1.1 Purpose ..................................................44 + 8.1.2 Overall Operation ........................................45 + 8.1.3 Proxy Servers ............................................46 + 8.1.4 Practical Considerations .................................46 + 8.2 Message Transmission Requirements ...........................47 + 8.2.1 Persistent Connections and Flow Control ..................47 + 8.2.2 Monitoring Connections for Error Status Messages .........48 + 8.2.3 Use of the 100 (Continue) Status .........................48 + 8.2.4 Client Behavior if Server Prematurely Closes Connection ..50 + 9 Method Definitions ............................................51 + 9.1 Safe and Idempotent Methods .................................51 + 9.1.1 Safe Methods .............................................51 + 9.1.2 Idempotent Methods .......................................51 + 9.2 OPTIONS .....................................................52 + 9.3 GET .........................................................53 + 9.4 HEAD ........................................................54 + 9.5 POST ........................................................54 + 9.6 PUT .........................................................55 + 9.7 DELETE ......................................................56 + 9.8 TRACE .......................................................56 + 9.9 CONNECT .....................................................57 + 10 Status Code Definitions ......................................57 + 10.1 Informational 1xx ...........................................57 + 10.1.1 100 Continue .............................................58 + 10.1.2 101 Switching Protocols ..................................58 + 10.2 Successful 2xx ..............................................58 + 10.2.1 200 OK ...................................................58 + 10.2.2 201 Created ..............................................59 + 10.2.3 202 Accepted .............................................59 + 10.2.4 203 Non-Authoritative Information ........................59 + 10.2.5 204 No Content ...........................................60 + 10.2.6 205 Reset Content ........................................60 + 10.2.7 206 Partial Content ......................................60 + 10.3 Redirection 3xx .............................................61 + 10.3.1 300 Multiple Choices .....................................61 + 10.3.2 301 Moved Permanently ....................................62 + 10.3.3 302 Found ................................................62 + 10.3.4 303 See Other ............................................63 + 10.3.5 304 Not Modified .........................................63 + 10.3.6 305 Use Proxy ............................................64 + 10.3.7 306 (Unused) .............................................64 + + + +Fielding, et al. Standards Track [Page 3] +
RFC 2616 HTTP/1.1 June 1999 + + + 10.3.8 307 Temporary Redirect ...................................65 + 10.4 Client Error 4xx ............................................65 + 10.4.1 400 Bad Request .........................................65 + 10.4.2 401 Unauthorized ........................................66 + 10.4.3 402 Payment Required ....................................66 + 10.4.4 403 Forbidden ...........................................66 + 10.4.5 404 Not Found ...........................................66 + 10.4.6 405 Method Not Allowed ..................................66 + 10.4.7 406 Not Acceptable ......................................67 + 10.4.8 407 Proxy Authentication Required .......................67 + 10.4.9 408 Request Timeout .....................................67 + 10.4.10 409 Conflict ............................................67 + 10.4.11 410 Gone ................................................68 + 10.4.12 411 Length Required .....................................68 + 10.4.13 412 Precondition Failed .................................68 + 10.4.14 413 Request Entity Too Large ............................69 + 10.4.15 414 Request-URI Too Long ................................69 + 10.4.16 415 Unsupported Media Type ..............................69 + 10.4.17 416 Requested Range Not Satisfiable .....................69 + 10.4.18 417 Expectation Failed ..................................70 + 10.5 Server Error 5xx ............................................70 + 10.5.1 500 Internal Server Error ................................70 + 10.5.2 501 Not Implemented ......................................70 + 10.5.3 502 Bad Gateway ..........................................70 + 10.5.4 503 Service Unavailable ..................................70 + 10.5.5 504 Gateway Timeout ......................................71 + 10.5.6 505 HTTP Version Not Supported ...........................71 + 11 Access Authentication ........................................71 + 12 Content Negotiation ..........................................71 + 12.1 Server-driven Negotiation ...................................72 + 12.2 Agent-driven Negotiation ....................................73 + 12.3 Transparent Negotiation .....................................74 + 13 Caching in HTTP ..............................................74 + 13.1.1 Cache Correctness ........................................75 + 13.1.2 Warnings .................................................76 + 13.1.3 Cache-control Mechanisms .................................77 + 13.1.4 Explicit User Agent Warnings .............................78 + 13.1.5 Exceptions to the Rules and Warnings .....................78 + 13.1.6 Client-controlled Behavior ...............................79 + 13.2 Expiration Model ............................................79 + 13.2.1 Server-Specified Expiration ..............................79 + 13.2.2 Heuristic Expiration .....................................80 + 13.2.3 Age Calculations .........................................80 + 13.2.4 Expiration Calculations ..................................83 + 13.2.5 Disambiguating Expiration Values .........................84 + 13.2.6 Disambiguating Multiple Responses ........................84 + 13.3 Validation Model ............................................85 + 13.3.1 Last-Modified Dates ......................................86 + + + +Fielding, et al. Standards Track [Page 4] +
RFC 2616 HTTP/1.1 June 1999 + + + 13.3.2 Entity Tag Cache Validators ..............................86 + 13.3.3 Weak and Strong Validators ...............................86 + 13.3.4 Rules for When to Use Entity Tags and Last-Modified Dates.89 + 13.3.5 Non-validating Conditionals ..............................90 + 13.4 Response Cacheability .......................................91 + 13.5 Constructing Responses From Caches ..........................92 + 13.5.1 End-to-end and Hop-by-hop Headers ........................92 + 13.5.2 Non-modifiable Headers ...................................92 + 13.5.3 Combining Headers ........................................94 + 13.5.4 Combining Byte Ranges ....................................95 + 13.6 Caching Negotiated Responses ................................95 + 13.7 Shared and Non-Shared Caches ................................96 + 13.8 Errors or Incomplete Response Cache Behavior ................97 + 13.9 Side Effects of GET and HEAD ................................97 + 13.10 Invalidation After Updates or Deletions ...................97 + 13.11 Write-Through Mandatory ...................................98 + 13.12 Cache Replacement .........................................99 + 13.13 History Lists .............................................99 + 14 Header Field Definitions ....................................100 + 14.1 Accept .....................................................100 + 14.2 Accept-Charset .............................................102 + 14.3 Accept-Encoding ............................................102 + 14.4 Accept-Language ............................................104 + 14.5 Accept-Ranges ..............................................105 + 14.6 Age ........................................................106 + 14.7 Allow ......................................................106 + 14.8 Authorization ..............................................107 + 14.9 Cache-Control ..............................................108 + 14.9.1 What is Cacheable .......................................109 + 14.9.2 What May be Stored by Caches ............................110 + 14.9.3 Modifications of the Basic Expiration Mechanism .........111 + 14.9.4 Cache Revalidation and Reload Controls ..................113 + 14.9.5 No-Transform Directive ..................................115 + 14.9.6 Cache Control Extensions ................................116 + 14.10 Connection ...............................................117 + 14.11 Content-Encoding .........................................118 + 14.12 Content-Language .........................................118 + 14.13 Content-Length ...........................................119 + 14.14 Content-Location .........................................120 + 14.15 Content-MD5 ..............................................121 + 14.16 Content-Range ............................................122 + 14.17 Content-Type .............................................124 + 14.18 Date .....................................................124 + 14.18.1 Clockless Origin Server Operation ......................125 + 14.19 ETag .....................................................126 + 14.20 Expect ...................................................126 + 14.21 Expires ..................................................127 + 14.22 From .....................................................128 + + + +Fielding, et al. Standards Track [Page 5] +
RFC 2616 HTTP/1.1 June 1999 + + + 14.23 Host .....................................................128 + 14.24 If-Match .................................................129 + 14.25 If-Modified-Since ........................................130 + 14.26 If-None-Match ............................................132 + 14.27 If-Range .................................................133 + 14.28 If-Unmodified-Since ......................................134 + 14.29 Last-Modified ............................................134 + 14.30 Location .................................................135 + 14.31 Max-Forwards .............................................136 + 14.32 Pragma ...................................................136 + 14.33 Proxy-Authenticate .......................................137 + 14.34 Proxy-Authorization ......................................137 + 14.35 Range ....................................................138 + 14.35.1 Byte Ranges ...........................................138 + 14.35.2 Range Retrieval Requests ..............................139 + 14.36 Referer ..................................................140 + 14.37 Retry-After ..............................................141 + 14.38 Server ...................................................141 + 14.39 TE .......................................................142 + 14.40 Trailer ..................................................143 + 14.41 Transfer-Encoding..........................................143 + 14.42 Upgrade ..................................................144 + 14.43 User-Agent ...............................................145 + 14.44 Vary .....................................................145 + 14.45 Via ......................................................146 + 14.46 Warning ..................................................148 + 14.47 WWW-Authenticate .........................................150 + 15 Security Considerations .......................................150 + 15.1 Personal Information....................................151 + 15.1.1 Abuse of Server Log Information .........................151 + 15.1.2 Transfer of Sensitive Information .......................151 + 15.1.3 Encoding Sensitive Information in URI's .................152 + 15.1.4 Privacy Issues Connected to Accept Headers ..............152 + 15.2 Attacks Based On File and Path Names .......................153 + 15.3 DNS Spoofing ...............................................154 + 15.4 Location Headers and Spoofing ..............................154 + 15.5 Content-Disposition Issues .................................154 + 15.6 Authentication Credentials and Idle Clients ................155 + 15.7 Proxies and Caching ........................................155 + 15.7.1 Denial of Service Attacks on Proxies....................156 + 16 Acknowledgments .............................................156 + 17 References ..................................................158 + 18 Authors' Addresses ..........................................162 + 19 Appendices ..................................................164 + 19.1 Internet Media Type message/http and application/http ......164 + 19.2 Internet Media Type multipart/byteranges ...................165 + 19.3 Tolerant Applications ......................................166 + 19.4 Differences Between HTTP Entities and RFC 2045 Entities ....167 + + + +Fielding, et al. Standards Track [Page 6] +
RFC 2616 HTTP/1.1 June 1999 + + + 19.4.1 MIME-Version ............................................167 + 19.4.2 Conversion to Canonical Form ............................167 + 19.4.3 Conversion of Date Formats ..............................168 + 19.4.4 Introduction of Content-Encoding ........................168 + 19.4.5 No Content-Transfer-Encoding ............................168 + 19.4.6 Introduction of Transfer-Encoding .......................169 + 19.4.7 MHTML and Line Length Limitations .......................169 + 19.5 Additional Features ........................................169 + 19.5.1 Content-Disposition .....................................170 + 19.6 Compatibility with Previous Versions .......................170 + 19.6.1 Changes from HTTP/1.0 ...................................171 + 19.6.2 Compatibility with HTTP/1.0 Persistent Connections ......172 + 19.6.3 Changes from RFC 2068 ...................................172 + 20 Index .......................................................175 + 21 Full Copyright Statement ....................................176 + +1 Introduction + +1.1 Purpose + + The Hypertext Transfer Protocol (HTTP) is an application-level + protocol for distributed, collaborative, hypermedia information + systems. HTTP has been in use by the World-Wide Web global + information initiative since 1990. The first version of HTTP, + referred to as HTTP/0.9, was a simple protocol for raw data transfer + across the Internet. HTTP/1.0, as defined by RFC 1945 [6], improved + the protocol by allowing messages to be in the format of MIME-like + messages, containing metainformation about the data transferred and + modifiers on the request/response semantics. However, HTTP/1.0 does + not sufficiently take into consideration the effects of hierarchical + proxies, caching, the need for persistent connections, or virtual + hosts. In addition, the proliferation of incompletely-implemented + applications calling themselves "HTTP/1.0" has necessitated a + protocol version change in order for two communicating applications + to determine each other's true capabilities. + + This specification defines the protocol referred to as "HTTP/1.1". + This protocol includes more stringent requirements than HTTP/1.0 in + order to ensure reliable implementation of its features. + + Practical information systems require more functionality than simple + retrieval, including search, front-end update, and annotation. HTTP + allows an open-ended set of methods and headers that indicate the + purpose of a request [47]. It builds on the discipline of reference + provided by the Uniform Resource Identifier (URI) [3], as a location + (URL) [4] or name (URN) [20], for indicating the resource to which a + + + + + +Fielding, et al. Standards Track [Page 7] +
RFC 2616 HTTP/1.1 June 1999 + + + method is to be applied. Messages are passed in a format similar to + that used by Internet mail [9] as defined by the Multipurpose + Internet Mail Extensions (MIME) [7]. + + HTTP is also used as a generic protocol for communication between + user agents and proxies/gateways to other Internet systems, including + those supported by the SMTP [16], NNTP [13], FTP [18], Gopher [2], + and WAIS [10] protocols. In this way, HTTP allows basic hypermedia + access to resources available from diverse applications. + +1.2 Requirements + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in RFC 2119 [34]. + + An implementation is not compliant if it fails to satisfy one or more + of the MUST or REQUIRED level requirements for the protocols it + implements. An implementation that satisfies all the MUST or REQUIRED + level and all the SHOULD level requirements for its protocols is said + to be "unconditionally compliant"; one that satisfies all the MUST + level requirements but not all the SHOULD level requirements for its + protocols is said to be "conditionally compliant." + +1.3 Terminology + + This specification uses a number of terms to refer to the roles + played by participants in, and objects of, the HTTP communication. + + connection + A transport layer virtual circuit established between two programs + for the purpose of communication. + + message + The basic unit of HTTP communication, consisting of a structured + sequence of octets matching the syntax defined in section 4 and + transmitted via the connection. + + request + An HTTP request message, as defined in section 5. + + response + An HTTP response message, as defined in section 6. + + + + + + + + +Fielding, et al. Standards Track [Page 8] +
RFC 2616 HTTP/1.1 June 1999 + + + resource + A network data object or service that can be identified by a URI, + as defined in section 3.2. Resources may be available in multiple + representations (e.g. multiple languages, data formats, size, and + resolutions) or vary in other ways. + + entity + The information transferred as the payload of a request or + response. An entity consists of metainformation in the form of + entity-header fields and content in the form of an entity-body, as + described in section 7. + + representation + An entity included with a response that is subject to content + negotiation, as described in section 12. There may exist multiple + representations associated with a particular response status. + + content negotiation + The mechanism for selecting the appropriate representation when + servicing a request, as described in section 12. The + representation of entities in any response can be negotiated + (including error responses). + + variant + A resource may have one, or more than one, representation(s) + associated with it at any given instant. Each of these + representations is termed a `varriant'. Use of the term `variant' + does not necessarily imply that the resource is subject to content + negotiation. + + client + A program that establishes connections for the purpose of sending + requests. + + user agent + The client which initiates a request. These are often browsers, + editors, spiders (web-traversing robots), or other end user tools. + + server + An application program that accepts connections in order to + service requests by sending back responses. Any given program may + be capable of being both a client and a server; our use of these + terms refers only to the role being performed by the program for a + particular connection, rather than to the program's capabilities + in general. Likewise, any server may act as an origin server, + proxy, gateway, or tunnel, switching behavior based on the nature + of each request. + + + + +Fielding, et al. Standards Track [Page 9] +
RFC 2616 HTTP/1.1 June 1999 + + + origin server + The server on which a given resource resides or is to be created. + + proxy + An intermediary program which acts as both a server and a client + for the purpose of making requests on behalf of other clients. + Requests are serviced internally or by passing them on, with + possible translation, to other servers. A proxy MUST implement + both the client and server requirements of this specification. A + "transparent proxy" is a proxy that does not modify the request or + response beyond what is required for proxy authentication and + identification. A "non-transparent proxy" is a proxy that modifies + the request or response in order to provide some added service to + the user agent, such as group annotation services, media type + transformation, protocol reduction, or anonymity filtering. Except + where either transparent or non-transparent behavior is explicitly + stated, the HTTP proxy requirements apply to both types of + proxies. + + gateway + A server which acts as an intermediary for some other server. + Unlike a proxy, a gateway receives requests as if it were the + origin server for the requested resource; the requesting client + may not be aware that it is communicating with a gateway. + + tunnel + An intermediary program which is acting as a blind relay between + two connections. Once active, a tunnel is not considered a party + to the HTTP communication, though the tunnel may have been + initiated by an HTTP request. The tunnel ceases to exist when both + ends of the relayed connections are closed. + + cache + A program's local store of response messages and the subsystem + that controls its message storage, retrieval, and deletion. A + cache stores cacheable responses in order to reduce the response + time and network bandwidth consumption on future, equivalent + requests. Any client or server may include a cache, though a cache + cannot be used by a server that is acting as a tunnel. + + cacheable + A response is cacheable if a cache is allowed to store a copy of + the response message for use in answering subsequent requests. The + rules for determining the cacheability of HTTP responses are + defined in section 13. Even if a resource is cacheable, there may + be additional constraints on whether a cache can use the cached + copy for a particular request. + + + + +Fielding, et al. Standards Track [Page 10] +
RFC 2616 HTTP/1.1 June 1999 + + + first-hand + A response is first-hand if it comes directly and without + unnecessary delay from the origin server, perhaps via one or more + proxies. A response is also first-hand if its validity has just + been checked directly with the origin server. + + explicit expiration time + The time at which the origin server intends that an entity should + no longer be returned by a cache without further validation. + + heuristic expiration time + An expiration time assigned by a cache when no explicit expiration + time is available. + + age + The age of a response is the time since it was sent by, or + successfully validated with, the origin server. + + freshness lifetime + The length of time between the generation of a response and its + expiration time. + + fresh + A response is fresh if its age has not yet exceeded its freshness + lifetime. + + stale + A response is stale if its age has passed its freshness lifetime. + + semantically transparent + A cache behaves in a "semantically transparent" manner, with + respect to a particular response, when its use affects neither the + requesting client nor the origin server, except to improve + performance. When a cache is semantically transparent, the client + receives exactly the same response (except for hop-by-hop headers) + that it would have received had its request been handled directly + by the origin server. + + validator + A protocol element (e.g., an entity tag or a Last-Modified time) + that is used to find out whether a cache entry is an equivalent + copy of an entity. + + upstream/downstream + Upstream and downstream describe the flow of a message: all + messages flow from upstream to downstream. + + + + + +Fielding, et al. Standards Track [Page 11] +
RFC 2616 HTTP/1.1 June 1999 + + + inbound/outbound + Inbound and outbound refer to the request and response paths for + messages: "inbound" means "traveling toward the origin server", + and "outbound" means "traveling toward the user agent" + +1.4 Overall Operation + + The HTTP protocol is a request/response protocol. A client sends a + request to the server in the form of a request method, URI, and + protocol version, followed by a MIME-like message containing request + modifiers, client information, and possible body content over a + connection with a server. The server responds with a status line, + including the message's protocol version and a success or error code, + followed by a MIME-like message containing server information, entity + metainformation, and possible entity-body content. The relationship + between HTTP and MIME is described in appendix 19.4. + + Most HTTP communication is initiated by a user agent and consists of + a request to be applied to a resource on some origin server. In the + simplest case, this may be accomplished via a single connection (v) + between the user agent (UA) and the origin server (O). + + request chain ------------------------> + UA -------------------v------------------- O + <----------------------- response chain + + A more complicated situation occurs when one or more intermediaries + are present in the request/response chain. There are three common + forms of intermediary: proxy, gateway, and tunnel. A proxy is a + forwarding agent, receiving requests for a URI in its absolute form, + rewriting all or part of the message, and forwarding the reformatted + request toward the server identified by the URI. A gateway is a + receiving agent, acting as a layer above some other server(s) and, if + necessary, translating the requests to the underlying server's + protocol. A tunnel acts as a relay point between two connections + without changing the messages; tunnels are used when the + communication needs to pass through an intermediary (such as a + firewall) even when the intermediary cannot understand the contents + of the messages. + + request chain --------------------------------------> + UA -----v----- A -----v----- B -----v----- C -----v----- O + <------------------------------------- response chain + + The figure above shows three intermediaries (A, B, and C) between the + user agent and origin server. A request or response message that + travels the whole chain will pass through four separate connections. + This distinction is important because some HTTP communication options + + + +Fielding, et al. Standards Track [Page 12] +
RFC 2616 HTTP/1.1 June 1999 + + + may apply only to the connection with the nearest, non-tunnel + neighbor, only to the end-points of the chain, or to all connections + along the chain. Although the diagram is linear, each participant may + be engaged in multiple, simultaneous communications. For example, B + may be receiving requests from many clients other than A, and/or + forwarding requests to servers other than C, at the same time that it + is handling A's request. + + Any party to the communication which is not acting as a tunnel may + employ an internal cache for handling requests. The effect of a cache + is that the request/response chain is shortened if one of the + participants along the chain has a cached response applicable to that + request. The following illustrates the resulting chain if B has a + cached copy of an earlier response from O (via C) for a request which + has not been cached by UA or A. + + request chain ----------> + UA -----v----- A -----v----- B - - - - - - C - - - - - - O + <--------- response chain + + Not all responses are usefully cacheable, and some requests may + contain modifiers which place special requirements on cache behavior. + HTTP requirements for cache behavior and cacheable responses are + defined in section 13. + + In fact, there are a wide variety of architectures and configurations + of caches and proxies currently being experimented with or deployed + across the World Wide Web. These systems include national hierarchies + of proxy caches to save transoceanic bandwidth, systems that + broadcast or multicast cache entries, organizations that distribute + subsets of cached data via CD-ROM, and so on. HTTP systems are used + in corporate intranets over high-bandwidth links, and for access via + PDAs with low-power radio links and intermittent connectivity. The + goal of HTTP/1.1 is to support the wide diversity of configurations + already deployed while introducing protocol constructs that meet the + needs of those who build web applications that require high + reliability and, failing that, at least reliable indications of + failure. + + HTTP communication usually takes place over TCP/IP connections. The + default port is TCP 80 [19], but other ports can be used. This does + not preclude HTTP from being implemented on top of any other protocol + on the Internet, or on other networks. HTTP only presumes a reliable + transport; any protocol that provides such guarantees can be used; + the mapping of the HTTP/1.1 request and response structures onto the + transport data units of the protocol in question is outside the scope + of this specification. + + + + +Fielding, et al. Standards Track [Page 13] +
RFC 2616 HTTP/1.1 June 1999 + + + In HTTP/1.0, most implementations used a new connection for each + request/response exchange. In HTTP/1.1, a connection may be used for + one or more request/response exchanges, although connections may be + closed for a variety of reasons (see section 8.1). + +2 Notational Conventions and Generic Grammar + +2.1 Augmented BNF + + All of the mechanisms specified in this document are described in + both prose and an augmented Backus-Naur Form (BNF) similar to that + used by RFC 822 [9]. Implementors will need to be familiar with the + notation in order to understand this specification. The augmented BNF + includes the following constructs: + + name = definition + The name of a rule is simply the name itself (without any + enclosing "<" and ">") and is separated from its definition by the + equal "=" character. White space is only significant in that + indentation of continuation lines is used to indicate a rule + definition that spans more than one line. Certain basic rules are + in uppercase, such as SP, LWS, HT, CRLF, DIGIT, ALPHA, etc. Angle + brackets are used within definitions whenever their presence will + facilitate discerning the use of rule names. + + "literal" + Quotation marks surround literal text. Unless stated otherwise, + the text is case-insensitive. + + rule1 | rule2 + Elements separated by a bar ("|") are alternatives, e.g., "yes | + no" will accept yes or no. + + (rule1 rule2) + Elements enclosed in parentheses are treated as a single element. + Thus, "(elem (foo | bar) elem)" allows the token sequences "elem + foo elem" and "elem bar elem". + + *rule + The character "*" preceding an element indicates repetition. The + full form is "<n>*<m>element" indicating at least <n> and at most + <m> occurrences of element. Default values are 0 and infinity so + that "*(element)" allows any number, including zero; "1*element" + requires at least one; and "1*2element" allows one or two. + + [rule] + Square brackets enclose optional elements; "[foo bar]" is + equivalent to "*1(foo bar)". + + + +Fielding, et al. Standards Track [Page 14] +
RFC 2616 HTTP/1.1 June 1999 + + + N rule + Specific repetition: "<n>(element)" is equivalent to + "<n>*<n>(element)"; that is, exactly <n> occurrences of (element). + Thus 2DIGIT is a 2-digit number, and 3ALPHA is a string of three + alphabetic characters. + + #rule + A construct "#" is defined, similar to "*", for defining lists of + elements. The full form is "<n>#<m>element" indicating at least + <n> and at most <m> elements, each separated by one or more commas + (",") and OPTIONAL linear white space (LWS). This makes the usual + form of lists very easy; a rule such as + ( *LWS element *( *LWS "," *LWS element )) + can be shown as + 1#element + Wherever this construct is used, null elements are allowed, but do + not contribute to the count of elements present. That is, + "(element), , (element) " is permitted, but counts as only two + elements. Therefore, where at least one element is required, at + least one non-null element MUST be present. Default values are 0 + and infinity so that "#element" allows any number, including zero; + "1#element" requires at least one; and "1#2element" allows one or + two. + + ; comment + A semi-colon, set off some distance to the right of rule text, + starts a comment that continues to the end of line. This is a + simple way of including useful notes in parallel with the + specifications. + + implied *LWS + The grammar described by this specification is word-based. Except + where noted otherwise, linear white space (LWS) can be included + between any two adjacent words (token or quoted-string), and + between adjacent words and separators, without changing the + interpretation of a field. At least one delimiter (LWS and/or + + separators) MUST exist between any two tokens (for the definition + of "token" below), since they would otherwise be interpreted as a + single token. + +2.2 Basic Rules + + The following rules are used throughout this specification to + describe basic parsing constructs. The US-ASCII coded character set + is defined by ANSI X3.4-1986 [21]. + + + + + +Fielding, et al. Standards Track [Page 15] +
RFC 2616 HTTP/1.1 June 1999 + + + OCTET = <any 8-bit sequence of data> + CHAR = <any US-ASCII character (octets 0 - 127)> + UPALPHA = <any US-ASCII uppercase letter "A".."Z"> + LOALPHA = <any US-ASCII lowercase letter "a".."z"> + ALPHA = UPALPHA | LOALPHA + DIGIT = <any US-ASCII digit "0".."9"> + CTL = <any US-ASCII control character + (octets 0 - 31) and DEL (127)> + CR = <US-ASCII CR, carriage return (13)> + LF = <US-ASCII LF, linefeed (10)> + SP = <US-ASCII SP, space (32)> + HT = <US-ASCII HT, horizontal-tab (9)> + <"> = <US-ASCII double-quote mark (34)> + + HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all + protocol elements except the entity-body (see appendix 19.3 for + tolerant applications). The end-of-line marker within an entity-body + is defined by its associated media type, as described in section 3.7. + + CRLF = CR LF + + HTTP/1.1 header field values can be folded onto multiple lines if the + continuation line begins with a space or horizontal tab. All linear + white space, including folding, has the same semantics as SP. A + recipient MAY replace any linear white space with a single SP before + interpreting the field value or forwarding the message downstream. + + LWS = [CRLF] 1*( SP | HT ) + + The TEXT rule is only used for descriptive field contents and values + that are not intended to be interpreted by the message parser. Words + of *TEXT MAY contain characters from character sets other than ISO- + 8859-1 [22] only when encoded according to the rules of RFC 2047 + [14]. + + TEXT = <any OCTET except CTLs, + but including LWS> + + A CRLF is allowed in the definition of TEXT only as part of a header + field continuation. It is expected that the folding LWS will be + replaced with a single SP before interpretation of the TEXT value. + + Hexadecimal numeric characters are used in several protocol elements. + + HEX = "A" | "B" | "C" | "D" | "E" | "F" + | "a" | "b" | "c" | "d" | "e" | "f" | DIGIT + + + + + +Fielding, et al. Standards Track [Page 16] +
RFC 2616 HTTP/1.1 June 1999 + + + Many HTTP/1.1 header field values consist of words separated by LWS + or special characters. These special characters MUST be in a quoted + string to be used within a parameter value (as defined in section + 3.6). + + token = 1*<any CHAR except CTLs or separators> + separators = "(" | ")" | "<" | ">" | "@" + | "," | ";" | ":" | "\" | <"> + | "/" | "[" | "]" | "?" | "=" + | "{" | "}" | SP | HT + + Comments can be included in some HTTP header fields by surrounding + the comment text with parentheses. Comments are only allowed in + fields containing "comment" as part of their field value definition. + In all other fields, parentheses are considered part of the field + value. + + comment = "(" *( ctext | quoted-pair | comment ) ")" + ctext = <any TEXT excluding "(" and ")"> + + A string of text is parsed as a single word if it is quoted using + double-quote marks. + + quoted-string = ( <"> *(qdtext | quoted-pair ) <"> ) + qdtext = <any TEXT except <">> + + The backslash character ("\") MAY be used as a single-character + quoting mechanism only within quoted-string and comment constructs. + + quoted-pair = "\" CHAR + +3 Protocol Parameters + +3.1 HTTP Version + + HTTP uses a "<major>.<minor>" numbering scheme to indicate versions + of the protocol. The protocol versioning policy is intended to allow + the sender to indicate the format of a message and its capacity for + understanding further HTTP communication, rather than the features + obtained via that communication. No change is made to the version + number for the addition of message components which do not affect + communication behavior or which only add to extensible field values. + The <minor> number is incremented when the changes made to the + protocol add features which do not change the general message parsing + algorithm, but which may add to the message semantics and imply + additional capabilities of the sender. The <major> number is + incremented when the format of a message within the protocol is + changed. See RFC 2145 [36] for a fuller explanation. + + + +Fielding, et al. Standards Track [Page 17] +
RFC 2616 HTTP/1.1 June 1999 + + + The version of an HTTP message is indicated by an HTTP-Version field + in the first line of the message. + + HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT + + Note that the major and minor numbers MUST be treated as separate + integers and that each MAY be incremented higher than a single digit. + Thus, HTTP/2.4 is a lower version than HTTP/2.13, which in turn is + lower than HTTP/12.3. Leading zeros MUST be ignored by recipients and + MUST NOT be sent. + + An application that sends a request or response message that includes + HTTP-Version of "HTTP/1.1" MUST be at least conditionally compliant + with this specification. Applications that are at least conditionally + compliant with this specification SHOULD use an HTTP-Version of + "HTTP/1.1" in their messages, and MUST do so for any message that is + not compatible with HTTP/1.0. For more details on when to send + specific HTTP-Version values, see RFC 2145 [36]. + + The HTTP version of an application is the highest HTTP version for + which the application is at least conditionally compliant. + + Proxy and gateway applications need to be careful when forwarding + messages in protocol versions different from that of the application. + Since the protocol version indicates the protocol capability of the + sender, a proxy/gateway MUST NOT send a message with a version + indicator which is greater than its actual version. If a higher + version request is received, the proxy/gateway MUST either downgrade + the request version, or respond with an error, or switch to tunnel + behavior. + + Due to interoperability problems with HTTP/1.0 proxies discovered + since the publication of RFC 2068[33], caching proxies MUST, gateways + MAY, and tunnels MUST NOT upgrade the request to the highest version + they support. The proxy/gateway's response to that request MUST be in + the same major version as the request. + + Note: Converting between versions of HTTP may involve modification + of header fields required or forbidden by the versions involved. + +3.2 Uniform Resource Identifiers + + URIs have been known by many names: WWW addresses, Universal Document + Identifiers, Universal Resource Identifiers [3], and finally the + combination of Uniform Resource Locators (URL) [4] and Names (URN) + [20]. As far as HTTP is concerned, Uniform Resource Identifiers are + simply formatted strings which identify--via name, location, or any + other characteristic--a resource. + + + +Fielding, et al. Standards Track [Page 18] +
RFC 2616 HTTP/1.1 June 1999 + + +3.2.1 General Syntax + + URIs in HTTP can be represented in absolute form or relative to some + known base URI [11], depending upon the context of their use. The two + forms are differentiated by the fact that absolute URIs always begin + with a scheme name followed by a colon. For definitive information on + URL syntax and semantics, see "Uniform Resource Identifiers (URI): + Generic Syntax and Semantics," RFC 2396 [42] (which replaces RFCs + 1738 [4] and RFC 1808 [11]). This specification adopts the + definitions of "URI-reference", "absoluteURI", "relativeURI", "port", + "host","abs_path", "rel_path", and "authority" from that + specification. + + The HTTP protocol does not place any a priori limit on the length of + a URI. Servers MUST be able to handle the URI of any resource they + serve, and SHOULD be able to handle URIs of unbounded length if they + provide GET-based forms that could generate such URIs. A server + SHOULD return 414 (Request-URI Too Long) status if a URI is longer + than the server can handle (see section 10.4.15). + + Note: Servers ought to be cautious about depending on URI lengths + above 255 bytes, because some older client or proxy + implementations might not properly support these lengths. + +3.2.2 http URL + + The "http" scheme is used to locate network resources via the HTTP + protocol. This section defines the scheme-specific syntax and + semantics for http URLs. + + http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]] + + If the port is empty or not given, port 80 is assumed. The semantics + are that the identified resource is located at the server listening + for TCP connections on that port of that host, and the Request-URI + for the resource is abs_path (section 5.1.2). The use of IP addresses + in URLs SHOULD be avoided whenever possible (see RFC 1900 [24]). If + the abs_path is not present in the URL, it MUST be given as "/" when + used as a Request-URI for a resource (section 5.1.2). If a proxy + receives a host name which is not a fully qualified domain name, it + MAY add its domain to the host name it received. If a proxy receives + a fully qualified domain name, the proxy MUST NOT change the host + name. + + + + + + + + +Fielding, et al. Standards Track [Page 19] +
RFC 2616 HTTP/1.1 June 1999 + + +3.2.3 URI Comparison + + When comparing two URIs to decide if they match or not, a client + SHOULD use a case-sensitive octet-by-octet comparison of the entire + URIs, with these exceptions: + + - A port that is empty or not given is equivalent to the default + port for that URI-reference; + + - Comparisons of host names MUST be case-insensitive; + + - Comparisons of scheme names MUST be case-insensitive; + + - An empty abs_path is equivalent to an abs_path of "/". + + Characters other than those in the "reserved" and "unsafe" sets (see + RFC 2396 [42]) are equivalent to their ""%" HEX HEX" encoding. + + For example, the following three URIs are equivalent: + + http://abc.com:80/~smith/home.html + http://ABC.com/%7Esmith/home.html + http://ABC.com:/%7esmith/home.html + +3.3 Date/Time Formats + +3.3.1 Full Date + + HTTP applications have historically allowed three different formats + for the representation of date/time stamps: + + Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 + Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 + Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format + + The first format is preferred as an Internet standard and represents + a fixed-length subset of that defined by RFC 1123 [8] (an update to + RFC 822 [9]). The second format is in common use, but is based on the + obsolete RFC 850 [12] date format and lacks a four-digit year. + HTTP/1.1 clients and servers that parse the date value MUST accept + all three formats (for compatibility with HTTP/1.0), though they MUST + only generate the RFC 1123 format for representing HTTP-date values + in header fields. See section 19.3 for further information. + + Note: Recipients of date values are encouraged to be robust in + accepting date values that may have been sent by non-HTTP + applications, as is sometimes the case when retrieving or posting + messages via proxies/gateways to SMTP or NNTP. + + + +Fielding, et al. Standards Track [Page 20] +
RFC 2616 HTTP/1.1 June 1999 + + + All HTTP date/time stamps MUST be represented in Greenwich Mean Time + (GMT), without exception. For the purposes of HTTP, GMT is exactly + equal to UTC (Coordinated Universal Time). This is indicated in the + first two formats by the inclusion of "GMT" as the three-letter + abbreviation for time zone, and MUST be assumed when reading the + asctime format. HTTP-date is case sensitive and MUST NOT include + additional LWS beyond that specifically included as SP in the + grammar. + + HTTP-date = rfc1123-date | rfc850-date | asctime-date + rfc1123-date = wkday "," SP date1 SP time SP "GMT" + rfc850-date = weekday "," SP date2 SP time SP "GMT" + asctime-date = wkday SP date3 SP time SP 4DIGIT + date1 = 2DIGIT SP month SP 4DIGIT + ; day month year (e.g., 02 Jun 1982) + date2 = 2DIGIT "-" month "-" 2DIGIT + ; day-month-year (e.g., 02-Jun-82) + date3 = month SP ( 2DIGIT | ( SP 1DIGIT )) + ; month day (e.g., Jun 2) + time = 2DIGIT ":" 2DIGIT ":" 2DIGIT + ; 00:00:00 - 23:59:59 + wkday = "Mon" | "Tue" | "Wed" + | "Thu" | "Fri" | "Sat" | "Sun" + weekday = "Monday" | "Tuesday" | "Wednesday" + | "Thursday" | "Friday" | "Saturday" | "Sunday" + month = "Jan" | "Feb" | "Mar" | "Apr" + | "May" | "Jun" | "Jul" | "Aug" + | "Sep" | "Oct" | "Nov" | "Dec" + + Note: HTTP requirements for the date/time stamp format apply only + to their usage within the protocol stream. Clients and servers are + not required to use these formats for user presentation, request + logging, etc. + +3.3.2 Delta Seconds + + Some HTTP header fields allow a time value to be specified as an + integer number of seconds, represented in decimal, after the time + that the message was received. + + delta-seconds = 1*DIGIT + +3.4 Character Sets + + HTTP uses the same definition of the term "character set" as that + described for MIME: + + + + + +Fielding, et al. Standards Track [Page 21] +
RFC 2616 HTTP/1.1 June 1999 + + + The term "character set" is used in this document to refer to a + method used with one or more tables to convert a sequence of octets + into a sequence of characters. Note that unconditional conversion in + the other direction is not required, in that not all characters may + be available in a given character set and a character set may provide + more than one sequence of octets to represent a particular character. + This definition is intended to allow various kinds of character + encoding, from simple single-table mappings such as US-ASCII to + complex table switching methods such as those that use ISO-2022's + techniques. However, the definition associated with a MIME character + set name MUST fully specify the mapping to be performed from octets + to characters. In particular, use of external profiling information + to determine the exact mapping is not permitted. + + Note: This use of the term "character set" is more commonly + referred to as a "character encoding." However, since HTTP and + MIME share the same registry, it is important that the terminology + also be shared. + + HTTP character sets are identified by case-insensitive tokens. The + complete set of tokens is defined by the IANA Character Set registry + [19]. + + charset = token + + Although HTTP allows an arbitrary token to be used as a charset + value, any token that has a predefined value within the IANA + Character Set registry [19] MUST represent the character set defined + by that registry. Applications SHOULD limit their use of character + sets to those defined by the IANA registry. + + Implementors should be aware of IETF character set requirements [38] + [41]. + +3.4.1 Missing Charset + + Some HTTP/1.0 software has interpreted a Content-Type header without + charset parameter incorrectly to mean "recipient should guess." + Senders wishing to defeat this behavior MAY include a charset + parameter even when the charset is ISO-8859-1 and SHOULD do so when + it is known that it will not confuse the recipient. + + Unfortunately, some older HTTP/1.0 clients did not deal properly with + an explicit charset parameter. HTTP/1.1 recipients MUST respect the + charset label provided by the sender; and those user agents that have + a provision to "guess" a charset MUST use the charset from the + + + + + +Fielding, et al. Standards Track [Page 22] +
RFC 2616 HTTP/1.1 June 1999 + + + content-type field if they support that charset, rather than the + recipient's preference, when initially displaying a document. See + section 3.7.1. + +3.5 Content Codings + + Content coding values indicate an encoding transformation that has + been or can be applied to an entity. Content codings are primarily + used to allow a document to be compressed or otherwise usefully + transformed without losing the identity of its underlying media type + and without loss of information. Frequently, the entity is stored in + coded form, transmitted directly, and only decoded by the recipient. + + content-coding = token + + All content-coding values are case-insensitive. HTTP/1.1 uses + content-coding values in the Accept-Encoding (section 14.3) and + Content-Encoding (section 14.11) header fields. Although the value + describes the content-coding, what is more important is that it + indicates what decoding mechanism will be required to remove the + encoding. + + The Internet Assigned Numbers Authority (IANA) acts as a registry for + content-coding value tokens. Initially, the registry contains the + following tokens: + + gzip An encoding format produced by the file compression program + "gzip" (GNU zip) as described in RFC 1952 [25]. This format is a + Lempel-Ziv coding (LZ77) with a 32 bit CRC. + + compress + The encoding format produced by the common UNIX file compression + program "compress". This format is an adaptive Lempel-Ziv-Welch + coding (LZW). + + Use of program names for the identification of encoding formats + is not desirable and is discouraged for future encodings. Their + use here is representative of historical practice, not good + design. For compatibility with previous implementations of HTTP, + applications SHOULD consider "x-gzip" and "x-compress" to be + equivalent to "gzip" and "compress" respectively. + + deflate + The "zlib" format defined in RFC 1950 [31] in combination with + the "deflate" compression mechanism described in RFC 1951 [29]. + + + + + + +Fielding, et al. Standards Track [Page 23] +
RFC 2616 HTTP/1.1 June 1999 + + + identity + The default (identity) encoding; the use of no transformation + whatsoever. This content-coding is used only in the Accept- + Encoding header, and SHOULD NOT be used in the Content-Encoding + header. + + New content-coding value tokens SHOULD be registered; to allow + interoperability between clients and servers, specifications of the + content coding algorithms needed to implement a new value SHOULD be + publicly available and adequate for independent implementation, and + conform to the purpose of content coding defined in this section. + +3.6 Transfer Codings + + Transfer-coding values are used to indicate an encoding + transformation that has been, can be, or may need to be applied to an + entity-body in order to ensure "safe transport" through the network. + This differs from a content coding in that the transfer-coding is a + property of the message, not of the original entity. + + transfer-coding = "chunked" | transfer-extension + transfer-extension = token *( ";" parameter ) + + Parameters are in the form of attribute/value pairs. + + parameter = attribute "=" value + attribute = token + value = token | quoted-string + + All transfer-coding values are case-insensitive. HTTP/1.1 uses + transfer-coding values in the TE header field (section 14.39) and in + the Transfer-Encoding header field (section 14.41). + + Whenever a transfer-coding is applied to a message-body, the set of + transfer-codings MUST include "chunked", unless the message is + terminated by closing the connection. When the "chunked" transfer- + coding is used, it MUST be the last transfer-coding applied to the + message-body. The "chunked" transfer-coding MUST NOT be applied more + than once to a message-body. These rules allow the recipient to + determine the transfer-length of the message (section 4.4). + + Transfer-codings are analogous to the Content-Transfer-Encoding + values of MIME [7], which were designed to enable safe transport of + binary data over a 7-bit transport service. However, safe transport + has a different focus for an 8bit-clean transfer protocol. In HTTP, + the only unsafe characteristic of message-bodies is the difficulty in + determining the exact body length (section 7.2.2), or the desire to + encrypt data over a shared transport. + + + +Fielding, et al. Standards Track [Page 24] +
RFC 2616 HTTP/1.1 June 1999 + + + The Internet Assigned Numbers Authority (IANA) acts as a registry for + transfer-coding value tokens. Initially, the registry contains the + following tokens: "chunked" (section 3.6.1), "identity" (section + 3.6.2), "gzip" (section 3.5), "compress" (section 3.5), and "deflate" + (section 3.5). + + New transfer-coding value tokens SHOULD be registered in the same way + as new content-coding value tokens (section 3.5). + + A server which receives an entity-body with a transfer-coding it does + not understand SHOULD return 501 (Unimplemented), and close the + connection. A server MUST NOT send transfer-codings to an HTTP/1.0 + client. + +3.6.1 Chunked Transfer Coding + + The chunked encoding modifies the body of a message in order to + transfer it as a series of chunks, each with its own size indicator, + followed by an OPTIONAL trailer containing entity-header fields. This + allows dynamically produced content to be transferred along with the + information necessary for the recipient to verify that it has + received the full message. + + Chunked-Body = *chunk + last-chunk + trailer + CRLF + + chunk = chunk-size [ chunk-extension ] CRLF + chunk-data CRLF + chunk-size = 1*HEX + last-chunk = 1*("0") [ chunk-extension ] CRLF + + chunk-extension= *( ";" chunk-ext-name [ "=" chunk-ext-val ] ) + chunk-ext-name = token + chunk-ext-val = token | quoted-string + chunk-data = chunk-size(OCTET) + trailer = *(entity-header CRLF) + + The chunk-size field is a string of hex digits indicating the size of + the chunk. The chunked encoding is ended by any chunk whose size is + zero, followed by the trailer, which is terminated by an empty line. + + The trailer allows the sender to include additional HTTP header + fields at the end of the message. The Trailer header field can be + used to indicate which header fields are included in a trailer (see + section 14.40). + + + + +Fielding, et al. Standards Track [Page 25] +
RFC 2616 HTTP/1.1 June 1999 + + + A server using chunked transfer-coding in a response MUST NOT use the + trailer for any header fields unless at least one of the following is + true: + + a)the request included a TE header field that indicates "trailers" is + acceptable in the transfer-coding of the response, as described in + section 14.39; or, + + b)the server is the origin server for the response, the trailer + fields consist entirely of optional metadata, and the recipient + could use the message (in a manner acceptable to the origin server) + without receiving this metadata. In other words, the origin server + is willing to accept the possibility that the trailer fields might + be silently discarded along the path to the client. + + This requirement prevents an interoperability failure when the + message is being received by an HTTP/1.1 (or later) proxy and + forwarded to an HTTP/1.0 recipient. It avoids a situation where + compliance with the protocol would have necessitated a possibly + infinite buffer on the proxy. + + An example process for decoding a Chunked-Body is presented in + appendix 19.4.6. + + All HTTP/1.1 applications MUST be able to receive and decode the + "chunked" transfer-coding, and MUST ignore chunk-extension extensions + they do not understand. + +3.7 Media Types + + HTTP uses Internet Media Types [17] in the Content-Type (section + 14.17) and Accept (section 14.1) header fields in order to provide + open and extensible data typing and type negotiation. + + media-type = type "/" subtype *( ";" parameter ) + type = token + subtype = token + + Parameters MAY follow the type/subtype in the form of attribute/value + pairs (as defined in section 3.6). + + The type, subtype, and parameter attribute names are case- + insensitive. Parameter values might or might not be case-sensitive, + depending on the semantics of the parameter name. Linear white space + (LWS) MUST NOT be used between the type and subtype, nor between an + attribute and its value. The presence or absence of a parameter might + be significant to the processing of a media-type, depending on its + definition within the media type registry. + + + +Fielding, et al. Standards Track [Page 26] +
RFC 2616 HTTP/1.1 June 1999 + + + Note that some older HTTP applications do not recognize media type + parameters. When sending data to older HTTP applications, + implementations SHOULD only use media type parameters when they are + required by that type/subtype definition. + + Media-type values are registered with the Internet Assigned Number + Authority (IANA [19]). The media type registration process is + outlined in RFC 1590 [17]. Use of non-registered media types is + discouraged. + +3.7.1 Canonicalization and Text Defaults + + Internet media types are registered with a canonical form. An + entity-body transferred via HTTP messages MUST be represented in the + appropriate canonical form prior to its transmission except for + "text" types, as defined in the next paragraph. + + When in canonical form, media subtypes of the "text" type use CRLF as + the text line break. HTTP relaxes this requirement and allows the + transport of text media with plain CR or LF alone representing a line + break when it is done consistently for an entire entity-body. HTTP + applications MUST accept CRLF, bare CR, and bare LF as being + representative of a line break in text media received via HTTP. In + addition, if the text is represented in a character set that does not + use octets 13 and 10 for CR and LF respectively, as is the case for + some multi-byte character sets, HTTP allows the use of whatever octet + sequences are defined by that character set to represent the + equivalent of CR and LF for line breaks. This flexibility regarding + line breaks applies only to text media in the entity-body; a bare CR + or LF MUST NOT be substituted for CRLF within any of the HTTP control + structures (such as header fields and multipart boundaries). + + If an entity-body is encoded with a content-coding, the underlying + data MUST be in a form defined above prior to being encoded. + + The "charset" parameter is used with some media types to define the + character set (section 3.4) of the data. When no explicit charset + parameter is provided by the sender, media subtypes of the "text" + type are defined to have a default charset value of "ISO-8859-1" when + received via HTTP. Data in character sets other than "ISO-8859-1" or + its subsets MUST be labeled with an appropriate charset value. See + section 3.4.1 for compatibility problems. + +3.7.2 Multipart Types + + MIME provides for a number of "multipart" types -- encapsulations of + one or more entities within a single message-body. All multipart + types share a common syntax, as defined in section 5.1.1 of RFC 2046 + + + +Fielding, et al. Standards Track [Page 27] +
RFC 2616 HTTP/1.1 June 1999 + + + [40], and MUST include a boundary parameter as part of the media type + value. The message body is itself a protocol element and MUST + therefore use only CRLF to represent line breaks between body-parts. + Unlike in RFC 2046, the epilogue of any multipart message MUST be + empty; HTTP applications MUST NOT transmit the epilogue (even if the + original multipart contains an epilogue). These restrictions exist in + order to preserve the self-delimiting nature of a multipart message- + body, wherein the "end" of the message-body is indicated by the + ending multipart boundary. + + In general, HTTP treats a multipart message-body no differently than + any other media type: strictly as payload. The one exception is the + "multipart/byteranges" type (appendix 19.2) when it appears in a 206 + (Partial Content) response, which will be interpreted by some HTTP + caching mechanisms as described in sections 13.5.4 and 14.16. In all + other cases, an HTTP user agent SHOULD follow the same or similar + behavior as a MIME user agent would upon receipt of a multipart type. + The MIME header fields within each body-part of a multipart message- + body do not have any significance to HTTP beyond that defined by + their MIME semantics. + + In general, an HTTP user agent SHOULD follow the same or similar + behavior as a MIME user agent would upon receipt of a multipart type. + If an application receives an unrecognized multipart subtype, the + application MUST treat it as being equivalent to "multipart/mixed". + + Note: The "multipart/form-data" type has been specifically defined + for carrying form data suitable for processing via the POST + request method, as described in RFC 1867 [15]. + +3.8 Product Tokens + + Product tokens are used to allow communicating applications to + identify themselves by software name and version. Most fields using + product tokens also allow sub-products which form a significant part + of the application to be listed, separated by white space. By + convention, the products are listed in order of their significance + for identifying the application. + + product = token ["/" product-version] + product-version = token + + Examples: + + User-Agent: CERN-LineMode/2.15 libwww/2.17b3 + Server: Apache/0.8.4 + + + + + +Fielding, et al. Standards Track [Page 28] +
RFC 2616 HTTP/1.1 June 1999 + + + Product tokens SHOULD be short and to the point. They MUST NOT be + used for advertising or other non-essential information. Although any + token character MAY appear in a product-version, this token SHOULD + only be used for a version identifier (i.e., successive versions of + the same product SHOULD only differ in the product-version portion of + the product value). + +3.9 Quality Values + + HTTP content negotiation (section 12) uses short "floating point" + numbers to indicate the relative importance ("weight") of various + negotiable parameters. A weight is normalized to a real number in + the range 0 through 1, where 0 is the minimum and 1 the maximum + value. If a parameter has a quality value of 0, then content with + this parameter is `not acceptable' for the client. HTTP/1.1 + applications MUST NOT generate more than three digits after the + decimal point. User configuration of these values SHOULD also be + limited in this fashion. + + qvalue = ( "0" [ "." 0*3DIGIT ] ) + | ( "1" [ "." 0*3("0") ] ) + + "Quality values" is a misnomer, since these values merely represent + relative degradation in desired quality. + +3.10 Language Tags + + A language tag identifies a natural language spoken, written, or + otherwise conveyed by human beings for communication of information + to other human beings. Computer languages are explicitly excluded. + HTTP uses language tags within the Accept-Language and Content- + Language fields. + + The syntax and registry of HTTP language tags is the same as that + defined by RFC 1766 [1]. In summary, a language tag is composed of 1 + or more parts: A primary language tag and a possibly empty series of + subtags: + + language-tag = primary-tag *( "-" subtag ) + primary-tag = 1*8ALPHA + subtag = 1*8ALPHA + + White space is not allowed within the tag and all tags are case- + insensitive. The name space of language tags is administered by the + IANA. Example tags include: + + en, en-US, en-cockney, i-cherokee, x-pig-latin + + + + +Fielding, et al. Standards Track [Page 29] +
RFC 2616 HTTP/1.1 June 1999 + + + where any two-letter primary-tag is an ISO-639 language abbreviation + and any two-letter initial subtag is an ISO-3166 country code. (The + last three tags above are not registered tags; all but the last are + examples of tags which could be registered in future.) + +3.11 Entity Tags + + Entity tags are used for comparing two or more entities from the same + requested resource. HTTP/1.1 uses entity tags in the ETag (section + 14.19), If-Match (section 14.24), If-None-Match (section 14.26), and + If-Range (section 14.27) header fields. The definition of how they + are used and compared as cache validators is in section 13.3.3. An + entity tag consists of an opaque quoted string, possibly prefixed by + a weakness indicator. + + entity-tag = [ weak ] opaque-tag + weak = "W/" + opaque-tag = quoted-string + + A "strong entity tag" MAY be shared by two entities of a resource + only if they are equivalent by octet equality. + + A "weak entity tag," indicated by the "W/" prefix, MAY be shared by + two entities of a resource only if the entities are equivalent and + could be substituted for each other with no significant change in + semantics. A weak entity tag can only be used for weak comparison. + + An entity tag MUST be unique across all versions of all entities + associated with a particular resource. A given entity tag value MAY + be used for entities obtained by requests on different URIs. The use + of the same entity tag value in conjunction with entities obtained by + requests on different URIs does not imply the equivalence of those + entities. + +3.12 Range Units + + HTTP/1.1 allows a client to request that only part (a range of) the + response entity be included within the response. HTTP/1.1 uses range + units in the Range (section 14.35) and Content-Range (section 14.16) + header fields. An entity can be broken down into subranges according + to various structural units. + + range-unit = bytes-unit | other-range-unit + bytes-unit = "bytes" + other-range-unit = token + + The only range unit defined by HTTP/1.1 is "bytes". HTTP/1.1 + implementations MAY ignore ranges specified using other units. + + + +Fielding, et al. Standards Track [Page 30] +
RFC 2616 HTTP/1.1 June 1999 + + + HTTP/1.1 has been designed to allow implementations of applications + that do not depend on knowledge of ranges. + +4 HTTP Message + +4.1 Message Types + + HTTP messages consist of requests from client to server and responses + from server to client. + + HTTP-message = Request | Response ; HTTP/1.1 messages + + Request (section 5) and Response (section 6) messages use the generic + message format of RFC 822 [9] for transferring entities (the payload + of the message). Both types of message consist of a start-line, zero + or more header fields (also known as "headers"), an empty line (i.e., + a line with nothing preceding the CRLF) indicating the end of the + header fields, and possibly a message-body. + + generic-message = start-line + *(message-header CRLF) + CRLF + [ message-body ] + start-line = Request-Line | Status-Line + + In the interest of robustness, servers SHOULD ignore any empty + line(s) received where a Request-Line is expected. In other words, if + the server is reading the protocol stream at the beginning of a + message and receives a CRLF first, it should ignore the CRLF. + + Certain buggy HTTP/1.0 client implementations generate extra CRLF's + after a POST request. To restate what is explicitly forbidden by the + BNF, an HTTP/1.1 client MUST NOT preface or follow a request with an + extra CRLF. + +4.2 Message Headers + + HTTP header fields, which include general-header (section 4.5), + request-header (section 5.3), response-header (section 6.2), and + entity-header (section 7.1) fields, follow the same generic format as + that given in section 3.1 of RFC 822 [9]. Each header field consists + of a name followed by a colon (":") and the field value. Field names + are case-insensitive. The field value MAY be preceded by any amount + of LWS, though a single SP is preferred. Header fields can be + extended over multiple lines by preceding each extra line with at + least one SP or HT. Applications ought to follow "common form", where + one is known or indicated, when generating HTTP constructs, since + there might exist some implementations that fail to accept anything + + + +Fielding, et al. Standards Track [Page 31] +
RFC 2616 HTTP/1.1 June 1999 + + + beyond the common forms. + + message-header = field-name ":" [ field-value ] + field-name = token + field-value = *( field-content | LWS ) + field-content = <the OCTETs making up the field-value + and consisting of either *TEXT or combinations + of token, separators, and quoted-string> + + The field-content does not include any leading or trailing LWS: + linear white space occurring before the first non-whitespace + character of the field-value or after the last non-whitespace + character of the field-value. Such leading or trailing LWS MAY be + removed without changing the semantics of the field value. Any LWS + that occurs between field-content MAY be replaced with a single SP + before interpreting the field value or forwarding the message + downstream. + + The order in which header fields with differing field names are + received is not significant. However, it is "good practice" to send + general-header fields first, followed by request-header or response- + header fields, and ending with the entity-header fields. + + Multiple message-header fields with the same field-name MAY be + present in a message if and only if the entire field-value for that + header field is defined as a comma-separated list [i.e., #(values)]. + It MUST be possible to combine the multiple header fields into one + "field-name: field-value" pair, without changing the semantics of the + message, by appending each subsequent field-value to the first, each + separated by a comma. The order in which header fields with the same + field-name are received is therefore significant to the + interpretation of the combined field value, and thus a proxy MUST NOT + change the order of these field values when a message is forwarded. + +4.3 Message Body + + The message-body (if any) of an HTTP message is used to carry the + entity-body associated with the request or response. The message-body + differs from the entity-body only when a transfer-coding has been + applied, as indicated by the Transfer-Encoding header field (section + 14.41). + + message-body = entity-body + | <entity-body encoded as per Transfer-Encoding> + + Transfer-Encoding MUST be used to indicate any transfer-codings + applied by an application to ensure safe and proper transfer of the + message. Transfer-Encoding is a property of the message, not of the + + + +Fielding, et al. Standards Track [Page 32] +
RFC 2616 HTTP/1.1 June 1999 + + + entity, and thus MAY be added or removed by any application along the + request/response chain. (However, section 3.6 places restrictions on + when certain transfer-codings may be used.) + + The rules for when a message-body is allowed in a message differ for + requests and responses. + + The presence of a message-body in a request is signaled by the + inclusion of a Content-Length or Transfer-Encoding header field in + the request's message-headers. A message-body MUST NOT be included in + a request if the specification of the request method (section 5.1.1) + does not allow sending an entity-body in requests. A server SHOULD + read and forward a message-body on any request; if the request method + does not include defined semantics for an entity-body, then the + message-body SHOULD be ignored when handling the request. + + For response messages, whether or not a message-body is included with + a message is dependent on both the request method and the response + status code (section 6.1.1). All responses to the HEAD request method + MUST NOT include a message-body, even though the presence of entity- + header fields might lead one to believe they do. All 1xx + (informational), 204 (no content), and 304 (not modified) responses + MUST NOT include a message-body. All other responses do include a + message-body, although it MAY be of zero length. + +4.4 Message Length + + The transfer-length of a message is the length of the message-body as + it appears in the message; that is, after any transfer-codings have + been applied. When a message-body is included with a message, the + transfer-length of that body is determined by one of the following + (in order of precedence): + + 1.Any response message which "MUST NOT" include a message-body (such + as the 1xx, 204, and 304 responses and any response to a HEAD + request) is always terminated by the first empty line after the + header fields, regardless of the entity-header fields present in + the message. + + 2.If a Transfer-Encoding header field (section 14.41) is present and + has any value other than "identity", then the transfer-length is + defined by use of the "chunked" transfer-coding (section 3.6), + unless the message is terminated by closing the connection. + + 3.If a Content-Length header field (section 14.13) is present, its + decimal value in OCTETs represents both the entity-length and the + transfer-length. The Content-Length header field MUST NOT be sent + if these two lengths are different (i.e., if a Transfer-Encoding + + + +Fielding, et al. Standards Track [Page 33] +
RFC 2616 HTTP/1.1 June 1999 + + + header field is present). If a message is received with both a + Transfer-Encoding header field and a Content-Length header field, + the latter MUST be ignored. + + 4.If the message uses the media type "multipart/byteranges", and the + ransfer-length is not otherwise specified, then this self- + elimiting media type defines the transfer-length. This media type + UST NOT be used unless the sender knows that the recipient can arse + it; the presence in a request of a Range header with ultiple byte- + range specifiers from a 1.1 client implies that the lient can parse + multipart/byteranges responses. + + A range header might be forwarded by a 1.0 proxy that does not + understand multipart/byteranges; in this case the server MUST + delimit the message using methods defined in items 1,3 or 5 of + this section. + + 5.By the server closing the connection. (Closing the connection + cannot be used to indicate the end of a request body, since that + would leave no possibility for the server to send back a response.) + + For compatibility with HTTP/1.0 applications, HTTP/1.1 requests + containing a message-body MUST include a valid Content-Length header + field unless the server is known to be HTTP/1.1 compliant. If a + request contains a message-body and a Content-Length is not given, + the server SHOULD respond with 400 (bad request) if it cannot + determine the length of the message, or with 411 (length required) if + it wishes to insist on receiving a valid Content-Length. + + All HTTP/1.1 applications that receive entities MUST accept the + "chunked" transfer-coding (section 3.6), thus allowing this mechanism + to be used for messages when the message length cannot be determined + in advance. + + Messages MUST NOT include both a Content-Length header field and a + non-identity transfer-coding. If the message does include a non- + identity transfer-coding, the Content-Length MUST be ignored. + + When a Content-Length is given in a message where a message-body is + allowed, its field value MUST exactly match the number of OCTETs in + the message-body. HTTP/1.1 user agents MUST notify the user when an + invalid length is received and detected. + +4.5 General Header Fields + + There are a few header fields which have general applicability for + both request and response messages, but which do not apply to the + entity being transferred. These header fields apply only to the + + + +Fielding, et al. Standards Track [Page 34] +
RFC 2616 HTTP/1.1 June 1999 + + + message being transmitted. + + general-header = Cache-Control ; section 14.9 + | Connection ; section 14.10 + | Date ; section 14.18 + | Pragma ; section 14.32 + | Trailer ; section 14.40 + | Transfer-Encoding ; section 14.41 + | Upgrade ; section 14.42 + | Via ; section 14.45 + | Warning ; section 14.46 + + General-header field names can be extended reliably only in + combination with a change in the protocol version. However, new or + experimental header fields may be given the semantics of general + header fields if all parties in the communication recognize them to + be general-header fields. Unrecognized header fields are treated as + entity-header fields. + +5 Request + + A request message from a client to a server includes, within the + first line of that message, the method to be applied to the resource, + the identifier of the resource, and the protocol version in use. + + Request = Request-Line ; section 5.1 + *(( general-header ; section 4.5 + | request-header ; section 5.3 + | entity-header ) CRLF) ; section 7.1 + CRLF + [ message-body ] ; section 4.3 + +5.1 Request-Line + + The Request-Line begins with a method token, followed by the + Request-URI and the protocol version, and ending with CRLF. The + elements are separated by SP characters. No CR or LF is allowed + except in the final CRLF sequence. + + Request-Line = Method SP Request-URI SP HTTP-Version CRLF + + + + + + + + + + + +Fielding, et al. Standards Track [Page 35] +
RFC 2616 HTTP/1.1 June 1999 + + +5.1.1 Method + + The Method token indicates the method to be performed on the + resource identified by the Request-URI. The method is case-sensitive. + + Method = "OPTIONS" ; section 9.2 + | "GET" ; section 9.3 + | "HEAD" ; section 9.4 + | "POST" ; section 9.5 + | "PUT" ; section 9.6 + | "DELETE" ; section 9.7 + | "TRACE" ; section 9.8 + | "CONNECT" ; section 9.9 + | extension-method + extension-method = token + + The list of methods allowed by a resource can be specified in an + Allow header field (section 14.7). The return code of the response + always notifies the client whether a method is currently allowed on a + resource, since the set of allowed methods can change dynamically. An + origin server SHOULD return the status code 405 (Method Not Allowed) + if the method is known by the origin server but not allowed for the + requested resource, and 501 (Not Implemented) if the method is + unrecognized or not implemented by the origin server. The methods GET + and HEAD MUST be supported by all general-purpose servers. All other + methods are OPTIONAL; however, if the above methods are implemented, + they MUST be implemented with the same semantics as those specified + in section 9. + +5.1.2 Request-URI + + The Request-URI is a Uniform Resource Identifier (section 3.2) and + identifies the resource upon which to apply the request. + + Request-URI = "*" | absoluteURI | abs_path | authority + + The four options for Request-URI are dependent on the nature of the + request. The asterisk "*" means that the request does not apply to a + particular resource, but to the server itself, and is only allowed + when the method used does not necessarily apply to a resource. One + example would be + + OPTIONS * HTTP/1.1 + + The absoluteURI form is REQUIRED when the request is being made to a + proxy. The proxy is requested to forward the request or service it + from a valid cache, and return the response. Note that the proxy MAY + forward the request on to another proxy or directly to the server + + + +Fielding, et al. Standards Track [Page 36] +
RFC 2616 HTTP/1.1 June 1999 + + + specified by the absoluteURI. In order to avoid request loops, a + proxy MUST be able to recognize all of its server names, including + any aliases, local variations, and the numeric IP address. An example + Request-Line would be: + + GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 + + To allow for transition to absoluteURIs in all requests in future + versions of HTTP, all HTTP/1.1 servers MUST accept the absoluteURI + form in requests, even though HTTP/1.1 clients will only generate + them in requests to proxies. + + The authority form is only used by the CONNECT method (section 9.9). + + The most common form of Request-URI is that used to identify a + resource on an origin server or gateway. In this case the absolute + path of the URI MUST be transmitted (see section 3.2.1, abs_path) as + the Request-URI, and the network location of the URI (authority) MUST + be transmitted in a Host header field. For example, a client wishing + to retrieve the resource above directly from the origin server would + create a TCP connection to port 80 of the host "www.w3.org" and send + the lines: + + GET /pub/WWW/TheProject.html HTTP/1.1 + Host: www.w3.org + + followed by the remainder of the Request. Note that the absolute path + cannot be empty; if none is present in the original URI, it MUST be + given as "/" (the server root). + + The Request-URI is transmitted in the format specified in section + 3.2.1. If the Request-URI is encoded using the "% HEX HEX" encoding + [42], the origin server MUST decode the Request-URI in order to + properly interpret the request. Servers SHOULD respond to invalid + Request-URIs with an appropriate status code. + + A transparent proxy MUST NOT rewrite the "abs_path" part of the + received Request-URI when forwarding it to the next inbound server, + except as noted above to replace a null abs_path with "/". + + Note: The "no rewrite" rule prevents the proxy from changing the + meaning of the request when the origin server is improperly using + a non-reserved URI character for a reserved purpose. Implementors + should be aware that some pre-HTTP/1.1 proxies have been known to + rewrite the Request-URI. + + + + + + +Fielding, et al. Standards Track [Page 37] +
RFC 2616 HTTP/1.1 June 1999 + + +5.2 The Resource Identified by a Request + + The exact resource identified by an Internet request is determined by + examining both the Request-URI and the Host header field. + + An origin server that does not allow resources to differ by the + requested host MAY ignore the Host header field value when + determining the resource identified by an HTTP/1.1 request. (But see + section 19.6.1.1 for other requirements on Host support in HTTP/1.1.) + + An origin server that does differentiate resources based on the host + requested (sometimes referred to as virtual hosts or vanity host + names) MUST use the following rules for determining the requested + resource on an HTTP/1.1 request: + + 1. If Request-URI is an absoluteURI, the host is part of the + Request-URI. Any Host header field value in the request MUST be + ignored. + + 2. If the Request-URI is not an absoluteURI, and the request includes + a Host header field, the host is determined by the Host header + field value. + + 3. If the host as determined by rule 1 or 2 is not a valid host on + the server, the response MUST be a 400 (Bad Request) error message. + + Recipients of an HTTP/1.0 request that lacks a Host header field MAY + attempt to use heuristics (e.g., examination of the URI path for + something unique to a particular host) in order to determine what + exact resource is being requested. + +5.3 Request Header Fields + + The request-header fields allow the client to pass additional + information about the request, and about the client itself, to the + server. These fields act as request modifiers, with semantics + equivalent to the parameters on a programming language method + invocation. + + request-header = Accept ; section 14.1 + | Accept-Charset ; section 14.2 + | Accept-Encoding ; section 14.3 + | Accept-Language ; section 14.4 + | Authorization ; section 14.8 + | Expect ; section 14.20 + | From ; section 14.22 + | Host ; section 14.23 + | If-Match ; section 14.24 + + + +Fielding, et al. Standards Track [Page 38] +
RFC 2616 HTTP/1.1 June 1999 + + + | If-Modified-Since ; section 14.25 + | If-None-Match ; section 14.26 + | If-Range ; section 14.27 + | If-Unmodified-Since ; section 14.28 + | Max-Forwards ; section 14.31 + | Proxy-Authorization ; section 14.34 + | Range ; section 14.35 + | Referer ; section 14.36 + | TE ; section 14.39 + | User-Agent ; section 14.43 + + Request-header field names can be extended reliably only in + combination with a change in the protocol version. However, new or + experimental header fields MAY be given the semantics of request- + header fields if all parties in the communication recognize them to + be request-header fields. Unrecognized header fields are treated as + entity-header fields. + +6 Response + + After receiving and interpreting a request message, a server responds + with an HTTP response message. + + Response = Status-Line ; section 6.1 + *(( general-header ; section 4.5 + | response-header ; section 6.2 + | entity-header ) CRLF) ; section 7.1 + CRLF + [ message-body ] ; section 7.2 + +6.1 Status-Line + + The first line of a Response message is the Status-Line, consisting + of the protocol version followed by a numeric status code and its + associated textual phrase, with each element separated by SP + characters. No CR or LF is allowed except in the final CRLF sequence. + + Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF + +6.1.1 Status Code and Reason Phrase + + The Status-Code element is a 3-digit integer result code of the + attempt to understand and satisfy the request. These codes are fully + defined in section 10. The Reason-Phrase is intended to give a short + textual description of the Status-Code. The Status-Code is intended + for use by automata and the Reason-Phrase is intended for the human + user. The client is not required to examine or display the Reason- + Phrase. + + + +Fielding, et al. Standards Track [Page 39] +
RFC 2616 HTTP/1.1 June 1999 + + + The first digit of the Status-Code defines the class of response. The + last two digits do not have any categorization role. There are 5 + values for the first digit: + + - 1xx: Informational - Request received, continuing process + + - 2xx: Success - The action was successfully received, + understood, and accepted + + - 3xx: Redirection - Further action must be taken in order to + complete the request + + - 4xx: Client Error - The request contains bad syntax or cannot + be fulfilled + + - 5xx: Server Error - The server failed to fulfill an apparently + valid request + + The individual values of the numeric status codes defined for + HTTP/1.1, and an example set of corresponding Reason-Phrase's, are + presented below. The reason phrases listed here are only + recommendations -- they MAY be replaced by local equivalents without + affecting the protocol. + + Status-Code = + "100" ; section 10.1.1: Continue + | "101" ; section 10.1.2: Switching Protocols + | "200" ; section 10.2.1: OK + | "201" ; section 10.2.2: Created + | "202" ; section 10.2.3: Accepted + | "203" ; section 10.2.4: Non-Authoritative Information + | "204" ; section 10.2.5: No Content + | "205" ; section 10.2.6: Reset Content + | "206" ; section 10.2.7: Partial Content + | "300" ; section 10.3.1: Multiple Choices + | "301" ; section 10.3.2: Moved Permanently + | "302" ; section 10.3.3: Found + | "303" ; section 10.3.4: See Other + | "304" ; section 10.3.5: Not Modified + | "305" ; section 10.3.6: Use Proxy + | "307" ; section 10.3.8: Temporary Redirect + | "400" ; section 10.4.1: Bad Request + | "401" ; section 10.4.2: Unauthorized + | "402" ; section 10.4.3: Payment Required + | "403" ; section 10.4.4: Forbidden + | "404" ; section 10.4.5: Not Found + | "405" ; section 10.4.6: Method Not Allowed + | "406" ; section 10.4.7: Not Acceptable + + + +Fielding, et al. Standards Track [Page 40] +
RFC 2616 HTTP/1.1 June 1999 + + + | "407" ; section 10.4.8: Proxy Authentication Required + | "408" ; section 10.4.9: Request Time-out + | "409" ; section 10.4.10: Conflict + | "410" ; section 10.4.11: Gone + | "411" ; section 10.4.12: Length Required + | "412" ; section 10.4.13: Precondition Failed + | "413" ; section 10.4.14: Request Entity Too Large + | "414" ; section 10.4.15: Request-URI Too Large + | "415" ; section 10.4.16: Unsupported Media Type + | "416" ; section 10.4.17: Requested range not satisfiable + | "417" ; section 10.4.18: Expectation Failed + | "500" ; section 10.5.1: Internal Server Error + | "501" ; section 10.5.2: Not Implemented + | "502" ; section 10.5.3: Bad Gateway + | "503" ; section 10.5.4: Service Unavailable + | "504" ; section 10.5.5: Gateway Time-out + | "505" ; section 10.5.6: HTTP Version not supported + | extension-code + + extension-code = 3DIGIT + Reason-Phrase = *<TEXT, excluding CR, LF> + + HTTP status codes are extensible. HTTP applications are not required + to understand the meaning of all registered status codes, though such + understanding is obviously desirable. However, applications MUST + understand the class of any status code, as indicated by the first + digit, and treat any unrecognized response as being equivalent to the + x00 status code of that class, with the exception that an + unrecognized response MUST NOT be cached. For example, if an + unrecognized status code of 431 is received by the client, it can + safely assume that there was something wrong with its request and + treat the response as if it had received a 400 status code. In such + cases, user agents SHOULD present to the user the entity returned + with the response, since that entity is likely to include human- + readable information which will explain the unusual status. + +6.2 Response Header Fields + + The response-header fields allow the server to pass additional + information about the response which cannot be placed in the Status- + Line. These header fields give information about the server and about + further access to the resource identified by the Request-URI. + + response-header = Accept-Ranges ; section 14.5 + | Age ; section 14.6 + | ETag ; section 14.19 + | Location ; section 14.30 + | Proxy-Authenticate ; section 14.33 + + + +Fielding, et al. Standards Track [Page 41] +
RFC 2616 HTTP/1.1 June 1999 + + + | Retry-After ; section 14.37 + | Server ; section 14.38 + | Vary ; section 14.44 + | WWW-Authenticate ; section 14.47 + + Response-header field names can be extended reliably only in + combination with a change in the protocol version. However, new or + experimental header fields MAY be given the semantics of response- + header fields if all parties in the communication recognize them to + be response-header fields. Unrecognized header fields are treated as + entity-header fields. + +7 Entity + + Request and Response messages MAY transfer an entity if not otherwise + restricted by the request method or response status code. An entity + consists of entity-header fields and an entity-body, although some + responses will only include the entity-headers. + + In this section, both sender and recipient refer to either the client + or the server, depending on who sends and who receives the entity. + +7.1 Entity Header Fields + + Entity-header fields define metainformation about the entity-body or, + if no body is present, about the resource identified by the request. + Some of this metainformation is OPTIONAL; some might be REQUIRED by + portions of this specification. + + entity-header = Allow ; section 14.7 + | Content-Encoding ; section 14.11 + | Content-Language ; section 14.12 + | Content-Length ; section 14.13 + | Content-Location ; section 14.14 + | Content-MD5 ; section 14.15 + | Content-Range ; section 14.16 + | Content-Type ; section 14.17 + | Expires ; section 14.21 + | Last-Modified ; section 14.29 + | extension-header + + extension-header = message-header + + The extension-header mechanism allows additional entity-header fields + to be defined without changing the protocol, but these fields cannot + be assumed to be recognizable by the recipient. Unrecognized header + fields SHOULD be ignored by the recipient and MUST be forwarded by + transparent proxies. + + + +Fielding, et al. Standards Track [Page 42] +
RFC 2616 HTTP/1.1 June 1999 + + +7.2 Entity Body + + The entity-body (if any) sent with an HTTP request or response is in + a format and encoding defined by the entity-header fields. + + entity-body = *OCTET + + An entity-body is only present in a message when a message-body is + present, as described in section 4.3. The entity-body is obtained + from the message-body by decoding any Transfer-Encoding that might + have been applied to ensure safe and proper transfer of the message. + +7.2.1 Type + + When an entity-body is included with a message, the data type of that + body is determined via the header fields Content-Type and Content- + Encoding. These define a two-layer, ordered encoding model: + + entity-body := Content-Encoding( Content-Type( data ) ) + + Content-Type specifies the media type of the underlying data. + Content-Encoding may be used to indicate any additional content + codings applied to the data, usually for the purpose of data + compression, that are a property of the requested resource. There is + no default encoding. + + Any HTTP/1.1 message containing an entity-body SHOULD include a + Content-Type header field defining the media type of that body. If + and only if the media type is not given by a Content-Type field, the + recipient MAY attempt to guess the media type via inspection of its + content and/or the name extension(s) of the URI used to identify the + resource. If the media type remains unknown, the recipient SHOULD + treat it as type "application/octet-stream". + +7.2.2 Entity Length + + The entity-length of a message is the length of the message-body + before any transfer-codings have been applied. section 4.4 defines + how the transfer-length of a message-body is determined. + + + + + + + + + + + + +Fielding, et al. Standards Track [Page 43] +
RFC 2616 HTTP/1.1 June 1999 + + +8 Connections + +8.1 Persistent Connections + +8.1.1 Purpose + + Prior to persistent connections, a separate TCP connection was + established to fetch each URL, increasing the load on HTTP servers + and causing congestion on the Internet. The use of inline images and + other associated data often require a client to make multiple + requests of the same server in a short amount of time. Analysis of + these performance problems and results from a prototype + implementation are available [26] [30]. Implementation experience and + measurements of actual HTTP/1.1 (RFC 2068) implementations show good + results [39]. Alternatives have also been explored, for example, + T/TCP [27]. + + Persistent HTTP connections have a number of advantages: + + - By opening and closing fewer TCP connections, CPU time is saved + in routers and hosts (clients, servers, proxies, gateways, + tunnels, or caches), and memory used for TCP protocol control + blocks can be saved in hosts. + + - HTTP requests and responses can be pipelined on a connection. + Pipelining allows a client to make multiple requests without + waiting for each response, allowing a single TCP connection to + be used much more efficiently, with much lower elapsed time. + + - Network congestion is reduced by reducing the number of packets + caused by TCP opens, and by allowing TCP sufficient time to + determine the congestion state of the network. + + - Latency on subsequent requests is reduced since there is no time + spent in TCP's connection opening handshake. + + - HTTP can evolve more gracefully, since errors can be reported + without the penalty of closing the TCP connection. Clients using + future versions of HTTP might optimistically try a new feature, + but if communicating with an older server, retry with old + semantics after an error is reported. + + HTTP implementations SHOULD implement persistent connections. + + + + + + + + +Fielding, et al. Standards Track [Page 44] +
RFC 2616 HTTP/1.1 June 1999 + + +8.1.2 Overall Operation + + A significant difference between HTTP/1.1 and earlier versions of + HTTP is that persistent connections are the default behavior of any + HTTP connection. That is, unless otherwise indicated, the client + SHOULD assume that the server will maintain a persistent connection, + even after error responses from the server. + + Persistent connections provide a mechanism by which a client and a + server can signal the close of a TCP connection. This signaling takes + place using the Connection header field (section 14.10). Once a close + has been signaled, the client MUST NOT send any more requests on that + connection. + +8.1.2.1 Negotiation + + An HTTP/1.1 server MAY assume that a HTTP/1.1 client intends to + maintain a persistent connection unless a Connection header including + the connection-token "close" was sent in the request. If the server + chooses to close the connection immediately after sending the + response, it SHOULD send a Connection header including the + connection-token close. + + An HTTP/1.1 client MAY expect a connection to remain open, but would + decide to keep it open based on whether the response from a server + contains a Connection header with the connection-token close. In case + the client does not want to maintain a connection for more than that + request, it SHOULD send a Connection header including the + connection-token close. + + If either the client or the server sends the close token in the + Connection header, that request becomes the last one for the + connection. + + Clients and servers SHOULD NOT assume that a persistent connection is + maintained for HTTP versions less than 1.1 unless it is explicitly + signaled. See section 19.6.2 for more information on backward + compatibility with HTTP/1.0 clients. + + In order to remain persistent, all messages on the connection MUST + have a self-defined message length (i.e., one not defined by closure + of the connection), as described in section 4.4. + + + + + + + + + +Fielding, et al. Standards Track [Page 45] +
RFC 2616 HTTP/1.1 June 1999 + + +8.1.2.2 Pipelining + + A client that supports persistent connections MAY "pipeline" its + requests (i.e., send multiple requests without waiting for each + response). A server MUST send its responses to those requests in the + same order that the requests were received. + + Clients which assume persistent connections and pipeline immediately + after connection establishment SHOULD be prepared to retry their + connection if the first pipelined attempt fails. If a client does + such a retry, it MUST NOT pipeline before it knows the connection is + persistent. Clients MUST also be prepared to resend their requests if + the server closes the connection before sending all of the + corresponding responses. + + Clients SHOULD NOT pipeline requests using non-idempotent methods or + non-idempotent sequences of methods (see section 9.1.2). Otherwise, a + premature termination of the transport connection could lead to + indeterminate results. A client wishing to send a non-idempotent + request SHOULD wait to send that request until it has received the + response status for the previous request. + +8.1.3 Proxy Servers + + It is especially important that proxies correctly implement the + properties of the Connection header field as specified in section + 14.10. + + The proxy server MUST signal persistent connections separately with + its clients and the origin servers (or other proxy servers) that it + connects to. Each persistent connection applies to only one transport + link. + + A proxy server MUST NOT establish a HTTP/1.1 persistent connection + with an HTTP/1.0 client (but see RFC 2068 [33] for information and + discussion of the problems with the Keep-Alive header implemented by + many HTTP/1.0 clients). + +8.1.4 Practical Considerations + + Servers will usually have some time-out value beyond which they will + no longer maintain an inactive connection. Proxy servers might make + this a higher value since it is likely that the client will be making + more connections through the same server. The use of persistent + connections places no requirements on the length (or existence) of + this time-out for either the client or the server. + + + + + +Fielding, et al. Standards Track [Page 46] +
RFC 2616 HTTP/1.1 June 1999 + + + When a client or server wishes to time-out it SHOULD issue a graceful + close on the transport connection. Clients and servers SHOULD both + constantly watch for the other side of the transport close, and + respond to it as appropriate. If a client or server does not detect + the other side's close promptly it could cause unnecessary resource + drain on the network. + + A client, server, or proxy MAY close the transport connection at any + time. For example, a client might have started to send a new request + at the same time that the server has decided to close the "idle" + connection. From the server's point of view, the connection is being + closed while it was idle, but from the client's point of view, a + request is in progress. + + This means that clients, servers, and proxies MUST be able to recover + from asynchronous close events. Client software SHOULD reopen the + transport connection and retransmit the aborted sequence of requests + without user interaction so long as the request sequence is + idempotent (see section 9.1.2). Non-idempotent methods or sequences + MUST NOT be automatically retried, although user agents MAY offer a + human operator the choice of retrying the request(s). Confirmation by + user-agent software with semantic understanding of the application + MAY substitute for user confirmation. The automatic retry SHOULD NOT + be repeated if the second sequence of requests fails. + + Servers SHOULD always respond to at least one request per connection, + if at all possible. Servers SHOULD NOT close a connection in the + middle of transmitting a response, unless a network or client failure + is suspected. + + Clients that use persistent connections SHOULD limit the number of + simultaneous connections that they maintain to a given server. A + single-user client SHOULD NOT maintain more than 2 connections with + any server or proxy. A proxy SHOULD use up to 2*N connections to + another server or proxy, where N is the number of simultaneously + active users. These guidelines are intended to improve HTTP response + times and avoid congestion. + +8.2 Message Transmission Requirements + +8.2.1 Persistent Connections and Flow Control + + HTTP/1.1 servers SHOULD maintain persistent connections and use TCP's + flow control mechanisms to resolve temporary overloads, rather than + terminating connections with the expectation that clients will retry. + The latter technique can exacerbate network congestion. + + + + + +Fielding, et al. Standards Track [Page 47] +
RFC 2616 HTTP/1.1 June 1999 + + +8.2.2 Monitoring Connections for Error Status Messages + + An HTTP/1.1 (or later) client sending a message-body SHOULD monitor + the network connection for an error status while it is transmitting + the request. If the client sees an error status, it SHOULD + immediately cease transmitting the body. If the body is being sent + using a "chunked" encoding (section 3.6), a zero length chunk and + empty trailer MAY be used to prematurely mark the end of the message. + If the body was preceded by a Content-Length header, the client MUST + close the connection. + +8.2.3 Use of the 100 (Continue) Status + + The purpose of the 100 (Continue) status (see section 10.1.1) is to + allow a client that is sending a request message with a request body + to determine if the origin server is willing to accept the request + (based on the request headers) before the client sends the request + body. In some cases, it might either be inappropriate or highly + inefficient for the client to send the body if the server will reject + the message without looking at the body. + + Requirements for HTTP/1.1 clients: + + - If a client will wait for a 100 (Continue) response before + sending the request body, it MUST send an Expect request-header + field (section 14.20) with the "100-continue" expectation. + + - A client MUST NOT send an Expect request-header field (section + 14.20) with the "100-continue" expectation if it does not intend + to send a request body. + + Because of the presence of older implementations, the protocol allows + ambiguous situations in which a client may send "Expect: 100- + continue" without receiving either a 417 (Expectation Failed) status + or a 100 (Continue) status. Therefore, when a client sends this + header field to an origin server (possibly via a proxy) from which it + has never seen a 100 (Continue) status, the client SHOULD NOT wait + for an indefinite period before sending the request body. + + Requirements for HTTP/1.1 origin servers: + + - Upon receiving a request which includes an Expect request-header + field with the "100-continue" expectation, an origin server MUST + either respond with 100 (Continue) status and continue to read + from the input stream, or respond with a final status code. The + origin server MUST NOT wait for the request body before sending + the 100 (Continue) response. If it responds with a final status + code, it MAY close the transport connection or it MAY continue + + + +Fielding, et al. Standards Track [Page 48] +
RFC 2616 HTTP/1.1 June 1999 + + + to read and discard the rest of the request. It MUST NOT + perform the requested method if it returns a final status code. + + - An origin server SHOULD NOT send a 100 (Continue) response if + the request message does not include an Expect request-header + field with the "100-continue" expectation, and MUST NOT send a + 100 (Continue) response if such a request comes from an HTTP/1.0 + (or earlier) client. There is an exception to this rule: for + compatibility with RFC 2068, a server MAY send a 100 (Continue) + status in response to an HTTP/1.1 PUT or POST request that does + not include an Expect request-header field with the "100- + continue" expectation. This exception, the purpose of which is + to minimize any client processing delays associated with an + undeclared wait for 100 (Continue) status, applies only to + HTTP/1.1 requests, and not to requests with any other HTTP- + version value. + + - An origin server MAY omit a 100 (Continue) response if it has + already received some or all of the request body for the + corresponding request. + + - An origin server that sends a 100 (Continue) response MUST + ultimately send a final status code, once the request body is + received and processed, unless it terminates the transport + connection prematurely. + + - If an origin server receives a request that does not include an + Expect request-header field with the "100-continue" expectation, + the request includes a request body, and the server responds + with a final status code before reading the entire request body + from the transport connection, then the server SHOULD NOT close + the transport connection until it has read the entire request, + or until the client closes the connection. Otherwise, the client + might not reliably receive the response message. However, this + requirement is not be construed as preventing a server from + defending itself against denial-of-service attacks, or from + badly broken client implementations. + + Requirements for HTTP/1.1 proxies: + + - If a proxy receives a request that includes an Expect request- + header field with the "100-continue" expectation, and the proxy + either knows that the next-hop server complies with HTTP/1.1 or + higher, or does not know the HTTP version of the next-hop + server, it MUST forward the request, including the Expect header + field. + + + + + +Fielding, et al. Standards Track [Page 49] +
RFC 2616 HTTP/1.1 June 1999 + + + - If the proxy knows that the version of the next-hop server is + HTTP/1.0 or lower, it MUST NOT forward the request, and it MUST + respond with a 417 (Expectation Failed) status. + + - Proxies SHOULD maintain a cache recording the HTTP version + numbers received from recently-referenced next-hop servers. + + - A proxy MUST NOT forward a 100 (Continue) response if the + request message was received from an HTTP/1.0 (or earlier) + client and did not include an Expect request-header field with + the "100-continue" expectation. This requirement overrides the + general rule for forwarding of 1xx responses (see section 10.1). + +8.2.4 Client Behavior if Server Prematurely Closes Connection + + If an HTTP/1.1 client sends a request which includes a request body, + but which does not include an Expect request-header field with the + "100-continue" expectation, and if the client is not directly + connected to an HTTP/1.1 origin server, and if the client sees the + connection close before receiving any status from the server, the + client SHOULD retry the request. If the client does retry this + request, it MAY use the following "binary exponential backoff" + algorithm to be assured of obtaining a reliable response: + + 1. Initiate a new connection to the server + + 2. Transmit the request-headers + + 3. Initialize a variable R to the estimated round-trip time to the + server (e.g., based on the time it took to establish the + connection), or to a constant value of 5 seconds if the round- + trip time is not available. + + 4. Compute T = R * (2**N), where N is the number of previous + retries of this request. + + 5. Wait either for an error response from the server, or for T + seconds (whichever comes first) + + 6. If no error response is received, after T seconds transmit the + body of the request. + + 7. If client sees that the connection is closed prematurely, + repeat from step 1 until the request is accepted, an error + response is received, or the user becomes impatient and + terminates the retry process. + + + + + +Fielding, et al. Standards Track [Page 50] +
RFC 2616 HTTP/1.1 June 1999 + + + If at any point an error status is received, the client + + - SHOULD NOT continue and + + - SHOULD close the connection if it has not completed sending the + request message. + +9 Method Definitions + + The set of common methods for HTTP/1.1 is defined below. Although + this set can be expanded, additional methods cannot be assumed to + share the same semantics for separately extended clients and servers. + + The Host request-header field (section 14.23) MUST accompany all + HTTP/1.1 requests. + +9.1 Safe and Idempotent Methods + +9.1.1 Safe Methods + + Implementors should be aware that the software represents the user in + their interactions over the Internet, and should be careful to allow + the user to be aware of any actions they might take which may have an + unexpected significance to themselves or others. + + In particular, the convention has been established that the GET and + HEAD methods SHOULD NOT have the significance of taking an action + other than retrieval. These methods ought to be considered "safe". + This allows user agents to represent other methods, such as POST, PUT + and DELETE, in a special way, so that the user is made aware of the + fact that a possibly unsafe action is being requested. + + Naturally, it is not possible to ensure that the server does not + generate side-effects as a result of performing a GET request; in + fact, some dynamic resources consider that a feature. The important + distinction here is that the user did not request the side-effects, + so therefore cannot be held accountable for them. + +9.1.2 Idempotent Methods + + Methods can also have the property of "idempotence" in that (aside + from error or expiration issues) the side-effects of N > 0 identical + requests is the same as for a single request. The methods GET, HEAD, + PUT and DELETE share this property. Also, the methods OPTIONS and + TRACE SHOULD NOT have side effects, and so are inherently idempotent. + + + + + + +Fielding, et al. Standards Track [Page 51] +
RFC 2616 HTTP/1.1 June 1999 + + + However, it is possible that a sequence of several requests is non- + idempotent, even if all of the methods executed in that sequence are + idempotent. (A sequence is idempotent if a single execution of the + entire sequence always yields a result that is not changed by a + reexecution of all, or part, of that sequence.) For example, a + sequence is non-idempotent if its result depends on a value that is + later modified in the same sequence. + + A sequence that never has side effects is idempotent, by definition + (provided that no concurrent operations are being executed on the + same set of resources). + +9.2 OPTIONS + + The OPTIONS method represents a request for information about the + communication options available on the request/response chain + identified by the Request-URI. This method allows the client to + determine the options and/or requirements associated with a resource, + or the capabilities of a server, without implying a resource action + or initiating a resource retrieval. + + Responses to this method are not cacheable. + + If the OPTIONS request includes an entity-body (as indicated by the + presence of Content-Length or Transfer-Encoding), then the media type + MUST be indicated by a Content-Type field. Although this + specification does not define any use for such a body, future + extensions to HTTP might use the OPTIONS body to make more detailed + queries on the server. A server that does not support such an + extension MAY discard the request body. + + If the Request-URI is an asterisk ("*"), the OPTIONS request is + intended to apply to the server in general rather than to a specific + resource. Since a server's communication options typically depend on + the resource, the "*" request is only useful as a "ping" or "no-op" + type of method; it does nothing beyond allowing the client to test + the capabilities of the server. For example, this can be used to test + a proxy for HTTP/1.1 compliance (or lack thereof). + + If the Request-URI is not an asterisk, the OPTIONS request applies + only to the options that are available when communicating with that + resource. + + A 200 response SHOULD include any header fields that indicate + optional features implemented by the server and applicable to that + resource (e.g., Allow), possibly including extensions not defined by + this specification. The response body, if any, SHOULD also include + information about the communication options. The format for such a + + + +Fielding, et al. Standards Track [Page 52] +
RFC 2616 HTTP/1.1 June 1999 + + + body is not defined by this specification, but might be defined by + future extensions to HTTP. Content negotiation MAY be used to select + the appropriate response format. If no response body is included, the + response MUST include a Content-Length field with a field-value of + "0". + + The Max-Forwards request-header field MAY be used to target a + specific proxy in the request chain. When a proxy receives an OPTIONS + request on an absoluteURI for which request forwarding is permitted, + the proxy MUST check for a Max-Forwards field. If the Max-Forwards + field-value is zero ("0"), the proxy MUST NOT forward the message; + instead, the proxy SHOULD respond with its own communication options. + If the Max-Forwards field-value is an integer greater than zero, the + proxy MUST decrement the field-value when it forwards the request. If + no Max-Forwards field is present in the request, then the forwarded + request MUST NOT include a Max-Forwards field. + +9.3 GET + + The GET method means retrieve whatever information (in the form of an + entity) is identified by the Request-URI. If the Request-URI refers + to a data-producing process, it is the produced data which shall be + returned as the entity in the response and not the source text of the + process, unless that text happens to be the output of the process. + + The semantics of the GET method change to a "conditional GET" if the + request message includes an If-Modified-Since, If-Unmodified-Since, + If-Match, If-None-Match, or If-Range header field. A conditional GET + method requests that the entity be transferred only under the + circumstances described by the conditional header field(s). The + conditional GET method is intended to reduce unnecessary network + usage by allowing cached entities to be refreshed without requiring + multiple requests or transferring data already held by the client. + + The semantics of the GET method change to a "partial GET" if the + request message includes a Range header field. A partial GET requests + that only part of the entity be transferred, as described in section + 14.35. The partial GET method is intended to reduce unnecessary + network usage by allowing partially-retrieved entities to be + completed without transferring data already held by the client. + + The response to a GET request is cacheable if and only if it meets + the requirements for HTTP caching described in section 13. + + See section 15.1.3 for security considerations when used for forms. + + + + + + +Fielding, et al. Standards Track [Page 53] +
RFC 2616 HTTP/1.1 June 1999 + + +9.4 HEAD + + The HEAD method is identical to GET except that the server MUST NOT + return a message-body in the response. The metainformation contained + in the HTTP headers in response to a HEAD request SHOULD be identical + to the information sent in response to a GET request. This method can + be used for obtaining metainformation about the entity implied by the + request without transferring the entity-body itself. This method is + often used for testing hypertext links for validity, accessibility, + and recent modification. + + The response to a HEAD request MAY be cacheable in the sense that the + information contained in the response MAY be used to update a + previously cached entity from that resource. If the new field values + indicate that the cached entity differs from the current entity (as + would be indicated by a change in Content-Length, Content-MD5, ETag + or Last-Modified), then the cache MUST treat the cache entry as + stale. + +9.5 POST + + The POST method is used to request that the origin server accept the + entity enclosed in the request as a new subordinate of the resource + identified by the Request-URI in the Request-Line. POST is designed + to allow a uniform method to cover the following functions: + + - Annotation of existing resources; + + - Posting a message to a bulletin board, newsgroup, mailing list, + or similar group of articles; + + - Providing a block of data, such as the result of submitting a + form, to a data-handling process; + + - Extending a database through an append operation. + + The actual function performed by the POST method is determined by the + server and is usually dependent on the Request-URI. The posted entity + is subordinate to that URI in the same way that a file is subordinate + to a directory containing it, a news article is subordinate to a + newsgroup to which it is posted, or a record is subordinate to a + database. + + The action performed by the POST method might not result in a + resource that can be identified by a URI. In this case, either 200 + (OK) or 204 (No Content) is the appropriate response status, + depending on whether or not the response includes an entity that + describes the result. + + + +Fielding, et al. Standards Track [Page 54] +
RFC 2616 HTTP/1.1 June 1999 + + + If a resource has been created on the origin server, the response + SHOULD be 201 (Created) and contain an entity which describes the + status of the request and refers to the new resource, and a Location + header (see section 14.30). + + Responses to this method are not cacheable, unless the response + includes appropriate Cache-Control or Expires header fields. However, + the 303 (See Other) response can be used to direct the user agent to + retrieve a cacheable resource. + + POST requests MUST obey the message transmission requirements set out + in section 8.2. + + See section 15.1.3 for security considerations. + +9.6 PUT + + The PUT method requests that the enclosed entity be stored under the + supplied Request-URI. If the Request-URI refers to an already + existing resource, the enclosed entity SHOULD be considered as a + modified version of the one residing on the origin server. If the + Request-URI does not point to an existing resource, and that URI is + capable of being defined as a new resource by the requesting user + agent, the origin server can create the resource with that URI. If a + new resource is created, the origin server MUST inform the user agent + via the 201 (Created) response. If an existing resource is modified, + either the 200 (OK) or 204 (No Content) response codes SHOULD be sent + to indicate successful completion of the request. If the resource + could not be created or modified with the Request-URI, an appropriate + error response SHOULD be given that reflects the nature of the + problem. The recipient of the entity MUST NOT ignore any Content-* + (e.g. Content-Range) headers that it does not understand or implement + and MUST return a 501 (Not Implemented) response in such cases. + + If the request passes through a cache and the Request-URI identifies + one or more currently cached entities, those entries SHOULD be + treated as stale. Responses to this method are not cacheable. + + The fundamental difference between the POST and PUT requests is + reflected in the different meaning of the Request-URI. The URI in a + POST request identifies the resource that will handle the enclosed + entity. That resource might be a data-accepting process, a gateway to + some other protocol, or a separate entity that accepts annotations. + In contrast, the URI in a PUT request identifies the entity enclosed + with the request -- the user agent knows what URI is intended and the + server MUST NOT attempt to apply the request to some other resource. + If the server desires that the request be applied to a different URI, + + + + +Fielding, et al. Standards Track [Page 55] +
RFC 2616 HTTP/1.1 June 1999 + + + it MUST send a 301 (Moved Permanently) response; the user agent MAY + then make its own decision regarding whether or not to redirect the + request. + + A single resource MAY be identified by many different URIs. For + example, an article might have a URI for identifying "the current + version" which is separate from the URI identifying each particular + version. In this case, a PUT request on a general URI might result in + several other URIs being defined by the origin server. + + HTTP/1.1 does not define how a PUT method affects the state of an + origin server. + + PUT requests MUST obey the message transmission requirements set out + in section 8.2. + + Unless otherwise specified for a particular entity-header, the + entity-headers in the PUT request SHOULD be applied to the resource + created or modified by the PUT. + +9.7 DELETE + + The DELETE method requests that the origin server delete the resource + identified by the Request-URI. This method MAY be overridden by human + intervention (or other means) on the origin server. The client cannot + be guaranteed that the operation has been carried out, even if the + status code returned from the origin server indicates that the action + has been completed successfully. However, the server SHOULD NOT + indicate success unless, at the time the response is given, it + intends to delete the resource or move it to an inaccessible + location. + + A successful response SHOULD be 200 (OK) if the response includes an + entity describing the status, 202 (Accepted) if the action has not + yet been enacted, or 204 (No Content) if the action has been enacted + but the response does not include an entity. + + If the request passes through a cache and the Request-URI identifies + one or more currently cached entities, those entries SHOULD be + treated as stale. Responses to this method are not cacheable. + +9.8 TRACE + + The TRACE method is used to invoke a remote, application-layer loop- + back of the request message. The final recipient of the request + SHOULD reflect the message received back to the client as the + entity-body of a 200 (OK) response. The final recipient is either the + + + + +Fielding, et al. Standards Track [Page 56] +
RFC 2616 HTTP/1.1 June 1999 + + + origin server or the first proxy or gateway to receive a Max-Forwards + value of zero (0) in the request (see section 14.31). A TRACE request + MUST NOT include an entity. + + TRACE allows the client to see what is being received at the other + end of the request chain and use that data for testing or diagnostic + information. The value of the Via header field (section 14.45) is of + particular interest, since it acts as a trace of the request chain. + Use of the Max-Forwards header field allows the client to limit the + length of the request chain, which is useful for testing a chain of + proxies forwarding messages in an infinite loop. + + If the request is valid, the response SHOULD contain the entire + request message in the entity-body, with a Content-Type of + "message/http". Responses to this method MUST NOT be cached. + +9.9 CONNECT + + This specification reserves the method name CONNECT for use with a + proxy that can dynamically switch to being a tunnel (e.g. SSL + tunneling [44]). + +10 Status Code Definitions + + Each Status-Code is described below, including a description of which + method(s) it can follow and any metainformation required in the + response. + +10.1 Informational 1xx + + This class of status code indicates a provisional response, + consisting only of the Status-Line and optional headers, and is + terminated by an empty line. There are no required headers for this + class of status code. Since HTTP/1.0 did not define any 1xx status + codes, servers MUST NOT send a 1xx response to an HTTP/1.0 client + except under experimental conditions. + + A client MUST be prepared to accept one or more 1xx status responses + prior to a regular response, even if the client does not expect a 100 + (Continue) status message. Unexpected 1xx status responses MAY be + ignored by a user agent. + + Proxies MUST forward 1xx responses, unless the connection between the + proxy and its client has been closed, or unless the proxy itself + requested the generation of the 1xx response. (For example, if a + + + + + + +Fielding, et al. Standards Track [Page 57] +
RFC 2616 HTTP/1.1 June 1999 + + + proxy adds a "Expect: 100-continue" field when it forwards a request, + then it need not forward the corresponding 100 (Continue) + response(s).) + +10.1.1 100 Continue + + The client SHOULD continue with its request. This interim response is + used to inform the client that the initial part of the request has + been received and has not yet been rejected by the server. The client + SHOULD continue by sending the remainder of the request or, if the + request has already been completed, ignore this response. The server + MUST send a final response after the request has been completed. See + section 8.2.3 for detailed discussion of the use and handling of this + status code. + +10.1.2 101 Switching Protocols + + The server understands and is willing to comply with the client's + request, via the Upgrade message header field (section 14.42), for a + change in the application protocol being used on this connection. The + server will switch protocols to those defined by the response's + Upgrade header field immediately after the empty line which + terminates the 101 response. + + The protocol SHOULD be switched only when it is advantageous to do + so. For example, switching to a newer version of HTTP is advantageous + over older versions, and switching to a real-time, synchronous + protocol might be advantageous when delivering resources that use + such features. + +10.2 Successful 2xx + + This class of status code indicates that the client's request was + successfully received, understood, and accepted. + +10.2.1 200 OK + + The request has succeeded. The information returned with the response + is dependent on the method used in the request, for example: + + GET an entity corresponding to the requested resource is sent in + the response; + + HEAD the entity-header fields corresponding to the requested + resource are sent in the response without any message-body; + + POST an entity describing or containing the result of the action; + + + + +Fielding, et al. Standards Track [Page 58] +
RFC 2616 HTTP/1.1 June 1999 + + + TRACE an entity containing the request message as received by the + end server. + +10.2.2 201 Created + + The request has been fulfilled and resulted in a new resource being + created. The newly created resource can be referenced by the URI(s) + returned in the entity of the response, with the most specific URI + for the resource given by a Location header field. The response + SHOULD include an entity containing a list of resource + characteristics and location(s) from which the user or user agent can + choose the one most appropriate. The entity format is specified by + the media type given in the Content-Type header field. The origin + server MUST create the resource before returning the 201 status code. + If the action cannot be carried out immediately, the server SHOULD + respond with 202 (Accepted) response instead. + + A 201 response MAY contain an ETag response header field indicating + the current value of the entity tag for the requested variant just + created, see section 14.19. + +10.2.3 202 Accepted + + The request has been accepted for processing, but the processing has + not been completed. The request might or might not eventually be + acted upon, as it might be disallowed when processing actually takes + place. There is no facility for re-sending a status code from an + asynchronous operation such as this. + + The 202 response is intentionally non-committal. Its purpose is to + allow a server to accept a request for some other process (perhaps a + batch-oriented process that is only run once per day) without + requiring that the user agent's connection to the server persist + until the process is completed. The entity returned with this + response SHOULD include an indication of the request's current status + and either a pointer to a status monitor or some estimate of when the + user can expect the request to be fulfilled. + +10.2.4 203 Non-Authoritative Information + + The returned metainformation in the entity-header is not the + definitive set as available from the origin server, but is gathered + from a local or a third-party copy. The set presented MAY be a subset + or superset of the original version. For example, including local + annotation information about the resource might result in a superset + of the metainformation known by the origin server. Use of this + response code is not required and is only appropriate when the + response would otherwise be 200 (OK). + + + +Fielding, et al. Standards Track [Page 59] +
RFC 2616 HTTP/1.1 June 1999 + + +10.2.5 204 No Content + + The server has fulfilled the request but does not need to return an + entity-body, and might want to return updated metainformation. The + response MAY include new or updated metainformation in the form of + entity-headers, which if present SHOULD be associated with the + requested variant. + + If the client is a user agent, it SHOULD NOT change its document view + from that which caused the request to be sent. This response is + primarily intended to allow input for actions to take place without + causing a change to the user agent's active document view, although + any new or updated metainformation SHOULD be applied to the document + currently in the user agent's active view. + + The 204 response MUST NOT include a message-body, and thus is always + terminated by the first empty line after the header fields. + +10.2.6 205 Reset Content + + The server has fulfilled the request and the user agent SHOULD reset + the document view which caused the request to be sent. This response + is primarily intended to allow input for actions to take place via + user input, followed by a clearing of the form in which the input is + given so that the user can easily initiate another input action. The + response MUST NOT include an entity. + +10.2.7 206 Partial Content + + The server has fulfilled the partial GET request for the resource. + The request MUST have included a Range header field (section 14.35) + indicating the desired range, and MAY have included an If-Range + header field (section 14.27) to make the request conditional. + + The response MUST include the following header fields: + + - Either a Content-Range header field (section 14.16) indicating + the range included with this response, or a multipart/byteranges + Content-Type including Content-Range fields for each part. If a + Content-Length header field is present in the response, its + value MUST match the actual number of OCTETs transmitted in the + message-body. + + - Date + + - ETag and/or Content-Location, if the header would have been sent + in a 200 response to the same request + + + + +Fielding, et al. Standards Track [Page 60] +
RFC 2616 HTTP/1.1 June 1999 + + + - Expires, Cache-Control, and/or Vary, if the field-value might + differ from that sent in any previous response for the same + variant + + If the 206 response is the result of an If-Range request that used a + strong cache validator (see section 13.3.3), the response SHOULD NOT + include other entity-headers. If the response is the result of an + If-Range request that used a weak validator, the response MUST NOT + include other entity-headers; this prevents inconsistencies between + cached entity-bodies and updated headers. Otherwise, the response + MUST include all of the entity-headers that would have been returned + with a 200 (OK) response to the same request. + + A cache MUST NOT combine a 206 response with other previously cached + content if the ETag or Last-Modified headers do not match exactly, + see 13.5.4. + + A cache that does not support the Range and Content-Range headers + MUST NOT cache 206 (Partial) responses. + +10.3 Redirection 3xx + + This class of status code indicates that further action needs to be + taken by the user agent in order to fulfill the request. The action + required MAY be carried out by the user agent without interaction + with the user if and only if the method used in the second request is + GET or HEAD. A client SHOULD detect infinite redirection loops, since + such loops generate network traffic for each redirection. + + Note: previous versions of this specification recommended a + maximum of five redirections. Content developers should be aware + that there might be clients that implement such a fixed + limitation. + +10.3.1 300 Multiple Choices + + The requested resource corresponds to any one of a set of + representations, each with its own specific location, and agent- + driven negotiation information (section 12) is being provided so that + the user (or user agent) can select a preferred representation and + redirect its request to that location. + + Unless it was a HEAD request, the response SHOULD include an entity + containing a list of resource characteristics and location(s) from + which the user or user agent can choose the one most appropriate. The + entity format is specified by the media type given in the Content- + Type header field. Depending upon the format and the capabilities of + + + + +Fielding, et al. Standards Track [Page 61] +
RFC 2616 HTTP/1.1 June 1999 + + + the user agent, selection of the most appropriate choice MAY be + performed automatically. However, this specification does not define + any standard for such automatic selection. + + If the server has a preferred choice of representation, it SHOULD + include the specific URI for that representation in the Location + field; user agents MAY use the Location field value for automatic + redirection. This response is cacheable unless indicated otherwise. + +10.3.2 301 Moved Permanently + + The requested resource has been assigned a new permanent URI and any + future references to this resource SHOULD use one of the returned + URIs. Clients with link editing capabilities ought to automatically + re-link references to the Request-URI to one or more of the new + references returned by the server, where possible. This response is + cacheable unless indicated otherwise. + + The new permanent URI SHOULD be given by the Location field in the + response. Unless the request method was HEAD, the entity of the + response SHOULD contain a short hypertext note with a hyperlink to + the new URI(s). + + If the 301 status code is received in response to a request other + than GET or HEAD, the user agent MUST NOT automatically redirect the + request unless it can be confirmed by the user, since this might + change the conditions under which the request was issued. + + Note: When automatically redirecting a POST request after + receiving a 301 status code, some existing HTTP/1.0 user agents + will erroneously change it into a GET request. + +10.3.3 302 Found + + The requested resource resides temporarily under a different URI. + Since the redirection might be altered on occasion, the client SHOULD + continue to use the Request-URI for future requests. This response + is only cacheable if indicated by a Cache-Control or Expires header + field. + + The temporary URI SHOULD be given by the Location field in the + response. Unless the request method was HEAD, the entity of the + response SHOULD contain a short hypertext note with a hyperlink to + the new URI(s). + + + + + + + +Fielding, et al. Standards Track [Page 62] +
RFC 2616 HTTP/1.1 June 1999 + + + If the 302 status code is received in response to a request other + than GET or HEAD, the user agent MUST NOT automatically redirect the + request unless it can be confirmed by the user, since this might + change the conditions under which the request was issued. + + Note: RFC 1945 and RFC 2068 specify that the client is not allowed + to change the method on the redirected request. However, most + existing user agent implementations treat 302 as if it were a 303 + response, performing a GET on the Location field-value regardless + of the original request method. The status codes 303 and 307 have + been added for servers that wish to make unambiguously clear which + kind of reaction is expected of the client. + +10.3.4 303 See Other + + The response to the request can be found under a different URI and + SHOULD be retrieved using a GET method on that resource. This method + exists primarily to allow the output of a POST-activated script to + redirect the user agent to a selected resource. The new URI is not a + substitute reference for the originally requested resource. The 303 + response MUST NOT be cached, but the response to the second + (redirected) request might be cacheable. + + The different URI SHOULD be given by the Location field in the + response. Unless the request method was HEAD, the entity of the + response SHOULD contain a short hypertext note with a hyperlink to + the new URI(s). + + Note: Many pre-HTTP/1.1 user agents do not understand the 303 + status. When interoperability with such clients is a concern, the + 302 status code may be used instead, since most user agents react + to a 302 response as described here for 303. + +10.3.5 304 Not Modified + + If the client has performed a conditional GET request and access is + allowed, but the document has not been modified, the server SHOULD + respond with this status code. The 304 response MUST NOT contain a + message-body, and thus is always terminated by the first empty line + after the header fields. + + The response MUST include the following header fields: + + - Date, unless its omission is required by section 14.18.1 + + + + + + + +Fielding, et al. Standards Track [Page 63] +
RFC 2616 HTTP/1.1 June 1999 + + + If a clockless origin server obeys these rules, and proxies and + clients add their own Date to any response received without one (as + already specified by [RFC 2068], section 14.19), caches will operate + correctly. + + - ETag and/or Content-Location, if the header would have been sent + in a 200 response to the same request + + - Expires, Cache-Control, and/or Vary, if the field-value might + differ from that sent in any previous response for the same + variant + + If the conditional GET used a strong cache validator (see section + 13.3.3), the response SHOULD NOT include other entity-headers. + Otherwise (i.e., the conditional GET used a weak validator), the + response MUST NOT include other entity-headers; this prevents + inconsistencies between cached entity-bodies and updated headers. + + If a 304 response indicates an entity not currently cached, then the + cache MUST disregard the response and repeat the request without the + conditional. + + If a cache uses a received 304 response to update a cache entry, the + cache MUST update the entry to reflect any new field values given in + the response. + +10.3.6 305 Use Proxy + + The requested resource MUST be accessed through the proxy given by + the Location field. The Location field gives the URI of the proxy. + The recipient is expected to repeat this single request via the + proxy. 305 responses MUST only be generated by origin servers. + + Note: RFC 2068 was not clear that 305 was intended to redirect a + single request, and to be generated by origin servers only. Not + observing these limitations has significant security consequences. + +10.3.7 306 (Unused) + + The 306 status code was used in a previous version of the + specification, is no longer used, and the code is reserved. + + + + + + + + + + +Fielding, et al. Standards Track [Page 64] +
RFC 2616 HTTP/1.1 June 1999 + + +10.3.8 307 Temporary Redirect + + The requested resource resides temporarily under a different URI. + Since the redirection MAY be altered on occasion, the client SHOULD + continue to use the Request-URI for future requests. This response + is only cacheable if indicated by a Cache-Control or Expires header + field. + + The temporary URI SHOULD be given by the Location field in the + response. Unless the request method was HEAD, the entity of the + response SHOULD contain a short hypertext note with a hyperlink to + the new URI(s) , since many pre-HTTP/1.1 user agents do not + understand the 307 status. Therefore, the note SHOULD contain the + information necessary for a user to repeat the original request on + the new URI. + + If the 307 status code is received in response to a request other + than GET or HEAD, the user agent MUST NOT automatically redirect the + request unless it can be confirmed by the user, since this might + change the conditions under which the request was issued. + +10.4 Client Error 4xx + + The 4xx class of status code is intended for cases in which the + client seems to have erred. Except when responding to a HEAD request, + the server SHOULD include an entity containing an explanation of the + error situation, and whether it is a temporary or permanent + condition. These status codes are applicable to any request method. + User agents SHOULD display any included entity to the user. + + If the client is sending data, a server implementation using TCP + SHOULD be careful to ensure that the client acknowledges receipt of + the packet(s) containing the response, before the server closes the + input connection. If the client continues sending data to the server + after the close, the server's TCP stack will send a reset packet to + the client, which may erase the client's unacknowledged input buffers + before they can be read and interpreted by the HTTP application. + +10.4.1 400 Bad Request + + The request could not be understood by the server due to malformed + syntax. The client SHOULD NOT repeat the request without + modifications. + + + + + + + + +Fielding, et al. Standards Track [Page 65] +
RFC 2616 HTTP/1.1 June 1999 + + +10.4.2 401 Unauthorized + + The request requires user authentication. The response MUST include a + WWW-Authenticate header field (section 14.47) containing a challenge + applicable to the requested resource. The client MAY repeat the + request with a suitable Authorization header field (section 14.8). If + the request already included Authorization credentials, then the 401 + response indicates that authorization has been refused for those + credentials. If the 401 response contains the same challenge as the + prior response, and the user agent has already attempted + authentication at least once, then the user SHOULD be presented the + entity that was given in the response, since that entity might + include relevant diagnostic information. HTTP access authentication + is explained in "HTTP Authentication: Basic and Digest Access + Authentication" [43]. + +10.4.3 402 Payment Required + + This code is reserved for future use. + +10.4.4 403 Forbidden + + The server understood the request, but is refusing to fulfill it. + Authorization will not help and the request SHOULD NOT be repeated. + If the request method was not HEAD and the server wishes to make + public why the request has not been fulfilled, it SHOULD describe the + reason for the refusal in the entity. If the server does not wish to + make this information available to the client, the status code 404 + (Not Found) can be used instead. + +10.4.5 404 Not Found + + The server has not found anything matching the Request-URI. No + indication is given of whether the condition is temporary or + permanent. The 410 (Gone) status code SHOULD be used if the server + knows, through some internally configurable mechanism, that an old + resource is permanently unavailable and has no forwarding address. + This status code is commonly used when the server does not wish to + reveal exactly why the request has been refused, or when no other + response is applicable. + +10.4.6 405 Method Not Allowed + + The method specified in the Request-Line is not allowed for the + resource identified by the Request-URI. The response MUST include an + Allow header containing a list of valid methods for the requested + resource. + + + + +Fielding, et al. Standards Track [Page 66] +
RFC 2616 HTTP/1.1 June 1999 + + +10.4.7 406 Not Acceptable + + The resource identified by the request is only capable of generating + response entities which have content characteristics not acceptable + according to the accept headers sent in the request. + + Unless it was a HEAD request, the response SHOULD include an entity + containing a list of available entity characteristics and location(s) + from which the user or user agent can choose the one most + appropriate. The entity format is specified by the media type given + in the Content-Type header field. Depending upon the format and the + capabilities of the user agent, selection of the most appropriate + choice MAY be performed automatically. However, this specification + does not define any standard for such automatic selection. + + Note: HTTP/1.1 servers are allowed to return responses which are + not acceptable according to the accept headers sent in the + request. In some cases, this may even be preferable to sending a + 406 response. User agents are encouraged to inspect the headers of + an incoming response to determine if it is acceptable. + + If the response could be unacceptable, a user agent SHOULD + temporarily stop receipt of more data and query the user for a + decision on further actions. + +10.4.8 407 Proxy Authentication Required + + This code is similar to 401 (Unauthorized), but indicates that the + client must first authenticate itself with the proxy. The proxy MUST + return a Proxy-Authenticate header field (section 14.33) containing a + challenge applicable to the proxy for the requested resource. The + client MAY repeat the request with a suitable Proxy-Authorization + header field (section 14.34). HTTP access authentication is explained + in "HTTP Authentication: Basic and Digest Access Authentication" + [43]. + +10.4.9 408 Request Timeout + + The client did not produce a request within the time that the server + was prepared to wait. The client MAY repeat the request without + modifications at any later time. + +10.4.10 409 Conflict + + The request could not be completed due to a conflict with the current + state of the resource. This code is only allowed in situations where + it is expected that the user might be able to resolve the conflict + and resubmit the request. The response body SHOULD include enough + + + +Fielding, et al. Standards Track [Page 67] +
RFC 2616 HTTP/1.1 June 1999 + + + information for the user to recognize the source of the conflict. + Ideally, the response entity would include enough information for the + user or user agent to fix the problem; however, that might not be + possible and is not required. + + Conflicts are most likely to occur in response to a PUT request. For + example, if versioning were being used and the entity being PUT + included changes to a resource which conflict with those made by an + earlier (third-party) request, the server might use the 409 response + to indicate that it can't complete the request. In this case, the + response entity would likely contain a list of the differences + between the two versions in a format defined by the response + Content-Type. + +10.4.11 410 Gone + + The requested resource is no longer available at the server and no + forwarding address is known. This condition is expected to be + considered permanent. Clients with link editing capabilities SHOULD + delete references to the Request-URI after user approval. If the + server does not know, or has no facility to determine, whether or not + the condition is permanent, the status code 404 (Not Found) SHOULD be + used instead. This response is cacheable unless indicated otherwise. + + The 410 response is primarily intended to assist the task of web + maintenance by notifying the recipient that the resource is + intentionally unavailable and that the server owners desire that + remote links to that resource be removed. Such an event is common for + limited-time, promotional services and for resources belonging to + individuals no longer working at the server's site. It is not + necessary to mark all permanently unavailable resources as "gone" or + to keep the mark for any length of time -- that is left to the + discretion of the server owner. + +10.4.12 411 Length Required + + The server refuses to accept the request without a defined Content- + Length. The client MAY repeat the request if it adds a valid + Content-Length header field containing the length of the message-body + in the request message. + +10.4.13 412 Precondition Failed + + The precondition given in one or more of the request-header fields + evaluated to false when it was tested on the server. This response + code allows the client to place preconditions on the current resource + metainformation (header field data) and thus prevent the requested + method from being applied to a resource other than the one intended. + + + +Fielding, et al. Standards Track [Page 68] +
RFC 2616 HTTP/1.1 June 1999 + + +10.4.14 413 Request Entity Too Large + + The server is refusing to process a request because the request + entity is larger than the server is willing or able to process. The + server MAY close the connection to prevent the client from continuing + the request. + + If the condition is temporary, the server SHOULD include a Retry- + After header field to indicate that it is temporary and after what + time the client MAY try again. + +10.4.15 414 Request-URI Too Long + + The server is refusing to service the request because the Request-URI + is longer than the server is willing to interpret. This rare + condition is only likely to occur when a client has improperly + converted a POST request to a GET request with long query + information, when the client has descended into a URI "black hole" of + redirection (e.g., a redirected URI prefix that points to a suffix of + itself), or when the server is under attack by a client attempting to + exploit security holes present in some servers using fixed-length + buffers for reading or manipulating the Request-URI. + +10.4.16 415 Unsupported Media Type + + The server is refusing to service the request because the entity of + the request is in a format not supported by the requested resource + for the requested method. + +10.4.17 416 Requested Range Not Satisfiable + + A server SHOULD return a response with this status code if a request + included a Range request-header field (section 14.35), and none of + the range-specifier values in this field overlap the current extent + of the selected resource, and the request did not include an If-Range + request-header field. (For byte-ranges, this means that the first- + byte-pos of all of the byte-range-spec values were greater than the + current length of the selected resource.) + + When this status code is returned for a byte-range request, the + response SHOULD include a Content-Range entity-header field + specifying the current length of the selected resource (see section + 14.16). This response MUST NOT use the multipart/byteranges content- + type. + + + + + + + +Fielding, et al. Standards Track [Page 69] +
RFC 2616 HTTP/1.1 June 1999 + + +10.4.18 417 Expectation Failed + + The expectation given in an Expect request-header field (see section + 14.20) could not be met by this server, or, if the server is a proxy, + the server has unambiguous evidence that the request could not be met + by the next-hop server. + +10.5 Server Error 5xx + + Response status codes beginning with the digit "5" indicate cases in + which the server is aware that it has erred or is incapable of + performing the request. Except when responding to a HEAD request, the + server SHOULD include an entity containing an explanation of the + error situation, and whether it is a temporary or permanent + condition. User agents SHOULD display any included entity to the + user. These response codes are applicable to any request method. + +10.5.1 500 Internal Server Error + + The server encountered an unexpected condition which prevented it + from fulfilling the request. + +10.5.2 501 Not Implemented + + The server does not support the functionality required to fulfill the + request. This is the appropriate response when the server does not + recognize the request method and is not capable of supporting it for + any resource. + +10.5.3 502 Bad Gateway + + The server, while acting as a gateway or proxy, received an invalid + response from the upstream server it accessed in attempting to + fulfill the request. + +10.5.4 503 Service Unavailable + + The server is currently unable to handle the request due to a + temporary overloading or maintenance of the server. The implication + is that this is a temporary condition which will be alleviated after + some delay. If known, the length of the delay MAY be indicated in a + Retry-After header. If no Retry-After is given, the client SHOULD + handle the response as it would for a 500 response. + + Note: The existence of the 503 status code does not imply that a + server must use it when becoming overloaded. Some servers may wish + to simply refuse the connection. + + + + +Fielding, et al. Standards Track [Page 70] +
RFC 2616 HTTP/1.1 June 1999 + + +10.5.5 504 Gateway Timeout + + The server, while acting as a gateway or proxy, did not receive a + timely response from the upstream server specified by the URI (e.g. + HTTP, FTP, LDAP) or some other auxiliary server (e.g. DNS) it needed + to access in attempting to complete the request. + + Note: Note to implementors: some deployed proxies are known to + return 400 or 500 when DNS lookups time out. + +10.5.6 505 HTTP Version Not Supported + + The server does not support, or refuses to support, the HTTP protocol + version that was used in the request message. The server is + indicating that it is unable or unwilling to complete the request + using the same major version as the client, as described in section + 3.1, other than with this error message. The response SHOULD contain + an entity describing why that version is not supported and what other + protocols are supported by that server. + +11 Access Authentication + + HTTP provides several OPTIONAL challenge-response authentication + mechanisms which can be used by a server to challenge a client + request and by a client to provide authentication information. The + general framework for access authentication, and the specification of + "basic" and "digest" authentication, are specified in "HTTP + Authentication: Basic and Digest Access Authentication" [43]. This + specification adopts the definitions of "challenge" and "credentials" + from that specification. + +12 Content Negotiation + + Most HTTP responses include an entity which contains information for + interpretation by a human user. Naturally, it is desirable to supply + the user with the "best available" entity corresponding to the + request. Unfortunately for servers and caches, not all users have the + same preferences for what is "best," and not all user agents are + equally capable of rendering all entity types. For that reason, HTTP + has provisions for several mechanisms for "content negotiation" -- + the process of selecting the best representation for a given response + when there are multiple representations available. + + Note: This is not called "format negotiation" because the + alternate representations may be of the same media type, but use + different capabilities of that type, be in different languages, + etc. + + + + +Fielding, et al. Standards Track [Page 71] +
RFC 2616 HTTP/1.1 June 1999 + + + Any response containing an entity-body MAY be subject to negotiation, + including error responses. + + There are two kinds of content negotiation which are possible in + HTTP: server-driven and agent-driven negotiation. These two kinds of + negotiation are orthogonal and thus may be used separately or in + combination. One method of combination, referred to as transparent + negotiation, occurs when a cache uses the agent-driven negotiation + information provided by the origin server in order to provide + server-driven negotiation for subsequent requests. + +12.1 Server-driven Negotiation + + If the selection of the best representation for a response is made by + an algorithm located at the server, it is called server-driven + negotiation. Selection is based on the available representations of + the response (the dimensions over which it can vary; e.g. language, + content-coding, etc.) and the contents of particular header fields in + the request message or on other information pertaining to the request + (such as the network address of the client). + + Server-driven negotiation is advantageous when the algorithm for + selecting from among the available representations is difficult to + describe to the user agent, or when the server desires to send its + "best guess" to the client along with the first response (hoping to + avoid the round-trip delay of a subsequent request if the "best + guess" is good enough for the user). In order to improve the server's + guess, the user agent MAY include request header fields (Accept, + Accept-Language, Accept-Encoding, etc.) which describe its + preferences for such a response. + + Server-driven negotiation has disadvantages: + + 1. It is impossible for the server to accurately determine what + might be "best" for any given user, since that would require + complete knowledge of both the capabilities of the user agent + and the intended use for the response (e.g., does the user want + to view it on screen or print it on paper?). + + 2. Having the user agent describe its capabilities in every + request can be both very inefficient (given that only a small + percentage of responses have multiple representations) and a + potential violation of the user's privacy. + + 3. It complicates the implementation of an origin server and the + algorithms for generating responses to a request. + + + + + +Fielding, et al. Standards Track [Page 72] +
RFC 2616 HTTP/1.1 June 1999 + + + 4. It may limit a public cache's ability to use the same response + for multiple user's requests. + + HTTP/1.1 includes the following request-header fields for enabling + server-driven negotiation through description of user agent + capabilities and user preferences: Accept (section 14.1), Accept- + Charset (section 14.2), Accept-Encoding (section 14.3), Accept- + Language (section 14.4), and User-Agent (section 14.43). However, an + origin server is not limited to these dimensions and MAY vary the + response based on any aspect of the request, including information + outside the request-header fields or within extension header fields + not defined by this specification. + + The Vary header field can be used to express the parameters the + server uses to select a representation that is subject to server- + driven negotiation. See section 13.6 for use of the Vary header field + by caches and section 14.44 for use of the Vary header field by + servers. + +12.2 Agent-driven Negotiation + + With agent-driven negotiation, selection of the best representation + for a response is performed by the user agent after receiving an + initial response from the origin server. Selection is based on a list + of the available representations of the response included within the + header fields or entity-body of the initial response, with each + representation identified by its own URI. Selection from among the + representations may be performed automatically (if the user agent is + capable of doing so) or manually by the user selecting from a + generated (possibly hypertext) menu. + + Agent-driven negotiation is advantageous when the response would vary + over commonly-used dimensions (such as type, language, or encoding), + when the origin server is unable to determine a user agent's + capabilities from examining the request, and generally when public + caches are used to distribute server load and reduce network usage. + + Agent-driven negotiation suffers from the disadvantage of needing a + second request to obtain the best alternate representation. This + second request is only efficient when caching is used. In addition, + this specification does not define any mechanism for supporting + automatic selection, though it also does not prevent any such + mechanism from being developed as an extension and used within + HTTP/1.1. + + + + + + + +Fielding, et al. Standards Track [Page 73] +
RFC 2616 HTTP/1.1 June 1999 + + + HTTP/1.1 defines the 300 (Multiple Choices) and 406 (Not Acceptable) + status codes for enabling agent-driven negotiation when the server is + unwilling or unable to provide a varying response using server-driven + negotiation. + +12.3 Transparent Negotiation + + Transparent negotiation is a combination of both server-driven and + agent-driven negotiation. When a cache is supplied with a form of the + list of available representations of the response (as in agent-driven + negotiation) and the dimensions of variance are completely understood + by the cache, then the cache becomes capable of performing server- + driven negotiation on behalf of the origin server for subsequent + requests on that resource. + + Transparent negotiation has the advantage of distributing the + negotiation work that would otherwise be required of the origin + server and also removing the second request delay of agent-driven + negotiation when the cache is able to correctly guess the right + response. + + This specification does not define any mechanism for transparent + negotiation, though it also does not prevent any such mechanism from + being developed as an extension that could be used within HTTP/1.1. + +13 Caching in HTTP + + HTTP is typically used for distributed information systems, where + performance can be improved by the use of response caches. The + HTTP/1.1 protocol includes a number of elements intended to make + caching work as well as possible. Because these elements are + inextricable from other aspects of the protocol, and because they + interact with each other, it is useful to describe the basic caching + design of HTTP separately from the detailed descriptions of methods, + headers, response codes, etc. + + Caching would be useless if it did not significantly improve + performance. The goal of caching in HTTP/1.1 is to eliminate the need + to send requests in many cases, and to eliminate the need to send + full responses in many other cases. The former reduces the number of + network round-trips required for many operations; we use an + "expiration" mechanism for this purpose (see section 13.2). The + latter reduces network bandwidth requirements; we use a "validation" + mechanism for this purpose (see section 13.3). + + Requirements for performance, availability, and disconnected + operation require us to be able to relax the goal of semantic + transparency. The HTTP/1.1 protocol allows origin servers, caches, + + + +Fielding, et al. Standards Track [Page 74] +
RFC 2616 HTTP/1.1 June 1999 + + + and clients to explicitly reduce transparency when necessary. + However, because non-transparent operation may confuse non-expert + users, and might be incompatible with certain server applications + (such as those for ordering merchandise), the protocol requires that + transparency be relaxed + + - only by an explicit protocol-level request when relaxed by + client or origin server + + - only with an explicit warning to the end user when relaxed by + cache or client + + Therefore, the HTTP/1.1 protocol provides these important elements: + + 1. Protocol features that provide full semantic transparency when + this is required by all parties. + + 2. Protocol features that allow an origin server or user agent to + explicitly request and control non-transparent operation. + + 3. Protocol features that allow a cache to attach warnings to + responses that do not preserve the requested approximation of + semantic transparency. + + A basic principle is that it must be possible for the clients to + detect any potential relaxation of semantic transparency. + + Note: The server, cache, or client implementor might be faced with + design decisions not explicitly discussed in this specification. + If a decision might affect semantic transparency, the implementor + ought to err on the side of maintaining transparency unless a + careful and complete analysis shows significant benefits in + breaking transparency. + +13.1.1 Cache Correctness + + A correct cache MUST respond to a request with the most up-to-date + response held by the cache that is appropriate to the request (see + sections 13.2.5, 13.2.6, and 13.12) which meets one of the following + conditions: + + 1. It has been checked for equivalence with what the origin server + would have returned by revalidating the response with the + origin server (section 13.3); + + + + + + + +Fielding, et al. Standards Track [Page 75] +
RFC 2616 HTTP/1.1 June 1999 + + + 2. It is "fresh enough" (see section 13.2). In the default case, + this means it meets the least restrictive freshness requirement + of the client, origin server, and cache (see section 14.9); if + the origin server so specifies, it is the freshness requirement + of the origin server alone. + + If a stored response is not "fresh enough" by the most + restrictive freshness requirement of both the client and the + origin server, in carefully considered circumstances the cache + MAY still return the response with the appropriate Warning + header (see section 13.1.5 and 14.46), unless such a response + is prohibited (e.g., by a "no-store" cache-directive, or by a + "no-cache" cache-request-directive; see section 14.9). + + 3. It is an appropriate 304 (Not Modified), 305 (Proxy Redirect), + or error (4xx or 5xx) response message. + + If the cache can not communicate with the origin server, then a + correct cache SHOULD respond as above if the response can be + correctly served from the cache; if not it MUST return an error or + warning indicating that there was a communication failure. + + If a cache receives a response (either an entire response, or a 304 + (Not Modified) response) that it would normally forward to the + requesting client, and the received response is no longer fresh, the + cache SHOULD forward it to the requesting client without adding a new + Warning (but without removing any existing Warning headers). A cache + SHOULD NOT attempt to revalidate a response simply because that + response became stale in transit; this might lead to an infinite + loop. A user agent that receives a stale response without a Warning + MAY display a warning indication to the user. + +13.1.2 Warnings + + Whenever a cache returns a response that is neither first-hand nor + "fresh enough" (in the sense of condition 2 in section 13.1.1), it + MUST attach a warning to that effect, using a Warning general-header. + The Warning header and the currently defined warnings are described + in section 14.46. The warning allows clients to take appropriate + action. + + Warnings MAY be used for other purposes, both cache-related and + otherwise. The use of a warning, rather than an error status code, + distinguish these responses from true failures. + + Warnings are assigned three digit warn-codes. The first digit + indicates whether the Warning MUST or MUST NOT be deleted from a + stored cache entry after a successful revalidation: + + + +Fielding, et al. Standards Track [Page 76] +
RFC 2616 HTTP/1.1 June 1999 + + + 1xx Warnings that describe the freshness or revalidation status of + the response, and so MUST be deleted after a successful + revalidation. 1XX warn-codes MAY be generated by a cache only when + validating a cached entry. It MUST NOT be generated by clients. + + 2xx Warnings that describe some aspect of the entity body or entity + headers that is not rectified by a revalidation (for example, a + lossy compression of the entity bodies) and which MUST NOT be + deleted after a successful revalidation. + + See section 14.46 for the definitions of the codes themselves. + + HTTP/1.0 caches will cache all Warnings in responses, without + deleting the ones in the first category. Warnings in responses that + are passed to HTTP/1.0 caches carry an extra warning-date field, + which prevents a future HTTP/1.1 recipient from believing an + erroneously cached Warning. + + Warnings also carry a warning text. The text MAY be in any + appropriate natural language (perhaps based on the client's Accept + headers), and include an OPTIONAL indication of what character set is + used. + + Multiple warnings MAY be attached to a response (either by the origin + server or by a cache), including multiple warnings with the same code + number. For example, a server might provide the same warning with + texts in both English and Basque. + + When multiple warnings are attached to a response, it might not be + practical or reasonable to display all of them to the user. This + version of HTTP does not specify strict priority rules for deciding + which warnings to display and in what order, but does suggest some + heuristics. + +13.1.3 Cache-control Mechanisms + + The basic cache mechanisms in HTTP/1.1 (server-specified expiration + times and validators) are implicit directives to caches. In some + cases, a server or client might need to provide explicit directives + to the HTTP caches. We use the Cache-Control header for this purpose. + + The Cache-Control header allows a client or server to transmit a + variety of directives in either requests or responses. These + directives typically override the default caching algorithms. As a + general rule, if there is any apparent conflict between header + values, the most restrictive interpretation is applied (that is, the + one that is most likely to preserve semantic transparency). However, + + + + +Fielding, et al. Standards Track [Page 77] +
RFC 2616 HTTP/1.1 June 1999 + + + in some cases, cache-control directives are explicitly specified as + weakening the approximation of semantic transparency (for example, + "max-stale" or "public"). + + The cache-control directives are described in detail in section 14.9. + +13.1.4 Explicit User Agent Warnings + + Many user agents make it possible for users to override the basic + caching mechanisms. For example, the user agent might allow the user + to specify that cached entities (even explicitly stale ones) are + never validated. Or the user agent might habitually add "Cache- + Control: max-stale=3600" to every request. The user agent SHOULD NOT + default to either non-transparent behavior, or behavior that results + in abnormally ineffective caching, but MAY be explicitly configured + to do so by an explicit action of the user. + + If the user has overridden the basic caching mechanisms, the user + agent SHOULD explicitly indicate to the user whenever this results in + the display of information that might not meet the server's + transparency requirements (in particular, if the displayed entity is + known to be stale). Since the protocol normally allows the user agent + to determine if responses are stale or not, this indication need only + be displayed when this actually happens. The indication need not be a + dialog box; it could be an icon (for example, a picture of a rotting + fish) or some other indicator. + + If the user has overridden the caching mechanisms in a way that would + abnormally reduce the effectiveness of caches, the user agent SHOULD + continually indicate this state to the user (for example, by a + display of a picture of currency in flames) so that the user does not + inadvertently consume excess resources or suffer from excessive + latency. + +13.1.5 Exceptions to the Rules and Warnings + + In some cases, the operator of a cache MAY choose to configure it to + return stale responses even when not requested by clients. This + decision ought not be made lightly, but may be necessary for reasons + of availability or performance, especially when the cache is poorly + connected to the origin server. Whenever a cache returns a stale + response, it MUST mark it as such (using a Warning header) enabling + the client software to alert the user that there might be a potential + problem. + + + + + + + +Fielding, et al. Standards Track [Page 78] +
RFC 2616 HTTP/1.1 June 1999 + + + It also allows the user agent to take steps to obtain a first-hand or + fresh response. For this reason, a cache SHOULD NOT return a stale + response if the client explicitly requests a first-hand or fresh one, + unless it is impossible to comply for technical or policy reasons. + +13.1.6 Client-controlled Behavior + + While the origin server (and to a lesser extent, intermediate caches, + by their contribution to the age of a response) are the primary + source of expiration information, in some cases the client might need + to control a cache's decision about whether to return a cached + response without validating it. Clients do this using several + directives of the Cache-Control header. + + A client's request MAY specify the maximum age it is willing to + accept of an unvalidated response; specifying a value of zero forces + the cache(s) to revalidate all responses. A client MAY also specify + the minimum time remaining before a response expires. Both of these + options increase constraints on the behavior of caches, and so cannot + further relax the cache's approximation of semantic transparency. + + A client MAY also specify that it will accept stale responses, up to + some maximum amount of staleness. This loosens the constraints on the + caches, and so might violate the origin server's specified + constraints on semantic transparency, but might be necessary to + support disconnected operation, or high availability in the face of + poor connectivity. + +13.2 Expiration Model + +13.2.1 Server-Specified Expiration + + HTTP caching works best when caches can entirely avoid making + requests to the origin server. The primary mechanism for avoiding + requests is for an origin server to provide an explicit expiration + time in the future, indicating that a response MAY be used to satisfy + subsequent requests. In other words, a cache can return a fresh + response without first contacting the server. + + Our expectation is that servers will assign future explicit + expiration times to responses in the belief that the entity is not + likely to change, in a semantically significant way, before the + expiration time is reached. This normally preserves semantic + transparency, as long as the server's expiration times are carefully + chosen. + + + + + + +Fielding, et al. Standards Track [Page 79] +
RFC 2616 HTTP/1.1 June 1999 + + + The expiration mechanism applies only to responses taken from a cache + and not to first-hand responses forwarded immediately to the + requesting client. + + If an origin server wishes to force a semantically transparent cache + to validate every request, it MAY assign an explicit expiration time + in the past. This means that the response is always stale, and so the + cache SHOULD validate it before using it for subsequent requests. See + section 14.9.4 for a more restrictive way to force revalidation. + + If an origin server wishes to force any HTTP/1.1 cache, no matter how + it is configured, to validate every request, it SHOULD use the "must- + revalidate" cache-control directive (see section 14.9). + + Servers specify explicit expiration times using either the Expires + header, or the max-age directive of the Cache-Control header. + + An expiration time cannot be used to force a user agent to refresh + its display or reload a resource; its semantics apply only to caching + mechanisms, and such mechanisms need only check a resource's + expiration status when a new request for that resource is initiated. + See section 13.13 for an explanation of the difference between caches + and history mechanisms. + +13.2.2 Heuristic Expiration + + Since origin servers do not always provide explicit expiration times, + HTTP caches typically assign heuristic expiration times, employing + algorithms that use other header values (such as the Last-Modified + time) to estimate a plausible expiration time. The HTTP/1.1 + specification does not provide specific algorithms, but does impose + worst-case constraints on their results. Since heuristic expiration + times might compromise semantic transparency, they ought to used + cautiously, and we encourage origin servers to provide explicit + expiration times as much as possible. + +13.2.3 Age Calculations + + In order to know if a cached entry is fresh, a cache needs to know if + its age exceeds its freshness lifetime. We discuss how to calculate + the latter in section 13.2.4; this section describes how to calculate + the age of a response or cache entry. + + In this discussion, we use the term "now" to mean "the current value + of the clock at the host performing the calculation." Hosts that use + HTTP, but especially hosts running origin servers and caches, SHOULD + use NTP [28] or some similar protocol to synchronize their clocks to + a globally accurate time standard. + + + +Fielding, et al. Standards Track [Page 80] +
RFC 2616 HTTP/1.1 June 1999 + + + HTTP/1.1 requires origin servers to send a Date header, if possible, + with every response, giving the time at which the response was + generated (see section 14.18). We use the term "date_value" to denote + the value of the Date header, in a form appropriate for arithmetic + operations. + + HTTP/1.1 uses the Age response-header to convey the estimated age of + the response message when obtained from a cache. The Age field value + is the cache's estimate of the amount of time since the response was + generated or revalidated by the origin server. + + In essence, the Age value is the sum of the time that the response + has been resident in each of the caches along the path from the + origin server, plus the amount of time it has been in transit along + network paths. + + We use the term "age_value" to denote the value of the Age header, in + a form appropriate for arithmetic operations. + + A response's age can be calculated in two entirely independent ways: + + 1. now minus date_value, if the local clock is reasonably well + synchronized to the origin server's clock. If the result is + negative, the result is replaced by zero. + + 2. age_value, if all of the caches along the response path + implement HTTP/1.1. + + Given that we have two independent ways to compute the age of a + response when it is received, we can combine these as + + corrected_received_age = max(now - date_value, age_value) + + and as long as we have either nearly synchronized clocks or all- + HTTP/1.1 paths, one gets a reliable (conservative) result. + + Because of network-imposed delays, some significant interval might + pass between the time that a server generates a response and the time + it is received at the next outbound cache or client. If uncorrected, + this delay could result in improperly low ages. + + Because the request that resulted in the returned Age value must have + been initiated prior to that Age value's generation, we can correct + for delays imposed by the network by recording the time at which the + request was initiated. Then, when an Age value is received, it MUST + be interpreted relative to the time the request was initiated, not + + + + + +Fielding, et al. Standards Track [Page 81] +
RFC 2616 HTTP/1.1 June 1999 + + + the time that the response was received. This algorithm results in + conservative behavior no matter how much delay is experienced. So, we + compute: + + corrected_initial_age = corrected_received_age + + (now - request_time) + + where "request_time" is the time (according to the local clock) when + the request that elicited this response was sent. + + Summary of age calculation algorithm, when a cache receives a + response: + + /* + * age_value + * is the value of Age: header received by the cache with + * this response. + * date_value + * is the value of the origin server's Date: header + * request_time + * is the (local) time when the cache made the request + * that resulted in this cached response + * response_time + * is the (local) time when the cache received the + * response + * now + * is the current (local) time + */ + + apparent_age = max(0, response_time - date_value); + corrected_received_age = max(apparent_age, age_value); + response_delay = response_time - request_time; + corrected_initial_age = corrected_received_age + response_delay; + resident_time = now - response_time; + current_age = corrected_initial_age + resident_time; + + The current_age of a cache entry is calculated by adding the amount + of time (in seconds) since the cache entry was last validated by the + origin server to the corrected_initial_age. When a response is + generated from a cache entry, the cache MUST include a single Age + header field in the response with a value equal to the cache entry's + current_age. + + The presence of an Age header field in a response implies that a + response is not first-hand. However, the converse is not true, since + the lack of an Age header field in a response does not imply that the + + + + + +Fielding, et al. Standards Track [Page 82] +
RFC 2616 HTTP/1.1 June 1999 + + + response is first-hand unless all caches along the request path are + compliant with HTTP/1.1 (i.e., older HTTP caches did not implement + the Age header field). + +13.2.4 Expiration Calculations + + In order to decide whether a response is fresh or stale, we need to + compare its freshness lifetime to its age. The age is calculated as + described in section 13.2.3; this section describes how to calculate + the freshness lifetime, and to determine if a response has expired. + In the discussion below, the values can be represented in any form + appropriate for arithmetic operations. + + We use the term "expires_value" to denote the value of the Expires + header. We use the term "max_age_value" to denote an appropriate + value of the number of seconds carried by the "max-age" directive of + the Cache-Control header in a response (see section 14.9.3). + + The max-age directive takes priority over Expires, so if max-age is + present in a response, the calculation is simply: + + freshness_lifetime = max_age_value + + Otherwise, if Expires is present in the response, the calculation is: + + freshness_lifetime = expires_value - date_value + + Note that neither of these calculations is vulnerable to clock skew, + since all of the information comes from the origin server. + + If none of Expires, Cache-Control: max-age, or Cache-Control: s- + maxage (see section 14.9.3) appears in the response, and the response + does not include other restrictions on caching, the cache MAY compute + a freshness lifetime using a heuristic. The cache MUST attach Warning + 113 to any response whose age is more than 24 hours if such warning + has not already been added. + + Also, if the response does have a Last-Modified time, the heuristic + expiration value SHOULD be no more than some fraction of the interval + since that time. A typical setting of this fraction might be 10%. + + The calculation to determine if a response has expired is quite + simple: + + response_is_fresh = (freshness_lifetime > current_age) + + + + + + +Fielding, et al. Standards Track [Page 83] +
RFC 2616 HTTP/1.1 June 1999 + + +13.2.5 Disambiguating Expiration Values + + Because expiration values are assigned optimistically, it is possible + for two caches to contain fresh values for the same resource that are + different. + + If a client performing a retrieval receives a non-first-hand response + for a request that was already fresh in its own cache, and the Date + header in its existing cache entry is newer than the Date on the new + response, then the client MAY ignore the response. If so, it MAY + retry the request with a "Cache-Control: max-age=0" directive (see + section 14.9), to force a check with the origin server. + + If a cache has two fresh responses for the same representation with + different validators, it MUST use the one with the more recent Date + header. This situation might arise because the cache is pooling + responses from other caches, or because a client has asked for a + reload or a revalidation of an apparently fresh cache entry. + +13.2.6 Disambiguating Multiple Responses + + Because a client might be receiving responses via multiple paths, so + that some responses flow through one set of caches and other + responses flow through a different set of caches, a client might + receive responses in an order different from that in which the origin + server sent them. We would like the client to use the most recently + generated response, even if older responses are still apparently + fresh. + + Neither the entity tag nor the expiration value can impose an + ordering on responses, since it is possible that a later response + intentionally carries an earlier expiration time. The Date values are + ordered to a granularity of one second. + + When a client tries to revalidate a cache entry, and the response it + receives contains a Date header that appears to be older than the one + for the existing entry, then the client SHOULD repeat the request + unconditionally, and include + + Cache-Control: max-age=0 + + to force any intermediate caches to validate their copies directly + with the origin server, or + + Cache-Control: no-cache + + to force any intermediate caches to obtain a new copy from the origin + server. + + + +Fielding, et al. Standards Track [Page 84] +
RFC 2616 HTTP/1.1 June 1999 + + + If the Date values are equal, then the client MAY use either response + (or MAY, if it is being extremely prudent, request a new response). + Servers MUST NOT depend on clients being able to choose + deterministically between responses generated during the same second, + if their expiration times overlap. + +13.3 Validation Model + + When a cache has a stale entry that it would like to use as a + response to a client's request, it first has to check with the origin + server (or possibly an intermediate cache with a fresh response) to + see if its cached entry is still usable. We call this "validating" + the cache entry. Since we do not want to have to pay the overhead of + retransmitting the full response if the cached entry is good, and we + do not want to pay the overhead of an extra round trip if the cached + entry is invalid, the HTTP/1.1 protocol supports the use of + conditional methods. + + The key protocol features for supporting conditional methods are + those concerned with "cache validators." When an origin server + generates a full response, it attaches some sort of validator to it, + which is kept with the cache entry. When a client (user agent or + proxy cache) makes a conditional request for a resource for which it + has a cache entry, it includes the associated validator in the + request. + + The server then checks that validator against the current validator + for the entity, and, if they match (see section 13.3.3), it responds + with a special status code (usually, 304 (Not Modified)) and no + entity-body. Otherwise, it returns a full response (including + entity-body). Thus, we avoid transmitting the full response if the + validator matches, and we avoid an extra round trip if it does not + match. + + In HTTP/1.1, a conditional request looks exactly the same as a normal + request for the same resource, except that it carries a special + header (which includes the validator) that implicitly turns the + method (usually, GET) into a conditional. + + The protocol includes both positive and negative senses of cache- + validating conditions. That is, it is possible to request either that + a method be performed if and only if a validator matches or if and + only if no validators match. + + + + + + + + +Fielding, et al. Standards Track [Page 85] +
RFC 2616 HTTP/1.1 June 1999 + + + Note: a response that lacks a validator may still be cached, and + served from cache until it expires, unless this is explicitly + prohibited by a cache-control directive. However, a cache cannot + do a conditional retrieval if it does not have a validator for the + entity, which means it will not be refreshable after it expires. + +13.3.1 Last-Modified Dates + + The Last-Modified entity-header field value is often used as a cache + validator. In simple terms, a cache entry is considered to be valid + if the entity has not been modified since the Last-Modified value. + +13.3.2 Entity Tag Cache Validators + + The ETag response-header field value, an entity tag, provides for an + "opaque" cache validator. This might allow more reliable validation + in situations where it is inconvenient to store modification dates, + where the one-second resolution of HTTP date values is not + sufficient, or where the origin server wishes to avoid certain + paradoxes that might arise from the use of modification dates. + + Entity Tags are described in section 3.11. The headers used with + entity tags are described in sections 14.19, 14.24, 14.26 and 14.44. + +13.3.3 Weak and Strong Validators + + Since both origin servers and caches will compare two validators to + decide if they represent the same or different entities, one normally + would expect that if the entity (the entity-body or any entity- + headers) changes in any way, then the associated validator would + change as well. If this is true, then we call this validator a + "strong validator." + + However, there might be cases when a server prefers to change the + validator only on semantically significant changes, and not when + insignificant aspects of the entity change. A validator that does not + always change when the resource changes is a "weak validator." + + Entity tags are normally "strong validators," but the protocol + provides a mechanism to tag an entity tag as "weak." One can think of + a strong validator as one that changes whenever the bits of an entity + changes, while a weak value changes whenever the meaning of an entity + changes. Alternatively, one can think of a strong validator as part + of an identifier for a specific entity, while a weak validator is + part of an identifier for a set of semantically equivalent entities. + + Note: One example of a strong validator is an integer that is + incremented in stable storage every time an entity is changed. + + + +Fielding, et al. Standards Track [Page 86] +
RFC 2616 HTTP/1.1 June 1999 + + + An entity's modification time, if represented with one-second + resolution, could be a weak validator, since it is possible that + the resource might be modified twice during a single second. + + Support for weak validators is optional. However, weak validators + allow for more efficient caching of equivalent objects; for + example, a hit counter on a site is probably good enough if it is + updated every few days or weeks, and any value during that period + is likely "good enough" to be equivalent. + + A "use" of a validator is either when a client generates a request + and includes the validator in a validating header field, or when a + server compares two validators. + + Strong validators are usable in any context. Weak validators are only + usable in contexts that do not depend on exact equality of an entity. + For example, either kind is usable for a conditional GET of a full + entity. However, only a strong validator is usable for a sub-range + retrieval, since otherwise the client might end up with an internally + inconsistent entity. + + Clients MAY issue simple (non-subrange) GET requests with either weak + validators or strong validators. Clients MUST NOT use weak validators + in other forms of request. + + The only function that the HTTP/1.1 protocol defines on validators is + comparison. There are two validator comparison functions, depending + on whether the comparison context allows the use of weak validators + or not: + + - The strong comparison function: in order to be considered equal, + both validators MUST be identical in every way, and both MUST + NOT be weak. + + - The weak comparison function: in order to be considered equal, + both validators MUST be identical in every way, but either or + both of them MAY be tagged as "weak" without affecting the + result. + + An entity tag is strong unless it is explicitly tagged as weak. + section 3.11 gives the syntax for entity tags. + + A Last-Modified time, when used as a validator in a request, is + implicitly weak unless it is possible to deduce that it is strong, + using the following rules: + + - The validator is being compared by an origin server to the + actual current validator for the entity and, + + + +Fielding, et al. Standards Track [Page 87] +
RFC 2616 HTTP/1.1 June 1999 + + + - That origin server reliably knows that the associated entity did + not change twice during the second covered by the presented + validator. + + or + + - The validator is about to be used by a client in an If- + Modified-Since or If-Unmodified-Since header, because the client + has a cache entry for the associated entity, and + + - That cache entry includes a Date value, which gives the time + when the origin server sent the original response, and + + - The presented Last-Modified time is at least 60 seconds before + the Date value. + + or + + - The validator is being compared by an intermediate cache to the + validator stored in its cache entry for the entity, and + + - That cache entry includes a Date value, which gives the time + when the origin server sent the original response, and + + - The presented Last-Modified time is at least 60 seconds before + the Date value. + + This method relies on the fact that if two different responses were + sent by the origin server during the same second, but both had the + same Last-Modified time, then at least one of those responses would + have a Date value equal to its Last-Modified time. The arbitrary 60- + second limit guards against the possibility that the Date and Last- + Modified values are generated from different clocks, or at somewhat + different times during the preparation of the response. An + implementation MAY use a value larger than 60 seconds, if it is + believed that 60 seconds is too short. + + If a client wishes to perform a sub-range retrieval on a value for + which it has only a Last-Modified time and no opaque validator, it + MAY do this only if the Last-Modified time is strong in the sense + described here. + + A cache or origin server receiving a conditional request, other than + a full-body GET request, MUST use the strong comparison function to + evaluate the condition. + + These rules allow HTTP/1.1 caches and clients to safely perform sub- + range retrievals on values that have been obtained from HTTP/1.0 + + + +Fielding, et al. Standards Track [Page 88] +
RFC 2616 HTTP/1.1 June 1999 + + + servers. + +13.3.4 Rules for When to Use Entity Tags and Last-Modified Dates + + We adopt a set of rules and recommendations for origin servers, + clients, and caches regarding when various validator types ought to + be used, and for what purposes. + + HTTP/1.1 origin servers: + + - SHOULD send an entity tag validator unless it is not feasible to + generate one. + + - MAY send a weak entity tag instead of a strong entity tag, if + performance considerations support the use of weak entity tags, + or if it is unfeasible to send a strong entity tag. + + - SHOULD send a Last-Modified value if it is feasible to send one, + unless the risk of a breakdown in semantic transparency that + could result from using this date in an If-Modified-Since header + would lead to serious problems. + + In other words, the preferred behavior for an HTTP/1.1 origin server + is to send both a strong entity tag and a Last-Modified value. + + In order to be legal, a strong entity tag MUST change whenever the + associated entity value changes in any way. A weak entity tag SHOULD + change whenever the associated entity changes in a semantically + significant way. + + Note: in order to provide semantically transparent caching, an + origin server must avoid reusing a specific strong entity tag + value for two different entities, or reusing a specific weak + entity tag value for two semantically different entities. Cache + entries might persist for arbitrarily long periods, regardless of + expiration times, so it might be inappropriate to expect that a + cache will never again attempt to validate an entry using a + validator that it obtained at some point in the past. + + HTTP/1.1 clients: + + - If an entity tag has been provided by the origin server, MUST + use that entity tag in any cache-conditional request (using If- + Match or If-None-Match). + + - If only a Last-Modified value has been provided by the origin + server, SHOULD use that value in non-subrange cache-conditional + requests (using If-Modified-Since). + + + +Fielding, et al. Standards Track [Page 89] +
RFC 2616 HTTP/1.1 June 1999 + + + - If only a Last-Modified value has been provided by an HTTP/1.0 + origin server, MAY use that value in subrange cache-conditional + requests (using If-Unmodified-Since:). The user agent SHOULD + provide a way to disable this, in case of difficulty. + + - If both an entity tag and a Last-Modified value have been + provided by the origin server, SHOULD use both validators in + cache-conditional requests. This allows both HTTP/1.0 and + HTTP/1.1 caches to respond appropriately. + + An HTTP/1.1 origin server, upon receiving a conditional request that + includes both a Last-Modified date (e.g., in an If-Modified-Since or + If-Unmodified-Since header field) and one or more entity tags (e.g., + in an If-Match, If-None-Match, or If-Range header field) as cache + validators, MUST NOT return a response status of 304 (Not Modified) + unless doing so is consistent with all of the conditional header + fields in the request. + + An HTTP/1.1 caching proxy, upon receiving a conditional request that + includes both a Last-Modified date and one or more entity tags as + cache validators, MUST NOT return a locally cached response to the + client unless that cached response is consistent with all of the + conditional header fields in the request. + + Note: The general principle behind these rules is that HTTP/1.1 + servers and clients should transmit as much non-redundant + information as is available in their responses and requests. + HTTP/1.1 systems receiving this information will make the most + conservative assumptions about the validators they receive. + + HTTP/1.0 clients and caches will ignore entity tags. Generally, + last-modified values received or used by these systems will + support transparent and efficient caching, and so HTTP/1.1 origin + servers should provide Last-Modified values. In those rare cases + where the use of a Last-Modified value as a validator by an + HTTP/1.0 system could result in a serious problem, then HTTP/1.1 + origin servers should not provide one. + +13.3.5 Non-validating Conditionals + + The principle behind entity tags is that only the service author + knows the semantics of a resource well enough to select an + appropriate cache validation mechanism, and the specification of any + validator comparison function more complex than byte-equality would + open up a can of worms. Thus, comparisons of any other headers + (except Last-Modified, for compatibility with HTTP/1.0) are never + used for purposes of validating a cache entry. + + + + +Fielding, et al. Standards Track [Page 90] +
RFC 2616 HTTP/1.1 June 1999 + + +13.4 Response Cacheability + + Unless specifically constrained by a cache-control (section 14.9) + directive, a caching system MAY always store a successful response + (see section 13.8) as a cache entry, MAY return it without validation + if it is fresh, and MAY return it after successful validation. If + there is neither a cache validator nor an explicit expiration time + associated with a response, we do not expect it to be cached, but + certain caches MAY violate this expectation (for example, when little + or no network connectivity is available). A client can usually detect + that such a response was taken from a cache by comparing the Date + header to the current time. + + Note: some HTTP/1.0 caches are known to violate this expectation + without providing any Warning. + + However, in some cases it might be inappropriate for a cache to + retain an entity, or to return it in response to a subsequent + request. This might be because absolute semantic transparency is + deemed necessary by the service author, or because of security or + privacy considerations. Certain cache-control directives are + therefore provided so that the server can indicate that certain + resource entities, or portions thereof, are not to be cached + regardless of other considerations. + + Note that section 14.8 normally prevents a shared cache from saving + and returning a response to a previous request if that request + included an Authorization header. + + A response received with a status code of 200, 203, 206, 300, 301 or + 410 MAY be stored by a cache and used in reply to a subsequent + request, subject to the expiration mechanism, unless a cache-control + directive prohibits caching. However, a cache that does not support + the Range and Content-Range headers MUST NOT cache 206 (Partial + Content) responses. + + A response received with any other status code (e.g. status codes 302 + and 307) MUST NOT be returned in a reply to a subsequent request + unless there are cache-control directives or another header(s) that + explicitly allow it. For example, these include the following: an + Expires header (section 14.21); a "max-age", "s-maxage", "must- + revalidate", "proxy-revalidate", "public" or "private" cache-control + directive (section 14.9). + + + + + + + + +Fielding, et al. Standards Track [Page 91] +
RFC 2616 HTTP/1.1 June 1999 + + +13.5 Constructing Responses From Caches + + The purpose of an HTTP cache is to store information received in + response to requests for use in responding to future requests. In + many cases, a cache simply returns the appropriate parts of a + response to the requester. However, if the cache holds a cache entry + based on a previous response, it might have to combine parts of a new + response with what is held in the cache entry. + +13.5.1 End-to-end and Hop-by-hop Headers + + For the purpose of defining the behavior of caches and non-caching + proxies, we divide HTTP headers into two categories: + + - End-to-end headers, which are transmitted to the ultimate + recipient of a request or response. End-to-end headers in + responses MUST be stored as part of a cache entry and MUST be + transmitted in any response formed from a cache entry. + + - Hop-by-hop headers, which are meaningful only for a single + transport-level connection, and are not stored by caches or + forwarded by proxies. + + The following HTTP/1.1 headers are hop-by-hop headers: + + - Connection + - Keep-Alive + - Proxy-Authenticate + - Proxy-Authorization + - TE + - Trailers + - Transfer-Encoding + - Upgrade + + All other headers defined by HTTP/1.1 are end-to-end headers. + + Other hop-by-hop headers MUST be listed in a Connection header, + (section 14.10) to be introduced into HTTP/1.1 (or later). + +13.5.2 Non-modifiable Headers + + Some features of the HTTP/1.1 protocol, such as Digest + Authentication, depend on the value of certain end-to-end headers. A + transparent proxy SHOULD NOT modify an end-to-end header unless the + definition of that header requires or specifically allows that. + + + + + + +Fielding, et al. Standards Track [Page 92] +
RFC 2616 HTTP/1.1 June 1999 + + + A transparent proxy MUST NOT modify any of the following fields in a + request or response, and it MUST NOT add any of these fields if not + already present: + + - Content-Location + + - Content-MD5 + + - ETag + + - Last-Modified + + A transparent proxy MUST NOT modify any of the following fields in a + response: + + - Expires + + but it MAY add any of these fields if not already present. If an + Expires header is added, it MUST be given a field-value identical to + that of the Date header in that response. + + A proxy MUST NOT modify or add any of the following fields in a + message that contains the no-transform cache-control directive, or in + any request: + + - Content-Encoding + + - Content-Range + + - Content-Type + + A non-transparent proxy MAY modify or add these fields to a message + that does not include no-transform, but if it does so, it MUST add a + Warning 214 (Transformation applied) if one does not already appear + in the message (see section 14.46). + + Warning: unnecessary modification of end-to-end headers might + cause authentication failures if stronger authentication + mechanisms are introduced in later versions of HTTP. Such + authentication mechanisms MAY rely on the values of header fields + not listed here. + + The Content-Length field of a request or response is added or deleted + according to the rules in section 4.4. A transparent proxy MUST + preserve the entity-length (section 7.2.2) of the entity-body, + although it MAY change the transfer-length (section 4.4). + + + + + +Fielding, et al. Standards Track [Page 93] +
RFC 2616 HTTP/1.1 June 1999 + + +13.5.3 Combining Headers + + When a cache makes a validating request to a server, and the server + provides a 304 (Not Modified) response or a 206 (Partial Content) + response, the cache then constructs a response to send to the + requesting client. + + If the status code is 304 (Not Modified), the cache uses the entity- + body stored in the cache entry as the entity-body of this outgoing + response. If the status code is 206 (Partial Content) and the ETag or + Last-Modified headers match exactly, the cache MAY combine the + contents stored in the cache entry with the new contents received in + the response and use the result as the entity-body of this outgoing + response, (see 13.5.4). + + The end-to-end headers stored in the cache entry are used for the + constructed response, except that + + - any stored Warning headers with warn-code 1xx (see section + 14.46) MUST be deleted from the cache entry and the forwarded + response. + + - any stored Warning headers with warn-code 2xx MUST be retained + in the cache entry and the forwarded response. + + - any end-to-end headers provided in the 304 or 206 response MUST + replace the corresponding headers from the cache entry. + + Unless the cache decides to remove the cache entry, it MUST also + replace the end-to-end headers stored with the cache entry with + corresponding headers received in the incoming response, except for + Warning headers as described immediately above. If a header field- + name in the incoming response matches more than one header in the + cache entry, all such old headers MUST be replaced. + + In other words, the set of end-to-end headers received in the + incoming response overrides all corresponding end-to-end headers + stored with the cache entry (except for stored Warning headers with + warn-code 1xx, which are deleted even if not overridden). + + Note: this rule allows an origin server to use a 304 (Not + Modified) or a 206 (Partial Content) response to update any header + associated with a previous response for the same entity or sub- + ranges thereof, although it might not always be meaningful or + correct to do so. This rule does not allow an origin server to use + a 304 (Not Modified) or a 206 (Partial Content) response to + entirely delete a header that it had provided with a previous + response. + + + +Fielding, et al. Standards Track [Page 94] +
RFC 2616 HTTP/1.1 June 1999 + + +13.5.4 Combining Byte Ranges + + A response might transfer only a subrange of the bytes of an entity- + body, either because the request included one or more Range + specifications, or because a connection was broken prematurely. After + several such transfers, a cache might have received several ranges of + the same entity-body. + + If a cache has a stored non-empty set of subranges for an entity, and + an incoming response transfers another subrange, the cache MAY + combine the new subrange with the existing set if both the following + conditions are met: + + - Both the incoming response and the cache entry have a cache + validator. + + - The two cache validators match using the strong comparison + function (see section 13.3.3). + + If either requirement is not met, the cache MUST use only the most + recent partial response (based on the Date values transmitted with + every response, and using the incoming response if these values are + equal or missing), and MUST discard the other partial information. + +13.6 Caching Negotiated Responses + + Use of server-driven content negotiation (section 12.1), as indicated + by the presence of a Vary header field in a response, alters the + conditions and procedure by which a cache can use the response for + subsequent requests. See section 14.44 for use of the Vary header + field by servers. + + A server SHOULD use the Vary header field to inform a cache of what + request-header fields were used to select among multiple + representations of a cacheable response subject to server-driven + negotiation. The set of header fields named by the Vary field value + is known as the "selecting" request-headers. + + When the cache receives a subsequent request whose Request-URI + specifies one or more cache entries including a Vary header field, + the cache MUST NOT use such a cache entry to construct a response to + the new request unless all of the selecting request-headers present + in the new request match the corresponding stored request-headers in + the original request. + + The selecting request-headers from two requests are defined to match + if and only if the selecting request-headers in the first request can + be transformed to the selecting request-headers in the second request + + + +Fielding, et al. Standards Track [Page 95] +
RFC 2616 HTTP/1.1 June 1999 + + + by adding or removing linear white space (LWS) at places where this + is allowed by the corresponding BNF, and/or combining multiple + message-header fields with the same field name following the rules + about message headers in section 4.2. + + A Vary header field-value of "*" always fails to match and subsequent + requests on that resource can only be properly interpreted by the + origin server. + + If the selecting request header fields for the cached entry do not + match the selecting request header fields of the new request, then + the cache MUST NOT use a cached entry to satisfy the request unless + it first relays the new request to the origin server in a conditional + request and the server responds with 304 (Not Modified), including an + entity tag or Content-Location that indicates the entity to be used. + + If an entity tag was assigned to a cached representation, the + forwarded request SHOULD be conditional and include the entity tags + in an If-None-Match header field from all its cache entries for the + resource. This conveys to the server the set of entities currently + held by the cache, so that if any one of these entities matches the + requested entity, the server can use the ETag header field in its 304 + (Not Modified) response to tell the cache which entry is appropriate. + If the entity-tag of the new response matches that of an existing + entry, the new response SHOULD be used to update the header fields of + the existing entry, and the result MUST be returned to the client. + + If any of the existing cache entries contains only partial content + for the associated entity, its entity-tag SHOULD NOT be included in + the If-None-Match header field unless the request is for a range that + would be fully satisfied by that entry. + + If a cache receives a successful response whose Content-Location + field matches that of an existing cache entry for the same Request- + ]URI, whose entity-tag differs from that of the existing entry, and + whose Date is more recent than that of the existing entry, the + existing entry SHOULD NOT be returned in response to future requests + and SHOULD be deleted from the cache. + +13.7 Shared and Non-Shared Caches + + For reasons of security and privacy, it is necessary to make a + distinction between "shared" and "non-shared" caches. A non-shared + cache is one that is accessible only to a single user. Accessibility + in this case SHOULD be enforced by appropriate security mechanisms. + All other caches are considered to be "shared." Other sections of + + + + + +Fielding, et al. Standards Track [Page 96] +
RFC 2616 HTTP/1.1 June 1999 + + + this specification place certain constraints on the operation of + shared caches in order to prevent loss of privacy or failure of + access controls. + +13.8 Errors or Incomplete Response Cache Behavior + + A cache that receives an incomplete response (for example, with fewer + bytes of data than specified in a Content-Length header) MAY store + the response. However, the cache MUST treat this as a partial + response. Partial responses MAY be combined as described in section + 13.5.4; the result might be a full response or might still be + partial. A cache MUST NOT return a partial response to a client + without explicitly marking it as such, using the 206 (Partial + Content) status code. A cache MUST NOT return a partial response + using a status code of 200 (OK). + + If a cache receives a 5xx response while attempting to revalidate an + entry, it MAY either forward this response to the requesting client, + or act as if the server failed to respond. In the latter case, it MAY + return a previously received response unless the cached entry + includes the "must-revalidate" cache-control directive (see section + 14.9). + +13.9 Side Effects of GET and HEAD + + Unless the origin server explicitly prohibits the caching of their + responses, the application of GET and HEAD methods to any resources + SHOULD NOT have side effects that would lead to erroneous behavior if + these responses are taken from a cache. They MAY still have side + effects, but a cache is not required to consider such side effects in + its caching decisions. Caches are always expected to observe an + origin server's explicit restrictions on caching. + + We note one exception to this rule: since some applications have + traditionally used GETs and HEADs with query URLs (those containing a + "?" in the rel_path part) to perform operations with significant side + effects, caches MUST NOT treat responses to such URIs as fresh unless + the server provides an explicit expiration time. This specifically + means that responses from HTTP/1.0 servers for such URIs SHOULD NOT + be taken from a cache. See section 9.1.1 for related information. + +13.10 Invalidation After Updates or Deletions + + The effect of certain methods performed on a resource at the origin + server might cause one or more existing cache entries to become non- + transparently invalid. That is, although they might continue to be + "fresh," they do not accurately reflect what the origin server would + return for a new request on that resource. + + + +Fielding, et al. Standards Track [Page 97] +
RFC 2616 HTTP/1.1 June 1999 + + + There is no way for the HTTP protocol to guarantee that all such + cache entries are marked invalid. For example, the request that + caused the change at the origin server might not have gone through + the proxy where a cache entry is stored. However, several rules help + reduce the likelihood of erroneous behavior. + + In this section, the phrase "invalidate an entity" means that the + cache will either remove all instances of that entity from its + storage, or will mark these as "invalid" and in need of a mandatory + revalidation before they can be returned in response to a subsequent + request. + + Some HTTP methods MUST cause a cache to invalidate an entity. This is + either the entity referred to by the Request-URI, or by the Location + or Content-Location headers (if present). These methods are: + + - PUT + + - DELETE + + - POST + + In order to prevent denial of service attacks, an invalidation based + on the URI in a Location or Content-Location header MUST only be + performed if the host part is the same as in the Request-URI. + + A cache that passes through requests for methods it does not + understand SHOULD invalidate any entities referred to by the + Request-URI. + +13.11 Write-Through Mandatory + + All methods that might be expected to cause modifications to the + origin server's resources MUST be written through to the origin + server. This currently includes all methods except for GET and HEAD. + A cache MUST NOT reply to such a request from a client before having + transmitted the request to the inbound server, and having received a + corresponding response from the inbound server. This does not prevent + a proxy cache from sending a 100 (Continue) response before the + inbound server has sent its final reply. + + The alternative (known as "write-back" or "copy-back" caching) is not + allowed in HTTP/1.1, due to the difficulty of providing consistent + updates and the problems arising from server, cache, or network + failure prior to write-back. + + + + + + +Fielding, et al. Standards Track [Page 98] +
RFC 2616 HTTP/1.1 June 1999 + + +13.12 Cache Replacement + + If a new cacheable (see sections 14.9.2, 13.2.5, 13.2.6 and 13.8) + response is received from a resource while any existing responses for + the same resource are cached, the cache SHOULD use the new response + to reply to the current request. It MAY insert it into cache storage + and MAY, if it meets all other requirements, use it to respond to any + future requests that would previously have caused the old response to + be returned. If it inserts the new response into cache storage the + rules in section 13.5.3 apply. + + Note: a new response that has an older Date header value than + existing cached responses is not cacheable. + +13.13 History Lists + + User agents often have history mechanisms, such as "Back" buttons and + history lists, which can be used to redisplay an entity retrieved + earlier in a session. + + History mechanisms and caches are different. In particular history + mechanisms SHOULD NOT try to show a semantically transparent view of + the current state of a resource. Rather, a history mechanism is meant + to show exactly what the user saw at the time when the resource was + retrieved. + + By default, an expiration time does not apply to history mechanisms. + If the entity is still in storage, a history mechanism SHOULD display + it even if the entity has expired, unless the user has specifically + configured the agent to refresh expired history documents. + + This is not to be construed to prohibit the history mechanism from + telling the user that a view might be stale. + + Note: if history list mechanisms unnecessarily prevent users from + viewing stale resources, this will tend to force service authors + to avoid using HTTP expiration controls and cache controls when + they would otherwise like to. Service authors may consider it + important that users not be presented with error messages or + warning messages when they use navigation controls (such as BACK) + to view previously fetched resources. Even though sometimes such + resources ought not to cached, or ought to expire quickly, user + interface considerations may force service authors to resort to + other means of preventing caching (e.g. "once-only" URLs) in order + not to suffer the effects of improperly functioning history + mechanisms. + + + + + +Fielding, et al. Standards Track [Page 99] +
RFC 2616 HTTP/1.1 June 1999 + + +14 Header Field Definitions + + This section defines the syntax and semantics of all standard + HTTP/1.1 header fields. For entity-header fields, both sender and + recipient refer to either the client or the server, depending on who + sends and who receives the entity. + +14.1 Accept + + The Accept request-header field can be used to specify certain media + types which are acceptable for the response. Accept headers can be + used to indicate that the request is specifically limited to a small + set of desired types, as in the case of a request for an in-line + image. + + Accept = "Accept" ":" + #( media-range [ accept-params ] ) + + media-range = ( "*/*" + | ( type "/" "*" ) + | ( type "/" subtype ) + ) *( ";" parameter ) + accept-params = ";" "q" "=" qvalue *( accept-extension ) + accept-extension = ";" token [ "=" ( token | quoted-string ) ] + + The asterisk "*" character is used to group media types into ranges, + with "*/*" indicating all media types and "type/*" indicating all + subtypes of that type. The media-range MAY include media type + parameters that are applicable to that range. + + Each media-range MAY be followed by one or more accept-params, + beginning with the "q" parameter for indicating a relative quality + factor. The first "q" parameter (if any) separates the media-range + parameter(s) from the accept-params. Quality factors allow the user + or user agent to indicate the relative degree of preference for that + media-range, using the qvalue scale from 0 to 1 (section 3.9). The + default value is q=1. + + Note: Use of the "q" parameter name to separate media type + parameters from Accept extension parameters is due to historical + practice. Although this prevents any media type parameter named + "q" from being used with a media range, such an event is believed + to be unlikely given the lack of any "q" parameters in the IANA + media type registry and the rare usage of any media type + parameters in Accept. Future media types are discouraged from + registering any parameter named "q". + + + + + +Fielding, et al. Standards Track [Page 100] +
RFC 2616 HTTP/1.1 June 1999 + + + The example + + Accept: audio/*; q=0.2, audio/basic + + SHOULD be interpreted as "I prefer audio/basic, but send me any audio + type if it is the best available after an 80% mark-down in quality." + + If no Accept header field is present, then it is assumed that the + client accepts all media types. If an Accept header field is present, + and if the server cannot send a response which is acceptable + according to the combined Accept field value, then the server SHOULD + send a 406 (not acceptable) response. + + A more elaborate example is + + Accept: text/plain; q=0.5, text/html, + text/x-dvi; q=0.8, text/x-c + + Verbally, this would be interpreted as "text/html and text/x-c are + the preferred media types, but if they do not exist, then send the + text/x-dvi entity, and if that does not exist, send the text/plain + entity." + + Media ranges can be overridden by more specific media ranges or + specific media types. If more than one media range applies to a given + type, the most specific reference has precedence. For example, + + Accept: text/*, text/html, text/html;level=1, */* + + have the following precedence: + + 1) text/html;level=1 + 2) text/html + 3) text/* + 4) */* + + The media type quality factor associated with a given type is + determined by finding the media range with the highest precedence + which matches that type. For example, + + Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1, + text/html;level=2;q=0.4, */*;q=0.5 + + would cause the following values to be associated: + + text/html;level=1 = 1 + text/html = 0.7 + text/plain = 0.3 + + + +Fielding, et al. Standards Track [Page 101] +
RFC 2616 HTTP/1.1 June 1999 + + + image/jpeg = 0.5 + text/html;level=2 = 0.4 + text/html;level=3 = 0.7 + + Note: A user agent might be provided with a default set of quality + values for certain media ranges. However, unless the user agent is + a closed system which cannot interact with other rendering agents, + this default set ought to be configurable by the user. + +14.2 Accept-Charset + + The Accept-Charset request-header field can be used to indicate what + character sets are acceptable for the response. This field allows + clients capable of understanding more comprehensive or special- + purpose character sets to signal that capability to a server which is + capable of representing documents in those character sets. + + Accept-Charset = "Accept-Charset" ":" + 1#( ( charset | "*" )[ ";" "q" "=" qvalue ] ) + + + Character set values are described in section 3.4. Each charset MAY + be given an associated quality value which represents the user's + preference for that charset. The default value is q=1. An example is + + Accept-Charset: iso-8859-5, unicode-1-1;q=0.8 + + The special value "*", if present in the Accept-Charset field, + matches every character set (including ISO-8859-1) which is not + mentioned elsewhere in the Accept-Charset field. If no "*" is present + in an Accept-Charset field, then all character sets not explicitly + mentioned get a quality value of 0, except for ISO-8859-1, which gets + a quality value of 1 if not explicitly mentioned. + + If no Accept-Charset header is present, the default is that any + character set is acceptable. If an Accept-Charset header is present, + and if the server cannot send a response which is acceptable + according to the Accept-Charset header, then the server SHOULD send + an error response with the 406 (not acceptable) status code, though + the sending of an unacceptable response is also allowed. + +14.3 Accept-Encoding + + The Accept-Encoding request-header field is similar to Accept, but + restricts the content-codings (section 3.5) that are acceptable in + the response. + + Accept-Encoding = "Accept-Encoding" ":" + + + +Fielding, et al. Standards Track [Page 102] +
RFC 2616 HTTP/1.1 June 1999 + + + 1#( codings [ ";" "q" "=" qvalue ] ) + codings = ( content-coding | "*" ) + + Examples of its use are: + + Accept-Encoding: compress, gzip + Accept-Encoding: + Accept-Encoding: * + Accept-Encoding: compress;q=0.5, gzip;q=1.0 + Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0 + + A server tests whether a content-coding is acceptable, according to + an Accept-Encoding field, using these rules: + + 1. If the content-coding is one of the content-codings listed in + the Accept-Encoding field, then it is acceptable, unless it is + accompanied by a qvalue of 0. (As defined in section 3.9, a + qvalue of 0 means "not acceptable.") + + 2. The special "*" symbol in an Accept-Encoding field matches any + available content-coding not explicitly listed in the header + field. + + 3. If multiple content-codings are acceptable, then the acceptable + content-coding with the highest non-zero qvalue is preferred. + + 4. The "identity" content-coding is always acceptable, unless + specifically refused because the Accept-Encoding field includes + "identity;q=0", or because the field includes "*;q=0" and does + not explicitly include the "identity" content-coding. If the + Accept-Encoding field-value is empty, then only the "identity" + encoding is acceptable. + + If an Accept-Encoding field is present in a request, and if the + server cannot send a response which is acceptable according to the + Accept-Encoding header, then the server SHOULD send an error response + with the 406 (Not Acceptable) status code. + + If no Accept-Encoding field is present in a request, the server MAY + assume that the client will accept any content coding. In this case, + if "identity" is one of the available content-codings, then the + server SHOULD use the "identity" content-coding, unless it has + additional information that a different content-coding is meaningful + to the client. + + Note: If the request does not include an Accept-Encoding field, + and if the "identity" content-coding is unavailable, then + content-codings commonly understood by HTTP/1.0 clients (i.e., + + + +Fielding, et al. Standards Track [Page 103] +
RFC 2616 HTTP/1.1 June 1999 + + + "gzip" and "compress") are preferred; some older clients + improperly display messages sent with other content-codings. The + server might also make this decision based on information about + the particular user-agent or client. + + Note: Most HTTP/1.0 applications do not recognize or obey qvalues + associated with content-codings. This means that qvalues will not + work and are not permitted with x-gzip or x-compress. + +14.4 Accept-Language + + The Accept-Language request-header field is similar to Accept, but + restricts the set of natural languages that are preferred as a + response to the request. Language tags are defined in section 3.10. + + Accept-Language = "Accept-Language" ":" + 1#( language-range [ ";" "q" "=" qvalue ] ) + language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" ) + + Each language-range MAY be given an associated quality value which + represents an estimate of the user's preference for the languages + specified by that range. The quality value defaults to "q=1". For + example, + + Accept-Language: da, en-gb;q=0.8, en;q=0.7 + + would mean: "I prefer Danish, but will accept British English and + other types of English." A language-range matches a language-tag if + it exactly equals the tag, or if it exactly equals a prefix of the + tag such that the first tag character following the prefix is "-". + The special range "*", if present in the Accept-Language field, + matches every tag not matched by any other range present in the + Accept-Language field. + + Note: This use of a prefix matching rule does not imply that + language tags are assigned to languages in such a way that it is + always true that if a user understands a language with a certain + tag, then this user will also understand all languages with tags + for which this tag is a prefix. The prefix rule simply allows the + use of prefix tags if this is the case. + + The language quality factor assigned to a language-tag by the + Accept-Language field is the quality value of the longest language- + range in the field that matches the language-tag. If no language- + range in the field matches the tag, the language quality factor + assigned is 0. If no Accept-Language header is present in the + request, the server + + + + +Fielding, et al. Standards Track [Page 104] +
RFC 2616 HTTP/1.1 June 1999 + + + SHOULD assume that all languages are equally acceptable. If an + Accept-Language header is present, then all languages which are + assigned a quality factor greater than 0 are acceptable. + + It might be contrary to the privacy expectations of the user to send + an Accept-Language header with the complete linguistic preferences of + the user in every request. For a discussion of this issue, see + section 15.1.4. + + As intelligibility is highly dependent on the individual user, it is + recommended that client applications make the choice of linguistic + preference available to the user. If the choice is not made + available, then the Accept-Language header field MUST NOT be given in + the request. + + Note: When making the choice of linguistic preference available to + the user, we remind implementors of the fact that users are not + familiar with the details of language matching as described above, + and should provide appropriate guidance. As an example, users + might assume that on selecting "en-gb", they will be served any + kind of English document if British English is not available. A + user agent might suggest in such a case to add "en" to get the + best matching behavior. + +14.5 Accept-Ranges + + The Accept-Ranges response-header field allows the server to + indicate its acceptance of range requests for a resource: + + Accept-Ranges = "Accept-Ranges" ":" acceptable-ranges + acceptable-ranges = 1#range-unit | "none" + + Origin servers that accept byte-range requests MAY send + + Accept-Ranges: bytes + + but are not required to do so. Clients MAY generate byte-range + requests without having received this header for the resource + involved. Range units are defined in section 3.12. + + Servers that do not accept any kind of range request for a + resource MAY send + + Accept-Ranges: none + + to advise the client not to attempt a range request. + + + + + +Fielding, et al. Standards Track [Page 105] +
RFC 2616 HTTP/1.1 June 1999 + + +14.6 Age + + The Age response-header field conveys the sender's estimate of the + amount of time since the response (or its revalidation) was + generated at the origin server. A cached response is "fresh" if + its age does not exceed its freshness lifetime. Age values are + calculated as specified in section 13.2.3. + + Age = "Age" ":" age-value + age-value = delta-seconds + + Age values are non-negative decimal integers, representing time in + seconds. + + If a cache receives a value larger than the largest positive + integer it can represent, or if any of its age calculations + overflows, it MUST transmit an Age header with a value of + 2147483648 (2^31). An HTTP/1.1 server that includes a cache MUST + include an Age header field in every response generated from its + own cache. Caches SHOULD use an arithmetic type of at least 31 + bits of range. + +14.7 Allow + + The Allow entity-header field lists the set of methods supported + by the resource identified by the Request-URI. The purpose of this + field is strictly to inform the recipient of valid methods + associated with the resource. An Allow header field MUST be + present in a 405 (Method Not Allowed) response. + + Allow = "Allow" ":" #Method + + Example of use: + + Allow: GET, HEAD, PUT + + This field cannot prevent a client from trying other methods. + However, the indications given by the Allow header field value + SHOULD be followed. The actual set of allowed methods is defined + by the origin server at the time of each request. + + The Allow header field MAY be provided with a PUT request to + recommend the methods to be supported by the new or modified + resource. The server is not required to support these methods and + SHOULD include an Allow header in the response giving the actual + supported methods. + + + + + +Fielding, et al. Standards Track [Page 106] +
RFC 2616 HTTP/1.1 June 1999 + + + A proxy MUST NOT modify the Allow header field even if it does not + understand all the methods specified, since the user agent might + have other means of communicating with the origin server. + +14.8 Authorization + + A user agent that wishes to authenticate itself with a server-- + usually, but not necessarily, after receiving a 401 response--does + so by including an Authorization request-header field with the + request. The Authorization field value consists of credentials + containing the authentication information of the user agent for + the realm of the resource being requested. + + Authorization = "Authorization" ":" credentials + + HTTP access authentication is described in "HTTP Authentication: + Basic and Digest Access Authentication" [43]. If a request is + authenticated and a realm specified, the same credentials SHOULD + be valid for all other requests within this realm (assuming that + the authentication scheme itself does not require otherwise, such + as credentials that vary according to a challenge value or using + synchronized clocks). + + When a shared cache (see section 13.7) receives a request + containing an Authorization field, it MUST NOT return the + corresponding response as a reply to any other request, unless one + of the following specific exceptions holds: + + 1. If the response includes the "s-maxage" cache-control + directive, the cache MAY use that response in replying to a + subsequent request. But (if the specified maximum age has + passed) a proxy cache MUST first revalidate it with the origin + server, using the request-headers from the new request to allow + the origin server to authenticate the new request. (This is the + defined behavior for s-maxage.) If the response includes "s- + maxage=0", the proxy MUST always revalidate it before re-using + it. + + 2. If the response includes the "must-revalidate" cache-control + directive, the cache MAY use that response in replying to a + subsequent request. But if the response is stale, all caches + MUST first revalidate it with the origin server, using the + request-headers from the new request to allow the origin server + to authenticate the new request. + + 3. If the response includes the "public" cache-control directive, + it MAY be returned in reply to any subsequent request. + + + + +Fielding, et al. Standards Track [Page 107] +
RFC 2616 HTTP/1.1 June 1999 + + +14.9 Cache-Control + + The Cache-Control general-header field is used to specify directives + that MUST be obeyed by all caching mechanisms along the + request/response chain. The directives specify behavior intended to + prevent caches from adversely interfering with the request or + response. These directives typically override the default caching + algorithms. Cache directives are unidirectional in that the presence + of a directive in a request does not imply that the same directive is + to be given in the response. + + Note that HTTP/1.0 caches might not implement Cache-Control and + might only implement Pragma: no-cache (see section 14.32). + + Cache directives MUST be passed through by a proxy or gateway + application, regardless of their significance to that application, + since the directives might be applicable to all recipients along the + request/response chain. It is not possible to specify a cache- + directive for a specific cache. + + Cache-Control = "Cache-Control" ":" 1#cache-directive + + cache-directive = cache-request-directive + | cache-response-directive + + cache-request-directive = + "no-cache" ; section 14.9.1 + | "no-store" ; section 14.9.2 + | "max-age" "=" delta-seconds ; section 14.9.3, 14.9.4 + | "max-stale" [ "=" delta-seconds ] ; section 14.9.3 + | "min-fresh" "=" delta-seconds ; section 14.9.3 + | "no-transform" ; section 14.9.5 + | "only-if-cached" ; section 14.9.4 + | cache-extension ; section 14.9.6 + + cache-response-directive = + "public" ; section 14.9.1 + | "private" [ "=" <"> 1#field-name <"> ] ; section 14.9.1 + | "no-cache" [ "=" <"> 1#field-name <"> ]; section 14.9.1 + | "no-store" ; section 14.9.2 + | "no-transform" ; section 14.9.5 + | "must-revalidate" ; section 14.9.4 + | "proxy-revalidate" ; section 14.9.4 + | "max-age" "=" delta-seconds ; section 14.9.3 + | "s-maxage" "=" delta-seconds ; section 14.9.3 + | cache-extension ; section 14.9.6 + + cache-extension = token [ "=" ( token | quoted-string ) ] + + + +Fielding, et al. Standards Track [Page 108] +
RFC 2616 HTTP/1.1 June 1999 + + + When a directive appears without any 1#field-name parameter, the + directive applies to the entire request or response. When such a + directive appears with a 1#field-name parameter, it applies only to + the named field or fields, and not to the rest of the request or + response. This mechanism supports extensibility; implementations of + future versions of the HTTP protocol might apply these directives to + header fields not defined in HTTP/1.1. + + The cache-control directives can be broken down into these general + categories: + + - Restrictions on what are cacheable; these may only be imposed by + the origin server. + + - Restrictions on what may be stored by a cache; these may be + imposed by either the origin server or the user agent. + + - Modifications of the basic expiration mechanism; these may be + imposed by either the origin server or the user agent. + + - Controls over cache revalidation and reload; these may only be + imposed by a user agent. + + - Control over transformation of entities. + + - Extensions to the caching system. + +14.9.1 What is Cacheable + + By default, a response is cacheable if the requirements of the + request method, request header fields, and the response status + indicate that it is cacheable. section 13.4 summarizes these defaults + for cacheability. The following Cache-Control response directives + allow an origin server to override the default cacheability of a + response: + + public + Indicates that the response MAY be cached by any cache, even if it + would normally be non-cacheable or cacheable only within a non- + shared cache. (See also Authorization, section 14.8, for + additional details.) + + private + Indicates that all or part of the response message is intended for + a single user and MUST NOT be cached by a shared cache. This + allows an origin server to state that the specified parts of the + + + + + +Fielding, et al. Standards Track [Page 109] +
RFC 2616 HTTP/1.1 June 1999 + + + response are intended for only one user and are not a valid + response for requests by other users. A private (non-shared) cache + MAY cache the response. + + Note: This usage of the word private only controls where the + response may be cached, and cannot ensure the privacy of the + message content. + + no-cache + If the no-cache directive does not specify a field-name, then a + cache MUST NOT use the response to satisfy a subsequent request + without successful revalidation with the origin server. This + allows an origin server to prevent caching even by caches that + have been configured to return stale responses to client requests. + + If the no-cache directive does specify one or more field-names, + then a cache MAY use the response to satisfy a subsequent request, + subject to any other restrictions on caching. However, the + specified field-name(s) MUST NOT be sent in the response to a + subsequent request without successful revalidation with the origin + server. This allows an origin server to prevent the re-use of + certain header fields in a response, while still allowing caching + of the rest of the response. + + Note: Most HTTP/1.0 caches will not recognize or obey this + directive. + +14.9.2 What May be Stored by Caches + + no-store + The purpose of the no-store directive is to prevent the + inadvertent release or retention of sensitive information (for + example, on backup tapes). The no-store directive applies to the + entire message, and MAY be sent either in a response or in a + request. If sent in a request, a cache MUST NOT store any part of + either this request or any response to it. If sent in a response, + a cache MUST NOT store any part of either this response or the + request that elicited it. This directive applies to both non- + shared and shared caches. "MUST NOT store" in this context means + that the cache MUST NOT intentionally store the information in + non-volatile storage, and MUST make a best-effort attempt to + remove the information from volatile storage as promptly as + possible after forwarding it. + + Even when this directive is associated with a response, users + might explicitly store such a response outside of the caching + system (e.g., with a "Save As" dialog). History buffers MAY store + such responses as part of their normal operation. + + + +Fielding, et al. Standards Track [Page 110] +
RFC 2616 HTTP/1.1 June 1999 + + + The purpose of this directive is to meet the stated requirements + of certain users and service authors who are concerned about + accidental releases of information via unanticipated accesses to + cache data structures. While the use of this directive might + improve privacy in some cases, we caution that it is NOT in any + way a reliable or sufficient mechanism for ensuring privacy. In + particular, malicious or compromised caches might not recognize or + obey this directive, and communications networks might be + vulnerable to eavesdropping. + +14.9.3 Modifications of the Basic Expiration Mechanism + + The expiration time of an entity MAY be specified by the origin + server using the Expires header (see section 14.21). Alternatively, + it MAY be specified using the max-age directive in a response. When + the max-age cache-control directive is present in a cached response, + the response is stale if its current age is greater than the age + value given (in seconds) at the time of a new request for that + resource. The max-age directive on a response implies that the + response is cacheable (i.e., "public") unless some other, more + restrictive cache directive is also present. + + If a response includes both an Expires header and a max-age + directive, the max-age directive overrides the Expires header, even + if the Expires header is more restrictive. This rule allows an origin + server to provide, for a given response, a longer expiration time to + an HTTP/1.1 (or later) cache than to an HTTP/1.0 cache. This might be + useful if certain HTTP/1.0 caches improperly calculate ages or + expiration times, perhaps due to desynchronized clocks. + + Many HTTP/1.0 cache implementations will treat an Expires value that + is less than or equal to the response Date value as being equivalent + to the Cache-Control response directive "no-cache". If an HTTP/1.1 + cache receives such a response, and the response does not include a + Cache-Control header field, it SHOULD consider the response to be + non-cacheable in order to retain compatibility with HTTP/1.0 servers. + + Note: An origin server might wish to use a relatively new HTTP + cache control feature, such as the "private" directive, on a + network including older caches that do not understand that + feature. The origin server will need to combine the new feature + with an Expires field whose value is less than or equal to the + Date value. This will prevent older caches from improperly + caching the response. + + + + + + + +Fielding, et al. Standards Track [Page 111] +
RFC 2616 HTTP/1.1 June 1999 + + + s-maxage + If a response includes an s-maxage directive, then for a shared + cache (but not for a private cache), the maximum age specified by + this directive overrides the maximum age specified by either the + max-age directive or the Expires header. The s-maxage directive + also implies the semantics of the proxy-revalidate directive (see + section 14.9.4), i.e., that the shared cache must not use the + entry after it becomes stale to respond to a subsequent request + without first revalidating it with the origin server. The s- + maxage directive is always ignored by a private cache. + + Note that most older caches, not compliant with this specification, + do not implement any cache-control directives. An origin server + wishing to use a cache-control directive that restricts, but does not + prevent, caching by an HTTP/1.1-compliant cache MAY exploit the + requirement that the max-age directive overrides the Expires header, + and the fact that pre-HTTP/1.1-compliant caches do not observe the + max-age directive. + + Other directives allow a user agent to modify the basic expiration + mechanism. These directives MAY be specified on a request: + + max-age + Indicates that the client is willing to accept a response whose + age is no greater than the specified time in seconds. Unless max- + stale directive is also included, the client is not willing to + accept a stale response. + + min-fresh + Indicates that the client is willing to accept a response whose + freshness lifetime is no less than its current age plus the + specified time in seconds. That is, the client wants a response + that will still be fresh for at least the specified number of + seconds. + + max-stale + Indicates that the client is willing to accept a response that has + exceeded its expiration time. If max-stale is assigned a value, + then the client is willing to accept a response that has exceeded + its expiration time by no more than the specified number of + seconds. If no value is assigned to max-stale, then the client is + willing to accept a stale response of any age. + + If a cache returns a stale response, either because of a max-stale + directive on a request, or because the cache is configured to + override the expiration time of a response, the cache MUST attach a + Warning header to the stale response, using Warning 110 (Response is + stale). + + + +Fielding, et al. Standards Track [Page 112] +
RFC 2616 HTTP/1.1 June 1999 + + + A cache MAY be configured to return stale responses without + validation, but only if this does not conflict with any "MUST"-level + requirements concerning cache validation (e.g., a "must-revalidate" + cache-control directive). + + If both the new request and the cached entry include "max-age" + directives, then the lesser of the two values is used for determining + the freshness of the cached entry for that request. + +14.9.4 Cache Revalidation and Reload Controls + + Sometimes a user agent might want or need to insist that a cache + revalidate its cache entry with the origin server (and not just with + the next cache along the path to the origin server), or to reload its + cache entry from the origin server. End-to-end revalidation might be + necessary if either the cache or the origin server has overestimated + the expiration time of the cached response. End-to-end reload may be + necessary if the cache entry has become corrupted for some reason. + + End-to-end revalidation may be requested either when the client does + not have its own local cached copy, in which case we call it + "unspecified end-to-end revalidation", or when the client does have a + local cached copy, in which case we call it "specific end-to-end + revalidation." + + The client can specify these three kinds of action using Cache- + Control request directives: + + End-to-end reload + The request includes a "no-cache" cache-control directive or, for + compatibility with HTTP/1.0 clients, "Pragma: no-cache". Field + names MUST NOT be included with the no-cache directive in a + request. The server MUST NOT use a cached copy when responding to + such a request. + + Specific end-to-end revalidation + The request includes a "max-age=0" cache-control directive, which + forces each cache along the path to the origin server to + revalidate its own entry, if any, with the next cache or server. + The initial request includes a cache-validating conditional with + the client's current validator. + + Unspecified end-to-end revalidation + The request includes "max-age=0" cache-control directive, which + forces each cache along the path to the origin server to + revalidate its own entry, if any, with the next cache or server. + The initial request does not include a cache-validating + + + + +Fielding, et al. Standards Track [Page 113] +
RFC 2616 HTTP/1.1 June 1999 + + + conditional; the first cache along the path (if any) that holds a + cache entry for this resource includes a cache-validating + conditional with its current validator. + + max-age + When an intermediate cache is forced, by means of a max-age=0 + directive, to revalidate its own cache entry, and the client has + supplied its own validator in the request, the supplied validator + might differ from the validator currently stored with the cache + entry. In this case, the cache MAY use either validator in making + its own request without affecting semantic transparency. + + However, the choice of validator might affect performance. The + best approach is for the intermediate cache to use its own + validator when making its request. If the server replies with 304 + (Not Modified), then the cache can return its now validated copy + to the client with a 200 (OK) response. If the server replies with + a new entity and cache validator, however, the intermediate cache + can compare the returned validator with the one provided in the + client's request, using the strong comparison function. If the + client's validator is equal to the origin server's, then the + intermediate cache simply returns 304 (Not Modified). Otherwise, + it returns the new entity with a 200 (OK) response. + + If a request includes the no-cache directive, it SHOULD NOT + include min-fresh, max-stale, or max-age. + + only-if-cached + In some cases, such as times of extremely poor network + connectivity, a client may want a cache to return only those + responses that it currently has stored, and not to reload or + revalidate with the origin server. To do this, the client may + include the only-if-cached directive in a request. If it receives + this directive, a cache SHOULD either respond using a cached entry + that is consistent with the other constraints of the request, or + respond with a 504 (Gateway Timeout) status. However, if a group + of caches is being operated as a unified system with good internal + connectivity, such a request MAY be forwarded within that group of + caches. + + must-revalidate + Because a cache MAY be configured to ignore a server's specified + expiration time, and because a client request MAY include a max- + stale directive (which has a similar effect), the protocol also + includes a mechanism for the origin server to require revalidation + of a cache entry on any subsequent use. When the must-revalidate + directive is present in a response received by a cache, that cache + MUST NOT use the entry after it becomes stale to respond to a + + + +Fielding, et al. Standards Track [Page 114] +
RFC 2616 HTTP/1.1 June 1999 + + + subsequent request without first revalidating it with the origin + server. (I.e., the cache MUST do an end-to-end revalidation every + time, if, based solely on the origin server's Expires or max-age + value, the cached response is stale.) + + The must-revalidate directive is necessary to support reliable + operation for certain protocol features. In all circumstances an + HTTP/1.1 cache MUST obey the must-revalidate directive; in + particular, if the cache cannot reach the origin server for any + reason, it MUST generate a 504 (Gateway Timeout) response. + + Servers SHOULD send the must-revalidate directive if and only if + failure to revalidate a request on the entity could result in + incorrect operation, such as a silently unexecuted financial + transaction. Recipients MUST NOT take any automated action that + violates this directive, and MUST NOT automatically provide an + unvalidated copy of the entity if revalidation fails. + + Although this is not recommended, user agents operating under + severe connectivity constraints MAY violate this directive but, if + so, MUST explicitly warn the user that an unvalidated response has + been provided. The warning MUST be provided on each unvalidated + access, and SHOULD require explicit user confirmation. + + proxy-revalidate + The proxy-revalidate directive has the same meaning as the must- + revalidate directive, except that it does not apply to non-shared + user agent caches. It can be used on a response to an + authenticated request to permit the user's cache to store and + later return the response without needing to revalidate it (since + it has already been authenticated once by that user), while still + requiring proxies that service many users to revalidate each time + (in order to make sure that each user has been authenticated). + Note that such authenticated responses also need the public cache + control directive in order to allow them to be cached at all. + +14.9.5 No-Transform Directive + + no-transform + Implementors of intermediate caches (proxies) have found it useful + to convert the media type of certain entity bodies. A non- + transparent proxy might, for example, convert between image + formats in order to save cache space or to reduce the amount of + traffic on a slow link. + + Serious operational problems occur, however, when these + transformations are applied to entity bodies intended for certain + kinds of applications. For example, applications for medical + + + +Fielding, et al. Standards Track [Page 115] +
RFC 2616 HTTP/1.1 June 1999 + + + imaging, scientific data analysis and those using end-to-end + authentication, all depend on receiving an entity body that is bit + for bit identical to the original entity-body. + + Therefore, if a message includes the no-transform directive, an + intermediate cache or proxy MUST NOT change those headers that are + listed in section 13.5.2 as being subject to the no-transform + directive. This implies that the cache or proxy MUST NOT change + any aspect of the entity-body that is specified by these headers, + including the value of the entity-body itself. + +14.9.6 Cache Control Extensions + + The Cache-Control header field can be extended through the use of one + or more cache-extension tokens, each with an optional assigned value. + Informational extensions (those which do not require a change in + cache behavior) MAY be added without changing the semantics of other + directives. Behavioral extensions are designed to work by acting as + modifiers to the existing base of cache directives. Both the new + directive and the standard directive are supplied, such that + applications which do not understand the new directive will default + to the behavior specified by the standard directive, and those that + understand the new directive will recognize it as modifying the + requirements associated with the standard directive. In this way, + extensions to the cache-control directives can be made without + requiring changes to the base protocol. + + This extension mechanism depends on an HTTP cache obeying all of the + cache-control directives defined for its native HTTP-version, obeying + certain extensions, and ignoring all directives that it does not + understand. + + For example, consider a hypothetical new response directive called + community which acts as a modifier to the private directive. We + define this new directive to mean that, in addition to any non-shared + cache, any cache which is shared only by members of the community + named within its value may cache the response. An origin server + wishing to allow the UCI community to use an otherwise private + response in their shared cache(s) could do so by including + + Cache-Control: private, community="UCI" + + A cache seeing this header field will act correctly even if the cache + does not understand the community cache-extension, since it will also + see and understand the private directive and thus default to the safe + behavior. + + + + + +Fielding, et al. Standards Track [Page 116] +
RFC 2616 HTTP/1.1 June 1999 + + + Unrecognized cache-directives MUST be ignored; it is assumed that any + cache-directive likely to be unrecognized by an HTTP/1.1 cache will + be combined with standard directives (or the response's default + cacheability) such that the cache behavior will remain minimally + correct even if the cache does not understand the extension(s). + +14.10 Connection + + The Connection general-header field allows the sender to specify + options that are desired for that particular connection and MUST NOT + be communicated by proxies over further connections. + + The Connection header has the following grammar: + + Connection = "Connection" ":" 1#(connection-token) + connection-token = token + + HTTP/1.1 proxies MUST parse the Connection header field before a + message is forwarded and, for each connection-token in this field, + remove any header field(s) from the message with the same name as the + connection-token. Connection options are signaled by the presence of + a connection-token in the Connection header field, not by any + corresponding additional header field(s), since the additional header + field may not be sent if there are no parameters associated with that + connection option. + + Message headers listed in the Connection header MUST NOT include + end-to-end headers, such as Cache-Control. + + HTTP/1.1 defines the "close" connection option for the sender to + signal that the connection will be closed after completion of the + response. For example, + + Connection: close + + in either the request or the response header fields indicates that + the connection SHOULD NOT be considered `persistent' (section 8.1) + after the current request/response is complete. + + HTTP/1.1 applications that do not support persistent connections MUST + include the "close" connection option in every message. + + A system receiving an HTTP/1.0 (or lower-version) message that + includes a Connection header MUST, for each connection-token in this + field, remove and ignore any header field(s) from the message with + the same name as the connection-token. This protects against mistaken + forwarding of such header fields by pre-HTTP/1.1 proxies. See section + 19.6.2. + + + +Fielding, et al. Standards Track [Page 117] +
RFC 2616 HTTP/1.1 June 1999 + + +14.11 Content-Encoding + + The Content-Encoding entity-header field is used as a modifier to the + media-type. When present, its value indicates what additional content + codings have been applied to the entity-body, and thus what decoding + mechanisms must be applied in order to obtain the media-type + referenced by the Content-Type header field. Content-Encoding is + primarily used to allow a document to be compressed without losing + the identity of its underlying media type. + + Content-Encoding = "Content-Encoding" ":" 1#content-coding + + Content codings are defined in section 3.5. An example of its use is + + Content-Encoding: gzip + + The content-coding is a characteristic of the entity identified by + the Request-URI. Typically, the entity-body is stored with this + encoding and is only decoded before rendering or analogous usage. + However, a non-transparent proxy MAY modify the content-coding if the + new coding is known to be acceptable to the recipient, unless the + "no-transform" cache-control directive is present in the message. + + If the content-coding of an entity is not "identity", then the + response MUST include a Content-Encoding entity-header (section + 14.11) that lists the non-identity content-coding(s) used. + + If the content-coding of an entity in a request message is not + acceptable to the origin server, the server SHOULD respond with a + status code of 415 (Unsupported Media Type). + + If multiple encodings have been applied to an entity, the content + codings MUST be listed in the order in which they were applied. + Additional information about the encoding parameters MAY be provided + by other entity-header fields not defined by this specification. + +14.12 Content-Language + + The Content-Language entity-header field describes the natural + language(s) of the intended audience for the enclosed entity. Note + that this might not be equivalent to all the languages used within + the entity-body. + + Content-Language = "Content-Language" ":" 1#language-tag + + + + + + + +Fielding, et al. Standards Track [Page 118] +
RFC 2616 HTTP/1.1 June 1999 + + + Language tags are defined in section 3.10. The primary purpose of + Content-Language is to allow a user to identify and differentiate + entities according to the user's own preferred language. Thus, if the + body content is intended only for a Danish-literate audience, the + appropriate field is + + Content-Language: da + + If no Content-Language is specified, the default is that the content + is intended for all language audiences. This might mean that the + sender does not consider it to be specific to any natural language, + or that the sender does not know for which language it is intended. + + Multiple languages MAY be listed for content that is intended for + multiple audiences. For example, a rendition of the "Treaty of + Waitangi," presented simultaneously in the original Maori and English + versions, would call for + + Content-Language: mi, en + + However, just because multiple languages are present within an entity + does not mean that it is intended for multiple linguistic audiences. + An example would be a beginner's language primer, such as "A First + Lesson in Latin," which is clearly intended to be used by an + English-literate audience. In this case, the Content-Language would + properly only include "en". + + Content-Language MAY be applied to any media type -- it is not + limited to textual documents. + +14.13 Content-Length + + The Content-Length entity-header field indicates the size of the + entity-body, in decimal number of OCTETs, sent to the recipient or, + in the case of the HEAD method, the size of the entity-body that + would have been sent had the request been a GET. + + Content-Length = "Content-Length" ":" 1*DIGIT + + An example is + + Content-Length: 3495 + + Applications SHOULD use this field to indicate the transfer-length of + the message-body, unless this is prohibited by the rules in section + 4.4. + + + + + +Fielding, et al. Standards Track [Page 119] +
RFC 2616 HTTP/1.1 June 1999 + + + Any Content-Length greater than or equal to zero is a valid value. + Section 4.4 describes how to determine the length of a message-body + if a Content-Length is not given. + + Note that the meaning of this field is significantly different from + the corresponding definition in MIME, where it is an optional field + used within the "message/external-body" content-type. In HTTP, it + SHOULD be sent whenever the message's length can be determined prior + to being transferred, unless this is prohibited by the rules in + section 4.4. + +14.14 Content-Location + + The Content-Location entity-header field MAY be used to supply the + resource location for the entity enclosed in the message when that + entity is accessible from a location separate from the requested + resource's URI. A server SHOULD provide a Content-Location for the + variant corresponding to the response entity; especially in the case + where a resource has multiple entities associated with it, and those + entities actually have separate locations by which they might be + individually accessed, the server SHOULD provide a Content-Location + for the particular variant which is returned. + + Content-Location = "Content-Location" ":" + ( absoluteURI | relativeURI ) + + The value of Content-Location also defines the base URI for the + entity. + + The Content-Location value is not a replacement for the original + requested URI; it is only a statement of the location of the resource + corresponding to this particular entity at the time of the request. + Future requests MAY specify the Content-Location URI as the request- + URI if the desire is to identify the source of that particular + entity. + + A cache cannot assume that an entity with a Content-Location + different from the URI used to retrieve it can be used to respond to + later requests on that Content-Location URI. However, the Content- + Location can be used to differentiate between multiple entities + retrieved from a single requested resource, as described in section + 13.6. + + If the Content-Location is a relative URI, the relative URI is + interpreted relative to the Request-URI. + + The meaning of the Content-Location header in PUT or POST requests is + undefined; servers are free to ignore it in those cases. + + + +Fielding, et al. Standards Track [Page 120] +
RFC 2616 HTTP/1.1 June 1999 + + +14.15 Content-MD5 + + The Content-MD5 entity-header field, as defined in RFC 1864 [23], is + an MD5 digest of the entity-body for the purpose of providing an + end-to-end message integrity check (MIC) of the entity-body. (Note: a + MIC is good for detecting accidental modification of the entity-body + in transit, but is not proof against malicious attacks.) + + Content-MD5 = "Content-MD5" ":" md5-digest + md5-digest = <base64 of 128 bit MD5 digest as per RFC 1864> + + The Content-MD5 header field MAY be generated by an origin server or + client to function as an integrity check of the entity-body. Only + origin servers or clients MAY generate the Content-MD5 header field; + proxies and gateways MUST NOT generate it, as this would defeat its + value as an end-to-end integrity check. Any recipient of the entity- + body, including gateways and proxies, MAY check that the digest value + in this header field matches that of the entity-body as received. + + The MD5 digest is computed based on the content of the entity-body, + including any content-coding that has been applied, but not including + any transfer-encoding applied to the message-body. If the message is + received with a transfer-encoding, that encoding MUST be removed + prior to checking the Content-MD5 value against the received entity. + + This has the result that the digest is computed on the octets of the + entity-body exactly as, and in the order that, they would be sent if + no transfer-encoding were being applied. + + HTTP extends RFC 1864 to permit the digest to be computed for MIME + composite media-types (e.g., multipart/* and message/rfc822), but + this does not change how the digest is computed as defined in the + preceding paragraph. + + There are several consequences of this. The entity-body for composite + types MAY contain many body-parts, each with its own MIME and HTTP + headers (including Content-MD5, Content-Transfer-Encoding, and + Content-Encoding headers). If a body-part has a Content-Transfer- + Encoding or Content-Encoding header, it is assumed that the content + of the body-part has had the encoding applied, and the body-part is + included in the Content-MD5 digest as is -- i.e., after the + application. The Transfer-Encoding header field is not allowed within + body-parts. + + Conversion of all line breaks to CRLF MUST NOT be done before + computing or checking the digest: the line break convention used in + the text actually transmitted MUST be left unaltered when computing + the digest. + + + +Fielding, et al. Standards Track [Page 121] +
RFC 2616 HTTP/1.1 June 1999 + + + Note: while the definition of Content-MD5 is exactly the same for + HTTP as in RFC 1864 for MIME entity-bodies, there are several ways + in which the application of Content-MD5 to HTTP entity-bodies + differs from its application to MIME entity-bodies. One is that + HTTP, unlike MIME, does not use Content-Transfer-Encoding, and + does use Transfer-Encoding and Content-Encoding. Another is that + HTTP more frequently uses binary content types than MIME, so it is + worth noting that, in such cases, the byte order used to compute + the digest is the transmission byte order defined for the type. + Lastly, HTTP allows transmission of text types with any of several + line break conventions and not just the canonical form using CRLF. + +14.16 Content-Range + + The Content-Range entity-header is sent with a partial entity-body to + specify where in the full entity-body the partial body should be + applied. Range units are defined in section 3.12. + + Content-Range = "Content-Range" ":" content-range-spec + + content-range-spec = byte-content-range-spec + byte-content-range-spec = bytes-unit SP + byte-range-resp-spec "/" + ( instance-length | "*" ) + + byte-range-resp-spec = (first-byte-pos "-" last-byte-pos) + | "*" + instance-length = 1*DIGIT + + The header SHOULD indicate the total length of the full entity-body, + unless this length is unknown or difficult to determine. The asterisk + "*" character means that the instance-length is unknown at the time + when the response was generated. + + Unlike byte-ranges-specifier values (see section 14.35.1), a byte- + range-resp-spec MUST only specify one range, and MUST contain + absolute byte positions for both the first and last byte of the + range. + + A byte-content-range-spec with a byte-range-resp-spec whose last- + byte-pos value is less than its first-byte-pos value, or whose + instance-length value is less than or equal to its last-byte-pos + value, is invalid. The recipient of an invalid byte-content-range- + spec MUST ignore it and any content transferred along with it. + + A server sending a response with status code 416 (Requested range not + satisfiable) SHOULD include a Content-Range field with a byte-range- + resp-spec of "*". The instance-length specifies the current length of + + + +Fielding, et al. Standards Track [Page 122] +
RFC 2616 HTTP/1.1 June 1999 + + + the selected resource. A response with status code 206 (Partial + Content) MUST NOT include a Content-Range field with a byte-range- + resp-spec of "*". + + Examples of byte-content-range-spec values, assuming that the entity + contains a total of 1234 bytes: + + . The first 500 bytes: + bytes 0-499/1234 + + . The second 500 bytes: + bytes 500-999/1234 + + . All except for the first 500 bytes: + bytes 500-1233/1234 + + . The last 500 bytes: + bytes 734-1233/1234 + + When an HTTP message includes the content of a single range (for + example, a response to a request for a single range, or to a request + for a set of ranges that overlap without any holes), this content is + transmitted with a Content-Range header, and a Content-Length header + showing the number of bytes actually transferred. For example, + + HTTP/1.1 206 Partial content + Date: Wed, 15 Nov 1995 06:25:24 GMT + Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT + Content-Range: bytes 21010-47021/47022 + Content-Length: 26012 + Content-Type: image/gif + + When an HTTP message includes the content of multiple ranges (for + example, a response to a request for multiple non-overlapping + ranges), these are transmitted as a multipart message. The multipart + media type used for this purpose is "multipart/byteranges" as defined + in appendix 19.2. See appendix 19.6.3 for a compatibility issue. + + A response to a request for a single range MUST NOT be sent using the + multipart/byteranges media type. A response to a request for + multiple ranges, whose result is a single range, MAY be sent as a + multipart/byteranges media type with one part. A client that cannot + decode a multipart/byteranges message MUST NOT ask for multiple + byte-ranges in a single request. + + When a client requests multiple byte-ranges in one request, the + server SHOULD return them in the order that they appeared in the + request. + + + +Fielding, et al. Standards Track [Page 123] +
RFC 2616 HTTP/1.1 June 1999 + + + If the server ignores a byte-range-spec because it is syntactically + invalid, the server SHOULD treat the request as if the invalid Range + header field did not exist. (Normally, this means return a 200 + response containing the full entity). + + If the server receives a request (other than one including an If- + Range request-header field) with an unsatisfiable Range request- + header field (that is, all of whose byte-range-spec values have a + first-byte-pos value greater than the current length of the selected + resource), it SHOULD return a response code of 416 (Requested range + not satisfiable) (section 10.4.17). + + Note: clients cannot depend on servers to send a 416 (Requested + range not satisfiable) response instead of a 200 (OK) response for + an unsatisfiable Range request-header, since not all servers + implement this request-header. + +14.17 Content-Type + + The Content-Type entity-header field indicates the media type of the + entity-body sent to the recipient or, in the case of the HEAD method, + the media type that would have been sent had the request been a GET. + + Content-Type = "Content-Type" ":" media-type + + Media types are defined in section 3.7. An example of the field is + + Content-Type: text/html; charset=ISO-8859-4 + + Further discussion of methods for identifying the media type of an + entity is provided in section 7.2.1. + +14.18 Date + + The Date general-header field represents the date and time at which + the message was originated, having the same semantics as orig-date in + RFC 822. The field value is an HTTP-date, as described in section + 3.3.1; it MUST be sent in RFC 1123 [8]-date format. + + Date = "Date" ":" HTTP-date + + An example is + + Date: Tue, 15 Nov 1994 08:12:31 GMT + + Origin servers MUST include a Date header field in all responses, + except in these cases: + + + + +Fielding, et al. Standards Track [Page 124] +
RFC 2616 HTTP/1.1 June 1999 + + + 1. If the response status code is 100 (Continue) or 101 (Switching + Protocols), the response MAY include a Date header field, at + the server's option. + + 2. If the response status code conveys a server error, e.g. 500 + (Internal Server Error) or 503 (Service Unavailable), and it is + inconvenient or impossible to generate a valid Date. + + 3. If the server does not have a clock that can provide a + reasonable approximation of the current time, its responses + MUST NOT include a Date header field. In this case, the rules + in section 14.18.1 MUST be followed. + + A received message that does not have a Date header field MUST be + assigned one by the recipient if the message will be cached by that + recipient or gatewayed via a protocol which requires a Date. An HTTP + implementation without a clock MUST NOT cache responses without + revalidating them on every use. An HTTP cache, especially a shared + cache, SHOULD use a mechanism, such as NTP [28], to synchronize its + clock with a reliable external standard. + + Clients SHOULD only send a Date header field in messages that include + an entity-body, as in the case of the PUT and POST requests, and even + then it is optional. A client without a clock MUST NOT send a Date + header field in a request. + + The HTTP-date sent in a Date header SHOULD NOT represent a date and + time subsequent to the generation of the message. It SHOULD represent + the best available approximation of the date and time of message + generation, unless the implementation has no means of generating a + reasonably accurate date and time. In theory, the date ought to + represent the moment just before the entity is generated. In + practice, the date can be generated at any time during the message + origination without affecting its semantic value. + +14.18.1 Clockless Origin Server Operation + + Some origin server implementations might not have a clock available. + An origin server without a clock MUST NOT assign Expires or Last- + Modified values to a response, unless these values were associated + with the resource by a system or user with a reliable clock. It MAY + assign an Expires value that is known, at or before server + configuration time, to be in the past (this allows "pre-expiration" + of responses without storing separate Expires values for each + resource). + + + + + + +Fielding, et al. Standards Track [Page 125] +
RFC 2616 HTTP/1.1 June 1999 + + +14.19 ETag + + The ETag response-header field provides the current value of the + entity tag for the requested variant. The headers used with entity + tags are described in sections 14.24, 14.26 and 14.44. The entity tag + MAY be used for comparison with other entities from the same resource + (see section 13.3.3). + + ETag = "ETag" ":" entity-tag + + Examples: + + ETag: "xyzzy" + ETag: W/"xyzzy" + ETag: "" + +14.20 Expect + + The Expect request-header field is used to indicate that particular + server behaviors are required by the client. + + Expect = "Expect" ":" 1#expectation + + expectation = "100-continue" | expectation-extension + expectation-extension = token [ "=" ( token | quoted-string ) + *expect-params ] + expect-params = ";" token [ "=" ( token | quoted-string ) ] + + + A server that does not understand or is unable to comply with any of + the expectation values in the Expect field of a request MUST respond + with appropriate error status. The server MUST respond with a 417 + (Expectation Failed) status if any of the expectations cannot be met + or, if there are other problems with the request, some other 4xx + status. + + This header field is defined with extensible syntax to allow for + future extensions. If a server receives a request containing an + Expect field that includes an expectation-extension that it does not + support, it MUST respond with a 417 (Expectation Failed) status. + + Comparison of expectation values is case-insensitive for unquoted + tokens (including the 100-continue token), and is case-sensitive for + quoted-string expectation-extensions. + + + + + + + +Fielding, et al. Standards Track [Page 126] +
RFC 2616 HTTP/1.1 June 1999 + + + The Expect mechanism is hop-by-hop: that is, an HTTP/1.1 proxy MUST + return a 417 (Expectation Failed) status if it receives a request + with an expectation that it cannot meet. However, the Expect + request-header itself is end-to-end; it MUST be forwarded if the + request is forwarded. + + Many older HTTP/1.0 and HTTP/1.1 applications do not understand the + Expect header. + + See section 8.2.3 for the use of the 100 (continue) status. + +14.21 Expires + + The Expires entity-header field gives the date/time after which the + response is considered stale. A stale cache entry may not normally be + returned by a cache (either a proxy cache or a user agent cache) + unless it is first validated with the origin server (or with an + intermediate cache that has a fresh copy of the entity). See section + 13.2 for further discussion of the expiration model. + + The presence of an Expires field does not imply that the original + resource will change or cease to exist at, before, or after that + time. + + The format is an absolute date and time as defined by HTTP-date in + section 3.3.1; it MUST be in RFC 1123 date format: + + Expires = "Expires" ":" HTTP-date + + An example of its use is + + Expires: Thu, 01 Dec 1994 16:00:00 GMT + + Note: if a response includes a Cache-Control field with the max- + age directive (see section 14.9.3), that directive overrides the + Expires field. + + HTTP/1.1 clients and caches MUST treat other invalid date formats, + especially including the value "0", as in the past (i.e., "already + expired"). + + To mark a response as "already expired," an origin server sends an + Expires date that is equal to the Date header value. (See the rules + for expiration calculations in section 13.2.4.) + + + + + + + +Fielding, et al. Standards Track [Page 127] +
RFC 2616 HTTP/1.1 June 1999 + + + To mark a response as "never expires," an origin server sends an + Expires date approximately one year from the time the response is + sent. HTTP/1.1 servers SHOULD NOT send Expires dates more than one + year in the future. + + The presence of an Expires header field with a date value of some + time in the future on a response that otherwise would by default be + non-cacheable indicates that the response is cacheable, unless + indicated otherwise by a Cache-Control header field (section 14.9). + +14.22 From + + The From request-header field, if given, SHOULD contain an Internet + e-mail address for the human user who controls the requesting user + agent. The address SHOULD be machine-usable, as defined by "mailbox" + in RFC 822 [9] as updated by RFC 1123 [8]: + + From = "From" ":" mailbox + + An example is: + + From: webmaster@w3.org + + This header field MAY be used for logging purposes and as a means for + identifying the source of invalid or unwanted requests. It SHOULD NOT + be used as an insecure form of access protection. The interpretation + of this field is that the request is being performed on behalf of the + person given, who accepts responsibility for the method performed. In + particular, robot agents SHOULD include this header so that the + person responsible for running the robot can be contacted if problems + occur on the receiving end. + + The Internet e-mail address in this field MAY be separate from the + Internet host which issued the request. For example, when a request + is passed through a proxy the original issuer's address SHOULD be + used. + + The client SHOULD NOT send the From header field without the user's + approval, as it might conflict with the user's privacy interests or + their site's security policy. It is strongly recommended that the + user be able to disable, enable, and modify the value of this field + at any time prior to a request. + +14.23 Host + + The Host request-header field specifies the Internet host and port + number of the resource being requested, as obtained from the original + URI given by the user or referring resource (generally an HTTP URL, + + + +Fielding, et al. Standards Track [Page 128] +
RFC 2616 HTTP/1.1 June 1999 + + + as described in section 3.2.2). The Host field value MUST represent + the naming authority of the origin server or gateway given by the + original URL. This allows the origin server or gateway to + differentiate between internally-ambiguous URLs, such as the root "/" + URL of a server for multiple host names on a single IP address. + + Host = "Host" ":" host [ ":" port ] ; section 3.2.2 + + A "host" without any trailing port information implies the default + port for the service requested (e.g., "80" for an HTTP URL). For + example, a request on the origin server for + <http://www.w3.org/pub/WWW/> would properly include: + + GET /pub/WWW/ HTTP/1.1 + Host: www.w3.org + + A client MUST include a Host header field in all HTTP/1.1 request + messages . If the requested URI does not include an Internet host + name for the service being requested, then the Host header field MUST + be given with an empty value. An HTTP/1.1 proxy MUST ensure that any + request message it forwards does contain an appropriate Host header + field that identifies the service being requested by the proxy. All + Internet-based HTTP/1.1 servers MUST respond with a 400 (Bad Request) + status code to any HTTP/1.1 request message which lacks a Host header + field. + + See sections 5.2 and 19.6.1.1 for other requirements relating to + Host. + +14.24 If-Match + + The If-Match request-header field is used with a method to make it + conditional. A client that has one or more entities previously + obtained from the resource can verify that one of those entities is + current by including a list of their associated entity tags in the + If-Match header field. Entity tags are defined in section 3.11. The + purpose of this feature is to allow efficient updates of cached + information with a minimum amount of transaction overhead. It is also + used, on updating requests, to prevent inadvertent modification of + the wrong version of a resource. As a special case, the value "*" + matches any current entity of the resource. + + If-Match = "If-Match" ":" ( "*" | 1#entity-tag ) + + If any of the entity tags match the entity tag of the entity that + would have been returned in the response to a similar GET request + (without the If-Match header) on that resource, or if "*" is given + + + + +Fielding, et al. Standards Track [Page 129] +
RFC 2616 HTTP/1.1 June 1999 + + + and any current entity exists for that resource, then the server MAY + perform the requested method as if the If-Match header field did not + exist. + + A server MUST use the strong comparison function (see section 13.3.3) + to compare the entity tags in If-Match. + + If none of the entity tags match, or if "*" is given and no current + entity exists, the server MUST NOT perform the requested method, and + MUST return a 412 (Precondition Failed) response. This behavior is + most useful when the client wants to prevent an updating method, such + as PUT, from modifying a resource that has changed since the client + last retrieved it. + + If the request would, without the If-Match header field, result in + anything other than a 2xx or 412 status, then the If-Match header + MUST be ignored. + + The meaning of "If-Match: *" is that the method SHOULD be performed + if the representation selected by the origin server (or by a cache, + possibly using the Vary mechanism, see section 14.44) exists, and + MUST NOT be performed if the representation does not exist. + + A request intended to update a resource (e.g., a PUT) MAY include an + If-Match header field to signal that the request method MUST NOT be + applied if the entity corresponding to the If-Match value (a single + entity tag) is no longer a representation of that resource. This + allows the user to indicate that they do not wish the request to be + successful if the resource has been changed without their knowledge. + Examples: + + If-Match: "xyzzy" + If-Match: "xyzzy", "r2d2xxxx", "c3piozzzz" + If-Match: * + + The result of a request having both an If-Match header field and + either an If-None-Match or an If-Modified-Since header fields is + undefined by this specification. + +14.25 If-Modified-Since + + The If-Modified-Since request-header field is used with a method to + make it conditional: if the requested variant has not been modified + since the time specified in this field, an entity will not be + returned from the server; instead, a 304 (not modified) response will + be returned without any message-body. + + If-Modified-Since = "If-Modified-Since" ":" HTTP-date + + + +Fielding, et al. Standards Track [Page 130] +
RFC 2616 HTTP/1.1 June 1999 + + + An example of the field is: + + If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT + + A GET method with an If-Modified-Since header and no Range header + requests that the identified entity be transferred only if it has + been modified since the date given by the If-Modified-Since header. + The algorithm for determining this includes the following cases: + + a) If the request would normally result in anything other than a + 200 (OK) status, or if the passed If-Modified-Since date is + invalid, the response is exactly the same as for a normal GET. + A date which is later than the server's current time is + invalid. + + b) If the variant has been modified since the If-Modified-Since + date, the response is exactly the same as for a normal GET. + + c) If the variant has not been modified since a valid If- + Modified-Since date, the server SHOULD return a 304 (Not + Modified) response. + + The purpose of this feature is to allow efficient updates of cached + information with a minimum amount of transaction overhead. + + Note: The Range request-header field modifies the meaning of If- + Modified-Since; see section 14.35 for full details. + + Note: If-Modified-Since times are interpreted by the server, whose + clock might not be synchronized with the client. + + Note: When handling an If-Modified-Since header field, some + servers will use an exact date comparison function, rather than a + less-than function, for deciding whether to send a 304 (Not + Modified) response. To get best results when sending an If- + Modified-Since header field for cache validation, clients are + advised to use the exact date string received in a previous Last- + Modified header field whenever possible. + + Note: If a client uses an arbitrary date in the If-Modified-Since + header instead of a date taken from the Last-Modified header for + the same request, the client should be aware of the fact that this + date is interpreted in the server's understanding of time. The + client should consider unsynchronized clocks and rounding problems + due to the different encodings of time between the client and + server. This includes the possibility of race conditions if the + document has changed between the time it was first requested and + the If-Modified-Since date of a subsequent request, and the + + + +Fielding, et al. Standards Track [Page 131] +
RFC 2616 HTTP/1.1 June 1999 + + + possibility of clock-skew-related problems if the If-Modified- + Since date is derived from the client's clock without correction + to the server's clock. Corrections for different time bases + between client and server are at best approximate due to network + latency. + + The result of a request having both an If-Modified-Since header field + and either an If-Match or an If-Unmodified-Since header fields is + undefined by this specification. + +14.26 If-None-Match + + The If-None-Match request-header field is used with a method to make + it conditional. A client that has one or more entities previously + obtained from the resource can verify that none of those entities is + current by including a list of their associated entity tags in the + If-None-Match header field. The purpose of this feature is to allow + efficient updates of cached information with a minimum amount of + transaction overhead. It is also used to prevent a method (e.g. PUT) + from inadvertently modifying an existing resource when the client + believes that the resource does not exist. + + As a special case, the value "*" matches any current entity of the + resource. + + If-None-Match = "If-None-Match" ":" ( "*" | 1#entity-tag ) + + If any of the entity tags match the entity tag of the entity that + would have been returned in the response to a similar GET request + (without the If-None-Match header) on that resource, or if "*" is + given and any current entity exists for that resource, then the + server MUST NOT perform the requested method, unless required to do + so because the resource's modification date fails to match that + supplied in an If-Modified-Since header field in the request. + Instead, if the request method was GET or HEAD, the server SHOULD + respond with a 304 (Not Modified) response, including the cache- + related header fields (particularly ETag) of one of the entities that + matched. For all other request methods, the server MUST respond with + a status of 412 (Precondition Failed). + + See section 13.3.3 for rules on how to determine if two entities tags + match. The weak comparison function can only be used with GET or HEAD + requests. + + + + + + + + +Fielding, et al. Standards Track [Page 132] +
RFC 2616 HTTP/1.1 June 1999 + + + If none of the entity tags match, then the server MAY perform the + requested method as if the If-None-Match header field did not exist, + but MUST also ignore any If-Modified-Since header field(s) in the + request. That is, if no entity tags match, then the server MUST NOT + return a 304 (Not Modified) response. + + If the request would, without the If-None-Match header field, result + in anything other than a 2xx or 304 status, then the If-None-Match + header MUST be ignored. (See section 13.3.4 for a discussion of + server behavior when both If-Modified-Since and If-None-Match appear + in the same request.) + + The meaning of "If-None-Match: *" is that the method MUST NOT be + performed if the representation selected by the origin server (or by + a cache, possibly using the Vary mechanism, see section 14.44) + exists, and SHOULD be performed if the representation does not exist. + This feature is intended to be useful in preventing races between PUT + operations. + + Examples: + + If-None-Match: "xyzzy" + If-None-Match: W/"xyzzy" + If-None-Match: "xyzzy", "r2d2xxxx", "c3piozzzz" + If-None-Match: W/"xyzzy", W/"r2d2xxxx", W/"c3piozzzz" + If-None-Match: * + + The result of a request having both an If-None-Match header field and + either an If-Match or an If-Unmodified-Since header fields is + undefined by this specification. + +14.27 If-Range + + If a client has a partial copy of an entity in its cache, and wishes + to have an up-to-date copy of the entire entity in its cache, it + could use the Range request-header with a conditional GET (using + either or both of If-Unmodified-Since and If-Match.) However, if the + condition fails because the entity has been modified, the client + would then have to make a second request to obtain the entire current + entity-body. + + The If-Range header allows a client to "short-circuit" the second + request. Informally, its meaning is `if the entity is unchanged, send + me the part(s) that I am missing; otherwise, send me the entire new + entity'. + + If-Range = "If-Range" ":" ( entity-tag | HTTP-date ) + + + + +Fielding, et al. Standards Track [Page 133] +
RFC 2616 HTTP/1.1 June 1999 + + + If the client has no entity tag for an entity, but does have a Last- + Modified date, it MAY use that date in an If-Range header. (The + server can distinguish between a valid HTTP-date and any form of + entity-tag by examining no more than two characters.) The If-Range + header SHOULD only be used together with a Range header, and MUST be + ignored if the request does not include a Range header, or if the + server does not support the sub-range operation. + + If the entity tag given in the If-Range header matches the current + entity tag for the entity, then the server SHOULD provide the + specified sub-range of the entity using a 206 (Partial content) + response. If the entity tag does not match, then the server SHOULD + return the entire entity using a 200 (OK) response. + +14.28 If-Unmodified-Since + + The If-Unmodified-Since request-header field is used with a method to + make it conditional. If the requested resource has not been modified + since the time specified in this field, the server SHOULD perform the + requested operation as if the If-Unmodified-Since header were not + present. + + If the requested variant has been modified since the specified time, + the server MUST NOT perform the requested operation, and MUST return + a 412 (Precondition Failed). + + If-Unmodified-Since = "If-Unmodified-Since" ":" HTTP-date + + An example of the field is: + + If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT + + If the request normally (i.e., without the If-Unmodified-Since + header) would result in anything other than a 2xx or 412 status, the + If-Unmodified-Since header SHOULD be ignored. + + If the specified date is invalid, the header is ignored. + + The result of a request having both an If-Unmodified-Since header + field and either an If-None-Match or an If-Modified-Since header + fields is undefined by this specification. + +14.29 Last-Modified + + The Last-Modified entity-header field indicates the date and time at + which the origin server believes the variant was last modified. + + Last-Modified = "Last-Modified" ":" HTTP-date + + + +Fielding, et al. Standards Track [Page 134] +
RFC 2616 HTTP/1.1 June 1999 + + + An example of its use is + + Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT + + The exact meaning of this header field depends on the implementation + of the origin server and the nature of the original resource. For + files, it may be just the file system last-modified time. For + entities with dynamically included parts, it may be the most recent + of the set of last-modify times for its component parts. For database + gateways, it may be the last-update time stamp of the record. For + virtual objects, it may be the last time the internal state changed. + + An origin server MUST NOT send a Last-Modified date which is later + than the server's time of message origination. In such cases, where + the resource's last modification would indicate some time in the + future, the server MUST replace that date with the message + origination date. + + An origin server SHOULD obtain the Last-Modified value of the entity + as close as possible to the time that it generates the Date value of + its response. This allows a recipient to make an accurate assessment + of the entity's modification time, especially if the entity changes + near the time that the response is generated. + + HTTP/1.1 servers SHOULD send Last-Modified whenever feasible. + +14.30 Location + + The Location response-header field is used to redirect the recipient + to a location other than the Request-URI for completion of the + request or identification of a new resource. For 201 (Created) + responses, the Location is that of the new resource which was created + by the request. For 3xx responses, the location SHOULD indicate the + server's preferred URI for automatic redirection to the resource. The + field value consists of a single absolute URI. + + Location = "Location" ":" absoluteURI + + An example is: + + Location: http://www.w3.org/pub/WWW/People.html + + Note: The Content-Location header field (section 14.14) differs + from Location in that the Content-Location identifies the original + location of the entity enclosed in the request. It is therefore + possible for a response to contain header fields for both Location + and Content-Location. Also see section 13.10 for cache + requirements of some methods. + + + +Fielding, et al. Standards Track [Page 135] +
RFC 2616 HTTP/1.1 June 1999 + + +14.31 Max-Forwards + + The Max-Forwards request-header field provides a mechanism with the + TRACE (section 9.8) and OPTIONS (section 9.2) methods to limit the + number of proxies or gateways that can forward the request to the + next inbound server. This can be useful when the client is attempting + to trace a request chain which appears to be failing or looping in + mid-chain. + + Max-Forwards = "Max-Forwards" ":" 1*DIGIT + + The Max-Forwards value is a decimal integer indicating the remaining + number of times this request message may be forwarded. + + Each proxy or gateway recipient of a TRACE or OPTIONS request + containing a Max-Forwards header field MUST check and update its + value prior to forwarding the request. If the received value is zero + (0), the recipient MUST NOT forward the request; instead, it MUST + respond as the final recipient. If the received Max-Forwards value is + greater than zero, then the forwarded message MUST contain an updated + Max-Forwards field with a value decremented by one (1). + + The Max-Forwards header field MAY be ignored for all other methods + defined by this specification and for any extension methods for which + it is not explicitly referred to as part of that method definition. + +14.32 Pragma + + The Pragma general-header field is used to include implementation- + specific directives that might apply to any recipient along the + request/response chain. All pragma directives specify optional + behavior from the viewpoint of the protocol; however, some systems + MAY require that behavior be consistent with the directives. + + Pragma = "Pragma" ":" 1#pragma-directive + pragma-directive = "no-cache" | extension-pragma + extension-pragma = token [ "=" ( token | quoted-string ) ] + + When the no-cache directive is present in a request message, an + application SHOULD forward the request toward the origin server even + if it has a cached copy of what is being requested. This pragma + directive has the same semantics as the no-cache cache-directive (see + section 14.9) and is defined here for backward compatibility with + HTTP/1.0. Clients SHOULD include both header fields when a no-cache + request is sent to a server not known to be HTTP/1.1 compliant. + + + + + + +Fielding, et al. Standards Track [Page 136] +
RFC 2616 HTTP/1.1 June 1999 + + + Pragma directives MUST be passed through by a proxy or gateway + application, regardless of their significance to that application, + since the directives might be applicable to all recipients along the + request/response chain. It is not possible to specify a pragma for a + specific recipient; however, any pragma directive not relevant to a + recipient SHOULD be ignored by that recipient. + + HTTP/1.1 caches SHOULD treat "Pragma: no-cache" as if the client had + sent "Cache-Control: no-cache". No new Pragma directives will be + defined in HTTP. + + Note: because the meaning of "Pragma: no-cache as a response + header field is not actually specified, it does not provide a + reliable replacement for "Cache-Control: no-cache" in a response + +14.33 Proxy-Authenticate + + The Proxy-Authenticate response-header field MUST be included as part + of a 407 (Proxy Authentication Required) response. The field value + consists of a challenge that indicates the authentication scheme and + parameters applicable to the proxy for this Request-URI. + + Proxy-Authenticate = "Proxy-Authenticate" ":" 1#challenge + + The HTTP access authentication process is described in "HTTP + Authentication: Basic and Digest Access Authentication" [43]. Unlike + WWW-Authenticate, the Proxy-Authenticate header field applies only to + the current connection and SHOULD NOT be passed on to downstream + clients. However, an intermediate proxy might need to obtain its own + credentials by requesting them from the downstream client, which in + some circumstances will appear as if the proxy is forwarding the + Proxy-Authenticate header field. + +14.34 Proxy-Authorization + + The Proxy-Authorization request-header field allows the client to + identify itself (or its user) to a proxy which requires + authentication. The Proxy-Authorization field value consists of + credentials containing the authentication information of the user + agent for the proxy and/or realm of the resource being requested. + + Proxy-Authorization = "Proxy-Authorization" ":" credentials + + The HTTP access authentication process is described in "HTTP + Authentication: Basic and Digest Access Authentication" [43] . Unlike + Authorization, the Proxy-Authorization header field applies only to + the next outbound proxy that demanded authentication using the Proxy- + Authenticate field. When multiple proxies are used in a chain, the + + + +Fielding, et al. Standards Track [Page 137] +
RFC 2616 HTTP/1.1 June 1999 + + + Proxy-Authorization header field is consumed by the first outbound + proxy that was expecting to receive credentials. A proxy MAY relay + the credentials from the client request to the next proxy if that is + the mechanism by which the proxies cooperatively authenticate a given + request. + +14.35 Range + +14.35.1 Byte Ranges + + Since all HTTP entities are represented in HTTP messages as sequences + of bytes, the concept of a byte range is meaningful for any HTTP + entity. (However, not all clients and servers need to support byte- + range operations.) + + Byte range specifications in HTTP apply to the sequence of bytes in + the entity-body (not necessarily the same as the message-body). + + A byte range operation MAY specify a single range of bytes, or a set + of ranges within a single entity. + + ranges-specifier = byte-ranges-specifier + byte-ranges-specifier = bytes-unit "=" byte-range-set + byte-range-set = 1#( byte-range-spec | suffix-byte-range-spec ) + byte-range-spec = first-byte-pos "-" [last-byte-pos] + first-byte-pos = 1*DIGIT + last-byte-pos = 1*DIGIT + + The first-byte-pos value in a byte-range-spec gives the byte-offset + of the first byte in a range. The last-byte-pos value gives the + byte-offset of the last byte in the range; that is, the byte + positions specified are inclusive. Byte offsets start at zero. + + If the last-byte-pos value is present, it MUST be greater than or + equal to the first-byte-pos in that byte-range-spec, or the byte- + range-spec is syntactically invalid. The recipient of a byte-range- + set that includes one or more syntactically invalid byte-range-spec + values MUST ignore the header field that includes that byte-range- + set. + + If the last-byte-pos value is absent, or if the value is greater than + or equal to the current length of the entity-body, last-byte-pos is + taken to be equal to one less than the current length of the entity- + body in bytes. + + By its choice of last-byte-pos, a client can limit the number of + bytes retrieved without knowing the size of the entity. + + + + +Fielding, et al. Standards Track [Page 138] +
RFC 2616 HTTP/1.1 June 1999 + + + suffix-byte-range-spec = "-" suffix-length + suffix-length = 1*DIGIT + + A suffix-byte-range-spec is used to specify the suffix of the + entity-body, of a length given by the suffix-length value. (That is, + this form specifies the last N bytes of an entity-body.) If the + entity is shorter than the specified suffix-length, the entire + entity-body is used. + + If a syntactically valid byte-range-set includes at least one byte- + range-spec whose first-byte-pos is less than the current length of + the entity-body, or at least one suffix-byte-range-spec with a non- + zero suffix-length, then the byte-range-set is satisfiable. + Otherwise, the byte-range-set is unsatisfiable. If the byte-range-set + is unsatisfiable, the server SHOULD return a response with a status + of 416 (Requested range not satisfiable). Otherwise, the server + SHOULD return a response with a status of 206 (Partial Content) + containing the satisfiable ranges of the entity-body. + + Examples of byte-ranges-specifier values (assuming an entity-body of + length 10000): + + - The first 500 bytes (byte offsets 0-499, inclusive): bytes=0- + 499 + + - The second 500 bytes (byte offsets 500-999, inclusive): + bytes=500-999 + + - The final 500 bytes (byte offsets 9500-9999, inclusive): + bytes=-500 + + - Or bytes=9500- + + - The first and last bytes only (bytes 0 and 9999): bytes=0-0,-1 + + - Several legal but not canonical specifications of the second 500 + bytes (byte offsets 500-999, inclusive): + bytes=500-600,601-999 + bytes=500-700,601-999 + +14.35.2 Range Retrieval Requests + + HTTP retrieval requests using conditional or unconditional GET + methods MAY request one or more sub-ranges of the entity, instead of + the entire entity, using the Range request header, which applies to + the entity returned as the result of the request: + + Range = "Range" ":" ranges-specifier + + + +Fielding, et al. Standards Track [Page 139] +
RFC 2616 HTTP/1.1 June 1999 + + + A server MAY ignore the Range header. However, HTTP/1.1 origin + servers and intermediate caches ought to support byte ranges when + possible, since Range supports efficient recovery from partially + failed transfers, and supports efficient partial retrieval of large + entities. + + If the server supports the Range header and the specified range or + ranges are appropriate for the entity: + + - The presence of a Range header in an unconditional GET modifies + what is returned if the GET is otherwise successful. In other + words, the response carries a status code of 206 (Partial + Content) instead of 200 (OK). + + - The presence of a Range header in a conditional GET (a request + using one or both of If-Modified-Since and If-None-Match, or + one or both of If-Unmodified-Since and If-Match) modifies what + is returned if the GET is otherwise successful and the + condition is true. It does not affect the 304 (Not Modified) + response returned if the conditional is false. + + In some cases, it might be more appropriate to use the If-Range + header (see section 14.27) in addition to the Range header. + + If a proxy that supports ranges receives a Range request, forwards + the request to an inbound server, and receives an entire entity in + reply, it SHOULD only return the requested range to its client. It + SHOULD store the entire received response in its cache if that is + consistent with its cache allocation policies. + +14.36 Referer + + The Referer[sic] request-header field allows the client to specify, + for the server's benefit, the address (URI) of the resource from + which the Request-URI was obtained (the "referrer", although the + header field is misspelled.) The Referer request-header allows a + server to generate lists of back-links to resources for interest, + logging, optimized caching, etc. It also allows obsolete or mistyped + links to be traced for maintenance. The Referer field MUST NOT be + sent if the Request-URI was obtained from a source that does not have + its own URI, such as input from the user keyboard. + + Referer = "Referer" ":" ( absoluteURI | relativeURI ) + + Example: + + Referer: http://www.w3.org/hypertext/DataSources/Overview.html + + + + +Fielding, et al. Standards Track [Page 140] +
RFC 2616 HTTP/1.1 June 1999 + + + If the field value is a relative URI, it SHOULD be interpreted + relative to the Request-URI. The URI MUST NOT include a fragment. See + section 15.1.3 for security considerations. + +14.37 Retry-After + + The Retry-After response-header field can be used with a 503 (Service + Unavailable) response to indicate how long the service is expected to + be unavailable to the requesting client. This field MAY also be used + with any 3xx (Redirection) response to indicate the minimum time the + user-agent is asked wait before issuing the redirected request. The + value of this field can be either an HTTP-date or an integer number + of seconds (in decimal) after the time of the response. + + Retry-After = "Retry-After" ":" ( HTTP-date | delta-seconds ) + + Two examples of its use are + + Retry-After: Fri, 31 Dec 1999 23:59:59 GMT + Retry-After: 120 + + In the latter example, the delay is 2 minutes. + +14.38 Server + + The Server response-header field contains information about the + software used by the origin server to handle the request. The field + can contain multiple product tokens (section 3.8) and comments + identifying the server and any significant subproducts. The product + tokens are listed in order of their significance for identifying the + application. + + Server = "Server" ":" 1*( product | comment ) + + Example: + + Server: CERN/3.0 libwww/2.17 + + If the response is being forwarded through a proxy, the proxy + application MUST NOT modify the Server response-header. Instead, it + SHOULD include a Via field (as described in section 14.45). + + Note: Revealing the specific software version of the server might + allow the server machine to become more vulnerable to attacks + against software that is known to contain security holes. Server + implementors are encouraged to make this field a configurable + option. + + + + +Fielding, et al. Standards Track [Page 141] +
RFC 2616 HTTP/1.1 June 1999 + + +14.39 TE + + The TE request-header field indicates what extension transfer-codings + it is willing to accept in the response and whether or not it is + willing to accept trailer fields in a chunked transfer-coding. Its + value may consist of the keyword "trailers" and/or a comma-separated + list of extension transfer-coding names with optional accept + parameters (as described in section 3.6). + + TE = "TE" ":" #( t-codings ) + t-codings = "trailers" | ( transfer-extension [ accept-params ] ) + + The presence of the keyword "trailers" indicates that the client is + willing to accept trailer fields in a chunked transfer-coding, as + defined in section 3.6.1. This keyword is reserved for use with + transfer-coding values even though it does not itself represent a + transfer-coding. + + Examples of its use are: + + TE: deflate + TE: + TE: trailers, deflate;q=0.5 + + The TE header field only applies to the immediate connection. + Therefore, the keyword MUST be supplied within a Connection header + field (section 14.10) whenever TE is present in an HTTP/1.1 message. + + A server tests whether a transfer-coding is acceptable, according to + a TE field, using these rules: + + 1. The "chunked" transfer-coding is always acceptable. If the + keyword "trailers" is listed, the client indicates that it is + willing to accept trailer fields in the chunked response on + behalf of itself and any downstream clients. The implication is + that, if given, the client is stating that either all + downstream clients are willing to accept trailer fields in the + forwarded response, or that it will attempt to buffer the + response on behalf of downstream recipients. + + Note: HTTP/1.1 does not define any means to limit the size of a + chunked response such that a client can be assured of buffering + the entire response. + + 2. If the transfer-coding being tested is one of the transfer- + codings listed in the TE field, then it is acceptable unless it + is accompanied by a qvalue of 0. (As defined in section 3.9, a + qvalue of 0 means "not acceptable.") + + + +Fielding, et al. Standards Track [Page 142] +
RFC 2616 HTTP/1.1 June 1999 + + + 3. If multiple transfer-codings are acceptable, then the + acceptable transfer-coding with the highest non-zero qvalue is + preferred. The "chunked" transfer-coding always has a qvalue + of 1. + + If the TE field-value is empty or if no TE field is present, the only + transfer-coding is "chunked". A message with no transfer-coding is + always acceptable. + +14.40 Trailer + + The Trailer general field value indicates that the given set of + header fields is present in the trailer of a message encoded with + chunked transfer-coding. + + Trailer = "Trailer" ":" 1#field-name + + An HTTP/1.1 message SHOULD include a Trailer header field in a + message using chunked transfer-coding with a non-empty trailer. Doing + so allows the recipient to know which header fields to expect in the + trailer. + + If no Trailer header field is present, the trailer SHOULD NOT include + any header fields. See section 3.6.1 for restrictions on the use of + trailer fields in a "chunked" transfer-coding. + + Message header fields listed in the Trailer header field MUST NOT + include the following header fields: + + . Transfer-Encoding + + . Content-Length + + . Trailer + +14.41 Transfer-Encoding + + The Transfer-Encoding general-header field indicates what (if any) + type of transformation has been applied to the message body in order + to safely transfer it between the sender and the recipient. This + differs from the content-coding in that the transfer-coding is a + property of the message, not of the entity. + + Transfer-Encoding = "Transfer-Encoding" ":" 1#transfer-coding + + Transfer-codings are defined in section 3.6. An example is: + + Transfer-Encoding: chunked + + + +Fielding, et al. Standards Track [Page 143] +
RFC 2616 HTTP/1.1 June 1999 + + + If multiple encodings have been applied to an entity, the transfer- + codings MUST be listed in the order in which they were applied. + Additional information about the encoding parameters MAY be provided + by other entity-header fields not defined by this specification. + + Many older HTTP/1.0 applications do not understand the Transfer- + Encoding header. + +14.42 Upgrade + + The Upgrade general-header allows the client to specify what + additional communication protocols it supports and would like to use + if the server finds it appropriate to switch protocols. The server + MUST use the Upgrade header field within a 101 (Switching Protocols) + response to indicate which protocol(s) are being switched. + + Upgrade = "Upgrade" ":" 1#product + + For example, + + Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 + + The Upgrade header field is intended to provide a simple mechanism + for transition from HTTP/1.1 to some other, incompatible protocol. It + does so by allowing the client to advertise its desire to use another + protocol, such as a later version of HTTP with a higher major version + number, even though the current request has been made using HTTP/1.1. + This eases the difficult transition between incompatible protocols by + allowing the client to initiate a request in the more commonly + supported protocol while indicating to the server that it would like + to use a "better" protocol if available (where "better" is determined + by the server, possibly according to the nature of the method and/or + resource being requested). + + The Upgrade header field only applies to switching application-layer + protocols upon the existing transport-layer connection. Upgrade + cannot be used to insist on a protocol change; its acceptance and use + by the server is optional. The capabilities and nature of the + application-layer communication after the protocol change is entirely + dependent upon the new protocol chosen, although the first action + after changing the protocol MUST be a response to the initial HTTP + request containing the Upgrade header field. + + The Upgrade header field only applies to the immediate connection. + Therefore, the upgrade keyword MUST be supplied within a Connection + header field (section 14.10) whenever Upgrade is present in an + HTTP/1.1 message. + + + + +Fielding, et al. Standards Track [Page 144] +
RFC 2616 HTTP/1.1 June 1999 + + + The Upgrade header field cannot be used to indicate a switch to a + protocol on a different connection. For that purpose, it is more + appropriate to use a 301, 302, 303, or 305 redirection response. + + This specification only defines the protocol name "HTTP" for use by + the family of Hypertext Transfer Protocols, as defined by the HTTP + version rules of section 3.1 and future updates to this + specification. Any token can be used as a protocol name; however, it + will only be useful if both the client and server associate the name + with the same protocol. + +14.43 User-Agent + + The User-Agent request-header field contains information about the + user agent originating the request. This is for statistical purposes, + the tracing of protocol violations, and automated recognition of user + agents for the sake of tailoring responses to avoid particular user + agent limitations. User agents SHOULD include this field with + requests. The field can contain multiple product tokens (section 3.8) + and comments identifying the agent and any subproducts which form a + significant part of the user agent. By convention, the product tokens + are listed in order of their significance for identifying the + application. + + User-Agent = "User-Agent" ":" 1*( product | comment ) + + Example: + + User-Agent: CERN-LineMode/2.15 libwww/2.17b3 + +14.44 Vary + + The Vary field value indicates the set of request-header fields that + fully determines, while the response is fresh, whether a cache is + permitted to use the response to reply to a subsequent request + without revalidation. For uncacheable or stale responses, the Vary + field value advises the user agent about the criteria that were used + to select the representation. A Vary field value of "*" implies that + a cache cannot determine from the request headers of a subsequent + request whether this response is the appropriate representation. See + section 13.6 for use of the Vary header field by caches. + + Vary = "Vary" ":" ( "*" | 1#field-name ) + + An HTTP/1.1 server SHOULD include a Vary header field with any + cacheable response that is subject to server-driven negotiation. + Doing so allows a cache to properly interpret future requests on that + resource and informs the user agent about the presence of negotiation + + + +Fielding, et al. Standards Track [Page 145] +
RFC 2616 HTTP/1.1 June 1999 + + + on that resource. A server MAY include a Vary header field with a + non-cacheable response that is subject to server-driven negotiation, + since this might provide the user agent with useful information about + the dimensions over which the response varies at the time of the + response. + + A Vary field value consisting of a list of field-names signals that + the representation selected for the response is based on a selection + algorithm which considers ONLY the listed request-header field values + in selecting the most appropriate representation. A cache MAY assume + that the same selection will be made for future requests with the + same values for the listed field names, for the duration of time for + which the response is fresh. + + The field-names given are not limited to the set of standard + request-header fields defined by this specification. Field names are + case-insensitive. + + A Vary field value of "*" signals that unspecified parameters not + limited to the request-headers (e.g., the network address of the + client), play a role in the selection of the response representation. + The "*" value MUST NOT be generated by a proxy server; it may only be + generated by an origin server. + +14.45 Via + + The Via general-header field MUST be used by gateways and proxies to + indicate the intermediate protocols and recipients between the user + agent and the server on requests, and between the origin server and + the client on responses. It is analogous to the "Received" field of + RFC 822 [9] and is intended to be used for tracking message forwards, + avoiding request loops, and identifying the protocol capabilities of + all senders along the request/response chain. + + Via = "Via" ":" 1#( received-protocol received-by [ comment ] ) + received-protocol = [ protocol-name "/" ] protocol-version + protocol-name = token + protocol-version = token + received-by = ( host [ ":" port ] ) | pseudonym + pseudonym = token + + The received-protocol indicates the protocol version of the message + received by the server or client along each segment of the + request/response chain. The received-protocol version is appended to + the Via field value when the message is forwarded so that information + about the protocol capabilities of upstream applications remains + visible to all recipients. + + + + +Fielding, et al. Standards Track [Page 146] +
RFC 2616 HTTP/1.1 June 1999 + + + The protocol-name is optional if and only if it would be "HTTP". The + received-by field is normally the host and optional port number of a + recipient server or client that subsequently forwarded the message. + However, if the real host is considered to be sensitive information, + it MAY be replaced by a pseudonym. If the port is not given, it MAY + be assumed to be the default port of the received-protocol. + + Multiple Via field values represents each proxy or gateway that has + forwarded the message. Each recipient MUST append its information + such that the end result is ordered according to the sequence of + forwarding applications. + + Comments MAY be used in the Via header field to identify the software + of the recipient proxy or gateway, analogous to the User-Agent and + Server header fields. However, all comments in the Via field are + optional and MAY be removed by any recipient prior to forwarding the + message. + + For example, a request message could be sent from an HTTP/1.0 user + agent to an internal proxy code-named "fred", which uses HTTP/1.1 to + forward the request to a public proxy at nowhere.com, which completes + the request by forwarding it to the origin server at www.ics.uci.edu. + The request received by www.ics.uci.edu would then have the following + Via header field: + + Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1) + + Proxies and gateways used as a portal through a network firewall + SHOULD NOT, by default, forward the names and ports of hosts within + the firewall region. This information SHOULD only be propagated if + explicitly enabled. If not enabled, the received-by host of any host + behind the firewall SHOULD be replaced by an appropriate pseudonym + for that host. + + For organizations that have strong privacy requirements for hiding + internal structures, a proxy MAY combine an ordered subsequence of + Via header field entries with identical received-protocol values into + a single such entry. For example, + + Via: 1.0 ricky, 1.1 ethel, 1.1 fred, 1.0 lucy + + could be collapsed to + + Via: 1.0 ricky, 1.1 mertz, 1.0 lucy + + + + + + + +Fielding, et al. Standards Track [Page 147] +
RFC 2616 HTTP/1.1 June 1999 + + + Applications SHOULD NOT combine multiple entries unless they are all + under the same organizational control and the hosts have already been + replaced by pseudonyms. Applications MUST NOT combine entries which + have different received-protocol values. + +14.46 Warning + + The Warning general-header field is used to carry additional + information about the status or transformation of a message which + might not be reflected in the message. This information is typically + used to warn about a possible lack of semantic transparency from + caching operations or transformations applied to the entity body of + the message. + + Warning headers are sent with responses using: + + Warning = "Warning" ":" 1#warning-value + + warning-value = warn-code SP warn-agent SP warn-text + [SP warn-date] + + warn-code = 3DIGIT + warn-agent = ( host [ ":" port ] ) | pseudonym + ; the name or pseudonym of the server adding + ; the Warning header, for use in debugging + warn-text = quoted-string + warn-date = <"> HTTP-date <"> + + A response MAY carry more than one Warning header. + + The warn-text SHOULD be in a natural language and character set that + is most likely to be intelligible to the human user receiving the + response. This decision MAY be based on any available knowledge, such + as the location of the cache or user, the Accept-Language field in a + request, the Content-Language field in a response, etc. The default + language is English and the default character set is ISO-8859-1. + + If a character set other than ISO-8859-1 is used, it MUST be encoded + in the warn-text using the method described in RFC 2047 [14]. + + Warning headers can in general be applied to any message, however + some specific warn-codes are specific to caches and can only be + applied to response messages. New Warning headers SHOULD be added + after any existing Warning headers. A cache MUST NOT delete any + Warning header that it received with a message. However, if a cache + successfully validates a cache entry, it SHOULD remove any Warning + headers previously attached to that entry except as specified for + + + + +Fielding, et al. Standards Track [Page 148] +
RFC 2616 HTTP/1.1 June 1999 + + + specific Warning codes. It MUST then add any Warning headers received + in the validating response. In other words, Warning headers are those + that would be attached to the most recent relevant response. + + When multiple Warning headers are attached to a response, the user + agent ought to inform the user of as many of them as possible, in the + order that they appear in the response. If it is not possible to + inform the user of all of the warnings, the user agent SHOULD follow + these heuristics: + + - Warnings that appear early in the response take priority over + those appearing later in the response. + + - Warnings in the user's preferred character set take priority + over warnings in other character sets but with identical warn- + codes and warn-agents. + + Systems that generate multiple Warning headers SHOULD order them with + this user agent behavior in mind. + + Requirements for the behavior of caches with respect to Warnings are + stated in section 13.1.2. + + This is a list of the currently-defined warn-codes, each with a + recommended warn-text in English, and a description of its meaning. + + 110 Response is stale + MUST be included whenever the returned response is stale. + + 111 Revalidation failed + MUST be included if a cache returns a stale response because an + attempt to revalidate the response failed, due to an inability to + reach the server. + + 112 Disconnected operation + SHOULD be included if the cache is intentionally disconnected from + the rest of the network for a period of time. + + 113 Heuristic expiration + MUST be included if the cache heuristically chose a freshness + lifetime greater than 24 hours and the response's age is greater + than 24 hours. + + 199 Miscellaneous warning + The warning text MAY include arbitrary information to be presented + to a human user, or logged. A system receiving this warning MUST + NOT take any automated action, besides presenting the warning to + the user. + + + +Fielding, et al. Standards Track [Page 149] +
RFC 2616 HTTP/1.1 June 1999 + + + 214 Transformation applied + MUST be added by an intermediate cache or proxy if it applies any + transformation changing the content-coding (as specified in the + Content-Encoding header) or media-type (as specified in the + Content-Type header) of the response, or the entity-body of the + response, unless this Warning code already appears in the response. + + 299 Miscellaneous persistent warning + The warning text MAY include arbitrary information to be presented + to a human user, or logged. A system receiving this warning MUST + NOT take any automated action. + + If an implementation sends a message with one or more Warning headers + whose version is HTTP/1.0 or lower, then the sender MUST include in + each warning-value a warn-date that matches the date in the response. + + If an implementation receives a message with a warning-value that + includes a warn-date, and that warn-date is different from the Date + value in the response, then that warning-value MUST be deleted from + the message before storing, forwarding, or using it. (This prevents + bad consequences of naive caching of Warning header fields.) If all + of the warning-values are deleted for this reason, the Warning header + MUST be deleted as well. + +14.47 WWW-Authenticate + + The WWW-Authenticate response-header field MUST be included in 401 + (Unauthorized) response messages. The field value consists of at + least one challenge that indicates the authentication scheme(s) and + parameters applicable to the Request-URI. + + WWW-Authenticate = "WWW-Authenticate" ":" 1#challenge + + The HTTP access authentication process is described in "HTTP + Authentication: Basic and Digest Access Authentication" [43]. User + agents are advised to take special care in parsing the WWW- + Authenticate field value as it might contain more than one challenge, + or if more than one WWW-Authenticate header field is provided, the + contents of a challenge itself can contain a comma-separated list of + authentication parameters. + +15 Security Considerations + + This section is meant to inform application developers, information + providers, and users of the security limitations in HTTP/1.1 as + described by this document. The discussion does not include + definitive solutions to the problems revealed, though it does make + some suggestions for reducing security risks. + + + +Fielding, et al. Standards Track [Page 150] +
RFC 2616 HTTP/1.1 June 1999 + + +15.1 Personal Information + + HTTP clients are often privy to large amounts of personal information + (e.g. the user's name, location, mail address, passwords, encryption + keys, etc.), and SHOULD be very careful to prevent unintentional + leakage of this information via the HTTP protocol to other sources. + We very strongly recommend that a convenient interface be provided + for the user to control dissemination of such information, and that + designers and implementors be particularly careful in this area. + History shows that errors in this area often create serious security + and/or privacy problems and generate highly adverse publicity for the + implementor's company. + +15.1.1 Abuse of Server Log Information + + A server is in the position to save personal data about a user's + requests which might identify their reading patterns or subjects of + interest. This information is clearly confidential in nature and its + handling can be constrained by law in certain countries. People using + the HTTP protocol to provide data are responsible for ensuring that + such material is not distributed without the permission of any + individuals that are identifiable by the published results. + +15.1.2 Transfer of Sensitive Information + + Like any generic data transfer protocol, HTTP cannot regulate the + content of the data that is transferred, nor is there any a priori + method of determining the sensitivity of any particular piece of + information within the context of any given request. Therefore, + applications SHOULD supply as much control over this information as + possible to the provider of that information. Four header fields are + worth special mention in this context: Server, Via, Referer and From. + + Revealing the specific software version of the server might allow the + server machine to become more vulnerable to attacks against software + that is known to contain security holes. Implementors SHOULD make the + Server header field a configurable option. + + Proxies which serve as a portal through a network firewall SHOULD + take special precautions regarding the transfer of header information + that identifies the hosts behind the firewall. In particular, they + SHOULD remove, or replace with sanitized versions, any Via fields + generated behind the firewall. + + The Referer header allows reading patterns to be studied and reverse + links drawn. Although it can be very useful, its power can be abused + if user details are not separated from the information contained in + + + + +Fielding, et al. Standards Track [Page 151] +
RFC 2616 HTTP/1.1 June 1999 + + + the Referer. Even when the personal information has been removed, the + Referer header might indicate a private document's URI whose + publication would be inappropriate. + + The information sent in the From field might conflict with the user's + privacy interests or their site's security policy, and hence it + SHOULD NOT be transmitted without the user being able to disable, + enable, and modify the contents of the field. The user MUST be able + to set the contents of this field within a user preference or + application defaults configuration. + + We suggest, though do not require, that a convenient toggle interface + be provided for the user to enable or disable the sending of From and + Referer information. + + The User-Agent (section 14.43) or Server (section 14.38) header + fields can sometimes be used to determine that a specific client or + server have a particular security hole which might be exploited. + Unfortunately, this same information is often used for other valuable + purposes for which HTTP currently has no better mechanism. + +15.1.3 Encoding Sensitive Information in URI's + + Because the source of a link might be private information or might + reveal an otherwise private information source, it is strongly + recommended that the user be able to select whether or not the + Referer field is sent. For example, a browser client could have a + toggle switch for browsing openly/anonymously, which would + respectively enable/disable the sending of Referer and From + information. + + Clients SHOULD NOT include a Referer header field in a (non-secure) + HTTP request if the referring page was transferred with a secure + protocol. + + Authors of services which use the HTTP protocol SHOULD NOT use GET + based forms for the submission of sensitive data, because this will + cause this data to be encoded in the Request-URI. Many existing + servers, proxies, and user agents will log the request URI in some + place where it might be visible to third parties. Servers can use + POST-based form submission instead + +15.1.4 Privacy Issues Connected to Accept Headers + + Accept request-headers can reveal information about the user to all + servers which are accessed. The Accept-Language header in particular + can reveal information the user would consider to be of a private + nature, because the understanding of particular languages is often + + + +Fielding, et al. Standards Track [Page 152] +
RFC 2616 HTTP/1.1 June 1999 + + + strongly correlated to the membership of a particular ethnic group. + User agents which offer the option to configure the contents of an + Accept-Language header to be sent in every request are strongly + encouraged to let the configuration process include a message which + makes the user aware of the loss of privacy involved. + + An approach that limits the loss of privacy would be for a user agent + to omit the sending of Accept-Language headers by default, and to ask + the user whether or not to start sending Accept-Language headers to a + server if it detects, by looking for any Vary response-header fields + generated by the server, that such sending could improve the quality + of service. + + Elaborate user-customized accept header fields sent in every request, + in particular if these include quality values, can be used by servers + as relatively reliable and long-lived user identifiers. Such user + identifiers would allow content providers to do click-trail tracking, + and would allow collaborating content providers to match cross-server + click-trails or form submissions of individual users. Note that for + many users not behind a proxy, the network address of the host + running the user agent will also serve as a long-lived user + identifier. In environments where proxies are used to enhance + privacy, user agents ought to be conservative in offering accept + header configuration options to end users. As an extreme privacy + measure, proxies could filter the accept headers in relayed requests. + General purpose user agents which provide a high degree of header + configurability SHOULD warn users about the loss of privacy which can + be involved. + +15.2 Attacks Based On File and Path Names + + Implementations of HTTP origin servers SHOULD be careful to restrict + the documents returned by HTTP requests to be only those that were + intended by the server administrators. If an HTTP server translates + HTTP URIs directly into file system calls, the server MUST take + special care not to serve files that were not intended to be + delivered to HTTP clients. For example, UNIX, Microsoft Windows, and + other operating systems use ".." as a path component to indicate a + directory level above the current one. On such a system, an HTTP + server MUST disallow any such construct in the Request-URI if it + would otherwise allow access to a resource outside those intended to + be accessible via the HTTP server. Similarly, files intended for + reference only internally to the server (such as access control + files, configuration files, and script code) MUST be protected from + inappropriate retrieval, since they might contain sensitive + information. Experience has shown that minor bugs in such HTTP server + implementations have turned into security risks. + + + + +Fielding, et al. Standards Track [Page 153] +
RFC 2616 HTTP/1.1 June 1999 + + +15.3 DNS Spoofing + + Clients using HTTP rely heavily on the Domain Name Service, and are + thus generally prone to security attacks based on the deliberate + mis-association of IP addresses and DNS names. Clients need to be + cautious in assuming the continuing validity of an IP number/DNS name + association. + + In particular, HTTP clients SHOULD rely on their name resolver for + confirmation of an IP number/DNS name association, rather than + caching the result of previous host name lookups. Many platforms + already can cache host name lookups locally when appropriate, and + they SHOULD be configured to do so. It is proper for these lookups to + be cached, however, only when the TTL (Time To Live) information + reported by the name server makes it likely that the cached + information will remain useful. + + If HTTP clients cache the results of host name lookups in order to + achieve a performance improvement, they MUST observe the TTL + information reported by DNS. + + If HTTP clients do not observe this rule, they could be spoofed when + a previously-accessed server's IP address changes. As network + renumbering is expected to become increasingly common [24], the + possibility of this form of attack will grow. Observing this + requirement thus reduces this potential security vulnerability. + + This requirement also improves the load-balancing behavior of clients + for replicated servers using the same DNS name and reduces the + likelihood of a user's experiencing failure in accessing sites which + use that strategy. + +15.4 Location Headers and Spoofing + + If a single server supports multiple organizations that do not trust + one another, then it MUST check the values of Location and Content- + Location headers in responses that are generated under control of + said organizations to make sure that they do not attempt to + invalidate resources over which they have no authority. + +15.5 Content-Disposition Issues + + RFC 1806 [35], from which the often implemented Content-Disposition + (see section 19.5.1) header in HTTP is derived, has a number of very + serious security considerations. Content-Disposition is not part of + the HTTP standard, but since it is widely implemented, we are + documenting its use and risks for implementors. See RFC 2183 [49] + (which updates RFC 1806) for details. + + + +Fielding, et al. Standards Track [Page 154] +
RFC 2616 HTTP/1.1 June 1999 + + +15.6 Authentication Credentials and Idle Clients + + Existing HTTP clients and user agents typically retain authentication + information indefinitely. HTTP/1.1. does not provide a method for a + server to direct clients to discard these cached credentials. This is + a significant defect that requires further extensions to HTTP. + Circumstances under which credential caching can interfere with the + application's security model include but are not limited to: + + - Clients which have been idle for an extended period following + which the server might wish to cause the client to reprompt the + user for credentials. + + - Applications which include a session termination indication + (such as a `logout' or `commit' button on a page) after which + the server side of the application `knows' that there is no + further reason for the client to retain the credentials. + + This is currently under separate study. There are a number of work- + arounds to parts of this problem, and we encourage the use of + password protection in screen savers, idle time-outs, and other + methods which mitigate the security problems inherent in this + problem. In particular, user agents which cache credentials are + encouraged to provide a readily accessible mechanism for discarding + cached credentials under user control. + +15.7 Proxies and Caching + + By their very nature, HTTP proxies are men-in-the-middle, and + represent an opportunity for man-in-the-middle attacks. Compromise of + the systems on which the proxies run can result in serious security + and privacy problems. Proxies have access to security-related + information, personal information about individual users and + organizations, and proprietary information belonging to users and + content providers. A compromised proxy, or a proxy implemented or + configured without regard to security and privacy considerations, + might be used in the commission of a wide range of potential attacks. + + Proxy operators should protect the systems on which proxies run as + they would protect any system that contains or transports sensitive + information. In particular, log information gathered at proxies often + contains highly sensitive personal information, and/or information + about organizations. Log information should be carefully guarded, and + appropriate guidelines for use developed and followed. (Section + 15.1.1). + + + + + + +Fielding, et al. Standards Track [Page 155] +
RFC 2616 HTTP/1.1 June 1999 + + + Caching proxies provide additional potential vulnerabilities, since + the contents of the cache represent an attractive target for + malicious exploitation. Because cache contents persist after an HTTP + request is complete, an attack on the cache can reveal information + long after a user believes that the information has been removed from + the network. Therefore, cache contents should be protected as + sensitive information. + + Proxy implementors should consider the privacy and security + implications of their design and coding decisions, and of the + configuration options they provide to proxy operators (especially the + default configuration). + + Users of a proxy need to be aware that they are no trustworthier than + the people who run the proxy; HTTP itself cannot solve this problem. + + The judicious use of cryptography, when appropriate, may suffice to + protect against a broad range of security and privacy attacks. Such + cryptography is beyond the scope of the HTTP/1.1 specification. + +15.7.1 Denial of Service Attacks on Proxies + + They exist. They are hard to defend against. Research continues. + Beware. + +16 Acknowledgments + + This specification makes heavy use of the augmented BNF and generic + constructs defined by David H. Crocker for RFC 822 [9]. Similarly, it + reuses many of the definitions provided by Nathaniel Borenstein and + Ned Freed for MIME [7]. We hope that their inclusion in this + specification will help reduce past confusion over the relationship + between HTTP and Internet mail message formats. + + The HTTP protocol has evolved considerably over the years. It has + benefited from a large and active developer community--the many + people who have participated on the www-talk mailing list--and it is + that community which has been most responsible for the success of + HTTP and of the World-Wide Web in general. Marc Andreessen, Robert + Cailliau, Daniel W. Connolly, Bob Denny, John Franks, Jean-Francois + Groff, Phillip M. Hallam-Baker, Hakon W. Lie, Ari Luotonen, Rob + McCool, Lou Montulli, Dave Raggett, Tony Sanders, and Marc + VanHeyningen deserve special recognition for their efforts in + defining early aspects of the protocol. + + This document has benefited greatly from the comments of all those + participating in the HTTP-WG. In addition to those already mentioned, + the following individuals have contributed to this specification: + + + +Fielding, et al. Standards Track [Page 156] +
RFC 2616 HTTP/1.1 June 1999 + + + Gary Adams Ross Patterson + Harald Tveit Alvestrand Albert Lunde + Keith Ball John C. Mallery + Brian Behlendorf Jean-Philippe Martin-Flatin + Paul Burchard Mitra + Maurizio Codogno David Morris + Mike Cowlishaw Gavin Nicol + Roman Czyborra Bill Perry + Michael A. Dolan Jeffrey Perry + David J. Fiander Scott Powers + Alan Freier Owen Rees + Marc Hedlund Luigi Rizzo + Greg Herlihy David Robinson + Koen Holtman Marc Salomon + Alex Hopmann Rich Salz + Bob Jernigan Allan M. Schiffman + Shel Kaphan Jim Seidman + Rohit Khare Chuck Shotton + John Klensin Eric W. Sink + Martijn Koster Simon E. Spero + Alexei Kosut Richard N. Taylor + David M. Kristol Robert S. Thau + Daniel LaLiberte Bill (BearHeart) Weinman + Ben Laurie Francois Yergeau + Paul J. Leach Mary Ellen Zurko + Daniel DuBois Josh Cohen + + + Much of the content and presentation of the caching design is due to + suggestions and comments from individuals including: Shel Kaphan, + Paul Leach, Koen Holtman, David Morris, and Larry Masinter. + + Most of the specification of ranges is based on work originally done + by Ari Luotonen and John Franks, with additional input from Steve + Zilles. + + Thanks to the "cave men" of Palo Alto. You know who you are. + + Jim Gettys (the current editor of this document) wishes particularly + to thank Roy Fielding, the previous editor of this document, along + with John Klensin, Jeff Mogul, Paul Leach, Dave Kristol, Koen + Holtman, John Franks, Josh Cohen, Alex Hopmann, Scott Lawrence, and + Larry Masinter for their help. And thanks go particularly to Jeff + Mogul and Scott Lawrence for performing the "MUST/MAY/SHOULD" audit. + + + + + + + +Fielding, et al. Standards Track [Page 157] +
RFC 2616 HTTP/1.1 June 1999 + + + The Apache Group, Anselm Baird-Smith, author of Jigsaw, and Henrik + Frystyk implemented RFC 2068 early, and we wish to thank them for the + discovery of many of the problems that this document attempts to + rectify. + +17 References + + [1] Alvestrand, H., "Tags for the Identification of Languages", RFC + 1766, March 1995. + + [2] Anklesaria, F., McCahill, M., Lindner, P., Johnson, D., Torrey, + D. and B. Alberti, "The Internet Gopher Protocol (a distributed + document search and retrieval protocol)", RFC 1436, March 1993. + + [3] Berners-Lee, T., "Universal Resource Identifiers in WWW", RFC + 1630, June 1994. + + [4] Berners-Lee, T., Masinter, L. and M. McCahill, "Uniform Resource + Locators (URL)", RFC 1738, December 1994. + + [5] Berners-Lee, T. and D. Connolly, "Hypertext Markup Language - + 2.0", RFC 1866, November 1995. + + [6] Berners-Lee, T., Fielding, R. and H. Frystyk, "Hypertext Transfer + Protocol -- HTTP/1.0", RFC 1945, May 1996. + + [7] Freed, N. and N. Borenstein, "Multipurpose Internet Mail + Extensions (MIME) Part One: Format of Internet Message Bodies", + RFC 2045, November 1996. + + [8] Braden, R., "Requirements for Internet Hosts -- Communication + Layers", STD 3, RFC 1123, October 1989. + + [9] Crocker, D., "Standard for The Format of ARPA Internet Text + Messages", STD 11, RFC 822, August 1982. + + [10] Davis, F., Kahle, B., Morris, H., Salem, J., Shen, T., Wang, R., + Sui, J., and M. Grinbaum, "WAIS Interface Protocol Prototype + Functional Specification," (v1.5), Thinking Machines + Corporation, April 1990. + + [11] Fielding, R., "Relative Uniform Resource Locators", RFC 1808, + June 1995. + + [12] Horton, M. and R. Adams, "Standard for Interchange of USENET + Messages", RFC 1036, December 1987. + + + + + +Fielding, et al. Standards Track [Page 158] +
RFC 2616 HTTP/1.1 June 1999 + + + [13] Kantor, B. and P. Lapsley, "Network News Transfer Protocol", RFC + 977, February 1986. + + [14] Moore, K., "MIME (Multipurpose Internet Mail Extensions) Part + Three: Message Header Extensions for Non-ASCII Text", RFC 2047, + November 1996. + + [15] Nebel, E. and L. Masinter, "Form-based File Upload in HTML", RFC + 1867, November 1995. + + [16] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC 821, + August 1982. + + [17] Postel, J., "Media Type Registration Procedure", RFC 1590, + November 1996. + + [18] Postel, J. and J. Reynolds, "File Transfer Protocol", STD 9, RFC + 959, October 1985. + + [19] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700, + October 1994. + + [20] Sollins, K. and L. Masinter, "Functional Requirements for + Uniform Resource Names", RFC 1737, December 1994. + + [21] US-ASCII. Coded Character Set - 7-Bit American Standard Code for + Information Interchange. Standard ANSI X3.4-1986, ANSI, 1986. + + [22] ISO-8859. International Standard -- Information Processing -- + 8-bit Single-Byte Coded Graphic Character Sets -- + Part 1: Latin alphabet No. 1, ISO-8859-1:1987. + Part 2: Latin alphabet No. 2, ISO-8859-2, 1987. + Part 3: Latin alphabet No. 3, ISO-8859-3, 1988. + Part 4: Latin alphabet No. 4, ISO-8859-4, 1988. + Part 5: Latin/Cyrillic alphabet, ISO-8859-5, 1988. + Part 6: Latin/Arabic alphabet, ISO-8859-6, 1987. + Part 7: Latin/Greek alphabet, ISO-8859-7, 1987. + Part 8: Latin/Hebrew alphabet, ISO-8859-8, 1988. + Part 9: Latin alphabet No. 5, ISO-8859-9, 1990. + + [23] Meyers, J. and M. Rose, "The Content-MD5 Header Field", RFC + 1864, October 1995. + + [24] Carpenter, B. and Y. Rekhter, "Renumbering Needs Work", RFC + 1900, February 1996. + + [25] Deutsch, P., "GZIP file format specification version 4.3", RFC + 1952, May 1996. + + + +Fielding, et al. Standards Track [Page 159] +
RFC 2616 HTTP/1.1 June 1999 + + + [26] Venkata N. Padmanabhan, and Jeffrey C. Mogul. "Improving HTTP + Latency", Computer Networks and ISDN Systems, v. 28, pp. 25-35, + Dec. 1995. Slightly revised version of paper in Proc. 2nd + International WWW Conference '94: Mosaic and the Web, Oct. 1994, + which is available at + http://www.ncsa.uiuc.edu/SDG/IT94/Proceedings/DDay/mogul/HTTPLat + ency.html. + + [27] Joe Touch, John Heidemann, and Katia Obraczka. "Analysis of HTTP + Performance", <URL: http://www.isi.edu/touch/pubs/http-perf96/>, + ISI Research Report ISI/RR-98-463, (original report dated Aug. + 1996), USC/Information Sciences Institute, August 1998. + + [28] Mills, D., "Network Time Protocol (Version 3) Specification, + Implementation and Analysis", RFC 1305, March 1992. + + [29] Deutsch, P., "DEFLATE Compressed Data Format Specification + version 1.3", RFC 1951, May 1996. + + [30] S. Spero, "Analysis of HTTP Performance Problems," + http://sunsite.unc.edu/mdma-release/http-prob.html. + + [31] Deutsch, P. and J. Gailly, "ZLIB Compressed Data Format + Specification version 3.3", RFC 1950, May 1996. + + [32] Franks, J., Hallam-Baker, P., Hostetler, J., Leach, P., + Luotonen, A., Sink, E. and L. Stewart, "An Extension to HTTP: + Digest Access Authentication", RFC 2069, January 1997. + + [33] Fielding, R., Gettys, J., Mogul, J., Frystyk, H. and T. + Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC + 2068, January 1997. + + [34] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", BCP 14, RFC 2119, March 1997. + + [35] Troost, R. and Dorner, S., "Communicating Presentation + Information in Internet Messages: The Content-Disposition + Header", RFC 1806, June 1995. + + [36] Mogul, J., Fielding, R., Gettys, J. and H. Frystyk, "Use and + Interpretation of HTTP Version Numbers", RFC 2145, May 1997. + [jg639] + + [37] Palme, J., "Common Internet Message Headers", RFC 2076, February + 1997. [jg640] + + + + + +Fielding, et al. Standards Track [Page 160] +
RFC 2616 HTTP/1.1 June 1999 + + + [38] Yergeau, F., "UTF-8, a transformation format of Unicode and + ISO-10646", RFC 2279, January 1998. [jg641] + + [39] Nielsen, H.F., Gettys, J., Baird-Smith, A., Prud'hommeaux, E., + Lie, H., and C. Lilley. "Network Performance Effects of + HTTP/1.1, CSS1, and PNG," Proceedings of ACM SIGCOMM '97, Cannes + France, September 1997.[jg642] + + [40] Freed, N. and N. Borenstein, "Multipurpose Internet Mail + Extensions (MIME) Part Two: Media Types", RFC 2046, November + 1996. [jg643] + + [41] Alvestrand, H., "IETF Policy on Character Sets and Languages", + BCP 18, RFC 2277, January 1998. [jg644] + + [42] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource + Identifiers (URI): Generic Syntax and Semantics", RFC 2396, + August 1998. [jg645] + + [43] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., + Leach, P., Luotonen, A., Sink, E. and L. Stewart, "HTTP + Authentication: Basic and Digest Access Authentication", RFC + 2617, June 1999. [jg646] + + [44] Luotonen, A., "Tunneling TCP based protocols through Web proxy + servers," Work in Progress. [jg647] + + [45] Palme, J. and A. Hopmann, "MIME E-mail Encapsulation of + Aggregate Documents, such as HTML (MHTML)", RFC 2110, March + 1997. + + [46] Bradner, S., "The Internet Standards Process -- Revision 3", BCP + 9, RFC 2026, October 1996. + + [47] Masinter, L., "Hyper Text Coffee Pot Control Protocol + (HTCPCP/1.0)", RFC 2324, 1 April 1998. + + [48] Freed, N. and N. Borenstein, "Multipurpose Internet Mail + Extensions (MIME) Part Five: Conformance Criteria and Examples", + RFC 2049, November 1996. + + [49] Troost, R., Dorner, S. and K. Moore, "Communicating Presentation + Information in Internet Messages: The Content-Disposition Header + Field", RFC 2183, August 1997. + + + + + + + +Fielding, et al. Standards Track [Page 161] +
RFC 2616 HTTP/1.1 June 1999 + + +18 Authors' Addresses + + Roy T. Fielding + Information and Computer Science + University of California, Irvine + Irvine, CA 92697-3425, USA + + Fax: +1 (949) 824-1715 + EMail: fielding@ics.uci.edu + + + James Gettys + World Wide Web Consortium + MIT Laboratory for Computer Science + 545 Technology Square + Cambridge, MA 02139, USA + + Fax: +1 (617) 258 8682 + EMail: jg@w3.org + + + Jeffrey C. Mogul + Western Research Laboratory + Compaq Computer Corporation + 250 University Avenue + Palo Alto, California, 94305, USA + + EMail: mogul@wrl.dec.com + + + Henrik Frystyk Nielsen + World Wide Web Consortium + MIT Laboratory for Computer Science + 545 Technology Square + Cambridge, MA 02139, USA + + Fax: +1 (617) 258 8682 + EMail: frystyk@w3.org + + + Larry Masinter + Xerox Corporation + 3333 Coyote Hill Road + Palo Alto, CA 94034, USA + + EMail: masinter@parc.xerox.com + + + + + +Fielding, et al. Standards Track [Page 162] +
RFC 2616 HTTP/1.1 June 1999 + + + Paul J. Leach + Microsoft Corporation + 1 Microsoft Way + Redmond, WA 98052, USA + + EMail: paulle@microsoft.com + + + Tim Berners-Lee + Director, World Wide Web Consortium + MIT Laboratory for Computer Science + 545 Technology Square + Cambridge, MA 02139, USA + + Fax: +1 (617) 258 8682 + EMail: timbl@w3.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fielding, et al. Standards Track [Page 163] +
RFC 2616 HTTP/1.1 June 1999 + + +19 Appendices + +19.1 Internet Media Type message/http and application/http + + In addition to defining the HTTP/1.1 protocol, this document serves + as the specification for the Internet media type "message/http" and + "application/http". The message/http type can be used to enclose a + single HTTP request or response message, provided that it obeys the + MIME restrictions for all "message" types regarding line length and + encodings. The application/http type can be used to enclose a + pipeline of one or more HTTP request or response messages (not + intermixed). The following is to be registered with IANA [17]. + + Media Type name: message + Media subtype name: http + Required parameters: none + Optional parameters: version, msgtype + version: The HTTP-Version number of the enclosed message + (e.g., "1.1"). If not present, the version can be + determined from the first line of the body. + msgtype: The message type -- "request" or "response". If not + present, the type can be determined from the first + line of the body. + Encoding considerations: only "7bit", "8bit", or "binary" are + permitted + Security considerations: none + + Media Type name: application + Media subtype name: http + Required parameters: none + Optional parameters: version, msgtype + version: The HTTP-Version number of the enclosed messages + (e.g., "1.1"). If not present, the version can be + determined from the first line of the body. + msgtype: The message type -- "request" or "response". If not + present, the type can be determined from the first + line of the body. + Encoding considerations: HTTP messages enclosed by this type + are in "binary" format; use of an appropriate + Content-Transfer-Encoding is required when + transmitted via E-mail. + Security considerations: none + + + + + + + + + +Fielding, et al. Standards Track [Page 164] +
RFC 2616 HTTP/1.1 June 1999 + + +19.2 Internet Media Type multipart/byteranges + + When an HTTP 206 (Partial Content) response message includes the + content of multiple ranges (a response to a request for multiple + non-overlapping ranges), these are transmitted as a multipart + message-body. The media type for this purpose is called + "multipart/byteranges". + + The multipart/byteranges media type includes two or more parts, each + with its own Content-Type and Content-Range fields. The required + boundary parameter specifies the boundary string used to separate + each body-part. + + Media Type name: multipart + Media subtype name: byteranges + Required parameters: boundary + Optional parameters: none + Encoding considerations: only "7bit", "8bit", or "binary" are + permitted + Security considerations: none + + + For example: + + HTTP/1.1 206 Partial Content + Date: Wed, 15 Nov 1995 06:25:24 GMT + Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT + Content-type: multipart/byteranges; boundary=THIS_STRING_SEPARATES + + --THIS_STRING_SEPARATES + Content-type: application/pdf + Content-range: bytes 500-999/8000 + + ...the first range... + --THIS_STRING_SEPARATES + Content-type: application/pdf + Content-range: bytes 7000-7999/8000 + + ...the second range + --THIS_STRING_SEPARATES-- + + Notes: + + 1) Additional CRLFs may precede the first boundary string in the + entity. + + + + + + +Fielding, et al. Standards Track [Page 165] +
RFC 2616 HTTP/1.1 June 1999 + + + 2) Although RFC 2046 [40] permits the boundary string to be + quoted, some existing implementations handle a quoted boundary + string incorrectly. + + 3) A number of browsers and servers were coded to an early draft + of the byteranges specification to use a media type of + multipart/x-byteranges, which is almost, but not quite + compatible with the version documented in HTTP/1.1. + +19.3 Tolerant Applications + + Although this document specifies the requirements for the generation + of HTTP/1.1 messages, not all applications will be correct in their + implementation. We therefore recommend that operational applications + be tolerant of deviations whenever those deviations can be + interpreted unambiguously. + + Clients SHOULD be tolerant in parsing the Status-Line and servers + tolerant when parsing the Request-Line. In particular, they SHOULD + accept any amount of SP or HT characters between fields, even though + only a single SP is required. + + The line terminator for message-header fields is the sequence CRLF. + However, we recommend that applications, when parsing such headers, + recognize a single LF as a line terminator and ignore the leading CR. + + The character set of an entity-body SHOULD be labeled as the lowest + common denominator of the character codes used within that body, with + the exception that not labeling the entity is preferred over labeling + the entity with the labels US-ASCII or ISO-8859-1. See section 3.7.1 + and 3.4.1. + + Additional rules for requirements on parsing and encoding of dates + and other potential problems with date encodings include: + + - HTTP/1.1 clients and caches SHOULD assume that an RFC-850 date + which appears to be more than 50 years in the future is in fact + in the past (this helps solve the "year 2000" problem). + + - An HTTP/1.1 implementation MAY internally represent a parsed + Expires date as earlier than the proper value, but MUST NOT + internally represent a parsed Expires date as later than the + proper value. + + - All expiration-related calculations MUST be done in GMT. The + local time zone MUST NOT influence the calculation or comparison + of an age or expiration time. + + + + +Fielding, et al. Standards Track [Page 166] +
RFC 2616 HTTP/1.1 June 1999 + + + - If an HTTP header incorrectly carries a date value with a time + zone other than GMT, it MUST be converted into GMT using the + most conservative possible conversion. + +19.4 Differences Between HTTP Entities and RFC 2045 Entities + + HTTP/1.1 uses many of the constructs defined for Internet Mail (RFC + 822 [9]) and the Multipurpose Internet Mail Extensions (MIME [7]) to + allow entities to be transmitted in an open variety of + representations and with extensible mechanisms. However, RFC 2045 + discusses mail, and HTTP has a few features that are different from + those described in RFC 2045. These differences were carefully chosen + to optimize performance over binary connections, to allow greater + freedom in the use of new media types, to make date comparisons + easier, and to acknowledge the practice of some early HTTP servers + and clients. + + This appendix describes specific areas where HTTP differs from RFC + 2045. Proxies and gateways to strict MIME environments SHOULD be + aware of these differences and provide the appropriate conversions + where necessary. Proxies and gateways from MIME environments to HTTP + also need to be aware of the differences because some conversions + might be required. + +19.4.1 MIME-Version + + HTTP is not a MIME-compliant protocol. However, HTTP/1.1 messages MAY + include a single MIME-Version general-header field to indicate what + version of the MIME protocol was used to construct the message. Use + of the MIME-Version header field indicates that the message is in + full compliance with the MIME protocol (as defined in RFC 2045[7]). + Proxies/gateways are responsible for ensuring full compliance (where + possible) when exporting HTTP messages to strict MIME environments. + + MIME-Version = "MIME-Version" ":" 1*DIGIT "." 1*DIGIT + + MIME version "1.0" is the default for use in HTTP/1.1. However, + HTTP/1.1 message parsing and semantics are defined by this document + and not the MIME specification. + +19.4.2 Conversion to Canonical Form + + RFC 2045 [7] requires that an Internet mail entity be converted to + canonical form prior to being transferred, as described in section 4 + of RFC 2049 [48]. section 3.7.1 of this document describes the forms + allowed for subtypes of the "text" media type when transmitted over + HTTP. RFC 2046 requires that content with a type of "text" represent + line breaks as CRLF and forbids the use of CR or LF outside of line + + + +Fielding, et al. Standards Track [Page 167] +
RFC 2616 HTTP/1.1 June 1999 + + + break sequences. HTTP allows CRLF, bare CR, and bare LF to indicate a + line break within text content when a message is transmitted over + HTTP. + + Where it is possible, a proxy or gateway from HTTP to a strict MIME + environment SHOULD translate all line breaks within the text media + types described in section 3.7.1 of this document to the RFC 2049 + canonical form of CRLF. Note, however, that this might be complicated + by the presence of a Content-Encoding and by the fact that HTTP + allows the use of some character sets which do not use octets 13 and + 10 to represent CR and LF, as is the case for some multi-byte + character sets. + + Implementors should note that conversion will break any cryptographic + checksums applied to the original content unless the original content + is already in canonical form. Therefore, the canonical form is + recommended for any content that uses such checksums in HTTP. + +19.4.3 Conversion of Date Formats + + HTTP/1.1 uses a restricted set of date formats (section 3.3.1) to + simplify the process of date comparison. Proxies and gateways from + other protocols SHOULD ensure that any Date header field present in a + message conforms to one of the HTTP/1.1 formats and rewrite the date + if necessary. + +19.4.4 Introduction of Content-Encoding + + RFC 2045 does not include any concept equivalent to HTTP/1.1's + Content-Encoding header field. Since this acts as a modifier on the + media type, proxies and gateways from HTTP to MIME-compliant + protocols MUST either change the value of the Content-Type header + field or decode the entity-body before forwarding the message. (Some + experimental applications of Content-Type for Internet mail have used + a media-type parameter of ";conversions=<content-coding>" to perform + a function equivalent to Content-Encoding. However, this parameter is + not part of RFC 2045.) + +19.4.5 No Content-Transfer-Encoding + + HTTP does not use the Content-Transfer-Encoding (CTE) field of RFC + 2045. Proxies and gateways from MIME-compliant protocols to HTTP MUST + remove any non-identity CTE ("quoted-printable" or "base64") encoding + prior to delivering the response message to an HTTP client. + + Proxies and gateways from HTTP to MIME-compliant protocols are + responsible for ensuring that the message is in the correct format + and encoding for safe transport on that protocol, where "safe + + + +Fielding, et al. Standards Track [Page 168] +
RFC 2616 HTTP/1.1 June 1999 + + + transport" is defined by the limitations of the protocol being used. + Such a proxy or gateway SHOULD label the data with an appropriate + Content-Transfer-Encoding if doing so will improve the likelihood of + safe transport over the destination protocol. + +19.4.6 Introduction of Transfer-Encoding + + HTTP/1.1 introduces the Transfer-Encoding header field (section + 14.41). Proxies/gateways MUST remove any transfer-coding prior to + forwarding a message via a MIME-compliant protocol. + + A process for decoding the "chunked" transfer-coding (section 3.6) + can be represented in pseudo-code as: + + length := 0 + read chunk-size, chunk-extension (if any) and CRLF + while (chunk-size > 0) { + read chunk-data and CRLF + append chunk-data to entity-body + length := length + chunk-size + read chunk-size and CRLF + } + read entity-header + while (entity-header not empty) { + append entity-header to existing header fields + read entity-header + } + Content-Length := length + Remove "chunked" from Transfer-Encoding + +19.4.7 MHTML and Line Length Limitations + + HTTP implementations which share code with MHTML [45] implementations + need to be aware of MIME line length limitations. Since HTTP does not + have this limitation, HTTP does not fold long lines. MHTML messages + being transported by HTTP follow all conventions of MHTML, including + line length limitations and folding, canonicalization, etc., since + HTTP transports all message-bodies as payload (see section 3.7.2) and + does not interpret the content or any MIME header lines that might be + contained therein. + +19.5 Additional Features + + RFC 1945 and RFC 2068 document protocol elements used by some + existing HTTP implementations, but not consistently and correctly + across most HTTP/1.1 applications. Implementors are advised to be + aware of these features, but cannot rely upon their presence in, or + interoperability with, other HTTP/1.1 applications. Some of these + + + +Fielding, et al. Standards Track [Page 169] +
RFC 2616 HTTP/1.1 June 1999 + + + describe proposed experimental features, and some describe features + that experimental deployment found lacking that are now addressed in + the base HTTP/1.1 specification. + + A number of other headers, such as Content-Disposition and Title, + from SMTP and MIME are also often implemented (see RFC 2076 [37]). + +19.5.1 Content-Disposition + + The Content-Disposition response-header field has been proposed as a + means for the origin server to suggest a default filename if the user + requests that the content is saved to a file. This usage is derived + from the definition of Content-Disposition in RFC 1806 [35]. + + content-disposition = "Content-Disposition" ":" + disposition-type *( ";" disposition-parm ) + disposition-type = "attachment" | disp-extension-token + disposition-parm = filename-parm | disp-extension-parm + filename-parm = "filename" "=" quoted-string + disp-extension-token = token + disp-extension-parm = token "=" ( token | quoted-string ) + + An example is + + Content-Disposition: attachment; filename="fname.ext" + + The receiving user agent SHOULD NOT respect any directory path + information present in the filename-parm parameter, which is the only + parameter believed to apply to HTTP implementations at this time. The + filename SHOULD be treated as a terminal component only. + + If this header is used in a response with the application/octet- + stream content-type, the implied suggestion is that the user agent + should not display the response, but directly enter a `save response + as...' dialog. + + See section 15.5 for Content-Disposition security issues. + +19.6 Compatibility with Previous Versions + + It is beyond the scope of a protocol specification to mandate + compliance with previous versions. HTTP/1.1 was deliberately + designed, however, to make supporting previous versions easy. It is + worth noting that, at the time of composing this specification + (1996), we would expect commercial HTTP/1.1 servers to: + + - recognize the format of the Request-Line for HTTP/0.9, 1.0, and + 1.1 requests; + + + +Fielding, et al. Standards Track [Page 170] +
RFC 2616 HTTP/1.1 June 1999 + + + - understand any valid request in the format of HTTP/0.9, 1.0, or + 1.1; + + - respond appropriately with a message in the same major version + used by the client. + + And we would expect HTTP/1.1 clients to: + + - recognize the format of the Status-Line for HTTP/1.0 and 1.1 + responses; + + - understand any valid response in the format of HTTP/0.9, 1.0, or + 1.1. + + For most implementations of HTTP/1.0, each connection is established + by the client prior to the request and closed by the server after + sending the response. Some implementations implement the Keep-Alive + version of persistent connections described in section 19.7.1 of RFC + 2068 [33]. + +19.6.1 Changes from HTTP/1.0 + + This section summarizes major differences between versions HTTP/1.0 + and HTTP/1.1. + +19.6.1.1 Changes to Simplify Multi-homed Web Servers and Conserve IP + Addresses + + The requirements that clients and servers support the Host request- + header, report an error if the Host request-header (section 14.23) is + missing from an HTTP/1.1 request, and accept absolute URIs (section + 5.1.2) are among the most important changes defined by this + specification. + + Older HTTP/1.0 clients assumed a one-to-one relationship of IP + addresses and servers; there was no other established mechanism for + distinguishing the intended server of a request than the IP address + to which that request was directed. The changes outlined above will + allow the Internet, once older HTTP clients are no longer common, to + support multiple Web sites from a single IP address, greatly + simplifying large operational Web servers, where allocation of many + IP addresses to a single host has created serious problems. The + Internet will also be able to recover the IP addresses that have been + allocated for the sole purpose of allowing special-purpose domain + names to be used in root-level HTTP URLs. Given the rate of growth of + the Web, and the number of servers already deployed, it is extremely + + + + + +Fielding, et al. Standards Track [Page 171] +
RFC 2616 HTTP/1.1 June 1999 + + + important that all implementations of HTTP (including updates to + existing HTTP/1.0 applications) correctly implement these + requirements: + + - Both clients and servers MUST support the Host request-header. + + - A client that sends an HTTP/1.1 request MUST send a Host header. + + - Servers MUST report a 400 (Bad Request) error if an HTTP/1.1 + request does not include a Host request-header. + + - Servers MUST accept absolute URIs. + +19.6.2 Compatibility with HTTP/1.0 Persistent Connections + + Some clients and servers might wish to be compatible with some + previous implementations of persistent connections in HTTP/1.0 + clients and servers. Persistent connections in HTTP/1.0 are + explicitly negotiated as they are not the default behavior. HTTP/1.0 + experimental implementations of persistent connections are faulty, + and the new facilities in HTTP/1.1 are designed to rectify these + problems. The problem was that some existing 1.0 clients may be + sending Keep-Alive to a proxy server that doesn't understand + Connection, which would then erroneously forward it to the next + inbound server, which would establish the Keep-Alive connection and + result in a hung HTTP/1.0 proxy waiting for the close on the + response. The result is that HTTP/1.0 clients must be prevented from + using Keep-Alive when talking to proxies. + + However, talking to proxies is the most important use of persistent + connections, so that prohibition is clearly unacceptable. Therefore, + we need some other mechanism for indicating a persistent connection + is desired, which is safe to use even when talking to an old proxy + that ignores Connection. Persistent connections are the default for + HTTP/1.1 messages; we introduce a new keyword (Connection: close) for + declaring non-persistence. See section 14.10. + + The original HTTP/1.0 form of persistent connections (the Connection: + Keep-Alive and Keep-Alive header) is documented in RFC 2068. [33] + +19.6.3 Changes from RFC 2068 + + This specification has been carefully audited to correct and + disambiguate key word usage; RFC 2068 had many problems in respect to + the conventions laid out in RFC 2119 [34]. + + Clarified which error code should be used for inbound server failures + (e.g. DNS failures). (section 10.5.5). + + + +Fielding, et al. Standards Track [Page 172] +
RFC 2616 HTTP/1.1 June 1999 + + + CREATE had a race that required an Etag be sent when a resource is + first created. (section 10.2.2). + + Content-Base was deleted from the specification: it was not + implemented widely, and there is no simple, safe way to introduce it + without a robust extension mechanism. In addition, it is used in a + similar, but not identical fashion in MHTML [45]. + + Transfer-coding and message lengths all interact in ways that + required fixing exactly when chunked encoding is used (to allow for + transfer encoding that may not be self delimiting); it was important + to straighten out exactly how message lengths are computed. (Sections + 3.6, 4.4, 7.2.2, 13.5.2, 14.13, 14.16) + + A content-coding of "identity" was introduced, to solve problems + discovered in caching. (section 3.5) + + Quality Values of zero should indicate that "I don't want something" + to allow clients to refuse a representation. (section 3.9) + + The use and interpretation of HTTP version numbers has been clarified + by RFC 2145. Require proxies to upgrade requests to highest protocol + version they support to deal with problems discovered in HTTP/1.0 + implementations (section 3.1) + + Charset wildcarding is introduced to avoid explosion of character set + names in accept headers. (section 14.2) + + A case was missed in the Cache-Control model of HTTP/1.1; s-maxage + was introduced to add this missing case. (Sections 13.4, 14.8, 14.9, + 14.9.3) + + The Cache-Control: max-age directive was not properly defined for + responses. (section 14.9.3) + + There are situations where a server (especially a proxy) does not + know the full length of a response but is capable of serving a + byterange request. We therefore need a mechanism to allow byteranges + with a content-range not indicating the full length of the message. + (section 14.16) + + Range request responses would become very verbose if all meta-data + were always returned; by allowing the server to only send needed + headers in a 206 response, this problem can be avoided. (Section + 10.2.7, 13.5.3, and 14.27) + + + + + + +Fielding, et al. Standards Track [Page 173] +
RFC 2616 HTTP/1.1 June 1999 + + + Fix problem with unsatisfiable range requests; there are two cases: + syntactic problems, and range doesn't exist in the document. The 416 + status code was needed to resolve this ambiguity needed to indicate + an error for a byte range request that falls outside of the actual + contents of a document. (section 10.4.17, 14.16) + + Rewrite of message transmission requirements to make it much harder + for implementors to get it wrong, as the consequences of errors here + can have significant impact on the Internet, and to deal with the + following problems: + + 1. Changing "HTTP/1.1 or later" to "HTTP/1.1", in contexts where + this was incorrectly placing a requirement on the behavior of + an implementation of a future version of HTTP/1.x + + 2. Made it clear that user-agents should retry requests, not + "clients" in general. + + 3. Converted requirements for clients to ignore unexpected 100 + (Continue) responses, and for proxies to forward 100 responses, + into a general requirement for 1xx responses. + + 4. Modified some TCP-specific language, to make it clearer that + non-TCP transports are possible for HTTP. + + 5. Require that the origin server MUST NOT wait for the request + body before it sends a required 100 (Continue) response. + + 6. Allow, rather than require, a server to omit 100 (Continue) if + it has already seen some of the request body. + + 7. Allow servers to defend against denial-of-service attacks and + broken clients. + + This change adds the Expect header and 417 status code. The message + transmission requirements fixes are in sections 8.2, 10.4.18, + 8.1.2.2, 13.11, and 14.20. + + Proxies should be able to add Content-Length when appropriate. + (section 13.5.2) + + Clean up confusion between 403 and 404 responses. (section 10.4.4, + 10.4.5, and 10.4.11) + + Warnings could be cached incorrectly, or not updated appropriately. + (section 13.1.2, 13.2.4, 13.5.2, 13.5.3, 14.9.3, and 14.46) Warning + also needed to be a general header, as PUT or other methods may have + need for it in requests. + + + +Fielding, et al. Standards Track [Page 174] +
RFC 2616 HTTP/1.1 June 1999 + + + Transfer-coding had significant problems, particularly with + interactions with chunked encoding. The solution is that transfer- + codings become as full fledged as content-codings. This involves + adding an IANA registry for transfer-codings (separate from content + codings), a new header field (TE) and enabling trailer headers in the + future. Transfer encoding is a major performance benefit, so it was + worth fixing [39]. TE also solves another, obscure, downward + interoperability problem that could have occurred due to interactions + between authentication trailers, chunked encoding and HTTP/1.0 + clients.(section 3.6, 3.6.1, and 14.39) + + The PATCH, LINK, UNLINK methods were defined but not commonly + implemented in previous versions of this specification. See RFC 2068 + [33]. + + The Alternates, Content-Version, Derived-From, Link, URI, Public and + Content-Base header fields were defined in previous versions of this + specification, but not commonly implemented. See RFC 2068 [33]. + +20 Index + + Please see the PostScript version of this RFC for the INDEX. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fielding, et al. Standards Track [Page 175] +
+RFC 2616 HTTP/1.1 June 1999 + + +21. Full Copyright Statement + + Copyright (C) The Internet Society (1999). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Fielding, et al. Standards Track [Page 176] +
+
+ + diff --git a/2004/hibachi/src/localhost/style.css b/2004/hibachi/src/localhost/style.css new file mode 100644 index 000000000..3770422a0 --- /dev/null +++ b/2004/hibachi/src/localhost/style.css @@ -0,0 +1,110 @@ +body { + padding: 0px 60px 0px 10px; +} + +.normal, p, ul { + font-family: Arial, Verdana, Helvetica, sans-serif; + font-size: 12pt; + color: #000000; + text-align: justify; +} +.title { +/* font-family: serif; */ + font-weight: bold; + font-size: 24pt; + color: #3099ff; +} +.hibachi { + color: #b50000; + font-style: italic; +} +.small { + font-family: Arial, Verdana, Helvetica, sans-serif; + font-size: 8pt; + color: #000000; +} +.copyright { + font-family: Arial, Verdana, Helvetica, sans-serif; + font-size: 9pt; + color: #000000; +} +.big, h3 { + font-family: Arial, Verdana, Helvetica, sans-serif; + font-size: 12pt; + color: #000000; +} +.large, h2 { + font-family: Arial, Verdana, Helvetica, sans-serif; + font-weight: normal; + font-size: 16pt; + color: #000000; +} +.huge, h1 { + font-family: Arial, Verdana, Helvetica, sans-serif; + font-size: 26pt; +} +.project { + text-decoration: none; + font-weight: bold; +# color: #3099ff; +} +.plain { + font-family: serif; + font-size: 14pt; + color: #000000; +} +.snert { + font-family: serif; + font-weight: bold; + font-size: 16pt; + color: #000000; + z-index: 10; +} +.serif { + font-family: serif; +} +a { + font-family: Arial, Verdana, Helvetica, sans-serif; + font-weight: bold; + text-decoration: none; +} +a:link { +/* color: #0000ff; */ + color: #aa0000; +} +a:hover { +/* color: #000080; */ + color: #dd0000; + text-decoration: underline; +} +a:visited { +/* color: #000080; */ + color: #800000; +} +.syntax { + font-family: Arial, Verdana, Helvetica, sans-serif; + font-weight: normal; + font-size: 11pt; + color:#000080; +} +.param { + color:#0000cc; + font-style: italic; + font-weight: normal +} + +dd { + margin: 0 20px 20px 30px; +} + +.path { + font-family: monospace; + font-weight: bold; + font-size: 10pt; +} + +.hline { + border-collapse: collapse; + border-bottom: 1px solid; + border-color: #000000; +} \ No newline at end of file diff --git a/2004/hibachi/src/localhost/test/perl/index.html b/2004/hibachi/src/localhost/test/perl/index.html new file mode 100644 index 000000000..6bbfe361a --- /dev/null +++ b/2004/hibachi/src/localhost/test/perl/index.html @@ -0,0 +1,66 @@ + + + + +Hibachi - Stock Price Example in Perl + + + + + + + + + + + +
+ + + +

Stock Price Fetch Example in Perl

+

+(This example requires JavaScript.) +

+ + + + + + + + + + + + + + + + + + +
+      + Exchange : CDNX
Symbol : DIR
Share Price : + +   +
Volume : + +
Last Trade : + +
+ +
+Return to HIBACHI + +
+ + + diff --git a/2004/hibachi/src/localhost/test/perl/yahoo-ticker.pl b/2004/hibachi/src/localhost/test/perl/yahoo-ticker.pl new file mode 100755 index 000000000..40fa1604d --- /dev/null +++ b/2004/hibachi/src/localhost/test/perl/yahoo-ticker.pl @@ -0,0 +1,77 @@ +#!/usr/bin/perl +# +# yahoo-ticker.pl +# +# Copyright 1998 by Anthony Howe. All rights reserved. +# +# Usage: yahoo-ticker.pl? +# + +########################################################################## +# Nothing to be configured below this point. +########################################################################## + +use Socket; + +# WORK-AROUND 1. +# BAH! Some Perl implementations (for Windows) are not created equal. +# Force I/O flushes after each read/write operation. + +$| = 1; + +######################################################################### +# Open connection to URL. +######################################################################### + +my ($symbol) = $ENV{'QUERY_STRING'} =~ /\??(.*)/; + +# Figure out who we have to call. +#($host, $port, $path) = ($url =~ m!http://([^:/]+)(?:\:(\d*))?(/.*)!); + +$host = "finance.yahoo.com"; +$port = 80 unless defined $port; +$path = "/q?s=$symbol"; + +# Get a socket... +unless (socket(HTTP, PF_INET, SOCK_STREAM, getprotobyname('tcp'))) { + print("[CGI failed ($!)]\n"); + exit(0); +} + +# ...set socket to be line buffered... +select( (select(HTTP), $| = 1)[0] ); + +# .. make the connection. +unless (connect(HTTP, sockaddr_in($port, inet_aton("$host")))) { + print("[CGI failed ($!)]\n"); + exit(0); +} + +print HTTP "GET $path HTTP/1.0\nHost: $host\n\n"; + +while () { + # Last trade price line. + if (m!>Last Trade:(\d+\.\d+)!); + } + + if (m!>Trade Time:([^<]+)!); + } + + if (m!>Volume:([^<]+)!); + } +} + +close(HTTP); + +print "HTTP/1.0 200 OK\n"; +print "Content-Type: text/javascript\n\n"; + +print "var ticker = new Array();\n"; +print "ticker['price'] = $price;\n"; +print "ticker['volume'] = \"$volume\";\n"; +print "ticker['last'] = \"$last\";\n"; + +exit 0; diff --git a/2004/hibachi/src/localhost/test/perl/yahoo-ticker.pl.in b/2004/hibachi/src/localhost/test/perl/yahoo-ticker.pl.in new file mode 100644 index 000000000..0da9fcba4 --- /dev/null +++ b/2004/hibachi/src/localhost/test/perl/yahoo-ticker.pl.in @@ -0,0 +1,77 @@ +#!@perl_exe@ +# +# yahoo-ticker.pl +# +# Copyright 1998 by Anthony Howe. All rights reserved. +# +# Usage: yahoo-ticker.pl? +# + +########################################################################## +# Nothing to be configured below this point. +########################################################################## + +use Socket; + +# WORK-AROUND 1. +# BAH! Some Perl implementations (for Windows) are not created equal. +# Force I/O flushes after each read/write operation. + +$| = 1; + +######################################################################### +# Open connection to URL. +######################################################################### + +my ($symbol) = $ENV{'QUERY_STRING'} =~ /\??(.*)/; + +# Figure out who we have to call. +#($host, $port, $path) = ($url =~ m!http://([^:/]+)(?:\:(\d*))?(/.*)!); + +$host = "finance.yahoo.com"; +$port = 80 unless defined $port; +$path = "/q?s=$symbol"; + +# Get a socket... +unless (socket(HTTP, PF_INET, SOCK_STREAM, getprotobyname('tcp'))) { + print("[CGI failed ($!)]\n"); + exit(0); +} + +# ...set socket to be line buffered... +select( (select(HTTP), $| = 1)[0] ); + +# .. make the connection. +unless (connect(HTTP, sockaddr_in($port, inet_aton("$host")))) { + print("[CGI failed ($!)]\n"); + exit(0); +} + +print HTTP "GET $path HTTP/1.0\nHost: $host\n\n"; + +while () { + # Last trade price line. + if (m!>Last Trade:(\d+\.\d+)!); + } + + if (m!>Trade Time:([^<]+)!); + } + + if (m!>Volume:([^<]+)!); + } +} + +close(HTTP); + +print "HTTP/1.0 200 OK\n"; +print "Content-Type: text/javascript\n\n"; + +print "var ticker = new Array();\n"; +print "ticker['price'] = $price;\n"; +print "ticker['volume'] = \"$volume\";\n"; +print "ticker['last'] = \"$last\";\n"; + +exit 0; diff --git a/2004/hibachi/src/localhost/test/php/Date.php b/2004/hibachi/src/localhost/test/php/Date.php new file mode 100644 index 000000000..861f036fa --- /dev/null +++ b/2004/hibachi/src/localhost/test/php/Date.php @@ -0,0 +1,557 @@ +setTime(time()); + } + + function isLeapYear(/* year */) + { + if (func_num_args() == 1) + $year = func_get_arg(0); + else + $year = $this->date['year']; + + if ($year % 4000 == 0) + return false; + if ($year % 400 == 0) + return true; + if ($year % 100 == 0) + return false; + if ($year % 4 == 0) + return true; + return false; + } + + // + // Return the number of seconds since system epoch. + // + function getTime() + { + return $this->time; + } + + // + // Set the date / time in seconds for the object. + // + function setTime($t) + { + $this->time = $t; + $this->date = getdate($t); + } + + function getHour() + { + return $this->date['hour']; + } + + function getMinute() + { + return $this->date['minutes']; + } + + function getSecond() + { + return $this->date['seconds']; + } + + function getMonth() + { + return $this->date['mon']; + } + + function getYear() + { + return $this->date['year']; + } + + function getDayOfWeek() + { + return $this->date['wday']; + } + + function getDayOfMonth() + { + return $this->date['mday']; + } + + function getDayOfYear() + { + return $this->date['yday']; + } + + function getDaysInMonth(/* year, month */) + { + if (func_num_args() == 2) { + $year = func_get_arg(0); + $month = func_get_arg(1); + } else { + $year = $this->date['year']; + $month = $this->date['mon']; + } + + $endOfMonth = Array( + 31, + 28 + Date::isLeapYear($year), + 31, + 30, + 31, + 30, + 31, + 31, + 30, + 31, + 30, + 31 + ); + + return $endOfMonth[$month-1]; + } + + function getPreviousMonth() + { + if ($this->date['mon'] <= 1) + return 12; + + return $this->date['mon']-1; + } + + function getNextMonth() + { + if (12 <= $this->date['mon']) + return 1; + + return $this->date['mon']+1; + } + + function getFirstWeekDayOfMonth(/* year, month */) + { + if (func_num_args() == 2) { + $y = func_get_arg(0); + $m = func_get_arg(1); + } else { + $y = $this->date['year']; + $m = $this->date['mon']; + } + + // Day of the week 0..6 (Sunday..Saturday). + $weekDay = strftime("%w", mktime(0, 0, 0, $m, 1, $y)); + + // Day of the week 1..7 (Monday..Sunday). + return $weekDay == 0 ? 7 : $weekDay; + } + + function getNumberOfWeeks(/* year */) + { + if (func_num_args() == 1) + $year = func_get_arg(0); + else + $year = $this->date['year']; + + /* An ISO calendar year y is long (contains 53 weeks) if: + * + * p(y) modulo 7 = 4 + * + * or if: + * + * p(y-1) modulo 7 = 3 + * + * with: + * + * p(y) = y + floor(y/4) - floor(y/100) + floor(y/400) + * + * http://www.phys.uu.nl/~vgent/calendar/isocalendar.htm + */ + + if (($year + floor($year/4) - floor($year/100) + floor($year/400)) % 7 == 4) + return 53; + + if ((--$year + floor($year/4) - floor($year/100) + floor($year/400)) % 7 == 3) + return 53; + + return 52; + } + + /* + * Return ISO 8601:2000(E) week number. This is a work around for + * Windows, which does not support a working strftime %V format. + */ + function getWeekNumber(/* year, month, day */) + { + if (func_num_args() == 3) { + $year = func_get_arg(0); + $month = func_get_arg(1); + $day = func_get_arg(2); + } else { + $year = $this->date['year']; + $month = $this->date['mon']; + $day = $this->date['mday']; + } + + /* The week number of the current year as a decimal number, range + * 00 to 53, starting with the first Monday as the first day of + * week 01. + */ + $week = strftime("%W", mktime(0, 0, 0, $month, $day, $year)); + + /* Week days numbered 0 (Sunday) to 6 (Saturday). */ + $firstWeekDayThisYear = strftime("%w", mktime(0, 0, 0, 1, 1, $year)); + $firstWeekDayNextYear = strftime("%w", mktime(0, 0, 0, 1, 1, $year+1)); + + /* The first ISO calendar week of a year is the one that includes the + * first Thursday of that year. In other words, the first week of the + * ISO calendar year is the earliest week that contains at least four + * days of the month of January. + */ + if (1 < $firstWeekDayThisYear && $firstWeekDayThisYear < 5) { + /* The first Thursday of the current ISO year was in week zero. */ + $week++; + } + + if ($week == 53 && 1 < $firstWeekDayNextYear && $firstWeekDayNextYear < 5) { + /* The first Thursday of the following ISO year is this week. */ + $week = 1; + } + + if ($week == 0) { + /* Number of weeks last year. */ + $week = Date::getNumberOfWeeks($year-1); + } + + return $week+0; + } + + // + // Return the number seconds as of zero hour today. + // + function getDate() + { + return mktime(0, 0, 0, $this->date['mon'], $this->date['mday'], $this->date['year']); + } + + // + // Set date as of zero hour that day. + // + function setDate($year, $month, $day) + { + $this->setDateTime($year, $month, $day, 0, 0, 0); + } + + // + // Return the date / time array. + // + function getDateTime() + { + return $this->date; + } + + // + // Set the date / time for the object. + // + function setDateTime($year, $month, $day, $hour, $minute, $second) + { + $time = mktime($hour, $minute, $second, $month, $day, $year, 0); + $this->setTime($time); + } + + // + // Adjust the date / time of the object. + // + function addDateTime($year, $month, $day, $hour, $minute, $second) + { + $t = mktime( + $this->date['hour'] + $hour, + $this->date['minutes'] + $minute, + $this->date['seconds'] + $second, + $this->date['mon'] + $month, + $this->date['mday'] + $day, + $this->date['year'] + $year + ); + $this->setTime($t); + } + + // + // Return the date / time as an ISO date string. + // + function getDateISO() + { + return strftime("%Y-%m-%d %H:%M:%S", $this->time); + } + + // + // Set the date / time of the object using an ISO date string. + // + function setDateISO($str) + { + if (!ereg('([0-9]+)-([0-9]+)-([0-9]+)', $str, $ymd)) + $ymd = array('','0','0','0'); + if (!ereg('([0-9]+):([0-9]+):([0-9]+)\+([0-9]+)', $str, $hms)) + $hms = array('','0','0','0'); + + // Assume local time, ignore timezone. + $this->setDateTime( + intval($ymd[1]), + intval($ymd[2]), + intval($ymd[3]), + intval($hms[1]), + intval($hms[2]), + intval($hms[3]) + ); + } + + function setDateMySQL($str) + { + $n = sscanf($str, "%4d%2d%2d%2d%2d%2d", $y, $m, $d, $H, $M, $S); + $this->setDateTime($y, $m, $d, $H, $M, $S); + } + + // + // Relational operations between Date vs time or Date vs Date. + // + function eq($t) + { + if (is_object($t)) $t = $t->getTime(); + return $this->time == $t; + } + + function ne($t) + { + if (is_object($t)) $t = $t->getTime(); + return $this->time != $t; + } + + function lt($t) + { + if (is_object($t)) $t = $t->getTime(); + return $this->time < $t; + } + + function le($t) + { + if (is_object($t)) $t = $t->getTime(); + return $this->time <= $t; + } + + function gt($t) + { + if (is_object($t)) $t = $t->getTime(); + return $this->time > $t; + } + + function ge($t) + { + if (is_object($t)) $t = $t->getTime(); + return $this->time >= $t; + } + + /* + * $obj->getSmallCalendar() + * Date::getSmallCalendar($year, $month) + */ + function getSmallCalendar(/* [$year, $month] */) + { + if (func_num_args() == 2) { + $year = func_get_arg(0); + $month = func_get_arg(1); + } else { + $year = $this->date['year']; + $month = $this->date['mon']; + } + + $name = date('F', mktime(0,0,0,$month,1,$year)); + $weekNumber = Date::getWeekNumber($year, $month, 1); + $daysInMonth = Date::getDaysInMonth($year, $month); + $weekDay = Date::getFirstWeekDayOfMonth($year, $month) - 1; + + $thisDate = getdate(time()); + $thisDay = mktime(0, 0, 0, $thisDate['mon'], $thisDate['mday'], $thisDate['year']); + $thisWeek = Date::getWeekNumber($thisDate['year'], $thisDate['mon'], $thisDate['mday']); + + if ($year != $thisDate['year']) { + $thisWeek = 0; + } + + $rc = << + + {$name}   {$year} + + +   + Mo + Tu + We + Th + Fr + Sa + Su + + + {$weekNumber} + +EOT; + + if ($weekNumber == $thisWeek) { + $style = "smCalendarThisWeek"; + $thisDayStyle = "smCalendarThisWeek smCalendarThisDay"; + } else { + $style = $thisDayStyle = "smCalendarDay"; + } + + for ($i = 0; $i < $weekDay; $i++) { + $rc .= sprintf( + "\t \n", + $i == $thisDate['wday'] ? $thisDayStyle : $style, + $i < 5 ? "" : " smCalendarWeekend" + ); + } + + for ($i = 1; $i <= $daysInMonth; $i++, $weekDay = ($weekDay + 1) % 7) { + if (1 < $i && $weekDay == 0) { + $weekNumber = Date::getWeekNumber($year, $month, $i); + + $week = $weekNumber < 10 ? "  {$weekNumber}" : $weekNumber; + $rc .= "\n\n\t{$week}\n"; + if ($weekNumber == $thisWeek) { + $style = "smCalendarThisWeek"; + $thisDayStyle = "smCalendarThisWeek smCalendarThisDay"; + } else { + $style = $thisDayStyle = "smCalendarDay"; + } + } + + $key = sprintf("%04d-02d-02d", $year, $month, $i); + + $rc .= sprintf( + "\t%d\n", + $i == $thisDate['mday'] ? $thisDayStyle : $style, + $weekDay < 5 ? "" : " smCalendarWeekend", $i + ); + } + + for ( ; $weekDay != 0; $weekDay = ($weekDay + 1) % 7) { + $rc .= sprintf( + "\t \n", + $weekDay < 5 ? "smCalendarDay" : "smCalendarWeekend" + ); + } + + $rc .= "\n\n"; + + return $rc; + } + + /* + * $obj->getLargeCalendar($notes) + * Date::getLargeCalendar($notes, $year, $month) + */ + function getLargeCalendar(/* $notes [, $year, $month] */) + { + switch (func_num_args()) { + case 3: + $notes = func_get_arg(0); + $year = func_get_arg(1); + $month = func_get_arg(2); + break; + case 1: + $notes = func_get_arg(0); + $year = $this->date['year']; + $month = $this->date['mon']; + break; + default: + return ''; + } + + $name = date('F', mktime(0,0,0,$month,1,$year)); + $weekNumber = Date::getWeekNumber($year, $month, 1); + $daysInMonth = Date::getDaysInMonth($year, $month); + $weekDay = Date::getFirstWeekDayOfMonth($year, $month) - 1; + + $thisDate = getdate(time()); + $thisDay = mktime(0, 0, 0, $thisDate['mon'], $thisDate['mday'], $thisDate['year']); + $thisWeek = Date::getWeekNumber($thisDate['year'], $thisDate['mon'], $thisDate['mday']); + + if ($year != $thisDate['year']) { + $thisWeek = 0; + } + + $rc = << + + {$name}   {$year} + + + W + Mo + Tu + We + Th + Fr + Sa + Su + + + {$weekNumber} + +EOT; + + if ($weekNumber == $thisWeek) { + $style = "lgCalendarThisWeek"; + $thisDayStyle = "lgCalendarThisWeek lgCalendarThisDay"; + } else { + $style = $thisDayStyle = "lgCalendarDay"; + } + + for ($i = 0; $i < $weekDay; $i++) { + $rc .= sprintf( + "\t \n", + $i == $thisDate['wday'] ? $thisDayStyle : $style, + $i < 5 ? "" : " lgCalendarWeekend" + ); + } + + for ($i = 1; $i <= $daysInMonth; $i++, $weekDay = ($weekDay + 1) % 7) { + if (1 < $i && $weekDay == 0) { + $weekNumber = Date::getWeekNumber($year, $month, $i); + + $week = $weekNumber < 10 ? "  {$weekNumber}" : $weekNumber; + $rc .= "\n\n\t{$week}\n"; + if ($weekNumber == $thisWeek) { + $style = "lgCalendarThisWeek"; + $thisDayStyle = "lgCalendarThisWeek lgCalendarThisDay"; + } else { + $style = $thisDayStyle = "lgCalendarDay"; + } + } + + $key = sprintf("%04d-%02d-%02d", $year, $month, $i); + + $rc .= sprintf( + "\t%d  %s\n", + $i == $thisDate['mday'] ? $thisDayStyle : $style, + $weekDay < 5 ? "" : " lgCalendarWeekend", + $i, isset($notes[$key]) ? $notes[$key] : '' + ); + + } + + for ( ; $weekDay != 0; $weekDay = ($weekDay + 1) % 7) { + $rc .= sprintf( + "\t \n", + $weekDay < 5 ? "lgCalendarDay" : "lgCalendarWeekend" + ); + } + + $rc .= "\n\n"; + + return $rc; + } +} +?> \ No newline at end of file diff --git a/2004/hibachi/src/localhost/test/php/index.php b/2004/hibachi/src/localhost/test/php/index.php new file mode 100755 index 000000000..0570215fc --- /dev/null +++ b/2004/hibachi/src/localhost/test/php/index.php @@ -0,0 +1,106 @@ +#!/usr/bin/php + + + + + +Hibachi - A Calendar Generator in PHP + + + + + + + + + + + +
+ + + +
+ +

A Calendar Generator in PHP

+\n"); + + print("\n"); + + if ($i % 4 == 3) + print("\n"); + } +?> +
"); + print Date::getSmallCalendar($date->getYear(), $i+1); + print("
+
+ +
+Return to HIBACHI + +
+ + + diff --git a/2004/hibachi/src/localhost/test/php/index_php.in b/2004/hibachi/src/localhost/test/php/index_php.in new file mode 100644 index 000000000..4d3aa8b86 --- /dev/null +++ b/2004/hibachi/src/localhost/test/php/index_php.in @@ -0,0 +1,106 @@ +#!@php_exe@ + + + + + +Hibachi - A Calendar Generator in PHP + + + + + + + + + + + +
+ + + +
+ +

A Calendar Generator in PHP

+\n"); + + print("\n"); + + if ($i % 4 == 3) + print("\n"); + } +?> +
"); + print Date::getSmallCalendar($date->getYear(), $i+1); + print("
+
+ +
+Return to HIBACHI + +
+ + + diff --git a/2004/hibachi/src/localhost/test/php/info.php b/2004/hibachi/src/localhost/test/php/info.php new file mode 100755 index 000000000..8cd197505 --- /dev/null +++ b/2004/hibachi/src/localhost/test/php/info.php @@ -0,0 +1,15 @@ +#!/usr/bin/php + + diff --git a/2004/hibachi/src/localhost/test/php/info.php.in b/2004/hibachi/src/localhost/test/php/info.php.in new file mode 100644 index 000000000..050bf3a85 --- /dev/null +++ b/2004/hibachi/src/localhost/test/php/info.php.in @@ -0,0 +1,15 @@ +#!@php_exe@ + + diff --git a/2004/hibachi/src/localhost/test/php/sendform.html b/2004/hibachi/src/localhost/test/php/sendform.html new file mode 100644 index 000000000..546f7ff79 --- /dev/null +++ b/2004/hibachi/src/localhost/test/php/sendform.html @@ -0,0 +1,70 @@ + + + + +Hibachi - Form Processing Example in PHP + + + + + + + + + + +
+ + + +

Form Processing Example in PHP

+ +

This example takes the output of a form POST and reformats it from +its encoded format into human readable output suitable for sending +by email. +

+ +
+ + + + + + + + + + + + + + + + + +
+ Who am I? + + +
+ What am I? + + +
+ Where am I? + + +
+   + + +
+
+ +
+Return to HIBACHI + +
+ + + diff --git a/2004/hibachi/src/localhost/test/php/sendform.php b/2004/hibachi/src/localhost/test/php/sendform.php new file mode 100755 index 000000000..dd0899d92 --- /dev/null +++ b/2004/hibachi/src/localhost/test/php/sendform.php @@ -0,0 +1,81 @@ +#!/usr/bin/php + $value) { + if ($maxWidth < strlen($name)) + $maxWidth = strlen($name); +} + +foreach ($_POST as $name => $value) { + if ($maxWidth < strlen($name)) + $maxWidth = strlen($name); +} + +$body = ''; +$fmt = "%{$maxWidth}s: %s\n"; + +foreach ($_GET as $name => $value) { + $body .= sprintf($fmt, $name, $value); +} + +foreach ($_POST as $name => $value) { + $body .= sprintf($fmt, $name, $value); +} + +//mail($SEND_TO, $SUBJECT, $body); + +/////////////////////////////////////////////////////////////////////// +// +/////////////////////////////////////////////////////////////////////// +?> + + + + +Hibachi - Form Processing Example in PHP + + + + + + + + + + +
+ + + +

Form Processing Example in PHP

+ +

Formatted output of web form as would be seen in an email message (without decorations). +This example does not send any actual email, though it could with some minor changes. +

+
+
+
+
+Return to HIBACHI + +
+ + + + + diff --git a/2004/hibachi/src/localhost/test/php/sendform.php.in b/2004/hibachi/src/localhost/test/php/sendform.php.in new file mode 100644 index 000000000..7687a9b01 --- /dev/null +++ b/2004/hibachi/src/localhost/test/php/sendform.php.in @@ -0,0 +1,81 @@ +#!@php_exe@ + $value) { + if ($maxWidth < strlen($name)) + $maxWidth = strlen($name); +} + +foreach ($_POST as $name => $value) { + if ($maxWidth < strlen($name)) + $maxWidth = strlen($name); +} + +$body = ''; +$fmt = "%{$maxWidth}s: %s\n"; + +foreach ($_GET as $name => $value) { + $body .= sprintf($fmt, $name, $value); +} + +foreach ($_POST as $name => $value) { + $body .= sprintf($fmt, $name, $value); +} + +//mail($SEND_TO, $SUBJECT, $body); + +/////////////////////////////////////////////////////////////////////// +// +/////////////////////////////////////////////////////////////////////// +?> + + + + +Hibachi - Form Processing Example in PHP + + + + + + + + + + +
+ + + +

Form Processing Example in PHP

+ +

Formatted output of web form as would be seen in an email message (without decorations). +This example does not send any actual email, though it could with some minor changes. +

+
+
+
+
+Return to HIBACHI + +
+ + + + + diff --git a/2004/hibachi/src/localhost/test/ruby/LUHN.rb b/2004/hibachi/src/localhost/test/ruby/LUHN.rb new file mode 100644 index 000000000..f8a1d41ef --- /dev/null +++ b/2004/hibachi/src/localhost/test/ruby/LUHN.rb @@ -0,0 +1,150 @@ +# +# LUHN.rb +# +# Copyright 2000, 2004 by Anthony Howe. All rights reserved. +# + +class LUHN + def LUHN.base(str, radix) + if radix < 2 then + return nil + end + + num = 0 + str.downcase! + str.each_byte do |byte| + i = "0123456789abcdefghijklmnopqrstuvwxyz".index(byte) + if i.nil? || radix <= i then + return nil + end + num = num * radix + i + end + + return num + end + + # + # Internal routine that computes the LUHN sum. + # + # The LUHN Algorithm ("mod 10 Double-Add-Double"): + # + # 1. Position from right 8 7 6 5 4 3 2 1 + # ------------------------------ + # Number string 4 8 9 5 1 3 1 3 + # x2 even positions 2 1 2 1 2 1 2 1 + # ------------------------------ + # Add odd positions & 8 +8 +1+8 +5 +2 +3 +2 +3 + # add digits of doubled + # positions + # + # Sum 40 + # + # Number is valid if sum is a multiple of 10. + # + # + # 2. Alpha-numeric ISIN U S 3 8 3 8 8 3 1 0 5 1 + # (ISO 6166) ----------------------------------------- + # base 36 digits 30 28 3 8 3 8 8 3 1 0 5 1 + # ----------------------------------------- + # consider digit string 3 0 2 8 3 8 3 8 8 3 1 0 5 1 + # & x2 even digits from 2 1 2 1 2 1 2 1 2 1 2 1 2 1 + # ----------------------------------------- + # 6 0 4 8 6 8 6 8 16 3 2 0 10 1 + # ----------------------------------------- + # sum the digits of 6 +0 +4 +8 +6 +8 +6 +8+1+6+3 +2 +0+1+0+1 + # + # Sum 60 + # + # Number is valid if sum is a multiple of 10. + # + def LUHN.sum(str) + if ! str.instance_of?(String) || str.length < 1 then + return nil + end + + total = 0 + even = false + str = str.reverse.downcase + + # Working right to left... + str.each_byte do |byte| + # Convert base36 digit to a base10 value. + digit36 = base(byte.chr, 36) + if digit36.nil? then + return nil + end + + # For each base10 digit of a base36 digit... + begin + digit10 = digit36 % 10 + + if even then + # Multiply even digits by 2. + digit10 <<= 1 + + # Sum digits of product. + if 10 <= digit10 then + digit10 -= 9 + end + end + + # Add digits of product to total. + total += digit10 + + # Next digit. + digit36 = (digit36 / 10).floor + + # Toggle from digit to digit. + even = !even + end while 0 < digit36 + end + + return total + end + + # + # Return true if the string of digits is valid. + # Assumes LUHN check digit is right most digit. + # + def LUHN.valid?(str) + if ! str.instance_of?(String) || str.length < 2 then + return false + end + + total = sum(str) + + return total.nil? ? false : (total % 10) == 0 + end + + # + # Return the LUHN check digit (mod 10) for the + # given string of digits; otherwise nil on error. + # + def LUHN.generate(str) + if ! str.instance_of?(String) || str.length < 1 then + return nil + end + + total = sum(str + '0') + + return total.nil? ? nil : (10 - (total % 10)) % 10 + end +end + +if $DEBUG && $0 == 'LUHN.rb' then + def generate(str, expect) + digit = LUHN.generate(str) + puts(str + "-" + digit.to_s + ' ' + (digit == expect).to_s) + end + def validate(str) + puts(str + ' ' + LUHN.valid?(str).to_s) + end + + generate('1', 8) + generate('12', 5) + generate('123', 0) + generate('A', 9) + generate('AB', 6) + + validate('AB6') +end diff --git a/2004/hibachi/src/localhost/test/ruby/index.rb b/2004/hibachi/src/localhost/test/ruby/index.rb new file mode 100755 index 000000000..e31772396 --- /dev/null +++ b/2004/hibachi/src/localhost/test/ruby/index.rb @@ -0,0 +1,80 @@ +#!/usr/bin/ruby + +require 'cgi' +require ENV['DOCUMENT_ROOT'] + '/test/ruby/LUHN' + +if ENV['QUERY_STRING'].nil? then + answer = '' + numebr = '' +else + query = CGI.parse(ENV['QUERY_STRING']) + number = query['number'].to_s + + case query['action'].to_s + when 'Validate' + is_valid = LUHN.valid?(number) + answer = number + when 'Generate' + digit = LUHN.generate(number) + answer = "#{number}" + digit.to_s + is_valid = ! digit.nil? + end +end + +puts <<"EOT" +HTTP/1.0 200 OK +Content-Type: text/html + + + + + +Hibachi - Playing with LUHN checksums in Ruby + + + + + + + + + + + +
+ + + + + + + +
+ +

Playing with LUHN checksums in Ruby
"mod 10 Double-Add-Double"

+

Enter an alpha-numeric string like a credit card number or International Securities Identification Number (ISO 6166). + Click validate to test if the entered string is correct. Click generate to append the check digit to the string. +

+
+ +
#{ is_valid ? "Is valid." : "Is NOT valid." } +
+
+ +    + +    + +
+
+ Return to HIBACHI + +
+ +
+ + + +EOT + +exit(0) diff --git a/2004/hibachi/src/localhost/test/ruby/index_rb.in b/2004/hibachi/src/localhost/test/ruby/index_rb.in new file mode 100644 index 000000000..87950ccb9 --- /dev/null +++ b/2004/hibachi/src/localhost/test/ruby/index_rb.in @@ -0,0 +1,80 @@ +#!@ruby_exe@ + +require 'cgi' +require ENV['DOCUMENT_ROOT'] + '/test/ruby/LUHN' + +if ENV['QUERY_STRING'].nil? then + answer = '' + numebr = '' +else + query = CGI.parse(ENV['QUERY_STRING']) + number = query['number'].to_s + + case query['action'].to_s + when 'Validate' + is_valid = LUHN.valid?(number) + answer = number + when 'Generate' + digit = LUHN.generate(number) + answer = "#{number}" + digit.to_s + is_valid = ! digit.nil? + end +end + +puts <<"EOT" +HTTP/1.0 200 OK +Content-Type: text/html + + + + + +Hibachi - Playing with LUHN checksums in Ruby + + + + + + + + + + + +
+ + + + + + + +
+ +

Playing with LUHN checksums in Ruby
"mod 10 Double-Add-Double"

+

Enter an alpha-numeric string like a credit card number or International Securities Identification Number (ISO 6166). + Click validate to test if the entered string is correct. Click generate to append the check digit to the string. +

+
+ +
#{ is_valid ? "Is valid." : "Is NOT valid." } +
+
+ +    + +    + +
+
+ Return to HIBACHI + +
+ +
+ + + +EOT + +exit(0) diff --git a/2004/hibachi/src/localhost/test/shell/dump.sh b/2004/hibachi/src/localhost/test/shell/dump.sh new file mode 100755 index 000000000..5ee810baa --- /dev/null +++ b/2004/hibachi/src/localhost/test/shell/dump.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +cat <<'EOT' + + +EOT + +env | sed -e 's/^\(.[^\=]*\)=\(.*\)$/

Environment Variables

\1<\/td>\2\ <\/td><\/tr>/' + +echo "
" + + if [ "$REQUEST_METHOD" = "POST" -a X"$CONTENT_LENGTH" != X ]; then +STUFF=`dd bs=1 count=$CONTENT_LENGTH 2>/dev/null` +COUNT=`printf $STUFF | wc -c` + +cat < +

Standard Input

+
Length: $COUNT
+
$STUFF
+ +EOT + +if [ $CONTENT_LENGTH -eq $COUNT ]; then + echo "[ OK ] CONTENT_LENGTH = bytes read" +else + echo "[ BAD ] CONTENT_LENGTH != bytes read" +fi + + fi diff --git a/2004/hibachi/src/localhost/test/shell/test0.sh b/2004/hibachi/src/localhost/test/shell/test0.sh new file mode 100755 index 000000000..1a9d988fb --- /dev/null +++ b/2004/hibachi/src/localhost/test/shell/test0.sh @@ -0,0 +1,108 @@ +#!/bin/sh + +cat <<'-EOT-' +HTTP/1.0 200 OK +Content-Type: text/html + + + + + +Hibachi/1.0 Shell Test 0 - Display Enviroment + + + + + + + + + + +
+ + + +
+

Results from Simple GET request

+ + +-EOT- + +if [ X"$PATH" = X'/usr/local/bin:/usr/bin:/bin' ]; then + + echo "" +else + echo "" +fi + +if [ X"$ENV" = X ]; then + echo "" +else + echo "" +fi + +if [ X"$CDPATH" = X ]; then + echo "" +else + echo "" +fi + +if [ X"$REQUEST_METHOD" = X'GET' ]; then + echo "" +else + echo "" +fi + +if [ X"$DOCUMENT_ROOT" != X ]; then + echo "" +else + echo "" +fi + +# Test for existance only, since the location changes. +if [ X"$SCRIPT_FILENAME" = X ]; then + echo "" +else + echo "" +fi + +# Test for existance only, since the default value might change. +if [ X"$SERVER_PORT" = X ]; then + echo "" +else + echo "" +fi + +if [ X"$SERVER_SOFTWARE" = X'hibachi/1.0' ]; then + echo "" +else + echo "" +fi + +if [ X"$GATEWAY_INTERFACE" = X'CGI/0.0' ]; then + echo "" +else + echo "" +fi + +echo "

Assertions

[ OK ] PATH
[ BAD ] PATH
[ OK ] ENV
[ BAD ] ENV
[ OK ] CDPATH
[ BAD ] CDPATH
[ OK ] REQUEST_METHOD
[ BAD ] REQUEST_METHOD
[ OK ] DOCUMENT_ROOT
[ BAD ] DOCUMENT_ROOT
[ BAD ] SCRIPT_FILENAME
[ OK ] SCRIPT_FILENAME
[ BAD ] SERVER_PORT
[ OK ] SERVER_PORT
[ OK ] SERVER_SOFTWARE
[ BAD ] SERVER_SOFTWARE
[ OK ] GATEWAY_INTERFACE
[ BAD ] GATEWAY_INTERFACE
" + +. "$DOCUMENT_ROOT/test/shell/dump.sh" + +cat <<'-EOT-' +
+
+Next Test: + +
+
+
+Return to HIBACHI +
+ + + +-EOT- + +exit 0 diff --git a/2004/hibachi/src/localhost/test/shell/test1.sh b/2004/hibachi/src/localhost/test/shell/test1.sh new file mode 100755 index 000000000..5011a353d --- /dev/null +++ b/2004/hibachi/src/localhost/test/shell/test1.sh @@ -0,0 +1,84 @@ +#!/bin/sh + +cat <<'-EOT-' +HTTP/1.0 200 OK +Content-Type: text/html +Set-Cookie: cookie1=test1.sh; path=/ +Set-Cookie: cookie2=test1.sh; path=/ + + + + + +Hibachi/1.0 Shell Test 1 + + + + + + + + + + +
+ + + +
+

Results of Form GET request

+ + +-EOT- + +if [ X"$PATH" = X'/usr/local/bin:/usr/bin:/bin' ]; then + echo "" +else + echo "" +fi + +if [ X"$ENV" = X ]; then + echo "" +else + echo "" +fi + +if [ X"$CDPATH" = X ]; then + echo "" +else + echo "" +fi + +if [ X"$REQUEST_METHOD" = X'GET' ]; then + echo "" +else + echo "" +fi + +if [ X"$QUERY_STRING" = X'example=GET+REQUEST+WITH+QUERY-STRING&garibaldi=peek-a-boo' ]; then + echo "" +else + echo "" +fi + +echo "

Assertions

[ OK ] PATH
[ BAD ] PATH
[ OK ] ENV
[ BAD ] ENV
[ OK ] CDPATH
[ BAD ] CDPATH
[ OK ] REQUEST_METHOD
[ BAD ] REQUEST_METHOD
[ OK ] QUERY_STRING
[ BAD ] QUERY_STRING
" + +. "$DOCUMENT_ROOT/test/shell/dump.sh" + +cat <<'-EOT-' +
+
+Next Test: + + +
+
+
+Return to HIBACHI +
+ + + +-EOT- + +exit 0 diff --git a/2004/hibachi/src/localhost/test/shell/test2.sh b/2004/hibachi/src/localhost/test/shell/test2.sh new file mode 100755 index 000000000..c20ef7ea1 --- /dev/null +++ b/2004/hibachi/src/localhost/test/shell/test2.sh @@ -0,0 +1,83 @@ +#!/bin/sh + +cat <<'-EOT-' +HTTP/1.0 200 OK +Content-Type: text/html + + + + + +Hibachi/1.0 Shell Test 2 + + + + + + + + + + +
+ + + +
+

Results of Form POST request

+ + +-EOT- + +if [ X"$PATH" = X'/usr/local/bin:/usr/bin:/bin' ]; then + + echo "" +else + echo "" +fi + +if [ X"$ENV" = X ]; then + echo "" +else + echo "" +fi + +if [ X"$CDPATH" = X ]; then + echo "" +else + echo "" +fi + +if [ X"$REQUEST_METHOD" = X'POST' ]; then + echo "" +else + echo "" +fi + +if [ X"$QUERY_STRING" = X ]; then + echo "" +else + echo "" +fi + +if [ X"$HTTP_COOKIE" = X'cookie1=test1.sh; cookie2=test1.sh' -o X"$HTTP_COOKIE" = X'cookie2=test1.sh; cookie1=test1.sh' ]; then + echo "" +else + echo "" +fi + +echo "

Assertions

[ OK ] PATH
[ BAD ] PATH
[ OK ] ENV
[ BAD ] ENV
[ OK ] CDPATH
[ BAD ] CDPATH
[ OK ] REQUEST_METHOD
[ BAD ] REQUEST_METHOD
[ OK ] QUERY_STRING
[ BAD ] QUERY_STRING
[ OK ] HTTP_COOKIE
[ BAD ] HTTP_COOKIE
" + +. "$DOCUMENT_ROOT/test/shell/dump.sh" + +cat <<'-EOT-' +
+
+Return to HIBACHI +
+ + + +-EOT- + +exit 0 diff --git a/2004/hibachi/src/makefile.in b/2004/hibachi/src/makefile.in new file mode 100644 index 000000000..28554f6ff --- /dev/null +++ b/2004/hibachi/src/makefile.in @@ -0,0 +1,57 @@ +# +# @package_copyright@ +# +# @configure_input@ +# + +.POSIX : + +######################################################################## +### Pick one that best suits your system. +######################################################################## + +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +PACKAGE = @PACKAGE_NAME@ +VERSION = @PACKAGE_VERSION@ +TARNAME = @PACKAGE_TARNAME@ +TARDIR = ../ +SRCDIR = ./ + +CC = @CC@ +CC_E = @CC_E@ +CC_O = @CC_O@ +CFLAGS = @CFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ + +######################################################################## +### No further configuration beyond this point. +######################################################################## + +.SUFFIXES : +O = .@OBJEXT@ +E = @EXEEXT@ +.SUFFIXES : .c $O + +all: build + +build : @PACKAGE_NAME@$E + +clean : + -rm -f *.o *.obj *.i *.map *.tds *.TR2 *.ilc *.ild *.ilf *.ils *.log + -rm @PACKAGE_NAME@$E + +distclean: clean + -rm -rf autom4te.cache config.status config.log + -rm -f @PACKAGE_NAME@-start.sh makefile + -rm -f localhost/test/perl/yahoo-ticker.pl + -rm -f localhost/test/php/index.php + -rm -f localhost/test/php/info.php + -rm -f localhost/test/php/sendform.php + -rm -f localhost/test/ruby/index.rb + +@PACKAGE_NAME@$E: @PACKAGE_NAME@.c + $(CC) $(CFLAGS) $(LDFLAGS) $(CC_E) @PACKAGE_NAME@$E @PACKAGE_NAME@.c $(LIBS) +

;PbE3La3@zHc8oOWtL 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%0DSiWBK& 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 literal 0 HcmV?d00001 diff --git a/2004/hibachi/src/localhost/Img/hot-coal-edge-110-indent.png b/2004/hibachi/src/localhost/Img/hot-coal-edge-110-indent.png new file mode 100644 index 0000000000000000000000000000000000000000..38d55f1b032c6cb1b1b0a55a2d442cd7a47ce21e GIT binary patch literal 6547 zcmX|GbyO4&7abIkl#uR@B^PNyl-?zzL7F8*VCilUq(Nd4C6q>xbm^=*hFj!c4UY6uieDNe1b>#Qz=z!`oNYX8jRHNSYbh2`Q* zhlY-N2U-om0ZExhY~iAD94Y`Xwh8novwci_N=jmsYkQ+$Yqn|Rzy6huQjR`B8nSgA zEK58rHexgtnj4SIRV%Z>$CNLE-{J!%kCaUJg`d7M6z-=eH~Mr6eZ57A)sSa&K_ zNMkIpL-hY(;i5O#OIz~R?jBR*^5@~5uqI&1?2lI2bE)V^(u1UM^lO}zC}L5KvZJsv zn4~iro;$8ph`f!}T)pc|P4&W=%;eEJDC_;;3z=lm#145OL!DZq)mv4@oRe)s`Y?G; z{p)JzR?y3c3aWV}Q_PsMtE#qWX46CFCLey-fIfn0QzX;j+nvspVx1Tdf9ki_?RYdg z$mGQ z`%(N>Tm*N{^CP`mL2M}M`rF$a1lsDXa7OF;DVp;lo`O)}@H@#h)zd5@%QW#5-y%}YCaA~qaZO$Y#xQxhm9R!T`p=uf)b+joqY2^1X2+CelA zu|930D_|EZ@0&7;Db#OrNFQxXnQqpvNZnwkYJz6r(7K_r^PM~AQX`^i7Fe7K=kLTk zOOw=gr&MxaV0;XpyYEd&pMgG&54fy%S;+8 z_E?lh&=W6{uLD*5%0Zj6ZTT9|v`yKtamlZm3Dz5YBgJWWT$0O5BqH5f4*!BMBQj{k zma3I%gWi@ESfY2BAeXUhJh{sY#eKd}>n#&f0BN)0_=B?^U4VZpilxX~=?rJeliP5b;XCM8_9 zUauEq6Nm+U-PjB6k)E|%h8UEZotgYR@C_@dKB@O|HgiS8`(~fq>Hur!vE5>z<(PHy zBl`RwwjX+?PsnVT<%*a|VW1`=SmsUNeFxsE8bW1VP7KuRSMpP!iz(~J4@y3uvXx!% zd>L65gL|Y-=o0ET$xQ-ZpKq`Y1w9CP=~#fZ*`~7AW52e(OX|Adq!_Uly}Ow~Xo?Bq zv*J-vP+zu0CR?|6=0u!e6c%9u&OIBfemZ!>V*E$Gf5K>M-qWeQ`ant5dW$9s0!4m! zZU0-+cZE89J?nlF4;O~|=}$mpv8^2(KS{E++>(cnv?|%z8b(HnPv7B4;-*medmv}R zz3$VIsmU~3Zg07VH3VETsxOjrnP0KpZO{6EA^xw5zyTCjt;|4#WR50`BfQt>*%0lA zx>A)iK>>sMCDMQuGZNe&?}L-26ApNI36r(~UjYHzClTMy+?kJ-3|jqThW{#3*?Vy0 zg^&V~&u}cW&aR$oP_ z2kvCe^C@9*w4n9MHorPM9(;cF)}MUr<fXD^*fJ*zSLv`SguAkKMg^3j4744zVnGI8d>rE{kD04z}_6 z@e{(*LjetLQ=+9wy@uIRO5mF|>BNZS9lL4TP40IYuqf}=pvrWLK|(Ed{B)+W5rhZ& z;#djZon!Wc_lTx+7NqsZysTF?@$svfX$Gg3AHTV-3u@rUbD#YPurj~O(?j@2#L}y1 zWHxXC&>;Dz?91#Y8`3;>yc!d0qoA=$Br1)@rD>(8*L`ANHrYFgcaM*b5ZPg=*OjrD zX$5@=1d$zlB~ySDSUq+6@ru6)*}H$NMls=PWE<&-zh&G5qWbM)D;irrErk}fe)pqYu?(=L&#O14M;`1A@!HTc$2QJKDipsKNZk|Wy;}F&Ks_b= zB53Ox2YM|n0q+-n4t_FBVslbAz?VbFz_#(ahs=PhH`RmLZgYAlT#V>6WvFYQ_q^YFV z)>Hs<{5Q#$Nqb|;yQ7-F7mz1#*^mGik6;P;B%z#V%0DR0AhkbBlBNwWqkEDXv?u=- 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 YGBi0@s2oHiZu7kO*p>1#F<%w^A31Eo1ONa4 literal 0 HcmV?d00001 diff --git a/2004/hibachi/src/localhost/Img/php-small-trans-light.gif b/2004/hibachi/src/localhost/Img/php-small-trans-light.gif new file mode 100644 index 0000000000000000000000000000000000000000..0dda8c0805ebc04ce8652e1b7e25249afd0d492c GIT binary patch literal 1397 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 literal 0 HcmV?d00001 diff --git a/2004/hibachi/src/localhost/Img/sun_logo.gif b/2004/hibachi/src/localhost/Img/sun_logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..faf51c8a2ec33e6744429ea212c98579bb719a05 GIT binary patch literal 1074 zcmV-21kL+LNk%w1VO{_y0D}MklZ@5>|Nr&$`{3U5cyP$bAv)zj~Td(UH9 z!)|5A!M*3|>Gz_X+w$@7A^8LY000jFEC2ui0A2tm000F4@X1N5y*TU5yZ>M)jv&wk z13^}cV<7MWC~LhXK^_R|svNln!yw2B0Jfxsp)>YGia`!3iRKW>?2H*eNOw;VBIl^! z0_Cg?fMVwiUtY*9xa7iW5uu1O=-^HueqDBTc_eHHd;^04fM6ddJ9Z3*BW?kTIgEdC zG#yP;6b+&YLwFAg2?=2e1qcTf3Jweh3mgCdUzv-IfB*)l7h^`B77E0Z70DBOI-(AI z0Sy~&x;mPDe+g1@8$db(7gkLye-h3*X-o~t2^p9vyV(O=*Et2k6a-BHl@&xVVWHsQ z*@FcF24H%}q`-qS0p4AR=jR@;DGV$s@|K|y8G-@-0Pw?CVHb@70$S+!5mG|I9Jee` z)UjZfqypqF64HRM9~A`xVsQx&6WuvB?*=JsDd7t>nc*5C$$4kqB4hCSrF`I^0gXi! zz_mo+@WCGe{~nCY1a(uR1H>$9T%@UiJ_%xTRATi2Q<^H$X!O98kit+r3!-9^77;*! z1w-k16oA!2GME#RVJ&dZaFZuMgIM6KEl0L+6BfJe7m+7pDv94v2tB2Ov{(}`;if>k zNj9{bQupKZMv}w~y#ti(E$YG009XlQ-Bq+%zu#gLI9}k9xFb&z5+9$Sph;Oth9p3A zgpS70vPQ3juK=J(P(DGQ?E*jyfv-4EAT^Bt4i2rg8&Jt0k(dhjVKo#I1&DJ&I{8iU zl0nXO637HVjF*`XD)jcm00Z>q9yOT2Cjov337{ec_=$xCG5cNk2uBi(;h_YQ3`ERR z&ZVSOUo8z)9YmEF;1vdJR2Y&%q&a!bji``R!CDewBLM?)NOHg)2CS%81<6^OP>ZEF3Yi#IwTkPr=+H1|LkKdgpdXlZ~z14MI!?Y2}EeX z0R;#^L<0jj;6Ocyu=bY+2AlQ30jqfWR07m=%s>GztSf*E^*P{*LtgxgvRMn@+LfOr zG_e&3xOyCH0-jR#5Ecbgg1`)H{CR|0CH8!@1U(1vK+h)3i^~Zqh!FMEAwNKb06-tq sfT&&z(HAw`*i~Nv^$h^ALsH`!p`_B*4fU&b=iNa&(dzBD-w^-+J9}@z{Qv*} literal 0 HcmV?d00001 diff --git a/2004/hibachi/src/localhost/Img/win.gif b/2004/hibachi/src/localhost/Img/win.gif new file mode 100644 index 0000000000000000000000000000000000000000..4b1683a0afc382dd7a86acde7be6f811abccb8c7 GIT binary patch literal 1387 zcmV-x1(fwhF-oH6KeBIf4m_}UuNL?)NE-r(Niw8`iG{{HaI0#j_T zS&c2qDHSj@je5g4PFtf!e85L|8KS=8@9*#7xd^$@>*VY7$Co41ryyypEYaEO*sTos z+%fCL0&BV}%&A8B-aXml@x-u-fShLY^!4oY<6pWZ#=ynviAa)|#>9^ss>9~``T16v zApHFM@Y>6H!Y}yu z_~U8eQxR3L8`h(o%;C9tez2LWlK%Sm{`0(LyCSTr!;_V?@2@A)ZfTdWb$Fsn%eJZV z&LC=RsqLjm{Pyqr{rBX=ZST^B`1<|xy`ld7{qwYq_TruJ{{H^p0P@$ixP1rv{{R2~ z`v3pl_51YLoQw7K{r>*^+Jt1*m0!2U%l-cR|K=f*pM&44diDAIA^8LV00000EC2ui z04M+`000O7fB=GngoTEOh>41ejEEV6YGh4pW@BSHMr%!Kjf{^?YX}NlTnG?Rs8M)8 zSDlJiIT8p11EmlW1_l)!6=`vTkBY&DO%M42ljB&nTkoE=aUz0)4=Ep# zI9am9Ns1*(5L{S;R(!wL}HHEs#`zk3JXB6fz=<78hl>qQI*l4=dZ5gOh$G zGT{fICb1BV$x~;_6eF=ncB!FO=;gtLz0$xzg3})K^843It=uqdRWz1X) z#HDGIiJ=oKR+zvr!h&@SC)xnPlYmN4m4OEnP-cG4usgCLq;1W z3|$lbApXN<5}pkrLkJ->fPo3s!51G09)Q3R5;Tb5!wty6<&_UM)i4YIJcO{o2-A)5 zUVH~^z@Qd$2w?{iG^~_G7BIb_f(kTPfdgIWJrKeJAo5_rh$Vt>ga-+*fx;PAJdptZ z5neRug%w2TkpK`A07%FQ@fnEVj|;?Sq6cC;VFnyK3;+cdJv{Nm1s4GE1{5tQL4qMG zcxb_aBEok-kRIqD1Pnuuqh%!Jy04^wT!g=Ueup@{V{HW&!8w`m97AT;Q z!k`)i5C8=+C>nqpCCng$bA!~dK!H4L3FMa`OmM~yo|fQ3s1z6)!=f6bfWrv^3NqjU zcOv-Sr3_Xf!~lV&P(rAqmKuYo8o-dioP=PoqXpAhN@AuS@WAO1pH3^Pp$xPjstYr$ zP}d-T=-5E4mCh>U5i78P>!-V}%Ydl?lmLbdkP3q30r&a{B%flCU`Dj+R?EQ1ucE>* z>>h-e5W)dEguKNTI&4vei9_lz2cUvhOlrID!mt9jgJ2-W7FyiM<^&fcphXoPcz^*G zJL~{3wd^ihu&T}tLjs#5kkJDZJ^Y}L925L}!5Kps%>uQ(4y-f_!)`dp4`vf02MK?| zk*f=$zI?440chJ4HH9Fd#11ULJu16=xZwf|@lJrZKpBuw1Pm$cs(}V!gi!(vN)(a6 t1qmNM2ptn70LBbT%pkhuE3i4Q=7z*!#|aa(?s^Sqqb~dGv + + + +Snert . Com - Software - Hibachi + + + + + + + + + + + + + + + + +
+ + + +HIBACHI/1.0 Web Server + + + +
+ + + +
+
+ [hih-BAH-chee] +
+
+ Japanese for "fire bowl", a hibachi is just that - a small + (generally cast-iron) container made for holding fuel + (usually charcoal). A grill that sits on top of the bowl + is used to cook various foods. Hibachis come in square, + oblong and round models. Because of their compact size, + they're completely portable. + +

- + + epicurious.com food dictionary +

+
+ + +

Description

+ +

+HIBACHI is a simple, small, and secure web server with virtual +host and CGI support. It is a limited implementation of RFC 2616 +and the CGI/1.1 Specification. +HIBACHI was written as an entry for the +International Obfuscated C Code Contest and works +for any Unix variant including the Cygwin +environment for Windows. +

+

+HIBACHI supports dynamic web content through the use of the +Common Gateway Interface (CGI) specification. +Just about any scripting or programming language can be used, such as a POSIX shell, +Perl, +PHP, +Python, and/or +Ruby. +Existing CGI scripts can be used with little or no modification. +Hibachi executes all CGI scripts as though they were "nph" prefixed, which is to say that it is +the script's responsibility to send the HTTP status line and necessary headers direct to the client. +

+ +

+Virtual host support is implemented as subdirectories of the HIBACHI +document tree, where the directory name is the domain name publish in a URL. For example to setup +a virtual host by name or IP for http://www.ioccc.org/, assuming the HIBACHI +document tree is rooted at /usr/local/share/hibachi, then: +

+ +
+/usr/local/share/hibachi/
+	www.ioccc.org/
+		index.html
+		...
+	64.81.251.233 -> www.ioccc.org/
+
+ +

+HIBACHI is ideal +for special floppy-Linux distributions, like +Leka, which can be used for rescue, firewall, +demo, or dedicated servers. In theory, with some modifications, +HIBACHI and a script interpreter, like PHP, could also be +bundled with CDROMS that require a means of presenting dynamic web pages. +

+ + +

Features

+ +
    +
  • Supports virtual hosts.
  • +
  • Supports all MIME types.
  • +
  • Supports Common Gateway Interface (CGI) scripts and programs.
  • +
  • Supports multiple index.* file types, ie. index.html, index.php, index.pl
  • +
  • Supports subset of RFC 2616 HTTP/1.1 methods GET, HEAD, and POST.
  • +
  • Simple & straight forward configuration using environment variables.
  • +
  • Portability across Unix-like environments, ie. Cygwin, FreeBSD, Linux, SunOS.
  • +
  • Known to work with Lynx, Mozilla, Opera, and Internet Explorer web browsers.
  • +
  • Is a dedicated process-forking server that does not use inetd.
  • +
  • Is secure against relative path file snooping.
  • +
  • Is secure against directory searches.
  • +
  • ~155 lines of source, 1940 bytes long by IOCCC 2004 rules, ~6KB compiled & stripped on FreeBSD.
  • +
  • Superior & smaller than micro_httpd from ACME.
  • +
  • And has a really cool animated logo too.
  • +
+ + + + +

Installation

+
    +
  1. +Download: +

    + +
    + + + + + + + + + + + +
    Hibachi-1.0 Obfuscatedmd5sumChange Log
    Hibachi-1.0 Spoilermd5sumChange Log
    +
    +
  2. + +
  3. +

    +Unpack and build the executable: +

    + +
    +tar -zxf hibachi-1.0.tgz
    +cd hibachi-1.0
    +./configure
    +make +
    +
  4. + +
+ + +

Usage

+ +

+First read and configure the file hibachi-start.sh. In most cases the +defaults settings should be fine for testing. Start the server in +the background, and perform the initial test (assuming that SERVER_PORT was +not altered in hibachi-start.sh): +

+ +
+./hibachi-start.sh &
+lynx http://localhost:8008/
+
+ +

+To stop the server: +

+ +
+kill %1
+
+ +

+To access this documentation and examples from the Internet, create symbolic links for the +host name and/or IP pointing to the «localhost» directory. For example, replace the IP and host +name addresses below with that of the machine running +HIBACHI: +

+ +
+ln -s localhost 64.81.251.233
+ln -s localhost www.ioccc.org
+
+ +

+HIBACHI can server multiple +web sites from the same machine simply by creating content directories with the same +name as the URL domain names within the document root tree. Domain and/or IP aliases are simply symbolic links +to content directories. There is never any need to restart HIBACHI +when web sites are published or aliases added. + +Assuming the server is running and that port 8008 is not blocked by any firewall, +you should be able to access the server from the Internet using an IP or host name URL similar to:

+

+ +
+http://64.81.251.233:8008/
+http://www.ioccc.org:8008/
+
+ + +

+Port 8008 (http-alt) was chosen as the default port for demonstration purposes, +since its an alternative HTTP port that does not require special privileges and +is rarely in use. +Of course, HIBACHI could be run as a standard +web server on port 80, but this would require that it be installed by +the system administrator, contrary to IOCCC rules. +

+ + +

CGI Examples

+ +

+The following tests and examples are available to demonstrate various +aspects of the CGI support: +

+ +
+
POSIX Shell Example
+
+These CGI scripts perform some basic tests on the handling of GET and POST requests, +cookies, and the passing of environment variables to CGI scripts. These CGI scripts +assume that /bin/sh is a POSIX compliant shell and the +standard set of POSIX utilities are available. Should work for all Unix variants +and Cygwin. + +
+ +
Perl Example
+
+Powered by Perl +This example queries the Yahoo web site for a stock quote to insert into a web page. +This example requires a browser with JavaScript support and +should work for all Unix variants and Cygwin, when Perl is installed. +
+ +
PHP Example
+
+Powered by PHP +This PHP example generates a calendar complete with ISO 8601:2000 week numbers. + + +

+The Windows PHP CGI binary distribution from the +PHP web site does not work within the Cygwin +environment. Instead, download the source distribution and build the PHP CGI and CLI versions from scratch +from within Cygwin. +The following commands were used to build: + +

+# Without this link, the configure script has problems with Cygwin.
+ln -s /bin/gcc /bin/cc
+
+CFLAGS=-O ./configure \
+--with-config-file-path=/usr/local/etc:/etc \
+--enable-discard-path \
+--disable-xml \
+--without-pear \
+--enable-sockets \
+--enable-bcmath \
+--enable-ftp \
+--enable-dba \
+--with-inifile
+
+make
+make install
+
+# Install both the CGI and CLI (though the CLI is not used here).
+mv /usr/local/bin/php /usr/local/bin/php.cgi.exe
+make install-cli
+mv /usr/local/bin/php /usr/local/bin/php.exe
+
+cp php.ini-recommended /etc/php.ini
+
+
+

+The php.ini file should specify "output_buffering = 4096" so that PHP scripts have a chance to +modify the response status and headers before the body is sent. Also set "cgi.rfc2616_headers = 1". +Click here to display the PHP Info configuration. +

+
+ + +
Ruby Example
+
+This example validates and/or generates Luhn check-digits. +Should work for all Unix variants and Cygwin, +when Ruby is installed. +
+
+ + +

Portability

+ +
+ + + + + + + + + + + + + + + + + + +
+ FreeBSD +     + 4.8 +
+ Linux + + Cobalt Qube 1, RedHat Linux 5.1, gcc 2.7.2 +
+ Sun Microsystems Logo + + 5.8 +
+Cygwin Unix Emulation + Microsoft Windows + + Windows 2000 SP4, Windows XP Pro SP1 +
with Cygwin, gcc 2.95.3-5 +
+
+ + + +

License

+ +

+In accordance with the +International Obfuscated C Code Contest +this is an original work and placed in the public domain. +

+ + + + +

Disclaimer

+

+THIS SOFTWARE IS PROVIDE "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO WAY SHALL THE +AUTHOR OR LICENSEE 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. +

+ + + +

Support

+

+Free support is limited, based on the author's availability, though +enhancements requests and problem reports are welcome (see logo above). +

+ + +     + + +
+ +Powered by Hibachi +
+ + + + + +
+ + + +
+ + + + + diff --git a/2004/hibachi/src/localhost/reference/rfc2616.html b/2004/hibachi/src/localhost/reference/rfc2616.html new file mode 100644 index 000000000..f4bda2133 --- /dev/null +++ b/2004/hibachi/src/localhost/reference/rfc2616.html @@ -0,0 +1,9754 @@ + + + + +RFC 2616 - Hypertext Transfer Protocol (HTTP/1.1) + + + + + + +