# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: kinkie@squid-cache.org-20120813144907-fovbwu86vu7f0hek # target_branch: ../trunk/ # testament_sha1: cab68f7b86395f22652f32158fd131ab0b49e0d3 # timestamp: 2012-08-13 17:06:50 +0200 # base_revision_id: squid3@treenet.co.nz-20120813072450-\ # ytqp6veu41lj3f5h # # Begin patch === modified file 'compat/compat.dox' --- compat/compat.dox 2012-01-21 08:06:33 +0000 +++ compat/compat.dox 2012-08-13 14:49:07 +0000 @@ -69,12 +69,9 @@ individual part separately a risky operation. \par -Squid coding guidelines require each .c and .cc file to include squid-old.h or squid.h first +Squid coding guidelines require each .c and .cc file to include squid.h first in their included files. squid.h begin with an order-specific sequence of defines and includes compat/compat.h to incorporate the compat layer appropriately in every soure file. -squid-old.h begins by including squid.h to prepare for its sub-includes and definitions. -It is recommended to include squid.h and not squid-old.h for new developments; squid-old.h -is being deprecated. \par Internally the compat/ directory contains the public API file compat/compat.h which structures === modified file 'compat/stdio.h' --- compat/stdio.h 2011-04-06 13:58:14 +0000 +++ compat/stdio.h 2012-08-10 11:52:29 +0000 @@ -50,4 +50,8 @@ #include #endif +#ifndef MAXPATHLEN +#define MAXPATHLEN SQUID_MAXPATHLEN +#endif + #endif /* _SQUID_COMPAT_STDIO_H */ === removed file 'include/leakcheck.h' --- include/leakcheck.h 2012-08-09 10:32:57 +0000 +++ include/leakcheck.h 1970-01-01 00:00:00 +0000 @@ -1,13 +0,0 @@ -#ifndef _SQUID_LEAKCHECK_H -#define _SQUID_LEAKCHECK_H - -#if LEAK_CHECK_MODE && 0 /* doesn't work at the moment */ -#define LOCAL_ARRAY(type,name,size) \ - static type *local_##name=NULL; \ - type *name = local_##name ? local_##name : \ - ( local_##name = (type *)xcalloc(size, sizeof(type)) ) -#else -#define LOCAL_ARRAY(type,name,size) static type name[size] -#endif - -#endif === added file 'include/leakcheck.h' --- include/leakcheck.h 1970-01-01 00:00:00 +0000 +++ include/leakcheck.h 2012-08-10 07:47:41 +0000 @@ -0,0 +1,13 @@ +#ifndef _SQUID_LEAKCHECK_H +#define _SQUID_LEAKCHECK_H + +#if LEAK_CHECK_MODE && 0 /* doesn't work at the moment */ +#define LOCAL_ARRAY(type,name,size) \ + static type *local_##name=NULL; \ + type *name = local_##name ? local_##name : \ + ( local_##name = (type *)xcalloc(size, sizeof(type)) ) +#else +#define LOCAL_ARRAY(type,name,size) static type name[size] +#endif + +#endif === modified file 'scripts/source-maintenance.sh' --- scripts/source-maintenance.sh 2012-03-19 04:39:36 +0000 +++ scripts/source-maintenance.sh 2012-08-13 14:49:07 +0000 @@ -68,18 +68,18 @@ fi # - # REQUIRE squid.h/squid-old.h as first #include + # REQUIRE squid.h first #include # case ${FILENAME} in *.c|*.cc) FI=`grep "#include" ${FILENAME} | head -1`; - if test "${FI}" != "#include \"squid.h\"" -a "${FI}" != "#include \"squid-old.h\"" -a "${FILENAME}" != "cf_gen.cc"; then - echo "ERROR: ${PWD}/${FILENAME} does not include squid.h or squid-old.h first!" + if test "${FI}" != "#include \"squid.h\"" -a "${FILENAME}" != "cf_gen.cc"; then + echo "ERROR: ${PWD}/${FILENAME} does not include squid.h first!" fi ;; *.h|*.cci) FI=`grep "#include \"squid.h\"" ${FILENAME}`; - if test "x${FI}" != "x" -a "${FILENAME}" != "squid-old.h" ; then + if test "x${FI}" != "x" ; then echo "ERROR: ${PWD}/${FILENAME} duplicate include of squid.h" fi ;; === modified file 'src/AccessLogEntry.cc' --- src/AccessLogEntry.cc 2012-07-18 16:21:47 +0000 +++ src/AccessLogEntry.cc 2012-08-13 09:44:13 +0000 @@ -1,5 +1,6 @@ #include "squid.h" #include "AccessLogEntry.h" +#include "HttpReply.h" #include "HttpRequest.h" #include "ssl/support.h" === modified file 'src/AclRegs.cc' --- src/AclRegs.cc 2012-08-13 07:24:50 +0000 +++ src/AclRegs.cc 2012-08-13 09:45:17 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" /** This file exists to provide satic registration code to executables that need ACLs. We cannot place this code in acl/lib*.la because it === modified file 'src/AsyncEngine.h' --- src/AsyncEngine.h 2012-01-20 18:55:04 +0000 +++ src/AsyncEngine.h 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ #ifndef SQUID_ASYNCENGINE_H #define SQUID_ASYNCENGINE_H -#include "squid-old.h" +#include "squid.h" /* Abstract interface for async engines which an event loop can utilise. === modified file 'src/BodyPipe.cc' --- src/BodyPipe.cc 2012-06-22 03:49:38 +0000 +++ src/BodyPipe.cc 2012-08-10 07:35:11 +0000 @@ -1,5 +1,5 @@ -#include "squid-old.h" +#include "squid.h" #include "base/AsyncJobCalls.h" #include "base/TextException.h" #include "BodyPipe.h" === modified file 'src/CacheDigest.cc' --- src/CacheDigest.cc 2012-07-13 10:48:12 +0000 +++ src/CacheDigest.cc 2012-08-13 13:58:33 +0000 @@ -33,7 +33,9 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "md5.h" +#include "protos.h" #include "StatCounters.h" #include "Store.h" === modified file 'src/CacheManager.h' --- src/CacheManager.h 2010-11-04 10:09:05 +0000 +++ src/CacheManager.h 2012-08-10 11:52:29 +0000 @@ -49,6 +49,7 @@ \ingroup CacheManagerAPI */ +class HttpRequest; /** \ingroup CacheManagerAPI * a CacheManager - the menu system for interacting with squid. === modified file 'src/ChunkedCodingParser.cc' --- src/ChunkedCodingParser.cc 2012-01-20 18:55:04 +0000 +++ src/ChunkedCodingParser.cc 2012-08-12 20:25:21 +0000 @@ -1,5 +1,6 @@ -#include "squid-old.h" +#include "squid.h" #include "base/TextException.h" +#include "Debug.h" #include "Parsing.h" #include "ChunkedCodingParser.h" #include "MemBuf.h" === modified file 'src/ClientDelayConfig.cc' --- src/ClientDelayConfig.cc 2012-08-06 17:41:08 +0000 +++ src/ClientDelayConfig.cc 2012-08-10 07:35:11 +0000 @@ -1,5 +1,5 @@ #include "squid.h" -#include "squid-old.h" +#include "squid.h" #include "ConfigParser.h" #include "ClientDelayConfig.h" #include "Parsing.h" === modified file 'src/ClientRequestContext.h' --- src/ClientRequestContext.h 2012-06-19 21:51:49 +0000 +++ src/ClientRequestContext.h 2012-08-12 20:25:21 +0000 @@ -1,18 +1,18 @@ #ifndef SQUID_CLIENTREQUESTCONTEXT_H #define SQUID_CLIENTREQUESTCONTEXT_H +#include "cbdata.h" +#include "RefCount.h" +#include "ipcache.h" + +#if USE_ADAPTATION +#include "adaptation/forward.h" +#endif + class ACLChecklist; class ClientHttpRequest; class DnsLookupDetails; - -/* for RefCountable */ -#include "RefCount.h" -/* for CBDATA_CLASS() */ -#include "cbdata.h" - -#if USE_ADAPTATION -#include "adaptation/forward.h" -#endif +class ErrorState; class ClientRequestContext : public RefCountable { === modified file 'src/CommCalls.cc' --- src/CommCalls.cc 2012-01-20 18:55:04 +0000 +++ src/CommCalls.cc 2012-08-12 20:25:21 +0000 @@ -1,7 +1,8 @@ -#include "squid-old.h" -#include "fde.h" +#include "squid.h" #include "comm/Connection.h" #include "CommCalls.h" +#include "fde.h" +#include "globals.h" /* CommCommonCbParams */ === modified file 'src/CommRead.h' --- src/CommRead.h 2012-01-20 18:55:04 +0000 +++ src/CommRead.h 2012-08-10 07:35:11 +0000 @@ -36,7 +36,7 @@ #ifndef COMMREAD_H #define COMMREAD_H -#include "squid-old.h" +#include "squid.h" #include "comm.h" #include "CommCalls.h" #include "comm/forward.h" === modified file 'src/CommonPool.h' --- src/CommonPool.h 2012-01-20 18:55:04 +0000 +++ src/CommonPool.h 2012-08-10 07:35:11 +0000 @@ -39,7 +39,7 @@ #define COMMONPOOL_H #if USE_DELAY_POOLS -#include "squid-old.h" +#include "squid.h" #include "SquidString.h" #include "CompositePoolNode.h" === modified file 'src/CompletionDispatcher.h' --- src/CompletionDispatcher.h 2012-01-20 18:55:04 +0000 +++ src/CompletionDispatcher.h 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ #ifndef SQUID_COMPLETIONDISPATCHER_H #define SQUID_COMPLETIONDISPATCHER_H -#include "squid-old.h" +#include "squid.h" /* Dispatch code to handle events that have completed. Completed events are queued === modified file 'src/CompositePoolNode.h' --- src/CompositePoolNode.h 2012-01-20 18:55:04 +0000 +++ src/CompositePoolNode.h 2012-08-13 14:12:26 +0000 @@ -37,12 +37,12 @@ #define COMPOSITEPOOLNODE_H #if USE_DELAY_POOLS -#include "squid-old.h" #include "auth/UserRequest.h" +#include "CommRead.h" +#include "DelayIdComposite.h" #include "DelayPools.h" -#include "DelayIdComposite.h" -#include "CommRead.h" #include "ip/Address.h" +#include "SquidString.h" class StoreEntry; === modified file 'src/ConfigOption.cc' --- src/ConfigOption.cc 2012-01-20 18:55:04 +0000 +++ src/ConfigOption.cc 2012-08-10 07:35:11 +0000 @@ -32,7 +32,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "ConfigOption.h" ConfigOptionVector::~ConfigOptionVector() === modified file 'src/ConfigParser.cc' --- src/ConfigParser.cc 2012-08-06 17:41:08 +0000 +++ src/ConfigParser.cc 2012-08-12 20:25:21 +0000 @@ -35,7 +35,9 @@ #include "squid.h" #include "ConfigParser.h" +#include "Debug.h" #include "globals.h" +#include "protos.h" void ConfigParser::destruct() === modified file 'src/ConfigParser.h' --- src/ConfigParser.h 2012-07-17 14:25:06 +0000 +++ src/ConfigParser.h 2012-08-10 07:35:11 +0000 @@ -36,8 +36,11 @@ #ifndef SQUID_CONFIGPARSER_H #define SQUID_CONFIGPARSER_H -#include "squid-old.h" - +#include "squid.h" + +#include "SquidString.h" + +class wordlist; /** * Limit to how long any given config line may be. * This affects squid.conf and all included files. === modified file 'src/CpuAffinity.cc' --- src/CpuAffinity.cc 2012-01-20 18:55:04 +0000 +++ src/CpuAffinity.cc 2012-08-12 20:25:21 +0000 @@ -10,6 +10,8 @@ #include "CpuAffinity.h" #include "CpuAffinityMap.h" #include "CpuAffinitySet.h" +#include "Debug.h" +#include "protos.h" #include "structs.h" #include === modified file 'src/DelayBucket.cc' --- src/DelayBucket.cc 2012-01-20 18:55:04 +0000 +++ src/DelayBucket.cc 2012-08-10 07:35:11 +0000 @@ -39,7 +39,7 @@ #include "squid.h" #if USE_DELAY_POOLS -#include "squid-old.h" +#include "squid.h" #include "DelayBucket.h" #include "DelaySpec.h" #include "Store.h" === modified file 'src/DelayConfig.cc' --- src/DelayConfig.cc 2012-08-06 17:41:08 +0000 +++ src/DelayConfig.cc 2012-08-10 07:35:11 +0000 @@ -40,7 +40,7 @@ #include "squid.h" #if USE_DELAY_POOLS -#include "squid-old.h" +#include "squid.h" #include "DelayConfig.h" #include "ConfigParser.h" #include "DelayPools.h" === modified file 'src/DelayId.cc' --- src/DelayId.cc 2012-07-17 17:38:50 +0000 +++ src/DelayId.cc 2012-08-10 07:35:11 +0000 @@ -44,7 +44,7 @@ */ #if USE_DELAY_POOLS -#include "squid-old.h" +#include "squid.h" #include "DelayId.h" #include "client_side_request.h" #include "acl/FilledChecklist.h" === modified file 'src/DelayIdComposite.h' --- src/DelayIdComposite.h 2012-01-20 18:55:04 +0000 +++ src/DelayIdComposite.h 2012-08-10 07:35:11 +0000 @@ -40,7 +40,8 @@ #define DELAYIDCOMPOSITE_H #if USE_DELAY_POOLS -#include "squid-old.h" +#include "squid.h" +#include "fatal.h" #include "RefCount.h" class DeferredRead; === modified file 'src/DelayPool.h' --- src/DelayPool.h 2012-01-20 18:55:04 +0000 +++ src/DelayPool.h 2012-08-10 07:35:11 +0000 @@ -40,7 +40,7 @@ #define DELAYPOOL_H #if USE_DELAY_POOLS -#include "squid-old.h" +#include "squid.h" #include "CompositePoolNode.h" class StoreEntry; === modified file 'src/DelaySpec.cc' --- src/DelaySpec.cc 2012-06-22 03:49:38 +0000 +++ src/DelaySpec.cc 2012-08-13 13:58:33 +0000 @@ -40,10 +40,11 @@ #include "squid.h" #if USE_DELAY_POOLS -#include "squid-old.h" #include "DelaySpec.h" +#include "Parsing.h" +#include "protos.h" +#include "squid.h" #include "Store.h" -#include "Parsing.h" DelaySpec::DelaySpec() : restore_bps(-1), max_bytes (-1) {} === modified file 'src/DelayTagged.cc' --- src/DelayTagged.cc 2012-01-20 18:55:04 +0000 +++ src/DelayTagged.cc 2012-08-10 07:35:11 +0000 @@ -38,7 +38,7 @@ #include "squid.h" #if USE_DELAY_POOLS -#include "squid-old.h" +#include "squid.h" #include "comm/Connection.h" #include "DelayTagged.h" #include "NullDelayId.h" === modified file 'src/DelayTagged.h' --- src/DelayTagged.h 2012-01-20 18:55:04 +0000 +++ src/DelayTagged.h 2012-08-10 07:35:11 +0000 @@ -38,7 +38,7 @@ #if USE_DELAY_POOLS -#include "squid-old.h" +#include "squid.h" #include "auth/Gadgets.h" #include "CompositePoolNode.h" #include "DelayIdComposite.h" === modified file 'src/DelayUser.cc' --- src/DelayUser.cc 2012-01-20 18:55:04 +0000 +++ src/DelayUser.cc 2012-08-10 07:35:11 +0000 @@ -38,7 +38,7 @@ #include "squid.h" #if USE_DELAY_POOLS && USE_AUTH -#include "squid-old.h" +#include "squid.h" #include "DelayUser.h" #include "auth/UserRequest.h" #include "auth/User.h" === modified file 'src/DelayUser.h' --- src/DelayUser.h 2012-01-20 18:55:04 +0000 +++ src/DelayUser.h 2012-08-10 07:35:11 +0000 @@ -38,7 +38,7 @@ #if USE_DELAY_POOLS && USE_AUTH -#include "squid-old.h" +#include "squid.h" #include "auth/Gadgets.h" #include "auth/User.h" #include "CompositePoolNode.h" === modified file 'src/DelayVector.cc' --- src/DelayVector.cc 2012-01-20 18:55:04 +0000 +++ src/DelayVector.cc 2012-08-10 07:35:11 +0000 @@ -40,7 +40,7 @@ #include "squid.h" #if USE_DELAY_POOLS -#include "squid-old.h" +#include "squid.h" #include "comm/Connection.h" #include "DelayVector.h" #include "CommRead.h" === modified file 'src/DescriptorSet.cc' --- src/DescriptorSet.cc 2012-07-20 12:44:39 +0000 +++ src/DescriptorSet.cc 2012-08-10 07:35:11 +0000 @@ -4,6 +4,7 @@ * DEBUG: section 05 Comm */ #include "squid.h" +#include "globals.h" /* for Squid_MaxFD */ #include "DescriptorSet.h" // pre-allocates descriptor store and index for Squid_MaxFD descriptors === modified file 'src/DescriptorSet.h' --- src/DescriptorSet.h 2012-01-20 18:55:04 +0000 +++ src/DescriptorSet.h 2012-08-10 07:35:11 +0000 @@ -1,7 +1,7 @@ #ifndef SQUID_DESCRIPTOR_SET_H #define SQUID_DESCRIPTOR_SET_H -#include "squid-old.h" +#include "squid.h" /** \ingroup Comm === modified file 'src/DiskIO/AIO/AIODiskFile.cc' --- src/DiskIO/AIO/AIODiskFile.cc 2012-08-06 17:21:57 +0000 +++ src/DiskIO/AIO/AIODiskFile.cc 2012-08-12 21:10:41 +0000 @@ -44,12 +44,13 @@ * per storedir it should work just fine. */ -#include "squid-old.h" +#include "squid.h" #include "AIODiskFile.h" #include "AIODiskIOStrategy.h" #include "DiskIO/IORequestor.h" #include "DiskIO/ReadRequest.h" #include "DiskIO/WriteRequest.h" +#include "protos.h" CBDATA_CLASS_INIT(AIODiskFile); void * === modified file 'src/DiskIO/AIO/AIODiskFile.h' --- src/DiskIO/AIO/AIODiskFile.h 2012-08-07 15:12:08 +0000 +++ src/DiskIO/AIO/AIODiskFile.h 2012-08-12 21:10:41 +0000 @@ -38,6 +38,7 @@ #include "DiskIO/DiskFile.h" #include "async_io.h" #include "cbdata.h" +#include "SquidString.h" class AIODiskIOStrategy; === modified file 'src/DiskIO/AIO/AIODiskIOModule.cc' --- src/DiskIO/AIO/AIODiskIOModule.cc 2012-01-20 18:55:04 +0000 +++ src/DiskIO/AIO/AIODiskIOModule.cc 2012-08-10 07:35:11 +0000 @@ -31,7 +31,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "AIODiskIOModule.h" #include "AIODiskIOStrategy.h" #include "Store.h" === modified file 'src/DiskIO/AIO/AIODiskIOStrategy.cc' --- src/DiskIO/AIO/AIODiskIOStrategy.cc 2012-07-12 09:08:16 +0000 +++ src/DiskIO/AIO/AIODiskIOStrategy.cc 2012-08-10 07:35:11 +0000 @@ -42,7 +42,7 @@ * per storedir it should work just fine. */ -#include "squid-old.h" +#include "squid.h" #include "AIODiskIOStrategy.h" #include "AIODiskFile.h" #include "DiskIO/IORequestor.h" === modified file 'src/DiskIO/AIO/aio_win32.cc' --- src/DiskIO/AIO/aio_win32.cc 2012-08-06 17:21:57 +0000 +++ src/DiskIO/AIO/aio_win32.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "comm.h" #include "aio_win32.h" === modified file 'src/DiskIO/Blocking/BlockingDiskIOModule.cc' --- src/DiskIO/Blocking/BlockingDiskIOModule.cc 2012-01-20 18:55:04 +0000 +++ src/DiskIO/Blocking/BlockingDiskIOModule.cc 2012-08-10 07:35:11 +0000 @@ -31,7 +31,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "BlockingDiskIOModule.h" #include "BlockingIOStrategy.h" === modified file 'src/DiskIO/Blocking/BlockingFile.cc' --- src/DiskIO/Blocking/BlockingFile.cc 2012-08-06 17:41:08 +0000 +++ src/DiskIO/Blocking/BlockingFile.cc 2012-08-12 21:10:41 +0000 @@ -34,9 +34,11 @@ */ #include "squid.h" #include "BlockingFile.h" +#include "Debug.h" #include "DiskIO/IORequestor.h" #include "DiskIO/ReadRequest.h" #include "DiskIO/WriteRequest.h" +#include "protos.h" CBDATA_CLASS_INIT(BlockingFile); === modified file 'src/DiskIO/Blocking/BlockingIOStrategy.cc' --- src/DiskIO/Blocking/BlockingIOStrategy.cc 2012-01-20 18:55:04 +0000 +++ src/DiskIO/Blocking/BlockingIOStrategy.cc 2012-08-12 21:10:41 +0000 @@ -37,6 +37,7 @@ #include "squid.h" #include "BlockingIOStrategy.h" #include "BlockingFile.h" +#include "protos.h" bool BlockingIOStrategy::shedLoad() === modified file 'src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.cc' --- src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.cc 2012-08-06 17:21:57 +0000 +++ src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.cc 2012-08-10 07:35:11 +0000 @@ -31,7 +31,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "DiskDaemonDiskIOModule.h" #include "DiskdIOStrategy.h" #include "DiskIO/DiskDaemon/DiskdAction.h" === modified file 'src/DiskIO/DiskDaemon/DiskdAction.cc' --- src/DiskIO/DiskDaemon/DiskdAction.cc 2012-01-20 18:55:04 +0000 +++ src/DiskIO/DiskDaemon/DiskdAction.cc 2012-08-12 21:10:41 +0000 @@ -7,12 +7,13 @@ #include "squid.h" #include "base/TextException.h" -#include "Store.h" +#include "DiskIO/DiskDaemon/DiskdAction.h" +#include "DiskIO/DiskDaemon/DiskdIOStrategy.h" #include "ipc/Messages.h" #include "ipc/TypedMsgHdr.h" #include "mgr/ActionWriter.h" -#include "DiskIO/DiskDaemon/DiskdAction.h" -#include "DiskIO/DiskDaemon/DiskdIOStrategy.h" +#include "Store.h" +#include "protos.h" DiskdActionData::DiskdActionData() === modified file 'src/DiskIO/DiskDaemon/DiskdFile.cc' --- src/DiskIO/DiskDaemon/DiskdFile.cc 2012-08-06 17:21:57 +0000 +++ src/DiskIO/DiskDaemon/DiskdFile.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * CopyRight (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include #include === modified file 'src/DiskIO/DiskDaemon/DiskdIOStrategy.cc' --- src/DiskIO/DiskDaemon/DiskdIOStrategy.cc 2012-08-06 17:41:08 +0000 +++ src/DiskIO/DiskDaemon/DiskdIOStrategy.cc 2012-08-12 21:10:41 +0000 @@ -33,22 +33,22 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "comm/Loops.h" - -#include -#include -#include +#include "ConfigOption.h" #include "DiskdIOStrategy.h" -#include "ConfigOption.h" #include "DiskIO/DiskFile.h" #include "DiskdFile.h" #include "diomsg.h" -/* for statfs */ +#include "protos.h" #include "Store.h" #include "StatCounters.h" #include "SquidTime.h" +#include +#include +#include + diskd_stats_t diskd_stats; size_t DiskdIOStrategy::nextInstanceID (0); === modified file 'src/DiskIO/DiskFile.h' --- src/DiskIO/DiskFile.h 2012-01-20 18:55:04 +0000 +++ src/DiskIO/DiskFile.h 2012-08-10 07:35:11 +0000 @@ -33,7 +33,8 @@ #ifndef SQUID_DISKFILE_H #define SQUID_DISKFILE_H -#include "squid-old.h" +#include "squid.h" +#include "typedefs.h" #include "RefCount.h" === modified file 'src/DiskIO/DiskIOModule.cc' --- src/DiskIO/DiskIOModule.cc 2012-01-20 18:55:04 +0000 +++ src/DiskIO/DiskIOModule.cc 2012-08-10 07:35:11 +0000 @@ -32,7 +32,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "DiskIOModule.h" Vector *DiskIOModule::_Modules = NULL; === modified file 'src/DiskIO/DiskIOModule.h' --- src/DiskIO/DiskIOModule.h 2012-01-20 18:55:04 +0000 +++ src/DiskIO/DiskIOModule.h 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ #ifndef SQUID_DISKIOMODULE_H #define SQUID_DISKIOMODULE_H -#include "squid-old.h" +#include "squid.h" #include "Array.h" /* forward decls */ === modified file 'src/DiskIO/DiskIOStrategy.h' --- src/DiskIO/DiskIOStrategy.h 2012-01-20 18:55:04 +0000 +++ src/DiskIO/DiskIOStrategy.h 2012-08-10 07:35:11 +0000 @@ -33,8 +33,8 @@ #ifndef SQUID_DISKIOSTRATEGY_H #define SQUID_DISKIOSTRATEGY_H -#include "squid-old.h" - +#include "squid.h" +#include "Store.h" #include "RefCount.h" class DiskFile; === modified file 'src/DiskIO/DiskThreads/CommIO.cc' --- src/DiskIO/DiskThreads/CommIO.cc 2012-05-27 23:51:04 +0000 +++ src/DiskIO/DiskThreads/CommIO.cc 2012-08-12 21:10:41 +0000 @@ -33,9 +33,10 @@ */ #include "squid.h" -#include "squid-old.h" #include "comm/Loops.h" #include "DiskIO/DiskThreads/CommIO.h" +#include "globals.h" +#include "protos.h" void CommIO::Initialise() === modified file 'src/DiskIO/DiskThreads/CommIO.h' --- src/DiskIO/DiskThreads/CommIO.h 2012-02-06 01:01:23 +0000 +++ src/DiskIO/DiskThreads/CommIO.h 2012-08-12 21:10:41 +0000 @@ -2,6 +2,7 @@ #define SQUID_SRC_DISKIO_DISKTHREADS_COMMIO_H #include "fde.h" +#include "globals.h" class CommIO { === modified file 'src/DiskIO/DiskThreads/DiskThreadsDiskFile.cc' --- src/DiskIO/DiskThreads/DiskThreadsDiskFile.cc 2012-08-06 17:41:08 +0000 +++ src/DiskIO/DiskThreads/DiskThreadsDiskFile.cc 2012-08-12 21:10:41 +0000 @@ -34,14 +34,16 @@ */ -#include "squid-old.h" +#include "squid.h" #include "DiskThreadsDiskFile.h" -#include "Store.h" -#include "Generic.h" #include "DiskIO/IORequestor.h" #include "DiskIO/ReadRequest.h" #include "DiskIO/WriteRequest.h" +#include "Generic.h" +#include "globals.h" #include "StatCounters.h" +#include "Store.h" +#include "protos.h" /* === PUBLIC =========================================================== */ === modified file 'src/DiskIO/DiskThreads/DiskThreadsDiskIOModule.cc' --- src/DiskIO/DiskThreads/DiskThreadsDiskIOModule.cc 2012-01-20 18:55:04 +0000 +++ src/DiskIO/DiskThreads/DiskThreadsDiskIOModule.cc 2012-08-10 07:35:11 +0000 @@ -31,7 +31,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "DiskThreadsDiskIOModule.h" #include "DiskThreadsIOStrategy.h" === modified file 'src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc' --- src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc 2012-07-12 09:08:16 +0000 +++ src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "DiskThreadsDiskFile.h" #include "DiskThreadsIOStrategy.h" === modified file 'src/DiskIO/DiskThreads/aiops.cc' --- src/DiskIO/DiskThreads/aiops.cc 2012-08-06 17:41:08 +0000 +++ src/DiskIO/DiskThreads/aiops.cc 2012-08-10 07:35:11 +0000 @@ -36,7 +36,7 @@ #error "_REENTRANT MUST be defined to build squid async io support." #endif -#include "squid-old.h" +#include "squid.h" #include "DiskThreads.h" #include === modified file 'src/DiskIO/DiskThreads/aiops_win32.cc' --- src/DiskIO/DiskThreads/aiops_win32.cc 2012-08-06 17:41:08 +0000 +++ src/DiskIO/DiskThreads/aiops_win32.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "squid_windows.h" #include "DiskIO/DiskThreads/CommIO.h" #include "DiskThreads.h" === modified file 'src/DiskIO/DiskThreads/async_io.cc' --- src/DiskIO/DiskThreads/async_io.cc 2012-08-06 17:21:57 +0000 +++ src/DiskIO/DiskThreads/async_io.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "DiskThreads.h" #include "Store.h" #include "fde.h" === modified file 'src/DiskIO/IORequestor.h' --- src/DiskIO/IORequestor.h 2012-01-20 18:55:04 +0000 +++ src/DiskIO/IORequestor.h 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ #ifndef SQUID_IOREQUESTOR_H #define SQUID_IOREQUESTOR_H -#include "squid-old.h" +#include "squid.h" #include "RefCount.h" === modified file 'src/DiskIO/IpcIo/IpcIoDiskIOModule.cc' --- src/DiskIO/IpcIo/IpcIoDiskIOModule.cc 2012-01-20 18:55:04 +0000 +++ src/DiskIO/IpcIo/IpcIoDiskIOModule.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "IpcIoDiskIOModule.h" #include "IpcIoIOStrategy.h" === modified file 'src/DiskIO/IpcIo/IpcIoFile.cc' --- src/DiskIO/IpcIo/IpcIoFile.cc 2012-08-06 17:41:08 +0000 +++ src/DiskIO/IpcIo/IpcIoFile.cc 2012-08-12 21:10:41 +0000 @@ -11,6 +11,7 @@ #include "DiskIO/IpcIo/IpcIoFile.h" #include "DiskIO/ReadRequest.h" #include "DiskIO/WriteRequest.h" +#include "globals.h" #include "ipc/Messages.h" #include "ipc/Port.h" #include "ipc/Queue.h" @@ -19,6 +20,7 @@ #include "ipc/mem/Pages.h" #include "StatCounters.h" #include "SquidTime.h" +#include "protos.h" CBDATA_CLASS_INIT(IpcIoFile); === modified file 'src/DiskIO/IpcIo/IpcIoFile.h' --- src/DiskIO/IpcIo/IpcIoFile.h 2011-09-15 17:51:23 +0000 +++ src/DiskIO/IpcIo/IpcIoFile.h 2012-08-12 21:10:41 +0000 @@ -5,6 +5,7 @@ #include "cbdata.h" #include "DiskIO/DiskFile.h" #include "DiskIO/IORequestor.h" +#include "SquidString.h" #include "ipc/forward.h" #include "ipc/mem/Page.h" #include === modified file 'src/DiskIO/IpcIo/IpcIoIOStrategy.cc' --- src/DiskIO/IpcIo/IpcIoIOStrategy.cc 2012-01-20 18:55:04 +0000 +++ src/DiskIO/IpcIo/IpcIoIOStrategy.cc 2012-08-12 21:10:41 +0000 @@ -8,6 +8,7 @@ #include "squid.h" #include "IpcIoFile.h" #include "IpcIoIOStrategy.h" +#include "protos.h" bool IpcIoIOStrategy::shedLoad() === modified file 'src/DiskIO/Mmapped/MmappedDiskIOModule.cc' --- src/DiskIO/Mmapped/MmappedDiskIOModule.cc 2012-01-20 18:55:04 +0000 +++ src/DiskIO/Mmapped/MmappedDiskIOModule.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "MmappedDiskIOModule.h" #include "MmappedIOStrategy.h" === modified file 'src/DiskIO/Mmapped/MmappedFile.cc' --- src/DiskIO/Mmapped/MmappedFile.cc 2012-08-06 17:21:57 +0000 +++ src/DiskIO/Mmapped/MmappedFile.cc 2012-08-12 21:10:41 +0000 @@ -5,11 +5,20 @@ */ #include "squid.h" +#include "Debug.h" #include "DiskIO/IORequestor.h" #include "DiskIO/Mmapped/MmappedFile.h" #include "DiskIO/ReadRequest.h" #include "DiskIO/WriteRequest.h" +#include "globals.h" +#include "protos.h" + +#if HAVE_SYS_MMAN_H #include +#endif +#if HAVE_SYS_STAT_H +#include +#endif CBDATA_CLASS_INIT(MmappedFile); === modified file 'src/DiskIO/Mmapped/MmappedIOStrategy.cc' --- src/DiskIO/Mmapped/MmappedIOStrategy.cc 2012-01-20 18:55:04 +0000 +++ src/DiskIO/Mmapped/MmappedIOStrategy.cc 2012-08-12 21:10:41 +0000 @@ -8,6 +8,7 @@ #include "squid.h" #include "MmappedFile.h" #include "MmappedIOStrategy.h" +#include "protos.h" bool MmappedIOStrategy::shedLoad() === modified file 'src/DiskIO/ReadRequest.h' --- src/DiskIO/ReadRequest.h 2012-01-20 18:55:04 +0000 +++ src/DiskIO/ReadRequest.h 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ #ifndef SQUID_READREQUEST_H #define SQUID_READREQUEST_H -#include "squid-old.h" +#include "squid.h" #include "cbdata.h" #include "RefCount.h" === modified file 'src/DiskIO/WriteRequest.h' --- src/DiskIO/WriteRequest.h 2012-01-20 18:55:04 +0000 +++ src/DiskIO/WriteRequest.h 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ #ifndef SQUID_WRITEREQUEST_H #define SQUID_WRITEREQUEST_H -#include "squid-old.h" +#include "squid.h" #include "cbdata.h" #include "RefCount.h" === modified file 'src/EventLoop.cc' --- src/EventLoop.cc 2012-08-06 17:41:08 +0000 +++ src/EventLoop.cc 2012-08-10 11:52:29 +0000 @@ -33,6 +33,7 @@ */ #include "squid.h" +#include "Debug.h" #include "EventLoop.h" #include "base/AsyncCallQueue.h" === modified file 'src/EventLoop.h' --- src/EventLoop.h 2012-01-20 18:55:04 +0000 +++ src/EventLoop.h 2012-08-10 11:52:29 +0000 @@ -33,7 +33,7 @@ #ifndef SQUID_EVENTLOOP_H #define SQUID_EVENTLOOP_H -#include "squid-old.h" +#include "squid.h" #include "Array.h" #include "AsyncEngine.h" #include "SquidTime.h" === modified file 'src/ExternalACLEntry.cc' --- src/ExternalACLEntry.cc 2012-01-20 18:55:04 +0000 +++ src/ExternalACLEntry.cc 2012-08-10 07:35:11 +0000 @@ -41,7 +41,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "ExternalACLEntry.h" #include "SquidTime.h" === modified file 'src/FadingCounter.cc' --- src/FadingCounter.cc 2012-01-20 18:55:04 +0000 +++ src/FadingCounter.cc 2012-08-10 07:35:11 +0000 @@ -2,11 +2,15 @@ * $Id$ */ -#include "squid-old.h" +#include "squid.h" #include "base/TextException.h" #include "SquidTime.h" #include "FadingCounter.h" +#if HAVE_MATH_H +#include +#endif /* HAVE_MATH_H */ + FadingCounter::FadingCounter(): horizon(-1), precision(10), delta(-1), lastTime(0), total(0) { === modified file 'src/HelperChildConfig.cc' --- src/HelperChildConfig.cc 2012-08-06 17:41:08 +0000 +++ src/HelperChildConfig.cc 2012-08-12 21:10:41 +0000 @@ -1,6 +1,8 @@ #include "squid.h" +#include "Debug.h" #include "HelperChildConfig.h" #include "globals.h" +#include "protos.h" #include === modified file 'src/HttpBody.cc' --- src/HttpBody.cc 2012-01-20 18:55:04 +0000 +++ src/HttpBody.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "HttpBody.h" #include "MemBuf.h" === modified file 'src/HttpHdrCc.cc' --- src/HttpHdrCc.cc 2012-07-23 15:34:12 +0000 +++ src/HttpHdrCc.cc 2012-08-12 21:10:41 +0000 @@ -30,13 +30,14 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "base/StringArea.h" #include "HttpHeader.h" #include "HttpHeaderStat.h" #include "HttpHdrCc.h" #include "StatHist.h" #include "Store.h" +#include "protos.h" #if HAVE_MAP #include === modified file 'src/HttpHdrCc.cci' --- src/HttpHdrCc.cci 2011-10-05 00:19:46 +0000 +++ src/HttpHdrCc.cci 2012-08-10 07:35:11 +0000 @@ -29,6 +29,10 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. * */ + +#include "defines.h" +#include "Debug.h" + bool HttpHdrCc::isSet(http_hdr_cc_type id) const { === modified file 'src/HttpHdrCc.h' --- src/HttpHdrCc.h 2011-10-30 02:42:27 +0000 +++ src/HttpHdrCc.h 2012-08-10 07:35:11 +0000 @@ -32,7 +32,9 @@ #ifndef SQUID_HTTPHDRCC_H #define SQUID_HTTPHDRCC_H +#include "enums.h" #include "MemPool.h" +#include "Packer.h" #include "SquidString.h" /** Http Cache-Control header representation === modified file 'src/HttpHdrContRange.cc' --- src/HttpHdrContRange.cc 2012-07-17 17:38:50 +0000 +++ src/HttpHdrContRange.cc 2012-08-10 11:52:29 +0000 @@ -33,8 +33,12 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "Debug.h" +#include "enums.h" #include "HttpHdrContRange.h" +#include "HttpHeaderTools.h" +#include "protos.h" /* * Currently only byte ranges are supported === modified file 'src/HttpHdrRange.cc' --- src/HttpHdrRange.cc 2012-07-17 17:38:50 +0000 +++ src/HttpHdrRange.cc 2012-08-12 21:10:41 +0000 @@ -33,11 +33,12 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "Store.h" #include "HttpHeaderRange.h" #include "client_side_request.h" #include "HttpReply.h" +#include "protos.h" /* * Currently only byte ranges are supported === modified file 'src/HttpHdrSc.cc' --- src/HttpHdrSc.cc 2012-07-23 15:34:12 +0000 +++ src/HttpHdrSc.cc 2012-08-13 09:44:13 +0000 @@ -36,11 +36,12 @@ * */ -#include "squid-old.h" -#include "Store.h" +#include "squid.h" +#include "HttpHdrSc.h" #include "HttpHeader.h" #include "HttpHeaderStat.h" -#include "HttpHdrSc.h" +#include "Store.h" +#include "protos.h" #if HAVE_MAP #include === modified file 'src/HttpHdrSc.h' --- src/HttpHdrSc.h 2011-12-03 12:40:23 +0000 +++ src/HttpHdrSc.h 2012-08-12 21:10:41 +0000 @@ -37,6 +37,8 @@ #include "dlink.h" #include "HttpHdrScTarget.h" +class StatHist; + /* http surogate control header field */ class HttpHdrSc === modified file 'src/HttpHdrScTarget.cc' --- src/HttpHdrScTarget.cc 2012-01-20 18:55:04 +0000 +++ src/HttpHdrScTarget.cc 2012-08-10 07:35:11 +0000 @@ -35,7 +35,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "HttpHdrSc.h" #include "StatHist.h" === modified file 'src/HttpHdrScTarget.h' --- src/HttpHdrScTarget.h 2011-12-04 01:33:38 +0000 +++ src/HttpHdrScTarget.h 2012-08-13 09:44:13 +0000 @@ -32,14 +32,16 @@ #ifndef SQUID_HTTPHDRSURROGATECONTROLTARGET_H #define SQUID_HTTPHDRSURROGATECONTROLTARGET_H -class Packer; -class StoreEntry; - #include "MemPool.h" +#include "defines.h" #include "dlink.h" #include "SquidString.h" #include "typedefs.h" +class StatHist; +class Packer; +class StoreEntry; + /** Representation of HTTP Surogate-Control header field targeted directive * * \see HttpHdrSc === modified file 'src/HttpHeader.cc' --- src/HttpHeader.cc 2012-08-06 17:41:08 +0000 +++ src/HttpHeader.cc 2012-08-13 09:44:13 +0000 @@ -33,15 +33,17 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "base64.h" +#include "HttpHdrCc.h" #include "HttpHdrContRange.h" -#include "HttpHdrCc.h" #include "HttpHdrSc.h" #include "HttpHeader.h" #include "HttpHeaderStat.h" #include "MemBuf.h" #include "mgr/Registration.h" +#include "profiler/Profiler.h" +#include "protos.h" #include "rfc1123.h" #include "StatHist.h" #include "Store.h" === modified file 'src/HttpHeaderTools.cc' --- src/HttpHeaderTools.cc 2012-07-23 07:02:06 +0000 +++ src/HttpHeaderTools.cc 2012-08-13 09:44:13 +0000 @@ -32,11 +32,11 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "acl/FilledChecklist.h" #include "acl/Gadgets.h" +#include "client_side_request.h" #include "client_side.h" -#include "client_side_request.h" #include "comm/Connection.h" #include "compat/strtoll.h" #include "fde.h" @@ -45,14 +45,15 @@ #include "HttpHeaderTools.h" #include "HttpRequest.h" #include "MemBuf.h" +#include "protos.h" +#include "Store.h" + #if USE_SSL #include "ssl/support.h" #endif -#include "Store.h" + #include -#if HAVE_STRING #include -#endif static void httpHeaderPutStrvf(HttpHeader * hdr, http_hdr_type id, const char *fmt, va_list vargs); === modified file 'src/HttpHeaderTools.h' --- src/HttpHeaderTools.h 2012-07-17 14:25:06 +0000 +++ src/HttpHeaderTools.h 2012-08-10 07:35:11 +0000 @@ -2,6 +2,7 @@ #define SQUID_HTTPHEADERTOOLS_H #include "format/Format.h" +#include "HttpHeader.h" #if HAVE_LIST #include @@ -89,4 +90,7 @@ /// whether fieldValue may contain macros bool quoted; }; + +SQUIDCEXTERN int httpHeaderParseOffset(const char *start, int64_t * off); + #endif === modified file 'src/HttpMsg.cc' --- src/HttpMsg.cc 2012-08-06 17:21:57 +0000 +++ src/HttpMsg.cc 2012-08-13 09:44:13 +0000 @@ -33,9 +33,12 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "Debug.h" #include "HttpMsg.h" #include "MemBuf.h" +#include "profiler/Profiler.h" +#include "protos.h" HttpMsg::HttpMsg(http_hdr_owner_type owner): header(owner), cache_control(NULL), hdr_sz(0), content_length(0), protocol(AnyP::PROTO_NONE), === modified file 'src/HttpMsg.h' --- src/HttpMsg.h 2011-05-27 13:56:42 +0000 +++ src/HttpMsg.h 2012-08-10 11:52:29 +0000 @@ -35,6 +35,7 @@ #include "typedefs.h" #include "HttpHeader.h" +#include "HttpRequestMethod.h" #include "HttpStatusCode.h" #include "HttpVersion.h" #include "BodyPipe.h" === modified file 'src/HttpParser.cc' --- src/HttpParser.cc 2012-07-20 15:31:04 +0000 +++ src/HttpParser.cc 2012-08-12 20:25:21 +0000 @@ -2,6 +2,7 @@ #include "Debug.h" #include "HttpParser.h" #include "structs.h" +#include "profiler/Profiler.h" void HttpParser::clear() === modified file 'src/HttpReply.cc' --- src/HttpReply.cc 2012-06-12 07:01:02 +0000 +++ src/HttpReply.cc 2012-08-13 09:44:13 +0000 @@ -33,17 +33,19 @@ * */ -#include "squid-old.h" -#include "SquidTime.h" -#include "Store.h" +#include "squid.h" +#include "acl/FilledChecklist.h" +#include "globals.h" #include "HttpBody.h" -#include "HttpReply.h" +#include "HttpHdrCc.h" #include "HttpHdrContRange.h" -#include "HttpHdrCc.h" #include "HttpHdrSc.h" -#include "acl/FilledChecklist.h" +#include "HttpReply.h" #include "HttpRequest.h" #include "MemBuf.h" +#include "protos.h" +#include "SquidTime.h" +#include "Store.h" /* local constants */ === modified file 'src/HttpReply.h' --- src/HttpReply.h 2011-12-04 13:52:07 +0000 +++ src/HttpReply.h 2012-08-10 11:52:29 +0000 @@ -34,6 +34,7 @@ #include "HttpBody.h" #include "HttpMsg.h" +#include "HttpRequest.h" #include "HttpStatusLine.h" extern void httpReplyInitModule(void); === modified file 'src/HttpRequest.cc' --- src/HttpRequest.cc 2012-08-06 17:21:57 +0000 +++ src/HttpRequest.cc 2012-08-13 09:44:13 +0000 @@ -34,23 +34,26 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "AccessLogEntry.h" +#include "acl/FilledChecklist.h" +#include "client_side.h" #include "DnsLookupDetails.h" -#include "HttpRequest.h" +#include "err_detail_type.h" #include "HttpHdrCc.h" -#if USE_AUTH -#include "auth/UserRequest.h" -#endif #include "HttpHeaderRange.h" +#include "HttpRequest.h" #include "log/Config.h" #include "MemBuf.h" +#include "protos.h" #include "Store.h" + +#if USE_AUTH +#include "auth/UserRequest.h" +#endif #if ICAP_CLIENT #include "adaptation/icap/icap_log.h" #endif -#include "acl/FilledChecklist.h" -#include "err_detail_type.h" HttpRequest::HttpRequest() : HttpMsg(hoRequest) { @@ -703,3 +706,10 @@ // others must support 1xx control messages return true; } + +ConnStateData * +HttpRequest::pinnedConnection() { + if (clientConnectionManager.valid() && clientConnectionManager->pinning.pinned) + return clientConnectionManager.get(); + return NULL; +} === modified file 'src/HttpRequest.h' --- src/HttpRequest.h 2012-07-22 03:15:02 +0000 +++ src/HttpRequest.h 2012-08-13 12:14:00 +0000 @@ -33,21 +33,26 @@ #ifndef SQUID_HTTPREQUEST_H #define SQUID_HTTPREQUEST_H +#include "base/CbcPointer.h" +#include "Debug.h" +#include "HierarchyLogEntry.h" +#include "HttpMsg.h" +#include "HttpRequestMethod.h" +#if USE_AUTH +#include "auth/UserRequest.h" +#endif #if USE_ADAPTATION #include "adaptation/History.h" #endif #if ICAP_CLIENT #include "adaptation/icap/History.h" #endif -#include "base/CbcPointer.h" -#include "client_side.h" #if USE_SQUID_EUI #include "eui/Eui48.h" #include "eui/Eui64.h" #endif -#include "HierarchyLogEntry.h" -#include "HttpMsg.h" -#include "HttpRequestMethod.h" + +class ConnStateData; /* Http Request */ //DEAD?: extern int httpRequestHdrAllowedByName(http_hdr_type id); @@ -229,11 +234,7 @@ static HttpRequest * CreateFromUrl(char * url); - ConnStateData *pinnedConnection() { - if (clientConnectionManager.valid() && clientConnectionManager->pinning.pinned) - return clientConnectionManager.get(); - return NULL; - } + ConnStateData *pinnedConnection(); /** * The client connection manager, if known; === modified file 'src/HttpRequestMethod.cc' --- src/HttpRequestMethod.cc 2012-08-06 17:21:57 +0000 +++ src/HttpRequestMethod.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "HttpRequestMethod.h" #include "wordlist.h" === modified file 'src/HttpRequestMethod.h' --- src/HttpRequestMethod.h 2012-01-20 18:55:04 +0000 +++ src/HttpRequestMethod.h 2012-08-10 11:52:29 +0000 @@ -33,9 +33,10 @@ #ifndef SQUID_HTTPREQUESTMETHOD_H #define SQUID_HTTPREQUESTMETHOD_H -#include "squid-old.h" +#include "squid.h" #include #include "SquidString.h" +#include "structs.h" //for SquidConfig enum _method_t { METHOD_NONE, /* 000 */ === modified file 'src/HttpStatusLine.cc' --- src/HttpStatusLine.cc 2012-05-22 00:39:25 +0000 +++ src/HttpStatusLine.cc 2012-08-10 07:35:11 +0000 @@ -33,8 +33,11 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "Debug.h" #include "HttpStatusLine.h" +#include "protos.h" // for httpStatusString +#include "Packer.h" /* local constants */ /* AYJ: see bug 2469 - RFC2616 confirms stating 'SP characters' plural! */ === modified file 'src/HttpStatusLine.h' --- src/HttpStatusLine.h 2011-03-02 07:27:24 +0000 +++ src/HttpStatusLine.h 2012-08-10 07:35:11 +0000 @@ -77,4 +77,7 @@ /* pack fields using Packer */ SQUIDCEXTERN void httpStatusLinePackInto(const HttpStatusLine * sline, Packer * p); +SQUIDCEXTERN const char *httpStatusString(http_status status); + + #endif /* SQUID_HTTPSTATUSLINE_H */ === modified file 'src/ICP.h' --- src/ICP.h 2012-04-25 05:29:20 +0000 +++ src/ICP.h 2012-08-13 09:44:13 +0000 @@ -39,9 +39,12 @@ */ #include "comm/forward.h" +#include "icp_opcode.h" #include "ip/Address.h" #include "StoreClient.h" +class HttpRequest; + /** \ingroup ServerProtocolICPAPI * === modified file 'src/LeakFinder.cc' --- src/LeakFinder.cc 2012-08-06 17:21:57 +0000 +++ src/LeakFinder.cc 2012-08-10 07:35:11 +0000 @@ -36,7 +36,7 @@ * Use these to find memory leaks */ -#include "squid-old.h" +#include "squid.h" #include "LeakFinder.h" #include "Store.h" #include "SquidTime.h" === modified file 'src/LoadableModule.cc' --- src/LoadableModule.cc 2012-01-20 18:55:04 +0000 +++ src/LoadableModule.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" /* The original code has this constant ./configure-able. * The "#else" branches use raw dlopen interface and have not been tested. === modified file 'src/LoadableModules.cc' --- src/LoadableModules.cc 2012-08-06 17:21:57 +0000 +++ src/LoadableModules.cc 2012-08-13 09:44:13 +0000 @@ -1,7 +1,8 @@ -#include "squid-old.h" -#include "wordlist.h" +#include "squid.h" +#include "Debug.h" #include "LoadableModule.h" #include "LoadableModules.h" +#include "wordlist.h" static void LoadModule(const char *fname) === modified file 'src/Makefile.am' --- src/Makefile.am 2012-08-11 04:42:17 +0000 +++ src/Makefile.am 2012-08-13 14:49:07 +0000 @@ -426,7 +426,6 @@ send-announce.cc \ $(SBUF_SOURCE) \ $(SNMP_SOURCE) \ - squid-old.h \ SquidMath.h \ SquidMath.cc \ SquidNew.cc \ @@ -693,7 +692,6 @@ tests/stub_HelperChildConfig.cc \ HttpRequestMethod.cc \ RemovalPolicy.cc \ - squid-old.h \ $(WIN32_SOURCE) \ tests/stub_fd.cc ufsdump_LDADD = \ === modified file 'src/MemBuf.cc' --- src/MemBuf.cc 2012-07-20 15:31:04 +0000 +++ src/MemBuf.cc 2012-08-13 09:44:13 +0000 @@ -99,10 +99,8 @@ \endverbatim */ -/* if you have configure you can use this */ -#if defined(HAVE_CONFIG_H) #include "squid.h" -#endif +#include "protos.h" #ifdef VA_COPY #undef VA_COPY @@ -113,8 +111,9 @@ #define VA_COPY __va_copy #endif -#include "squid-old.h" +#include "squid.h" #include "MemBuf.h" +#include "profiler/Profiler.h" /* local constants */ === modified file 'src/MemObject.cc' --- src/MemObject.cc 2012-08-06 17:21:57 +0000 +++ src/MemObject.cc 2012-08-13 09:44:13 +0000 @@ -33,18 +33,21 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "comm/Connection.h" +#include "Generic.h" +#include "HttpReply.h" +#include "HttpRequest.h" +#include "MemBuf.h" #include "MemObject.h" -#include "HttpRequest.h" -#include "HttpReply.h" +#include "profiler/Profiler.h" #include "Store.h" #include "StoreClient.h" -#include "Generic.h" +#include "protos.h" + #if USE_DELAY_POOLS #include "DelayPools.h" #endif -#include "MemBuf.h" /* TODO: make this global or private */ #if URL_CHECKSUM_DEBUG === modified file 'src/MemObject.h' --- src/MemObject.h 2012-06-18 23:08:56 +0000 +++ src/MemObject.h 2012-08-10 11:52:29 +0000 @@ -43,6 +43,7 @@ typedef void STMCB (void *data, StoreIOBuffer wroteBuffer); class store_client; +class HttpRequest; #if USE_DELAY_POOLS #include "DelayId.h" #endif === modified file 'src/MemStore.cc' --- src/MemStore.cc 2012-07-13 14:33:19 +0000 +++ src/MemStore.cc 2012-08-13 09:44:13 +0000 @@ -7,12 +7,13 @@ #include "squid.h" #include "base/RunnersRegistry.h" +#include "HttpReply.h" #include "ipc/mem/Page.h" #include "ipc/mem/Pages.h" #include "MemObject.h" #include "MemStore.h" +#include "protos.h" #include "StoreStats.h" -#include "HttpReply.h" /// shared memory segment path to use for MemStore maps static const char *ShmLabel = "cache_mem"; === modified file 'src/NullDelayId.cc' --- src/NullDelayId.cc 2012-01-20 18:55:04 +0000 +++ src/NullDelayId.cc 2012-08-10 07:35:11 +0000 @@ -40,7 +40,7 @@ #include "squid.h" #if USE_DELAY_POOLS -#include "squid-old.h" +#include "squid.h" #include "NullDelayId.h" #include "DelayPools.h" === modified file 'src/NullDelayId.h' --- src/NullDelayId.h 2012-01-20 18:55:04 +0000 +++ src/NullDelayId.h 2012-08-10 11:52:29 +0000 @@ -38,8 +38,9 @@ */ #ifndef NULLDELAYID_H #define NULLDELAYID_H +#include "squid.h" + #if USE_DELAY_POOLS -#include "squid-old.h" #include "RefCount.h" #include "DelayIdComposite.h" === modified file 'src/Packer.cc' --- src/Packer.cc 2012-01-20 18:55:04 +0000 +++ src/Packer.cc 2012-08-10 07:35:11 +0000 @@ -71,7 +71,7 @@ */ -#include "squid-old.h" +#include "squid.h" #include "Store.h" #include "MemBuf.h" === modified file 'src/Parsing.cc' --- src/Parsing.cc 2012-07-23 19:37:47 +0000 +++ src/Parsing.cc 2012-08-10 11:52:29 +0000 @@ -35,6 +35,7 @@ #include "squid.h" #include "compat/strtoll.h" #include "Parsing.h" +#include "protos.h" //for self_destruct /* * These functions is the same as atoi/l/f, except that they check for errors === modified file 'src/Parsing.h' --- src/Parsing.h 2012-01-20 18:55:04 +0000 +++ src/Parsing.h 2012-08-10 11:52:29 +0000 @@ -36,7 +36,9 @@ #ifndef SQUID_PARSING_H #define SQUID_PARSING_H -#include "squid-old.h" +#include "squid.h" + +#include "ip/Address.h" extern double xatof(const char *token); extern int xatoi(const char *token); === modified file 'src/PeerDigest.h' --- src/PeerDigest.h 2012-01-20 18:55:04 +0000 +++ src/PeerDigest.h 2012-08-10 11:52:29 +0000 @@ -34,7 +34,7 @@ #ifndef SQUID_PEERDIGEST_H #define SQUID_PEERDIGEST_H -#include "squid-old.h" +#include "squid.h" #if USE_CACHE_DIGESTS === modified file 'src/ProfStats.cc' --- src/ProfStats.cc 2012-07-18 15:47:58 +0000 +++ src/ProfStats.cc 2012-08-12 20:25:21 +0000 @@ -33,12 +33,13 @@ * */ -#include "squid-old.h" +#include "squid.h" #if USE_XPROF_STATS #include "event.h" #include "mgr/Registration.h" +#include "profiler/Profiler.h" #include "SquidMath.h" #include "Store.h" === modified file 'src/RemovalPolicy.h' --- src/RemovalPolicy.h 2012-01-20 18:55:04 +0000 +++ src/RemovalPolicy.h 2012-08-10 11:52:29 +0000 @@ -35,7 +35,7 @@ #ifndef SQUID_REMOVALPOLICY_H #define SQUID_REMOVALPOLICY_H -#include "squid-old.h" +#include "squid.h" #include "cbdata.h" class RemovalPolicyWalker; === modified file 'src/Server.cc' --- src/Server.cc 2012-08-06 17:21:57 +0000 +++ src/Server.cc 2012-08-13 09:44:13 +0000 @@ -32,20 +32,21 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "acl/Gadgets.h" #include "base/TextException.h" #include "comm/Connection.h" #include "comm/forward.h" #include "comm/Write.h" +#include "err_detail_type.h" +#include "errorpage.h" +#include "HttpReply.h" +#include "HttpRequest.h" +#include "protos.h" #include "Server.h" +#include "SquidTime.h" +#include "StatCounters.h" #include "Store.h" -#include "HttpRequest.h" -#include "HttpReply.h" -#include "errorpage.h" -#include "err_detail_type.h" -#include "StatCounters.h" -#include "SquidTime.h" #if USE_ADAPTATION #include "adaptation/AccessCheck.h" === modified file 'src/SquidNew.cc' --- src/SquidNew.cc 2012-01-20 18:55:04 +0000 +++ src/SquidNew.cc 2012-08-10 07:35:11 +0000 @@ -35,7 +35,7 @@ #define _SQUID_EXTERNNEW_ -#include "squid-old.h" +#include "squid.h" #ifdef __SUNPRO_CC === modified file 'src/StatHist.cc' --- src/StatHist.cc 2012-05-14 12:45:54 +0000 +++ src/StatHist.cc 2012-08-13 09:44:13 +0000 @@ -34,6 +34,9 @@ #include "squid.h" #include "StatHist.h" +#if HAVE_MATH_H +#include +#endif /* Local functions */ static StatHistBinDumper statHistBinDumper; === modified file 'src/Store.h' --- src/Store.h 2012-07-13 14:33:19 +0000 +++ src/Store.h 2012-08-10 11:52:29 +0000 @@ -37,7 +37,8 @@ \ingroup FileSystems */ -#include "squid-old.h" +#include "squid.h" +#include "HttpRequestMethod.h" #include "StoreIOBuffer.h" #include "Range.h" #include "RefCount.h" @@ -57,8 +58,9 @@ class AsyncCall; +class HttpRequest; +class MemObject; class StoreClient; -class MemObject; class StoreSearch; class SwapDir; === modified file 'src/StoreClient.h' --- src/StoreClient.h 2012-08-07 15:12:08 +0000 +++ src/StoreClient.h 2012-08-10 11:52:29 +0000 @@ -34,6 +34,7 @@ #ifndef SQUID_STORECLIENT_H #define SQUID_STORECLIENT_H +#include "dlink.h" #include "StoreIOBuffer.h" #include "StoreIOState.h" === modified file 'src/StoreFileSystem.cc' --- src/StoreFileSystem.cc 2012-01-20 18:55:04 +0000 +++ src/StoreFileSystem.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "StoreFileSystem.h" Vector *StoreFileSystem::_FileSystems = NULL; === modified file 'src/StoreFileSystem.h' --- src/StoreFileSystem.h 2012-01-20 18:55:04 +0000 +++ src/StoreFileSystem.h 2012-08-10 11:52:29 +0000 @@ -33,7 +33,7 @@ #ifndef SQUID_STOREFILESYSTEM_H #define SQUID_STOREFILESYSTEM_H -#include "squid-old.h" +#include "squid.h" #include "Array.h" /* ****** DOCUMENTATION ***** */ === modified file 'src/StoreIOState.cc' --- src/StoreIOState.cc 2012-01-20 18:55:04 +0000 +++ src/StoreIOState.cc 2012-08-13 09:44:13 +0000 @@ -33,7 +33,9 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "Debug.h" +#include "defines.h" #include "StoreIOState.h" void * === modified file 'src/StoreMeta.cc' --- src/StoreMeta.cc 2012-08-06 17:41:08 +0000 +++ src/StoreMeta.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "StoreMeta.h" #include "Store.h" #include "MemObject.h" === modified file 'src/StoreMetaMD5.cc' --- src/StoreMetaMD5.cc 2012-08-06 17:21:57 +0000 +++ src/StoreMetaMD5.cc 2012-08-13 09:44:13 +0000 @@ -33,10 +33,12 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "md5.h" +#include "MemObject.h" +#include "protos.h" +#include "Store.h" #include "StoreMetaMD5.h" -#include "Store.h" -#include "MemObject.h" bool StoreMetaMD5::validLength(int len) const === modified file 'src/StoreMetaSTD.cc' --- src/StoreMetaSTD.cc 2012-01-20 18:55:04 +0000 +++ src/StoreMetaSTD.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "StoreMetaSTD.h" #include "Store.h" #include "MemObject.h" === modified file 'src/StoreMetaSTDLFS.cc' --- src/StoreMetaSTDLFS.cc 2012-01-20 18:55:04 +0000 +++ src/StoreMetaSTDLFS.cc 2012-08-10 07:35:11 +0000 @@ -32,7 +32,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "StoreMetaSTDLFS.h" #include "Store.h" #include "MemObject.h" === modified file 'src/StoreMetaURL.cc' --- src/StoreMetaURL.cc 2012-08-06 17:21:57 +0000 +++ src/StoreMetaURL.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "StoreMetaURL.h" #include "Store.h" #include "MemObject.h" === modified file 'src/StoreMetaUnpacker.cc' --- src/StoreMetaUnpacker.cc 2012-08-06 17:41:08 +0000 +++ src/StoreMetaUnpacker.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,9 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "defines.h" +#include "Debug.h" #include "StoreMetaUnpacker.h" #include "StoreMeta.h" === modified file 'src/StoreMetaVary.cc' --- src/StoreMetaVary.cc 2012-01-20 18:55:04 +0000 +++ src/StoreMetaVary.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "StoreMetaVary.h" #include "Store.h" #include "MemObject.h" === modified file 'src/StoreSearch.h' --- src/StoreSearch.h 2012-01-20 18:55:04 +0000 +++ src/StoreSearch.h 2012-08-10 11:52:29 +0000 @@ -33,7 +33,7 @@ #ifndef SQUID_STORESEARCH_H #define SQUID_STORESEARCH_H -#include "squid-old.h" +#include "squid.h" #include "RefCount.h" #include "Store.h" === modified file 'src/StoreSwapLogData.h' --- src/StoreSwapLogData.h 2012-04-11 00:15:57 +0000 +++ src/StoreSwapLogData.h 2012-08-10 11:52:29 +0000 @@ -59,7 +59,10 @@ * the value for MemObject->swap_hdr_sz. */ -#include "squid-old.h" +#include "squid.h" +#include "md5.h" +#include "MemPool.h" +#include "typedefs.h" //for sfileno /// maintains a 24-bit checksum over integer fields class SwapChecksum24 === modified file 'src/String.cc' --- src/String.cc 2012-07-20 12:44:39 +0000 +++ src/String.cc 2012-08-13 09:44:13 +0000 @@ -33,11 +33,17 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "base/TextException.h" #include "mgr/Registration.h" +#include "profiler/Profiler.h" +#include "protos.h" #include "Store.h" +#if HAVE_LIMITS_H +#include +#endif + int String::psize() const { === modified file 'src/SwapDir.cc' --- src/SwapDir.cc 2012-08-06 17:21:57 +0000 +++ src/SwapDir.cc 2012-08-13 09:44:13 +0000 @@ -32,11 +32,12 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "compat/strtoll.h" +#include "ConfigOption.h" +#include "protos.h" +#include "StoreFileSystem.h" #include "SwapDir.h" -#include "StoreFileSystem.h" -#include "ConfigOption.h" SwapDir::SwapDir(char const *aType): theType(aType), max_size(0), === modified file 'src/WinSvc.cc' --- src/WinSvc.cc 2012-08-06 17:21:57 +0000 +++ src/WinSvc.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "squid_windows.h" #if _SQUID_MSWIN_ === modified file 'src/acl/Acl.cc' --- src/acl/Acl.cc 2012-08-06 17:41:08 +0000 +++ src/acl/Acl.cc 2012-08-10 11:52:29 +0000 @@ -34,10 +34,11 @@ #include "squid.h" #include "acl/Acl.h" #include "acl/Checklist.h" +#include "anyp/PortCfg.h" #include "ConfigParser.h" #include "Debug.h" #include "dlink.h" -#include "anyp/PortCfg.h" +#include "globals.h" const char *AclMatchedName = NULL; === modified file 'src/acl/Acl.h' --- src/acl/Acl.h 2012-07-19 00:12:22 +0000 +++ src/acl/Acl.h 2012-08-10 11:52:29 +0000 @@ -37,7 +37,10 @@ #include "Array.h" #include "cbdata.h" +#include "defines.h" #include "dlink.h" +#include "MemPool.h" +#include "structs.h" //for Config #if HAVE_OSTREAM #include === modified file 'src/acl/Arp.cc' --- src/acl/Arp.cc 2012-08-06 17:41:08 +0000 +++ src/acl/Arp.cc 2012-08-10 11:52:29 +0000 @@ -32,14 +32,16 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #if USE_SQUID_EUI #include "acl/Arp.h" #include "acl/FilledChecklist.h" +#include "Debug.h" #include "eui/Eui48.h" #include "ip/Address.h" +#include "protos.h" #include "wordlist.h" static void aclParseArpList(SplayNode **curlist); === modified file 'src/acl/Asn.cc' --- src/acl/Asn.cc 2012-08-06 17:21:57 +0000 +++ src/acl/Asn.cc 2012-08-10 11:52:29 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "mgr/Registration.h" #include "radix.h" #include "HttpRequest.h" @@ -48,6 +48,7 @@ #include "HttpReply.h" #include "ipcache.h" #include "forward.h" +#include "protos.h" #include "wordlist.h" #define WHOIS_PORT 43 === modified file 'src/acl/Browser.cc' --- src/acl/Browser.cc 2012-01-20 18:55:04 +0000 +++ src/acl/Browser.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/Checklist.h" #include "acl/Browser.h" #include "acl/RegexData.h" === modified file 'src/acl/Certificate.cc' --- src/acl/Certificate.cc 2012-01-20 18:55:04 +0000 +++ src/acl/Certificate.cc 2012-08-10 11:52:29 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" /* MS Visual Studio Projects are monolithic, so we need the following * #if to exclude the SSL code from compile process when not needed. @@ -44,8 +44,10 @@ #include "acl/Certificate.h" #include "acl/Checklist.h" #include "acl/CertificateData.h" +#include "HttpRequest.h" //must be included before client_side.h +#include "client_side.h" #include "fde.h" -#include "client_side.h" +#include "globals.h" int === modified file 'src/acl/CertificateData.cc' --- src/acl/CertificateData.cc 2012-01-20 18:55:04 +0000 +++ src/acl/CertificateData.cc 2012-08-10 11:52:29 +0000 @@ -34,9 +34,10 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/CertificateData.h" #include "acl/Checklist.h" +#include "protos.h" #include "wordlist.h" ACLCertificateData::ACLCertificateData(SSLGETATTRIBUTE *sslStrategy) : attribute (NULL), values (), sslAttributeCall (sslStrategy) === modified file 'src/acl/Checklist.cc' --- src/acl/Checklist.cc 2012-06-19 16:08:52 +0000 +++ src/acl/Checklist.cc 2012-08-10 11:52:29 +0000 @@ -33,8 +33,10 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/Checklist.h" +#include "Debug.h" +#include "profiler/Profiler.h" void ACLChecklist::matchNonBlocking() === modified file 'src/acl/DestinationDomain.cc' --- src/acl/DestinationDomain.cc 2012-01-20 18:55:04 +0000 +++ src/acl/DestinationDomain.cc 2012-08-10 11:52:29 +0000 @@ -34,13 +34,14 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/DestinationDomain.h" #include "acl/Checklist.h" #include "acl/RegexData.h" #include "acl/DomainData.h" #include "HttpRequest.h" #include "ipcache.h" +#include "protos.h" //for fqdncache_gethostbyaddr DestinationDomainLookup DestinationDomainLookup::instance_; === modified file 'src/acl/DestinationIp.cc' --- src/acl/DestinationIp.cc 2012-07-02 12:28:10 +0000 +++ src/acl/DestinationIp.cc 2012-08-13 09:44:13 +0000 @@ -33,12 +33,12 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/DestinationIp.h" #include "acl/FilledChecklist.h" +#include "client_side.h" #include "comm/Connection.h" #include "HttpRequest.h" -// for Config.* #include "structs.h" char const * === modified file 'src/acl/DomainData.cc' --- src/acl/DomainData.cc 2012-01-20 18:55:04 +0000 +++ src/acl/DomainData.cc 2012-08-10 11:52:29 +0000 @@ -34,9 +34,11 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/DomainData.h" #include "acl/Checklist.h" +#include "Debug.h" +#include "protos.h" #include "wordlist.h" template === modified file 'src/acl/Eui64.cc' --- src/acl/Eui64.cc 2012-08-06 17:41:08 +0000 +++ src/acl/Eui64.cc 2012-08-10 11:52:29 +0000 @@ -32,14 +32,16 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #if USE_SQUID_EUI #include "acl/Eui64.h" #include "acl/FilledChecklist.h" +#include "Debug.h" #include "eui/Eui64.h" #include "ip/Address.h" +#include "protos.h" #include "wordlist.h" static void aclParseEuiList(SplayNode **curlist); === modified file 'src/acl/ExtUser.cc' --- src/acl/ExtUser.cc 2012-01-20 18:55:04 +0000 +++ src/acl/ExtUser.cc 2012-08-10 11:52:29 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #if USE_AUTH @@ -43,7 +43,6 @@ #include "acl/RegexData.h" #include "acl/UserData.h" #include "client_side.h" -#include "HttpRequest.h" ACLExtUser::~ACLExtUser() { === modified file 'src/acl/FilledChecklist.cc' --- src/acl/FilledChecklist.cc 2012-06-28 18:26:44 +0000 +++ src/acl/FilledChecklist.cc 2012-08-13 12:14:00 +0000 @@ -1,14 +1,15 @@ -#include "squid-old.h" +#include "squid.h" +#include "acl/FilledChecklist.h" +#include "client_side.h" +#include "comm/Connection.h" +#include "comm/forward.h" +#include "HttpReply.h" #include "HttpRequest.h" -#include "HttpReply.h" -#include "client_side.h" #if USE_AUTH #include "auth/UserRequest.h" #include "auth/AclProxyAuth.h" #endif -#include "acl/FilledChecklist.h" -#include "comm/Connection.h" -#include "comm/forward.h" + CBDATA_CLASS_INIT(ACLFilledChecklist); === modified file 'src/acl/FilledChecklist.h' --- src/acl/FilledChecklist.h 2012-08-07 15:12:08 +0000 +++ src/acl/FilledChecklist.h 2012-08-13 12:14:00 +0000 @@ -11,6 +11,7 @@ class ExternalACLEntry; class ConnStateData; +class HttpRequest; /** \ingroup ACLAPI ACLChecklist filled with specific data, representing Squid and transaction === modified file 'src/acl/Gadgets.cc' --- src/acl/Gadgets.cc 2012-08-06 17:41:08 +0000 +++ src/acl/Gadgets.cc 2012-08-10 11:52:29 +0000 @@ -38,14 +38,16 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "acl/Acl.h" #include "acl/Checklist.h" #include "acl/Strategised.h" #include "acl/Gadgets.h" #include "ConfigParser.h" #include "errorpage.h" +#include "globals.h" #include "HttpRequest.h" +#include "protos.h" //for memFree /* does name lookup, returns page_id */ === modified file 'src/acl/HierCode.cc' --- src/acl/HierCode.cc 2012-01-20 18:55:04 +0000 +++ src/acl/HierCode.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "acl/HierCode.h" #include "acl/HierCodeData.h" #include "acl/Checklist.h" === modified file 'src/acl/HierCodeData.cc' --- src/acl/HierCodeData.cc 2012-01-20 18:55:04 +0000 +++ src/acl/HierCodeData.cc 2012-08-10 11:52:29 +0000 @@ -1,7 +1,8 @@ -#include "squid-old.h" +#include "squid.h" #include "acl/HierCodeData.h" #include "acl/Checklist.h" #include "hier_code.h" +#include "protos.h" #include "wordlist.h" ACLHierCodeData::ACLHierCodeData() === modified file 'src/acl/HttpHeaderData.cc' --- src/acl/HttpHeaderData.cc 2012-01-20 18:55:04 +0000 +++ src/acl/HttpHeaderData.cc 2012-08-10 11:52:29 +0000 @@ -34,11 +34,13 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/HttpHeaderData.h" #include "acl/Checklist.h" #include "acl/Acl.h" #include "acl/RegexData.h" +#include "Debug.h" +#include "protos.h" #include "wordlist.h" #include "ConfigParser.h" === modified file 'src/acl/HttpRepHeader.cc' --- src/acl/HttpRepHeader.cc 2012-01-20 18:55:04 +0000 +++ src/acl/HttpRepHeader.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/HttpRepHeader.h" #include "acl/HttpHeaderData.h" #include "acl/Checklist.h" === modified file 'src/acl/HttpReqHeader.cc' --- src/acl/HttpReqHeader.cc 2012-01-20 18:55:04 +0000 +++ src/acl/HttpReqHeader.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/HttpReqHeader.h" #include "acl/HttpHeaderData.h" #include "acl/Checklist.h" === modified file 'src/acl/HttpStatus.cc' --- src/acl/HttpStatus.cc 2012-08-06 17:41:08 +0000 +++ src/acl/HttpStatus.cc 2012-08-10 11:52:29 +0000 @@ -35,16 +35,18 @@ */ #include "squid.h" -#if _SQUID_CYGWIN_ -#include -#endif -#include "squid-old.h" #include "acl/HttpStatus.h" #include "acl/FilledChecklist.h" +#include "Debug.h" #include "HttpReply.h" +#include "protos.h" #include "wordlist.h" +#if HAVE_LIMITS_H +#include +#endif + static void aclParseHTTPStatusList(SplayNode **curlist); static int aclHTTPStatusCompare(acl_httpstatus_data * const &a, acl_httpstatus_data * const &b); static int aclMatchHTTPStatus(SplayNode **dataptr, http_status status); === modified file 'src/acl/IntRange.cc' --- src/acl/IntRange.cc 2012-08-06 17:41:08 +0000 +++ src/acl/IntRange.cc 2012-08-10 11:52:29 +0000 @@ -34,10 +34,12 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/IntRange.h" +#include "Debug.h" #include "wordlist.h" #include "Parsing.h" +#include "protos.h" /* explicit instantiation required for some systems */ /** \cond AUTODOCS-IGNORE */ === modified file 'src/acl/Ip.cc' --- src/acl/Ip.cc 2012-08-06 17:41:08 +0000 +++ src/acl/Ip.cc 2012-08-10 11:52:29 +0000 @@ -33,12 +33,13 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" -//#include "compat/getaddrinfo.h" +#include "squid.h" #include "acl/Ip.h" #include "acl/Checklist.h" +#include "Debug.h" #include "ip/tools.h" #include "MemBuf.h" +#include "protos.h" #include "wordlist.h" void * === modified file 'src/acl/LocalIp.cc' --- src/acl/LocalIp.cc 2012-01-20 18:55:04 +0000 +++ src/acl/LocalIp.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/LocalIp.h" #include "acl/FilledChecklist.h" === modified file 'src/acl/LocalPort.cc' --- src/acl/LocalPort.cc 2012-01-20 18:55:04 +0000 +++ src/acl/LocalPort.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/LocalPort.h" #include "acl/IntRange.h" #include "acl/Checklist.h" === modified file 'src/acl/MaxConnection.cc' --- src/acl/MaxConnection.cc 2012-08-06 17:41:08 +0000 +++ src/acl/MaxConnection.cc 2012-08-10 11:52:29 +0000 @@ -34,13 +34,13 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/FilledChecklist.h" #include "acl/MaxConnection.h" +#include "Debug.h" +#include "protos.h" #include "wordlist.h" - - ACL * ACLMaxConnection::clone() const { === modified file 'src/acl/Method.cc' --- src/acl/Method.cc 2012-01-20 18:55:04 +0000 +++ src/acl/Method.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/Method.h" #include "acl/MethodData.h" #include "acl/Checklist.h" === modified file 'src/acl/Method.h' --- src/acl/Method.h 2009-03-08 21:53:27 +0000 +++ src/acl/Method.h 2012-08-10 11:52:29 +0000 @@ -37,13 +37,14 @@ #include "acl/Strategy.h" #include "acl/Strategised.h" +#include "HttpRequestMethod.h" /// \ingroup ACLAPI class ACLMethodStrategy : public ACLStrategy { public: - virtual int match (ACLData * &, ACLFilledChecklist *); + virtual int match (ACLData * &, ACLFilledChecklist *); virtual bool requiresRequest() const {return true;} static ACLMethodStrategy *Instance(); === modified file 'src/acl/MethodData.cc' --- src/acl/MethodData.cc 2012-01-20 18:55:04 +0000 +++ src/acl/MethodData.cc 2012-08-10 11:52:29 +0000 @@ -34,10 +34,11 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/MethodData.h" #include "acl/Checklist.h" #include "HttpRequestMethod.h" +#include "protos.h" #include "wordlist.h" int ACLMethodData::ThePurgeCount = 0; === modified file 'src/acl/MethodData.h' --- src/acl/MethodData.h 2009-07-27 01:41:02 +0000 +++ src/acl/MethodData.h 2012-08-10 11:52:29 +0000 @@ -38,6 +38,7 @@ #include "acl/Acl.h" #include "acl/Data.h" #include "CbDataList.h" +#include "HttpRequestMethod.h" /// \ingroup ACLAPI class ACLMethodData : public ACLData === modified file 'src/acl/MyPortName.cc' --- src/acl/MyPortName.cc 2012-04-25 05:29:20 +0000 +++ src/acl/MyPortName.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/MyPortName.h" #include "acl/StringData.h" #include "acl/Checklist.h" === modified file 'src/acl/PeerName.cc' --- src/acl/PeerName.cc 2012-08-13 07:24:50 +0000 +++ src/acl/PeerName.cc 2012-08-13 09:45:17 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "acl/PeerName.h" #include "acl/RegexData.h" #include "acl/StringData.h" === modified file 'src/acl/Protocol.cc' --- src/acl/Protocol.cc 2012-01-20 18:55:04 +0000 +++ src/acl/Protocol.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/Protocol.h" #include "acl/ProtocolData.h" #include "acl/Checklist.h" === modified file 'src/acl/ProtocolData.cc' --- src/acl/ProtocolData.cc 2012-01-20 18:55:04 +0000 +++ src/acl/ProtocolData.cc 2012-08-10 11:52:29 +0000 @@ -34,9 +34,11 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/ProtocolData.h" #include "acl/Checklist.h" +#include "Debug.h" +#include "protos.h" #include "URLScheme.h" #include "wordlist.h" === modified file 'src/acl/Random.cc' --- src/acl/Random.cc 2012-08-06 17:41:08 +0000 +++ src/acl/Random.cc 2012-08-10 11:52:29 +0000 @@ -32,10 +32,12 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/FilledChecklist.h" #include "acl/Random.h" +#include "Debug.h" +#include "protos.h" #include "wordlist.h" ACL * === modified file 'src/acl/Referer.cc' --- src/acl/Referer.cc 2012-01-20 18:55:04 +0000 +++ src/acl/Referer.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/Referer.h" #include "acl/Checklist.h" #include "acl/RegexData.h" === modified file 'src/acl/RegexData.cc' --- src/acl/RegexData.cc 2012-07-23 15:15:27 +0000 +++ src/acl/RegexData.cc 2012-08-10 11:52:29 +0000 @@ -36,12 +36,14 @@ * Copyright (c) 2011, Marcus Kool */ -#include "squid-old.h" +#include "squid.h" #include "acl/RegexData.h" #include "acl/Checklist.h" #include "acl/Acl.h" +#include "ConfigParser.h" +#include "Debug.h" +#include "protos.h" #include "wordlist.h" -#include "ConfigParser.h" static void aclDestroyRegexList(relist * data) === modified file 'src/acl/ReplyMimeType.cc' --- src/acl/ReplyMimeType.cc 2012-01-20 18:55:04 +0000 +++ src/acl/ReplyMimeType.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/ReplyMimeType.h" #include "acl/Checklist.h" #include "acl/RegexData.h" === modified file 'src/acl/RequestMimeType.cc' --- src/acl/RequestMimeType.cc 2012-01-20 18:55:04 +0000 +++ src/acl/RequestMimeType.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/RequestMimeType.h" #include "acl/Checklist.h" #include "acl/RegexData.h" === modified file 'src/acl/SourceDomain.cc' --- src/acl/SourceDomain.cc 2012-01-20 18:55:04 +0000 +++ src/acl/SourceDomain.cc 2012-08-10 11:52:29 +0000 @@ -34,12 +34,13 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/SourceDomain.h" #include "acl/Checklist.h" #include "acl/RegexData.h" #include "acl/DomainData.h" #include "HttpRequest.h" +#include "protos.h" //for fqdncache_gethostbyaddr SourceDomainLookup SourceDomainLookup::instance_; === modified file 'src/acl/SourceIp.cc' --- src/acl/SourceIp.cc 2012-01-20 18:55:04 +0000 +++ src/acl/SourceIp.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/SourceIp.h" #include "acl/FilledChecklist.h" === modified file 'src/acl/SslError.cc' --- src/acl/SslError.cc 2012-06-19 21:51:49 +0000 +++ src/acl/SslError.cc 2012-08-10 07:35:11 +0000 @@ -3,7 +3,7 @@ * $Id$ */ -#include "squid-old.h" +#include "squid.h" #include "acl/SslError.h" #include "acl/SslErrorData.h" #include "acl/Checklist.h" === modified file 'src/acl/SslErrorData.cc' --- src/acl/SslErrorData.cc 2012-06-19 21:51:49 +0000 +++ src/acl/SslErrorData.cc 2012-08-10 11:52:29 +0000 @@ -2,9 +2,10 @@ * $Id$ */ -#include "squid-old.h" +#include "squid.h" #include "acl/SslErrorData.h" #include "acl/Checklist.h" +#include "protos.h" #include "wordlist.h" ACLSslErrorData::ACLSslErrorData() : values (NULL) === modified file 'src/acl/Strategised.cc' --- src/acl/Strategised.cc 2012-01-20 18:55:04 +0000 +++ src/acl/Strategised.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/Strategised.h" /* === modified file 'src/acl/StringData.cc' --- src/acl/StringData.cc 2012-01-20 18:55:04 +0000 +++ src/acl/StringData.cc 2012-08-10 11:52:29 +0000 @@ -34,12 +34,12 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/StringData.h" #include "acl/Checklist.h" +#include "protos.h" #include "wordlist.h" - ACLStringData::ACLStringData() : values (NULL) {} === modified file 'src/acl/Tag.cc' --- src/acl/Tag.cc 2012-01-20 18:55:04 +0000 +++ src/acl/Tag.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2009, Henrik Nordstrom */ -#include "squid-old.h" +#include "squid.h" #include "acl/Tag.h" #include "acl/StringData.h" #include "acl/Checklist.h" === modified file 'src/acl/Time.cc' --- src/acl/Time.cc 2012-01-20 18:55:04 +0000 +++ src/acl/Time.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/Time.h" #include "acl/TimeData.h" #include "SquidTime.h" === modified file 'src/acl/TimeData.cc' --- src/acl/TimeData.cc 2012-08-06 17:41:08 +0000 +++ src/acl/TimeData.cc 2012-08-10 11:52:29 +0000 @@ -34,9 +34,11 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/TimeData.h" #include "acl/Checklist.h" +#include "Debug.h" +#include "protos.h" #include "wordlist.h" ACLTimeData::ACLTimeData () : weekbits (0), start (0), stop (0), next (NULL) {} === modified file 'src/acl/Url.cc' --- src/acl/Url.cc 2012-01-20 18:55:04 +0000 +++ src/acl/Url.cc 2012-08-10 11:52:29 +0000 @@ -34,10 +34,11 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/Url.h" #include "acl/Checklist.h" #include "acl/RegexData.h" +#include "protos.h" //for urlCanonical #include "rfc1738.h" int === modified file 'src/acl/UrlPath.cc' --- src/acl/UrlPath.cc 2012-01-20 18:55:04 +0000 +++ src/acl/UrlPath.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/UrlPath.h" #include "acl/Checklist.h" #include "acl/RegexData.h" === modified file 'src/acl/UrlPort.cc' --- src/acl/UrlPort.cc 2012-01-20 18:55:04 +0000 +++ src/acl/UrlPort.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/UrlPort.h" #include "acl/IntRange.h" #include "acl/Checklist.h" === modified file 'src/acl/UserData.cc' --- src/acl/UserData.cc 2012-01-20 18:55:04 +0000 +++ src/acl/UserData.cc 2012-08-10 11:52:29 +0000 @@ -34,9 +34,10 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/UserData.h" #include "acl/Checklist.h" +#include "Debug.h" #include "wordlist.h" #include "ConfigParser.h" === modified file 'src/adaptation/AccessCheck.cc' --- src/adaptation/AccessCheck.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/AccessCheck.cc 2012-08-13 13:58:33 +0000 @@ -1,17 +1,18 @@ -#include "squid-old.h" -#include "structs.h" - -#include "ConfigParser.h" -#include "HttpRequest.h" -#include "HttpReply.h" +#include "squid.h" #include "acl/FilledChecklist.h" +#include "adaptation/AccessCheck.h" +#include "adaptation/AccessRule.h" +#include "adaptation/Config.h" #include "adaptation/Initiator.h" #include "adaptation/Service.h" #include "adaptation/ServiceGroups.h" -#include "adaptation/AccessRule.h" -#include "adaptation/Config.h" -#include "adaptation/AccessCheck.h" +#include "base/AsyncJobCalls.h" #include "base/TextException.h" +#include "ConfigParser.h" +#include "globals.h" +#include "HttpReply.h" +#include "HttpRequest.h" +#include "structs.h" /** \cond AUTODOCS-IGNORE */ cbdata_type Adaptation::AccessCheck::CBDATA_AccessCheck = CBDATA_UNKNOWN; === modified file 'src/adaptation/AccessRule.cc' --- src/adaptation/AccessRule.cc 2012-08-06 17:41:08 +0000 +++ src/adaptation/AccessRule.cc 2012-08-10 11:52:29 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "structs.h" #include "ConfigParser.h" @@ -6,7 +6,7 @@ #include "adaptation/AccessRule.h" #include "adaptation/Service.h" #include "adaptation/ServiceGroups.h" - +#include "Debug.h" int Adaptation::AccessRule::LastId = 0; === modified file 'src/adaptation/Config.cc' --- src/adaptation/Config.cc 2012-08-06 17:41:08 +0000 +++ src/adaptation/Config.cc 2012-08-13 13:58:33 +0000 @@ -30,21 +30,21 @@ * */ -#include "squid-old.h" -#include "structs.h" - -#include "ConfigParser.h" +#include "squid.h" +#include "acl/FilledChecklist.h" #include "acl/Gadgets.h" -#include "Store.h" -#include "Array.h" // really Vector -#include "acl/FilledChecklist.h" +#include "adaptation/AccessRule.h" #include "adaptation/Config.h" +#include "adaptation/History.h" #include "adaptation/Service.h" -#include "adaptation/AccessRule.h" #include "adaptation/ServiceGroups.h" -#include "adaptation/History.h" +#include "Array.h" // really Vector +#include "ConfigParser.h" +#include "globals.h" +#include "HttpReply.h" #include "HttpRequest.h" - +#include "Store.h" +#include "structs.h" bool Adaptation::Config::Enabled = false; char *Adaptation::Config::masterx_shared_name = NULL; === modified file 'src/adaptation/Config.h' --- src/adaptation/Config.h 2011-10-29 02:01:54 +0000 +++ src/adaptation/Config.h 2012-08-10 11:52:29 +0000 @@ -6,9 +6,12 @@ #include "base/AsyncCall.h" #include "adaptation/forward.h" #include "adaptation/Elements.h" +#include "SquidString.h" class acl_access; class ConfigParser; +class HttpRequest; +class HttpReply; namespace Adaptation { === modified file 'src/adaptation/Elements.cc' --- src/adaptation/Elements.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/Elements.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "adaptation/Elements.h" const char *Adaptation::crlf = "\r\n"; === modified file 'src/adaptation/History.cc' --- src/adaptation/History.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/History.cc 2012-08-13 13:58:33 +0000 @@ -3,6 +3,7 @@ #include "adaptation/History.h" #include "base/TextException.h" #include "globals.h" +#include "protos.h" #include "SquidTime.h" /// impossible services value to identify unset theNextServices === modified file 'src/adaptation/Initiate.cc' --- src/adaptation/Initiate.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/Initiate.cc 2012-08-10 07:35:11 +0000 @@ -2,7 +2,7 @@ * DEBUG: section 93 ICAP (RFC 3507) Client */ -#include "squid-old.h" +#include "squid.h" #include "HttpMsg.h" #include "adaptation/Answer.h" #include "adaptation/Initiator.h" === modified file 'src/adaptation/Initiator.cc' --- src/adaptation/Initiator.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/Initiator.cc 2012-08-10 07:35:11 +0000 @@ -2,7 +2,7 @@ * DEBUG: section 93 ICAP (RFC 3507) Client */ -#include "squid-old.h" +#include "squid.h" #include "adaptation/Initiate.h" #include "adaptation/Initiator.h" #include "base/AsyncJobCalls.h" === modified file 'src/adaptation/Iterator.cc' --- src/adaptation/Iterator.cc 2012-04-20 17:14:56 +0000 +++ src/adaptation/Iterator.cc 2012-08-10 07:35:11 +0000 @@ -2,7 +2,7 @@ * DEBUG: section 93 Adaptation */ -#include "squid-old.h" +#include "squid.h" #include "adaptation/Answer.h" #include "adaptation/Config.h" #include "adaptation/Iterator.h" === modified file 'src/adaptation/Message.cc' --- src/adaptation/Message.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/Message.cc 2012-08-10 07:35:11 +0000 @@ -2,7 +2,7 @@ * DEBUG: section 93 Adaptation */ -#include "squid-old.h" +#include "squid.h" #include "adaptation/Message.h" #include "base/TextException.h" #include "HttpMsg.h" === modified file 'src/adaptation/Service.cc' --- src/adaptation/Service.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/Service.cc 2012-08-10 07:35:11 +0000 @@ -2,7 +2,7 @@ * DEBUG: section 93 Adaptation */ -#include "squid-old.h" +#include "squid.h" #include "HttpRequest.h" #include "adaptation/ServiceFilter.h" #include "adaptation/Service.h" === modified file 'src/adaptation/ServiceConfig.cc' --- src/adaptation/ServiceConfig.cc 2012-08-06 17:41:08 +0000 +++ src/adaptation/ServiceConfig.cc 2012-08-10 07:35:11 +0000 @@ -2,9 +2,11 @@ * DEBUG: section 93 Adaptation */ -#include "squid-old.h" +#include "squid.h" +#include "adaptation/ServiceConfig.h" #include "ConfigParser.h" -#include "adaptation/ServiceConfig.h" +#include "Debug.h" +#include "globals.h" #include "ip/tools.h" #include === modified file 'src/adaptation/ServiceFilter.cc' --- src/adaptation/ServiceFilter.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/ServiceFilter.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "HttpRequest.h" #include "HttpReply.h" #include "adaptation/ServiceFilter.h" === modified file 'src/adaptation/ServiceGroups.cc' --- src/adaptation/ServiceGroups.cc 2012-08-06 17:41:08 +0000 +++ src/adaptation/ServiceGroups.cc 2012-08-13 13:58:33 +0000 @@ -1,12 +1,14 @@ -#include "squid-old.h" - -#include "ConfigParser.h" +#include "squid.h" +#include "adaptation/AccessRule.h" #include "adaptation/Config.h" -#include "adaptation/AccessRule.h" #include "adaptation/DynamicGroupCfg.h" #include "adaptation/Service.h" #include "adaptation/ServiceFilter.h" #include "adaptation/ServiceGroups.h" +#include "ConfigParser.h" +#include "Debug.h" +#include "protos.h" +#include "wordlist.h" Adaptation::ServiceGroup::ServiceGroup(const String &aKind, bool allSame): === modified file 'src/adaptation/ecap/Config.cc' --- src/adaptation/ecap/Config.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/ecap/Config.cc 2012-08-10 07:35:11 +0000 @@ -2,7 +2,7 @@ * $Id$ * DEBUG: section 93 eCAP Interface */ -#include "squid-old.h" +#include "squid.h" #include "adaptation/ecap/Host.h" #include "adaptation/ecap/ServiceRep.h" === modified file 'src/adaptation/ecap/Host.cc' --- src/adaptation/ecap/Host.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/ecap/Host.cc 2012-08-10 07:35:11 +0000 @@ -1,7 +1,7 @@ /* * DEBUG: section 93 eCAP Interface */ -#include "squid-old.h" +#include "squid.h" #include #include #include === modified file 'src/adaptation/ecap/MessageRep.cc' --- src/adaptation/ecap/MessageRep.cc 2012-06-11 06:03:50 +0000 +++ src/adaptation/ecap/MessageRep.cc 2012-08-10 07:35:11 +0000 @@ -1,7 +1,7 @@ /* * DEBUG: section 93 eCAP Interface */ -#include "squid-old.h" +#include "squid.h" #include "HttpRequest.h" #include "HttpReply.h" #include "BodyPipe.h" === modified file 'src/adaptation/ecap/ServiceRep.cc' --- src/adaptation/ecap/ServiceRep.cc 2012-08-06 17:21:57 +0000 +++ src/adaptation/ecap/ServiceRep.cc 2012-08-10 07:35:11 +0000 @@ -1,7 +1,7 @@ /* * DEBUG: section 93 eCAP Interface */ -#include "squid-old.h" +#include "squid.h" #include #include #include === modified file 'src/adaptation/ecap/XactionRep.cc' --- src/adaptation/ecap/XactionRep.cc 2012-05-31 00:20:44 +0000 +++ src/adaptation/ecap/XactionRep.cc 2012-08-10 07:35:11 +0000 @@ -1,7 +1,7 @@ /* * DEBUG: section 93 eCAP Interface */ -#include "squid-old.h" +#include "squid.h" #include #include #include === modified file 'src/adaptation/icap/Client.cc' --- src/adaptation/icap/Client.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/icap/Client.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,5 @@ -#include "squid-old.h" +#include "squid.h" +#include "Debug.h" #include "adaptation/icap/Client.h" void Adaptation::Icap::InitModule() === modified file 'src/adaptation/icap/Config.cc' --- src/adaptation/icap/Config.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/icap/Config.cc 2012-08-10 07:35:11 +0000 @@ -32,7 +32,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "ConfigParser.h" #include "Store.h" === modified file 'src/adaptation/icap/Elements.cc' --- src/adaptation/icap/Elements.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/icap/Elements.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "adaptation/icap/Elements.h" // TODO: remove this file? === modified file 'src/adaptation/icap/History.cc' --- src/adaptation/icap/History.cc 2012-08-06 17:21:57 +0000 +++ src/adaptation/icap/History.cc 2012-08-13 13:58:33 +0000 @@ -1,5 +1,6 @@ -#include "squid-old.h" +#include "squid.h" #include "adaptation/icap/History.h" +#include "Debug.h" #include "globals.h" #include "SquidTime.h" === modified file 'src/adaptation/icap/History.h' --- src/adaptation/icap/History.h 2011-02-18 19:39:05 +0000 +++ src/adaptation/icap/History.h 2012-08-10 07:35:11 +0000 @@ -1,8 +1,9 @@ #ifndef SQUID_ICAPHISTORY_H #define SQUID_ICAPHISTORY_H +#include "enums.h" #include "RefCount.h" -#include "enums.h" +#include "SquidString.h" namespace Adaptation { === modified file 'src/adaptation/icap/Launcher.cc' --- src/adaptation/icap/Launcher.cc 2012-04-20 17:14:56 +0000 +++ src/adaptation/icap/Launcher.cc 2012-08-10 11:52:29 +0000 @@ -2,7 +2,7 @@ * DEBUG: section 93 ICAP (RFC 3507) Client */ -#include "squid-old.h" +#include "squid.h" #include "acl/FilledChecklist.h" #include "adaptation/Answer.h" #include "adaptation/icap/Launcher.h" @@ -10,6 +10,7 @@ #include "adaptation/icap/ServiceRep.h" #include "adaptation/icap/Config.h" #include "base/TextException.h" +#include "globals.h" #include "HttpMsg.h" #include "HttpRequest.h" #include "HttpReply.h" === modified file 'src/adaptation/icap/ModXact.cc' --- src/adaptation/icap/ModXact.cc 2012-07-19 00:12:22 +0000 +++ src/adaptation/icap/ModXact.cc 2012-08-13 13:58:33 +0000 @@ -2,7 +2,7 @@ * DEBUG: section 93 ICAP (RFC 3507) Client */ -#include "squid-old.h" +#include "squid.h" #include "AccessLogEntry.h" #include "adaptation/Answer.h" #include "adaptation/History.h" @@ -19,11 +19,12 @@ #include "ChunkedCodingParser.h" #include "comm.h" #include "comm/Connection.h" +#include "err_detail_type.h" #include "HttpMsg.h" +#include "HttpReply.h" #include "HttpRequest.h" -#include "HttpReply.h" +#include "protos.h" #include "SquidTime.h" -#include "err_detail_type.h" // flow and terminology: // HTTP| --> receive --> encode --> write --> |network === modified file 'src/adaptation/icap/OptXact.cc' --- src/adaptation/icap/OptXact.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/icap/OptXact.cc 2012-08-13 13:58:33 +0000 @@ -2,17 +2,17 @@ * DEBUG: section 93 ICAP (RFC 3507) Client */ -#include "squid-old.h" -#include "comm.h" -#include "HttpReply.h" - +#include "squid.h" #include "adaptation/Answer.h" +#include "adaptation/icap/Config.h" +#include "adaptation/icap/Options.h" #include "adaptation/icap/OptXact.h" -#include "adaptation/icap/Options.h" -#include "adaptation/icap/Config.h" #include "base/TextException.h" +#include "comm.h" +#include "HttpReply.h" +#include "HttpRequest.h" +#include "protos.h" #include "SquidTime.h" -#include "HttpRequest.h" CBDATA_NAMESPACED_CLASS_INIT(Adaptation::Icap, OptXact); CBDATA_NAMESPACED_CLASS_INIT(Adaptation::Icap, OptXactLauncher); === modified file 'src/adaptation/icap/Options.cc' --- src/adaptation/icap/Options.cc 2012-01-20 18:55:04 +0000 +++ src/adaptation/icap/Options.cc 2012-08-13 13:58:33 +0000 @@ -1,8 +1,9 @@ -#include "squid-old.h" +#include "squid.h" #include "adaptation/icap/Config.h" #include "adaptation/icap/Options.h" #include "base/TextException.h" #include "HttpReply.h" +#include "protos.h" #include "SquidTime.h" #include "wordlist.h" === modified file 'src/adaptation/icap/Options.h' --- src/adaptation/icap/Options.h 2012-01-20 18:55:04 +0000 +++ src/adaptation/icap/Options.h 2012-08-13 13:58:33 +0000 @@ -34,9 +34,10 @@ #ifndef SQUID_ICAPOPTIONS_H #define SQUID_ICAPOPTIONS_H -#include "squid-old.h" +#include "squid.h" #include "adaptation/icap/ServiceRep.h" +class HttpHeader; class wordlist; namespace Adaptation === modified file 'src/adaptation/icap/ServiceRep.cc' --- src/adaptation/icap/ServiceRep.cc 2012-08-06 17:21:57 +0000 +++ src/adaptation/icap/ServiceRep.cc 2012-08-13 13:58:33 +0000 @@ -2,7 +2,7 @@ * DEBUG: section 93 ICAP (RFC 3507) Client */ -#include "squid-old.h" +#include "squid.h" #include "adaptation/Answer.h" #include "adaptation/icap/Config.h" #include "adaptation/icap/ModXact.h" @@ -12,10 +12,12 @@ #include "base/TextException.h" #include "comm/Connection.h" #include "ConfigParser.h" +#include "Debug.h" +#include "fde.h" +#include "HttpReply.h" #include "ip/tools.h" -#include "HttpReply.h" +#include "protos.h" #include "SquidTime.h" -#include "fde.h" CBDATA_NAMESPACED_CLASS_INIT(Adaptation::Icap, ServiceRep); === modified file 'src/adaptation/icap/Xaction.cc' --- src/adaptation/icap/Xaction.cc 2012-07-17 14:11:24 +0000 +++ src/adaptation/icap/Xaction.cc 2012-08-13 13:58:33 +0000 @@ -2,26 +2,28 @@ * DEBUG: section 93 ICAP (RFC 3507) Client */ -#include "squid-old.h" +#include "squid.h" +#include "acl/FilledChecklist.h" +#include "adaptation/icap/Config.h" +#include "adaptation/icap/Launcher.h" +#include "adaptation/icap/Xaction.h" +#include "base/TextException.h" #include "comm.h" #include "comm/Connection.h" #include "comm/ConnOpener.h" #include "comm/Write.h" #include "CommCalls.h" +#include "err_detail_type.h" +#include "fde.h" +#include "globals.h" #include "HttpMsg.h" -#include "adaptation/icap/Xaction.h" -#include "adaptation/icap/Launcher.h" -#include "adaptation/icap/Config.h" -#include "base/TextException.h" -#include "pconn.h" +#include "HttpReply.h" #include "HttpRequest.h" -#include "HttpReply.h" +#include "icap_log.h" #include "ipcache.h" -#include "acl/FilledChecklist.h" -#include "icap_log.h" -#include "fde.h" +#include "pconn.h" +#include "protos.h" #include "SquidTime.h" -#include "err_detail_type.h" //CBDATA_NAMESPACED_CLASS_INIT(Adaptation::Icap, Xaction); === modified file 'src/adaptation/icap/icap_log.cc' --- src/adaptation/icap/icap_log.cc 2012-07-17 14:11:24 +0000 +++ src/adaptation/icap/icap_log.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "icap_log.h" #include "AccessLogEntry.h" #include "log/File.h" === modified file 'src/adaptation/icap/icap_log.h' --- src/adaptation/icap/icap_log.h 2012-07-17 14:11:24 +0000 +++ src/adaptation/icap/icap_log.h 2012-08-10 07:35:11 +0000 @@ -1,6 +1,7 @@ #ifndef ICAP_LOG_H_ #define ICAP_LOG_H_ +#include "AccessLogEntry.h" #include "RefCount.h" typedef RefCount AccessLogEntryPointer; === modified file 'src/auth/Acl.cc' --- src/auth/Acl.cc 2012-06-19 16:08:52 +0000 +++ src/auth/Acl.cc 2012-08-13 09:44:13 +0000 @@ -1,9 +1,41 @@ -#include "squid-old.h" +/* + * DEBUG: section 28 Access Control + * AUTHOR: Duane Wessels + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + */ + +#include "squid.h" #include "acl/Acl.h" #include "acl/FilledChecklist.h" #include "auth/UserRequest.h" #include "auth/Acl.h" #include "auth/AclProxyAuth.h" +#include "client_side.h" #include "HttpRequest.h" /** === modified file 'src/auth/Acl.h' --- src/auth/Acl.h 2011-08-14 12:18:57 +0000 +++ src/auth/Acl.h 2012-08-10 07:35:11 +0000 @@ -1,3 +1,34 @@ +/* + * DEBUG: section 28 Access Control + * AUTHOR: Duane Wessels + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + */ + #ifndef SQUID_AUTH_ACL_H #define SQUID_AUTH_ACL_H === modified file 'src/auth/AclMaxUserIp.cc' --- src/auth/AclMaxUserIp.cc 2012-08-06 17:21:57 +0000 +++ src/auth/AclMaxUserIp.cc 2012-08-10 11:52:29 +0000 @@ -34,11 +34,13 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "acl/FilledChecklist.h" #include "auth/Acl.h" #include "auth/AclMaxUserIp.h" #include "auth/UserRequest.h" +#include "Debug.h" +#include "protos.h" #include "wordlist.h" #include "ConfigParser.h" === modified file 'src/auth/AclProxyAuth.cc' --- src/auth/AclProxyAuth.cc 2012-08-06 17:41:08 +0000 +++ src/auth/AclProxyAuth.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "auth/AclProxyAuth.h" #include "auth/Gadgets.h" #include "acl/FilledChecklist.h" === modified file 'src/auth/Config.cc' --- src/auth/Config.cc 2012-01-20 18:55:04 +0000 +++ src/auth/Config.cc 2012-08-10 11:52:29 +0000 @@ -32,9 +32,11 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "auth/Config.h" #include "auth/UserRequest.h" +#include "Debug.h" +#include "globals.h" Auth::ConfigVector Auth::TheConfig; === modified file 'src/auth/Gadgets.cc' --- src/auth/Gadgets.cc 2012-01-20 18:55:04 +0000 +++ src/auth/Gadgets.cc 2012-08-10 11:52:29 +0000 @@ -36,7 +36,7 @@ * They DO NOT perform access control or auditing. * See acl.c for access control and client_side.c for auditing */ -#include "squid-old.h" +#include "squid.h" #include "acl/Acl.h" #include "acl/FilledChecklist.h" #include "client_side.h" @@ -46,6 +46,7 @@ #include "auth/User.h" #include "auth/UserRequest.h" #include "auth/AclProxyAuth.h" +#include "globals.h" #include "HttpReply.h" #include "HttpRequest.h" === modified file 'src/auth/Scheme.cc' --- src/auth/Scheme.cc 2012-01-20 18:55:04 +0000 +++ src/auth/Scheme.cc 2012-08-10 11:52:29 +0000 @@ -33,10 +33,11 @@ * Copyright (c) 2004, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "auth/Scheme.h" #include "auth/Gadgets.h" #include "auth/Config.h" +#include "globals.h" Vector *Auth::Scheme::_Schemes = NULL; === modified file 'src/auth/User.cc' --- src/auth/User.cc 2012-07-10 15:44:23 +0000 +++ src/auth/User.cc 2012-08-10 11:52:29 +0000 @@ -33,7 +33,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "auth/User.h" #include "auth/UserRequest.h" #include "auth/Config.h" @@ -41,6 +41,7 @@ #include "acl/Acl.h" #include "acl/Gadgets.h" #include "event.h" +#include "globals.h" #include "SquidTime.h" #include "Store.h" === modified file 'src/auth/UserRequest.cc' --- src/auth/UserRequest.cc 2012-06-19 23:16:13 +0000 +++ src/auth/UserRequest.cc 2012-08-13 09:44:13 +0000 @@ -39,11 +39,12 @@ * They DO NOT perform access control or auditing. * See acl.c for access control and client_side.c for auditing */ -#include "squid-old.h" +#include "squid.h" #include "auth/Config.h" #include "auth/Scheme.h" #include "auth/UserRequest.h" #include "auth/User.h" +#include "client_side.h" #include "comm/Connection.h" #include "HttpReply.h" #include "HttpRequest.h" === modified file 'src/auth/UserRequest.h' --- src/auth/UserRequest.h 2012-06-19 23:16:13 +0000 +++ src/auth/UserRequest.h 2012-08-10 11:52:29 +0000 @@ -45,9 +45,9 @@ #include "typedefs.h" #include "HttpHeader.h" -class ConnStateData; class HttpReply; class HttpRequest; +class ConnStateData; /** * Maximum length (buffer size) for token strings. === modified file 'src/auth/basic/Scheme.cc' --- src/auth/basic/Scheme.cc 2012-01-20 18:55:04 +0000 +++ src/auth/basic/Scheme.cc 2012-08-10 11:52:29 +0000 @@ -32,6 +32,7 @@ #include "squid.h" #include "auth/basic/Scheme.h" +#include "Debug.h" #include "helper.h" /* for Auth::Config */ === modified file 'src/auth/basic/User.cc' --- src/auth/basic/User.cc 2012-01-20 18:55:04 +0000 +++ src/auth/basic/User.cc 2012-08-10 11:52:29 +0000 @@ -3,6 +3,7 @@ #include "auth/basic/User.h" #include "Debug.h" #include "SquidTime.h" +#include "structs.h" //for ::Config Auth::Basic::User::User(Auth::Config *aConfig) : Auth::User(aConfig), === modified file 'src/auth/basic/UserRequest.cc' --- src/auth/basic/UserRequest.cc 2012-07-23 15:15:27 +0000 +++ src/auth/basic/UserRequest.cc 2012-08-10 11:52:29 +0000 @@ -4,6 +4,7 @@ #include "auth/basic/UserRequest.h" #include "auth/State.h" #include "charset.h" +#include "Debug.h" #include "rfc1738.h" #include "SquidTime.h" === modified file 'src/auth/basic/auth_basic.cc' --- src/auth/basic/auth_basic.cc 2012-07-02 12:28:10 +0000 +++ src/auth/basic/auth_basic.cc 2012-08-10 11:52:29 +0000 @@ -37,7 +37,7 @@ * See acl.c for access control and client_side.c for auditing */ -#include "squid-old.h" +#include "squid.h" #include "auth/basic/auth_basic.h" #include "auth/basic/Scheme.h" #include "auth/basic/User.h" @@ -48,6 +48,7 @@ #include "mgr/Registration.h" #include "Store.h" #include "HttpReply.h" +#include "protos.h" #include "rfc1738.h" #include "uudecode.h" #include "wordlist.h" === modified file 'src/auth/digest/Scheme.cc' --- src/auth/digest/Scheme.cc 2012-01-20 18:55:04 +0000 +++ src/auth/digest/Scheme.cc 2012-08-10 11:52:29 +0000 @@ -32,6 +32,8 @@ #include "squid.h" #include "auth/digest/Scheme.h" +#include "Debug.h" +#include "globals.h" #include "helper.h" Auth::Scheme::Pointer Auth::Digest::Scheme::_instance = NULL; === modified file 'src/auth/digest/User.cc' --- src/auth/digest/User.cc 2012-01-20 18:55:04 +0000 +++ src/auth/digest/User.cc 2012-08-10 11:52:29 +0000 @@ -4,6 +4,7 @@ #include "Debug.h" #include "dlink.h" #include "SquidTime.h" +#include "structs.h" Auth::Digest::User::User(Auth::Config *aConfig) : Auth::User(aConfig), === modified file 'src/auth/digest/UserRequest.cc' --- src/auth/digest/UserRequest.cc 2012-07-23 15:15:27 +0000 +++ src/auth/digest/UserRequest.cc 2012-08-10 11:52:29 +0000 @@ -6,6 +6,7 @@ #include "charset.h" #include "HttpReply.h" #include "HttpRequest.h" +#include "protos.h" #include "SquidTime.h" Auth::Digest::UserRequest::UserRequest() : === modified file 'src/auth/digest/auth_digest.cc' --- src/auth/digest/auth_digest.cc 2012-08-06 17:41:08 +0000 +++ src/auth/digest/auth_digest.cc 2012-08-10 11:52:29 +0000 @@ -37,7 +37,7 @@ * See acl.c for access control and client_side.c for auditing */ -#include "squid-old.h" +#include "squid.h" #include "rfc2617.h" #include "auth/digest/auth_digest.h" #include "auth/digest/Scheme.h" @@ -52,6 +52,7 @@ #include "Store.h" #include "HttpRequest.h" #include "HttpReply.h" +#include "protos.h" #include "wordlist.h" #include "SquidTime.h" === modified file 'src/auth/negotiate/Scheme.cc' --- src/auth/negotiate/Scheme.cc 2012-01-20 18:55:04 +0000 +++ src/auth/negotiate/Scheme.cc 2012-08-10 11:52:29 +0000 @@ -32,6 +32,7 @@ #include "squid.h" #include "auth/negotiate/Scheme.h" +#include "Debug.h" #include "helper.h" Auth::Scheme::Pointer Auth::Negotiate::Scheme::_instance = NULL; === modified file 'src/auth/negotiate/UserRequest.cc' --- src/auth/negotiate/UserRequest.cc 2012-08-06 17:21:57 +0000 +++ src/auth/negotiate/UserRequest.cc 2012-08-13 09:44:13 +0000 @@ -3,9 +3,12 @@ #include "auth/negotiate/UserRequest.h" #include "auth/State.h" #include "auth/User.h" +#include "client_side.h" +#include "globals.h" #include "helper.h" #include "HttpReply.h" #include "HttpRequest.h" +#include "protos.h" #include "SquidTime.h" Auth::Negotiate::UserRequest::UserRequest() === modified file 'src/auth/negotiate/auth_negotiate.cc' --- src/auth/negotiate/auth_negotiate.cc 2012-01-20 18:55:04 +0000 +++ src/auth/negotiate/auth_negotiate.cc 2012-08-10 11:52:29 +0000 @@ -37,7 +37,7 @@ * See acl.c for access control and client_side.c for auditing */ -#include "squid-old.h" +#include "squid.h" #include "auth/negotiate/auth_negotiate.h" #include "auth/Gadgets.h" #include "auth/State.h" @@ -46,6 +46,7 @@ #include "client_side.h" #include "HttpReply.h" #include "HttpRequest.h" +#include "protos.h" #include "SquidTime.h" #include "auth/negotiate/Scheme.h" #include "auth/negotiate/User.h" === modified file 'src/auth/ntlm/Scheme.cc' --- src/auth/ntlm/Scheme.cc 2012-01-20 18:55:04 +0000 +++ src/auth/ntlm/Scheme.cc 2012-08-10 11:52:29 +0000 @@ -33,6 +33,7 @@ #include "squid.h" #include "auth/ntlm/auth_ntlm.h" #include "auth/ntlm/Scheme.h" +#include "Debug.h" #include "helper.h" Auth::Scheme::Pointer Auth::Ntlm::Scheme::_instance = NULL; === modified file 'src/auth/ntlm/UserRequest.cc' --- src/auth/ntlm/UserRequest.cc 2012-08-06 17:21:57 +0000 +++ src/auth/ntlm/UserRequest.cc 2012-08-13 09:44:13 +0000 @@ -3,6 +3,8 @@ #include "auth/ntlm/UserRequest.h" #include "auth/State.h" #include "cbdata.h" +#include "client_side.h" +#include "globals.h" #include "HttpRequest.h" #include "SquidTime.h" === modified file 'src/auth/ntlm/auth_ntlm.cc' --- src/auth/ntlm/auth_ntlm.cc 2012-01-20 18:55:04 +0000 +++ src/auth/ntlm/auth_ntlm.cc 2012-08-10 11:52:29 +0000 @@ -37,7 +37,7 @@ * See acl.c for access control and client_side.c for auditing */ -#include "squid-old.h" +#include "squid.h" #include "auth/Gadgets.h" #include "auth/ntlm/auth_ntlm.h" #include "auth/ntlm/Scheme.h" @@ -49,6 +49,7 @@ #include "client_side.h" #include "HttpReply.h" #include "HttpRequest.h" +#include "protos.h" #include "wordlist.h" #include "SquidTime.h" === modified file 'src/base/AsyncCall.cc' --- src/base/AsyncCall.cc 2012-07-10 20:37:04 +0000 +++ src/base/AsyncCall.cc 2012-08-10 11:52:29 +0000 @@ -2,11 +2,11 @@ * $Id$ */ -#include "squid-old.h" +#include "squid.h" #include "base/AsyncCall.h" #include "base/AsyncCallQueue.h" #include "cbdata.h" - +#include "Debug.h" #include InstanceIdDefinitions(AsyncCall, "call"); === modified file 'src/base/AsyncCallQueue.cc' --- src/base/AsyncCallQueue.cc 2012-01-20 18:55:04 +0000 +++ src/base/AsyncCallQueue.cc 2012-08-10 11:52:29 +0000 @@ -9,6 +9,7 @@ #include "squid.h" #include "base/AsyncCallQueue.h" #include "base/AsyncCall.h" +#include "Debug.h" AsyncCallQueue *AsyncCallQueue::TheInstance = 0; === modified file 'src/base/AsyncCallQueue.h' --- src/base/AsyncCallQueue.h 2012-01-20 18:55:04 +0000 +++ src/base/AsyncCallQueue.h 2012-08-10 07:35:11 +0000 @@ -7,7 +7,7 @@ #ifndef SQUID_ASYNCCALLQUEUE_H #define SQUID_ASYNCCALLQUEUE_H -#include "squid-old.h" +#include "squid.h" #include "base/AsyncCall.h" //class AsyncCall; === modified file 'src/base/AsyncJob.cc' --- src/base/AsyncJob.cc 2012-01-20 18:55:04 +0000 +++ src/base/AsyncJob.cc 2012-08-10 07:35:11 +0000 @@ -2,7 +2,7 @@ * DEBUG: section 93 ICAP (RFC 3507) Client */ -#include "squid-old.h" +#include "squid.h" #include "base/AsyncCall.h" #include "base/AsyncJob.h" #include "base/AsyncJobCalls.h" === modified file 'src/base/AsyncJobCalls.h' --- src/base/AsyncJobCalls.h 2010-10-28 18:52:59 +0000 +++ src/base/AsyncJobCalls.h 2012-08-10 11:52:29 +0000 @@ -8,6 +8,7 @@ #include "base/AsyncJob.h" #include "base/CbcPointer.h" +#include "Debug.h" /** \ingroup AsyncJobAPI === modified file 'src/base/TextException.cc' --- src/base/TextException.cc 2012-07-23 15:15:27 +0000 +++ src/base/TextException.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "base/TextException.h" #include "Debug.h" #include "util.h" === modified file 'src/cache_cf.cc' --- src/cache_cf.cc 2012-08-06 17:41:08 +0000 +++ src/cache_cf.cc 2012-08-13 09:44:13 +0000 @@ -32,56 +32,61 @@ * */ -#include "squid-old.h" - +#include "squid.h" #include "acl/Acl.h" #include "acl/Gadgets.h" #include "acl/MethodData.h" -#if USE_ADAPTATION -#include "adaptation/Config.h" -#endif -#if ICAP_CLIENT -#include "adaptation/icap/Config.h" -#endif -#if USE_ECAP -#include "adaptation/ecap/Config.h" -#endif #include "anyp/PortCfg.h" -#if USE_SSL -#include "ssl/support.h" -#include "ssl/Config.h" -#endif -#if USE_AUTH -#include "auth/Config.h" -#include "auth/Scheme.h" -#endif #include "base/RunnersRegistry.h" #include "ConfigParser.h" #include "CpuAffinityMap.h" #include "DiskIO/DiskIOModule.h" #include "eui/Config.h" -#if USE_SQUID_ESI -#include "esi/Parser.h" -#endif #include "format/Format.h" +#include "globals.h" #include "HttpRequestMethod.h" #include "ident/Config.h" #include "ip/Intercept.h" #include "ip/QosConfig.h" #include "ip/tools.h" +#include "ipc/Kids.h" #include "log/Config.h" #include "MemBuf.h" #include "mgr/Registration.h" #include "Parsing.h" +#include "protos.h" #include "rfc1738.h" -#if SQUID_SNMP -#include "snmp.h" -#endif #include "Store.h" #include "StoreFileSystem.h" +#include "structs.h" #include "SwapDir.h" #include "wordlist.h" -#include "ipc/Kids.h" +#if USE_ADAPTATION +#include "adaptation/Config.h" +#endif +#if ICAP_CLIENT +#include "adaptation/icap/Config.h" +#endif +#if USE_ECAP +#include "adaptation/ecap/Config.h" +#endif +#if USE_SSL +#include "ssl/support.h" +#include "ssl/Config.h" +#endif +#if USE_AUTH +#include "auth/Config.h" +#include "auth/Scheme.h" +#endif +#if USE_SQUID_ESI +#include "esi/Parser.h" +#endif +#if SQUID_SNMP +#include "snmp.h" +#endif + + + #if HAVE_GLOB_H #include @@ -94,6 +99,18 @@ #if HAVE_LIST #include #endif +#if HAVE_SYS_TYPES_H +#include +#endif +#if HAVE_PWD_H +#include +#endif +#if HAVE_GRP_H +#include +#endif +#if HAVE_SYS_STAT_H +#include +#endif #if USE_SSL #include "ssl/gadgets.h" === modified file 'src/cache_diff.cc' --- src/cache_diff.cc 2012-07-20 15:31:04 +0000 +++ src/cache_diff.cc 2012-08-10 07:35:11 +0000 @@ -38,7 +38,7 @@ * Reports the percentage of common files and other stats */ -#include "squid-old.h" +#include "squid.h" typedef struct { const char *name; === modified file 'src/carp.cc' --- src/carp.cc 2012-07-23 15:34:12 +0000 +++ src/carp.cc 2012-08-12 20:25:21 +0000 @@ -34,12 +34,17 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "HttpRequest.h" #include "mgr/Registration.h" +#include "protos.h" #include "Store.h" #include "URLScheme.h" +#if HAVE_MATH_H +#include +#endif + #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) static int n_carp_peers = 0; === modified file 'src/cbdata.cc' --- src/cbdata.cc 2012-07-23 07:02:06 +0000 +++ src/cbdata.cc 2012-08-12 20:25:21 +0000 @@ -57,6 +57,10 @@ #endif #include "Generic.h" +#if HAVE_LIMITS_H +#include +#endif + #if WITH_VALGRIND #define HASHED_CBDATA 1 #endif === modified file 'src/cbdata.h' --- src/cbdata.h 2012-01-20 18:55:04 +0000 +++ src/cbdata.h 2012-08-10 07:35:11 +0000 @@ -34,7 +34,8 @@ #ifndef SQUID_CBDATA_H #define SQUID_CBDATA_H -#include "squid-old.h" +#include "squid.h" +#include "typedefs.h" /** \defgroup CBDATAAPI Callback Data Allocator API === modified file 'src/clientStream.cc' --- src/clientStream.cc 2012-01-20 18:55:04 +0000 +++ src/clientStream.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "clientStream.h" #include "HttpReply.h" #include "HttpRequest.h" === modified file 'src/clientStream.h' --- src/clientStream.h 2009-01-21 03:47:47 +0000 +++ src/clientStream.h 2012-08-12 20:25:21 +0000 @@ -34,8 +34,9 @@ #ifndef SQUID_CLIENTSTREAM_H #define SQUID_CLIENTSTREAM_H +#include "dlink.h" +#include "RefCount.h" #include "StoreIOBuffer.h" -#include "RefCount.h" /** \defgroup ClientStreamAPI Client Streams API @@ -100,8 +101,8 @@ typedef RefCount ClientStreamData; class clientStreamNode; - class ClientHttpRequest; +class HttpReply; /* client stream read callback */ /// \ingroup ClientStreamAPI === modified file 'src/client_db.cc' --- src/client_db.cc 2012-08-06 17:41:08 +0000 +++ src/client_db.cc 2012-08-12 20:25:21 +0000 @@ -32,12 +32,13 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "event.h" #include "format/Token.h" #include "ClientInfo.h" #include "ip/Address.h" #include "mgr/Registration.h" +#include "protos.h" #include "SquidMath.h" #include "SquidTime.h" #include "StatCounters.h" === modified file 'src/client_side.cc' --- src/client_side.cc 2012-08-06 17:21:57 +0000 +++ src/client_side.cc 2012-08-13 13:58:33 +0000 @@ -81,30 +81,24 @@ * data flow. */ -#include "squid-old.h" +#include "squid.h" #include "acl/FilledChecklist.h" -#if USE_AUTH -#include "auth/UserRequest.h" -#endif #include "anyp/PortCfg.h" #include "base/Subscription.h" #include "base/TextException.h" #include "ChunkedCodingParser.h" -#include "client_side.h" #include "client_side_reply.h" #include "client_side_request.h" -#if USE_DELAY_POOLS -#include "ClientInfo.h" -#endif +#include "client_side.h" #include "ClientRequestContext.h" #include "clientStream.h" #include "comm.h" #include "comm/Connection.h" -#include "CommCalls.h" #include "comm/Loops.h" +#include "comm/TcpAcceptor.h" #include "comm/Write.h" -#include "comm/TcpAcceptor.h" +#include "CommCalls.h" #include "errorpage.h" #include "eui/Config.h" #include "fde.h" @@ -118,10 +112,21 @@ #include "ipc/StartListening.h" #include "MemBuf.h" #include "MemObject.h" +#include "profiler/Profiler.h" +#include "protos.h" #include "rfc1738.h" +#include "SquidTime.h" #include "StatCounters.h" #include "StatHist.h" -#include "SquidTime.h" +#include "Store.h" +#include "TimeOrTag.h" + +#if USE_AUTH +#include "auth/UserRequest.h" +#endif +#if USE_DELAY_POOLS +#include "ClientInfo.h" +#endif #if USE_SSL #include "ssl/context_storage.h" #include "ssl/helper.h" @@ -133,17 +138,20 @@ #include "ssl/crtd_message.h" #include "ssl/certificate_db.h" #endif -#include "Store.h" -#include "TimeOrTag.h" +#if HAVE_LIMITS_H +#include +#endif +#if HAVE_MATH_H +#include +#endif +#if LINGERING_CLOSE +#define comm_close comm_lingering_close +#endif #if HAVE_LIMITS #include #endif -#if LINGERING_CLOSE -#define comm_close comm_lingering_close -#endif - /// dials clientListenerConnectionOpened call class ListeningStartedDialer: public CallDialer, public Ipc::StartListeningCb { === modified file 'src/client_side.h' --- src/client_side.h 2012-08-07 15:12:08 +0000 +++ src/client_side.h 2012-08-13 09:44:13 +0000 @@ -33,17 +33,18 @@ #ifndef SQUID_CLIENTSIDE_H #define SQUID_CLIENTSIDE_H -#if USE_AUTH -#include "auth/UserRequest.h" -#endif #include "base/AsyncJob.h" #include "BodyPipe.h" #include "comm.h" #include "CommCalls.h" +#include "HttpRequest.h" #include "HttpControlMsg.h" #include "HttpParser.h" #include "RefCount.h" #include "StoreIOBuffer.h" +#if USE_AUTH +#include "auth/UserRequest.h" +#endif #if USE_SSL #include "ssl/support.h" #endif === modified file 'src/client_side_reply.cc' --- src/client_side_reply.cc 2012-08-06 17:41:08 +0000 +++ src/client_side_reply.cc 2012-08-13 09:44:13 +0000 @@ -32,39 +32,37 @@ * */ #include "squid.h" - -/* for ClientActiveRequests global */ -#include "dlink.h" - -/* old includes without reasons given. */ -#include "squid-old.h" #include "acl/FilledChecklist.h" #include "acl/Gadgets.h" #include "anyp/PortCfg.h" -#if USE_AUTH -#include "auth/UserRequest.h" -#endif +#include "client_side_reply.h" #include "client_side.h" -#include "client_side_reply.h" #include "clientStream.h" -#if USE_DELAY_POOLS -#include "DelayPools.h" -#endif +#include "dlink.h" #include "errorpage.h" -#if USE_SQUID_ESI -#include "esi/Esi.h" -#endif #include "fde.h" +#include "format/Token.h" #include "forward.h" -#include "format/Token.h" +#include "globals.h" +#include "globals.h" #include "HttpReply.h" #include "HttpRequest.h" #include "ip/QosConfig.h" #include "ipcache.h" #include "MemObject.h" +#include "protos.h" #include "SquidTime.h" +#include "Store.h" #include "StoreClient.h" -#include "Store.h" +#if USE_AUTH +#include "auth/UserRequest.h" +#endif +#if USE_DELAY_POOLS +#include "DelayPools.h" +#endif +#if USE_SQUID_ESI +#include "esi/Esi.h" +#endif CBDATA_CLASS_INIT(clientReplyContext); === modified file 'src/client_side_request.cc' --- src/client_side_request.cc 2012-08-01 07:55:18 +0000 +++ src/client_side_request.cc 2012-08-12 20:25:21 +0000 @@ -42,42 +42,45 @@ * From that point on it's up to reply management. */ -#include "squid-old.h" +#include "squid.h" #include "acl/FilledChecklist.h" #include "acl/Gadgets.h" -#if USE_ADAPTATION -#include "adaptation/AccessCheck.h" -#include "adaptation/Answer.h" -#include "adaptation/Iterator.h" -#include "adaptation/Service.h" -#if ICAP_CLIENT -#include "adaptation/icap/History.h" -#endif -#endif #include "anyp/PortCfg.h" -#if USE_AUTH -#include "auth/UserRequest.h" -#endif -#include "clientStream.h" +#include "ClientRequestContext.h" #include "client_side.h" #include "client_side_reply.h" #include "client_side_request.h" -#include "ClientRequestContext.h" +#include "clientStream.h" #include "comm/Connection.h" #include "comm/Write.h" #include "compat/inet_pton.h" +#include "err_detail_type.h" #include "errorpage.h" #include "fde.h" #include "format/Token.h" #include "HttpHdrCc.h" #include "HttpReply.h" #include "HttpRequest.h" +#include "ipcache.h" #include "ip/QosConfig.h" #include "MemObject.h" +#include "profiler/Profiler.h" +#include "protos.h" +#include "SquidTime.h" #include "Store.h" -#include "SquidTime.h" #include "wordlist.h" -#include "err_detail_type.h" +#if USE_AUTH +#include "auth/UserRequest.h" +#endif +#if USE_ADAPTATION +#include "adaptation/AccessCheck.h" +#include "adaptation/Answer.h" +#include "adaptation/Iterator.h" +#include "adaptation/Service.h" +#if ICAP_CLIENT +#include "adaptation/icap/History.h" +#endif +#endif #if USE_SSL #include "ssl/support.h" #include "ssl/ServerBump.h" === modified file 'src/client_side_request.h' --- src/client_side_request.h 2012-08-07 15:12:08 +0000 +++ src/client_side_request.h 2012-08-10 11:52:29 +0000 @@ -1,8 +1,4 @@ - /* - * $Id$ - * - * * SQUID Web Proxy Cache http://www.squid-cache.org/ * ---------------------------------------------------------- * @@ -35,7 +31,7 @@ #ifndef SQUID_CLIENTSIDEREQUEST_H #define SQUID_CLIENTSIDEREQUEST_H -#include "squid-old.h" +#include "squid.h" #include "HttpHeader.h" #include "clientStream.h" #include "client_side.h" === modified file 'src/comm.cc' --- src/comm.cc 2012-08-06 17:21:57 +0000 +++ src/comm.cc 2012-08-13 13:58:33 +0000 @@ -32,12 +32,11 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "base/AsyncCall.h" -#include "StoreIOBuffer.h" #include "comm.h" -#include "event.h" -#include "fde.h" +#include "ClientInfo.h" +#include "CommCalls.h" #include "comm/AcceptLimiter.h" #include "comm/comm_internal.h" #include "comm/Connection.h" @@ -46,18 +45,23 @@ #include "comm/Write.h" #include "comm/TcpAcceptor.h" #include "CommRead.h" -#include "MemBuf.h" -#include "pconn.h" -#include "SquidTime.h" -#include "CommCalls.h" +#include "compat/cmsg.h" #include "DescriptorSet.h" +#include "event.h" +#include "fde.h" +#include "globals.h" #include "icmp/net_db.h" #include "ip/Address.h" #include "ip/Intercept.h" #include "ip/QosConfig.h" #include "ip/tools.h" -#include "ClientInfo.h" +#include "MemBuf.h" +#include "pconn.h" +#include "protos.h" +#include "profiler/Profiler.h" +#include "SquidTime.h" #include "StatCounters.h" +#include "StoreIOBuffer.h" #if USE_SSL #include "ssl/support.h" #endif @@ -69,6 +73,12 @@ #ifdef HAVE_NETINET_TCP_H #include #endif +#if HAVE_SYS_UN_H +#include +#endif +#if HAVE_MATH_H +#include +#endif /* * New C-like simple comm code. This stuff is a mess and doesn't really buy us anything. === modified file 'src/comm.h' --- src/comm.h 2012-01-20 18:55:04 +0000 +++ src/comm.h 2012-08-10 11:52:29 +0000 @@ -1,12 +1,13 @@ #ifndef __COMM_H__ #define __COMM_H__ -#include "squid-old.h" +#include "squid.h" #include "AsyncEngine.h" #include "base/AsyncCall.h" #include "CommCalls.h" #include "comm_err_t.h" #include "comm/IoCallback.h" +#include "ip/Address.h" #include "StoreIOBuffer.h" /* comm.c */ === modified file 'src/comm/AcceptLimiter.cc' --- src/comm/AcceptLimiter.cc 2012-07-06 10:18:43 +0000 +++ src/comm/AcceptLimiter.cc 2012-08-10 11:52:29 +0000 @@ -3,6 +3,7 @@ #include "comm/Connection.h" #include "comm/TcpAcceptor.h" #include "fde.h" +#include "globals.h" Comm::AcceptLimiter Comm::AcceptLimiter::Instance_; === modified file 'src/comm/ConnOpener.cc' --- src/comm/ConnOpener.cc 2012-07-30 08:49:59 +0000 +++ src/comm/ConnOpener.cc 2012-08-10 11:52:29 +0000 @@ -8,9 +8,11 @@ #include "comm/Loops.h" #include "comm.h" #include "fde.h" +#include "globals.h" #include "icmp/net_db.h" #include "ipcache.h" #include "SquidTime.h" +#include "protos.h" //for fd_close CBDATA_NAMESPACED_CLASS_INIT(Comm, ConnOpener); === modified file 'src/comm/Connection.h' --- src/comm/Connection.h 2012-08-11 02:04:03 +0000 +++ src/comm/Connection.h 2012-08-13 09:45:17 +0000 @@ -38,6 +38,7 @@ #define _SQUIDCONNECTIONDETAIL_H_ #include "comm/forward.h" +#include "defines.h" #include "hier_code.h" #include "ip/Address.h" #include "MemPool.h" === modified file 'src/comm/IoCallback.cc' --- src/comm/IoCallback.cc 2012-07-02 12:37:13 +0000 +++ src/comm/IoCallback.cc 2012-08-10 11:52:29 +0000 @@ -6,6 +6,7 @@ #include "comm/Write.h" #include "CommCalls.h" #include "fde.h" +#include "globals.h" Comm::CbEntry *Comm::iocb_table; === modified file 'src/comm/ModDevPoll.cc' --- src/comm/ModDevPoll.cc 2012-07-06 10:18:43 +0000 +++ src/comm/ModDevPoll.cc 2012-08-12 20:25:21 +0000 @@ -54,10 +54,10 @@ #if USE_DEVPOLL -#include "squid-old.h" #include "comm/Loops.h" #include "fde.h" #include "mgr/Registration.h" +#include "profiler/Profiler.h" #include "SquidTime.h" #include "StatCounters.h" #include "StatHist.h" === modified file 'src/comm/ModEpoll.cc' --- src/comm/ModEpoll.cc 2012-07-06 10:18:43 +0000 +++ src/comm/ModEpoll.cc 2012-08-12 20:25:21 +0000 @@ -55,10 +55,11 @@ #if USE_EPOLL -#include "squid-old.h" #include "comm/Loops.h" #include "fde.h" +#include "globals.h" #include "mgr/Registration.h" +#include "profiler/Profiler.h" #include "SquidTime.h" #include "StatCounters.h" #include "StatHist.h" === modified file 'src/comm/ModKqueue.cc' --- src/comm/ModKqueue.cc 2012-08-06 17:21:57 +0000 +++ src/comm/ModKqueue.cc 2012-08-10 07:35:11 +0000 @@ -56,7 +56,7 @@ #if USE_KQUEUE -#include "squid-old.h" +#include "squid.h" #include "comm/Loops.h" #include "fde.h" #include "Store.h" === modified file 'src/comm/ModPoll.cc' --- src/comm/ModPoll.cc 2012-08-06 17:41:08 +0000 +++ src/comm/ModPoll.cc 2012-08-10 11:52:29 +0000 @@ -34,13 +34,16 @@ #if USE_POLL -#include "squid-old.h" +#include "squid.h" #include "anyp/PortCfg.h" #include "comm/Connection.h" #include "comm/Loops.h" #include "fde.h" +#include "globals.h" #include "ICP.h" #include "mgr/Registration.h" +#include "profiler/Profiler.h" +#include "protos.h" //for fd_close #include "SquidTime.h" #include "StatCounters.h" #include "Store.h" === modified file 'src/comm/ModSelect.cc' --- src/comm/ModSelect.cc 2012-08-06 17:41:08 +0000 +++ src/comm/ModSelect.cc 2012-08-13 12:14:00 +0000 @@ -34,11 +34,11 @@ #if USE_SELECT -#include "squid-old.h" #include "anyp/PortCfg.h" #include "comm/Connection.h" #include "comm/Loops.h" #include "fde.h" +#include "globals.h" #include "ICP.h" #include "mgr/Registration.h" #include "SquidTime.h" @@ -46,6 +46,10 @@ #include "StatHist.h" #include "Store.h" +#if HAVE_SYS_STAT_H +#include +#endif + static int MAX_POLL_TIME = 1000; /* see also Comm::QuickPollRequired() */ #ifndef howmany === modified file 'src/comm/ModSelectWin32.cc' --- src/comm/ModSelectWin32.cc 2012-08-06 17:41:08 +0000 +++ src/comm/ModSelectWin32.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ #if USE_SELECT_WIN32 -#include "squid-old.h" +#include "squid.h" #include "anyp/PortCfg.h" #include "comm/Connection.h" #include "comm/Loops.h" === modified file 'src/comm/TcpAcceptor.cc' --- src/comm/TcpAcceptor.cc 2012-08-06 17:21:57 +0000 +++ src/comm/TcpAcceptor.cc 2012-08-12 20:25:21 +0000 @@ -32,16 +32,17 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "base/TextException.h" +#include "comm/AcceptLimiter.h" #include "CommCalls.h" -#include "comm/AcceptLimiter.h" #include "comm/comm_internal.h" #include "comm/Connection.h" #include "comm/Loops.h" #include "comm/TcpAcceptor.h" #include "fde.h" #include "ip/Intercept.h" +#include "profiler/Profiler.h" #include "protos.h" #include "SquidTime.h" #include "StatCounters.h" === modified file 'src/comm/Write.cc' --- src/comm/Write.cc 2012-08-06 17:21:57 +0000 +++ src/comm/Write.cc 2012-08-10 11:52:29 +0000 @@ -6,9 +6,12 @@ #include "comm/IoCallback.h" #include "comm/Write.h" #include "fde.h" +#include "globals.h" #include "StatCounters.h" #include "SquidTime.h" #include "MemBuf.h" +#include "profiler/Profiler.h" +#include "protos.h" //for fd_bytes void Comm::Write(const Comm::ConnectionPointer &conn, MemBuf *mb, AsyncCall::Pointer &callback) === modified file 'src/comm/Write.h' --- src/comm/Write.h 2010-12-03 00:18:43 +0000 +++ src/comm/Write.h 2012-08-10 11:52:29 +0000 @@ -3,7 +3,9 @@ #include "base/AsyncCall.h" #include "comm/forward.h" +#include "typedefs.h" +class MemBuf; namespace Comm { === modified file 'src/delay_pools.cc' --- src/delay_pools.cc 2012-08-06 17:41:08 +0000 +++ src/delay_pools.cc 2012-08-10 07:35:11 +0000 @@ -42,7 +42,7 @@ #include "squid.h" #if USE_DELAY_POOLS -#include "squid-old.h" +#include "squid.h" #include "mgr/Registration.h" #include "DelaySpec.h" #include "DelayPools.h" === modified file 'src/disk.cc' --- src/disk.cc 2012-08-06 17:21:57 +0000 +++ src/disk.cc 2012-08-12 20:25:21 +0000 @@ -32,10 +32,12 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "comm/Loops.h" #include "fde.h" #include "MemBuf.h" +#include "profiler/Profiler.h" +#include "protos.h" #include "StatCounters.h" static PF diskHandleRead; === modified file 'src/dns.cc' --- src/dns.cc 2012-08-06 17:21:57 +0000 +++ src/dns.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "Store.h" #include "wordlist.h" #include "SquidTime.h" === modified file 'src/dns_internal.cc' --- src/dns_internal.cc 2012-08-06 17:41:08 +0000 +++ src/dns_internal.cc 2012-08-12 20:25:21 +0000 @@ -32,22 +32,24 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "base/InstanceId.h" #include "comm/Connection.h" #include "comm/ConnOpener.h" #include "comm.h" #include "comm/Loops.h" #include "comm/Write.h" #include "event.h" -#include "SquidTime.h" -#include "Store.h" #include "fde.h" #include "ip/tools.h" #include "MemBuf.h" #include "mgr/Registration.h" +#include "protos.h" +#include "rfc3596.h" +#include "SquidTime.h" +#include "Store.h" #include "util.h" #include "wordlist.h" -#include "base/InstanceId.h" #if HAVE_ARPA_NAMESER_H #include === modified file 'src/errorpage.cc' --- src/errorpage.cc 2012-08-06 17:41:08 +0000 +++ src/errorpage.cc 2012-08-12 20:25:21 +0000 @@ -34,6 +34,7 @@ #include "squid.h" #include "comm/Connection.h" #include "comm/Write.h" +#include "err_detail_type.h" #include "errorpage.h" #if USE_AUTH #include "auth/UserRequest.h" @@ -49,10 +50,10 @@ #include "MemObject.h" #include "fde.h" #include "MemBuf.h" +#include "protos.h" #include "rfc1738.h" #include "URLScheme.h" #include "wordlist.h" -#include "err_detail_type.h" /** \defgroup ErrorPageInternal Error Page Internals === modified file 'src/errorpage.h' --- src/errorpage.h 2012-07-18 15:19:04 +0000 +++ src/errorpage.h 2012-08-13 12:14:00 +0000 @@ -34,15 +34,17 @@ #ifndef SQUID_ERRORPAGE_H #define SQUID_ERRORPAGE_H -#include "squid-old.h" -#if USE_AUTH -#include "auth/UserRequest.h" -#endif +#include "squid.h" #include "cbdata.h" #include "comm/forward.h" #include "err_detail_type.h" +#include "err_type.h" #include "ip/Address.h" #include "MemBuf.h" +#include "SquidString.h" +#if USE_AUTH +#include "auth/UserRequest.h" +#endif #if USE_SSL #include "ssl/ErrorDetail.h" #endif @@ -90,6 +92,7 @@ */ class HttpReply; +class HttpRequest; class MemBuf; /// \ingroup ErrorPageAPI === modified file 'src/esi/Assign.cc' --- src/esi/Assign.cc 2012-01-20 18:55:04 +0000 +++ src/esi/Assign.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" /* MS Visual Studio Projects are monolithic, so we need the following * #if to exclude the ESI code from compile process when not needed. === modified file 'src/esi/Assign.h' --- src/esi/Assign.h 2012-01-20 18:55:04 +0000 +++ src/esi/Assign.h 2012-08-10 11:52:29 +0000 @@ -36,7 +36,7 @@ #ifndef SQUID_ESIASSIGN_H #define SQUID_ESIASSIGN_H -#include "squid-old.h" +#include "squid.h" #include "esi/Element.h" #include "SquidString.h" #include "esi/VarState.h" === modified file 'src/esi/Attempt.h' --- src/esi/Attempt.h 2012-01-20 18:55:04 +0000 +++ src/esi/Attempt.h 2012-08-10 11:52:29 +0000 @@ -36,7 +36,7 @@ #ifndef SQUID_ESIATTEMPT_H #define SQUID_ESIATTEMPT_H -#include "squid-old.h" +#include "squid.h" #include "esi/Element.h" #include "esi/Sequence.h" === modified file 'src/esi/Context.cc' --- src/esi/Context.cc 2012-01-20 18:55:04 +0000 +++ src/esi/Context.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" /* MS Visual Studio Projects are monolithic, so we need the following * #if to exclude the ESI code from compile process when not needed. === modified file 'src/esi/Context.h' --- src/esi/Context.h 2012-08-07 15:12:08 +0000 +++ src/esi/Context.h 2012-08-13 13:58:33 +0000 @@ -34,15 +34,14 @@ #ifndef SQUID_ESICONTEXT_H #define SQUID_ESICONTEXT_H +#include "esi/Parser.h" #include "esi/Element.h" #include "clientStream.h" +#include "err_type.h" class ESIVarState; - class ClientHttpRequest; -#include "esi/Parser.h" - /* ESIContext */ class ESIContext : public esiTreeParent, public ESIParserClient === modified file 'src/esi/CustomParser.cc' --- src/esi/CustomParser.cc 2012-01-20 18:55:04 +0000 +++ src/esi/CustomParser.cc 2012-08-10 07:35:11 +0000 @@ -33,11 +33,12 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "Array.h" #include "esi/CustomParser.h" +#include "Debug.h" #include "Trie.h" #include "TrieCharTransform.h" -#include "Array.h" Trie *ESICustomParser::SearchTrie=NULL; === modified file 'src/esi/Element.h' --- src/esi/Element.h 2009-03-10 20:52:45 +0000 +++ src/esi/Element.h 2012-08-13 13:58:33 +0000 @@ -33,8 +33,9 @@ #ifndef SQUID_ESIELEMENT_H #define SQUID_ESIELEMENT_H +#include "Debug.h" +#include "esi/Segment.h" #include "RefCount.h" -#include "esi/Segment.h" typedef enum { ESI_PROCESS_COMPLETE = 0, === modified file 'src/esi/ElementList.h' --- src/esi/ElementList.h 2012-01-20 18:55:04 +0000 +++ src/esi/ElementList.h 2012-08-10 11:52:29 +0000 @@ -36,7 +36,7 @@ #ifndef SQUID_ELEMENTLIST_H #define SQUID_ELEMENTLIST_H -#include "squid-old.h" +#include "squid.h" #include "esi/Element.h" class ElementList === modified file 'src/esi/Esi.cc' --- src/esi/Esi.cc 2012-08-06 17:41:08 +0000 +++ src/esi/Esi.cc 2012-08-13 13:58:33 +0000 @@ -31,33 +31,35 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" /* MS Visual Studio Projects are monolithic, so we need the following * #if to exclude the ESI code from compile process when not needed. */ #if (USE_SQUID_ESI == 1) -#include "esi/Esi.h" +#include "client_side_request.h" +#include "client_side.h" #include "clientStream.h" -#include "client_side_request.h" #include "comm/Connection.h" #include "errorpage.h" +#include "esi/Assign.h" +#include "esi/Attempt.h" +#include "esi/Context.h" +#include "esi/Element.h" +#include "esi/Esi.h" +#include "esi/Except.h" +#include "esi/Expression.h" #include "esi/Segment.h" -#include "esi/Element.h" -#include "esi/Context.h" +#include "esi/VarState.h" #include "HttpHdrSc.h" #include "HttpHdrScTarget.h" #include "HttpReply.h" -#include "esi/Attempt.h" -#include "esi/Except.h" -#include "client_side.h" -#include "esi/VarState.h" -#include "esi/Assign.h" -#include "esi/Expression.h" #include "HttpRequest.h" +#include "ip/Address.h" #include "MemBuf.h" -#include "ip/Address.h" +#include "profiler/Profiler.h" +#include "protos.h" /* quick reference on behaviour here. * The ESI specification 1.0 requires the ESI processor to be able to === modified file 'src/esi/Except.h' --- src/esi/Except.h 2012-01-20 18:55:04 +0000 +++ src/esi/Except.h 2012-08-10 11:52:29 +0000 @@ -36,7 +36,7 @@ #ifndef SQUID_ESIEXCEPT_H #define SQUID_ESIEXCEPT_H -#include "squid-old.h" +#include "squid.h" #include "esi/Element.h" #include "esi/Sequence.h" === modified file 'src/esi/ExpatParser.cc' --- src/esi/ExpatParser.cc 2012-01-20 18:55:04 +0000 +++ src/esi/ExpatParser.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #if USE_SQUID_ESI && HAVE_LIBEXPAT === modified file 'src/esi/Expression.cc' --- src/esi/Expression.cc 2012-08-06 17:21:57 +0000 +++ src/esi/Expression.cc 2012-08-10 11:52:29 +0000 @@ -33,8 +33,14 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "Debug.h" #include "esi/Expression.h" +#include "profiler/Profiler.h" + +#if HAVE_MATH_H +#include +#endif /* stack precedence rules: * before pushing an operator onto the stack, the === modified file 'src/esi/Expression.h' --- src/esi/Expression.h 2012-01-20 18:55:04 +0000 +++ src/esi/Expression.h 2012-08-10 11:52:29 +0000 @@ -36,7 +36,7 @@ #ifndef SQUID_ESIEXPRESSION_H #define SQUID_ESIEXPRESSION_H -#include "squid-old.h" +#include "squid.h" class ESIExpression { === modified file 'src/esi/Include.cc' --- src/esi/Include.cc 2012-08-06 17:41:08 +0000 +++ src/esi/Include.cc 2012-08-13 13:58:33 +0000 @@ -34,17 +34,18 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" /* MS Visual Studio Projects are monolithic, so we need the following * #if to exclude the ESI code from compile process when not needed. */ #if (USE_SQUID_ESI == 1) +#include "client_side_request.h" #include "esi/Include.h" #include "esi/VarState.h" -#include "client_side_request.h" #include "HttpReply.h" +#include "protos.h" CBDATA_CLASS_INIT (ESIStreamContext); === modified file 'src/esi/Include.h' --- src/esi/Include.h 2012-01-20 18:55:04 +0000 +++ src/esi/Include.h 2012-08-10 11:52:29 +0000 @@ -36,7 +36,7 @@ #ifndef SQUID_ESIINCLUDE_H #define SQUID_ESIINCLUDE_H -#include "squid-old.h" +#include "squid.h" #include "esi/Segment.h" #include "esi/Element.h" #include "esi/Context.h" === modified file 'src/esi/Libxml2Parser.cc' --- src/esi/Libxml2Parser.cc 2012-07-12 09:08:16 +0000 +++ src/esi/Libxml2Parser.cc 2012-08-10 07:35:11 +0000 @@ -37,7 +37,7 @@ * mail@joachim-bauch.de */ -#include "squid-old.h" +#include "squid.h" #if USE_SQUID_ESI && HAVE_LIBXML2 === modified file 'src/esi/Literal.h' --- src/esi/Literal.h 2012-01-20 18:55:04 +0000 +++ src/esi/Literal.h 2012-08-10 11:52:29 +0000 @@ -36,7 +36,7 @@ #ifndef SQUID_ESILITERAL_H #define SQUID_ESILITERAL_H -#include "squid-old.h" +#include "squid.h" #include "esi/Element.h" class ESIContext; === modified file 'src/esi/Module.cc' --- src/esi/Module.cc 2012-01-20 18:55:04 +0000 +++ src/esi/Module.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "esi/Module.h" #include "esi/CustomParser.h" #include "esi/Libxml2Parser.h" === modified file 'src/esi/Parser.cc' --- src/esi/Parser.cc 2012-01-20 18:55:04 +0000 +++ src/esi/Parser.cc 2012-08-10 07:35:11 +0000 @@ -32,8 +32,9 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "esi/Parser.h" +#include "fatal.h" char *ESIParser::Type = NULL; ESIParser::Register *ESIParser::Parsers = NULL; === modified file 'src/esi/Segment.cc' --- src/esi/Segment.cc 2012-01-20 18:55:04 +0000 +++ src/esi/Segment.cc 2012-08-13 13:58:33 +0000 @@ -33,7 +33,8 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "Debug.h" #include "esi/Segment.h" #include "SquidString.h" === modified file 'src/esi/Segment.h' --- src/esi/Segment.h 2009-03-10 20:52:45 +0000 +++ src/esi/Segment.h 2012-08-13 13:58:33 +0000 @@ -38,6 +38,7 @@ */ #include "cbdata.h" +#include "defines.h" #include "RefCount.h" #include "SquidString.h" === modified file 'src/esi/Sequence.cc' --- src/esi/Sequence.cc 2012-08-06 17:41:08 +0000 +++ src/esi/Sequence.cc 2012-08-13 13:58:33 +0000 @@ -33,7 +33,9 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" +#include "Debug.h" +#include "fatal.h" /* MS Visual Studio Projects are monolithic, so we need the following * #if to exclude the ESI code from compile process when not needed. === modified file 'src/esi/Sequence.h' --- src/esi/Sequence.h 2012-01-20 18:55:04 +0000 +++ src/esi/Sequence.h 2012-08-13 13:58:33 +0000 @@ -36,9 +36,10 @@ #ifndef SQUID_ESISEQUENCE_H #define SQUID_ESISEQUENCE_H -#include "squid-old.h" +#include "squid.h" #include "esi/Element.h" #include "esi/ElementList.h" +#include "MemPool.h" /* esiSequence */ === modified file 'src/esi/Var.h' --- src/esi/Var.h 2012-01-20 18:55:04 +0000 +++ src/esi/Var.h 2012-08-10 11:52:29 +0000 @@ -36,7 +36,7 @@ #ifndef SQUID_ESIVAR_H #define SQUID_ESIVAR_H -#include "squid-old.h" +#include "squid.h" #include "esi/Element.h" #include "esi/Sequence.h" === modified file 'src/esi/VarState.cc' --- src/esi/VarState.cc 2012-01-20 18:55:04 +0000 +++ src/esi/VarState.cc 2012-08-13 13:58:33 +0000 @@ -34,9 +34,10 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "esi/VarState.h" #include "HttpReply.h" +#include "protos.h" CBDATA_TYPE (ESIVarState); FREE ESIVarStateFree; === modified file 'src/event.cc' --- src/event.cc 2012-01-20 18:55:04 +0000 +++ src/event.cc 2012-08-12 20:25:21 +0000 @@ -38,6 +38,8 @@ #include "mgr/Registration.h" #include "Store.h" #include "SquidTime.h" +#include "profiler/Profiler.h" +#include "protos.h" /* The list of event processes */ === modified file 'src/event.h' --- src/event.h 2012-01-20 18:55:04 +0000 +++ src/event.h 2012-08-10 11:52:29 +0000 @@ -34,9 +34,11 @@ #ifndef SQUID_EVENT_H #define SQUID_EVENT_H -#include "squid-old.h" +#include "squid.h" #include "Array.h" #include "AsyncEngine.h" +#include "MemPool.h" +#include "RefCount.h" /* forward decls */ === modified file 'src/external_acl.cc' --- src/external_acl.cc 2012-08-06 17:41:08 +0000 +++ src/external_acl.cc 2012-08-12 20:25:21 +0000 @@ -40,36 +40,37 @@ * */ -#include "squid-old.h" -#include "mgr/Registration.h" -#include "ExternalACL.h" -#include "ExternalACLEntry.h" -#if USE_AUTH -#include "auth/Acl.h" -#include "auth/Gadgets.h" -#include "auth/UserRequest.h" -#endif -#include "SquidTime.h" -#include "Store.h" -#include "fde.h" +#include "squid.h" +#include "acl/Acl.h" #include "acl/FilledChecklist.h" -#include "acl/Acl.h" -#if USE_IDENT -#include "ident/AclIdent.h" -#endif -#include "ip/tools.h" #include "client_side.h" #include "comm/Connection.h" +#include "ExternalACLEntry.h" +#include "ExternalACL.h" +#include "fde.h" +#include "helper.h" +#include "HttpReply.h" #include "HttpRequest.h" -#include "HttpReply.h" -#include "helper.h" +#include "ip/tools.h" #include "MemBuf.h" +#include "mgr/Registration.h" +#include "protos.h" #include "rfc1738.h" +#include "SquidTime.h" +#include "Store.h" #include "URLScheme.h" #include "wordlist.h" #if USE_SSL #include "ssl/support.h" #endif +#if USE_AUTH +#include "auth/Acl.h" +#include "auth/Gadgets.h" +#include "auth/UserRequest.h" +#endif +#if USE_IDENT +#include "ident/AclIdent.h" +#endif #ifndef DEFAULT_EXTERNAL_ACL_TTL #define DEFAULT_EXTERNAL_ACL_TTL 1 * 60 * 60 === modified file 'src/fd.cc' --- src/fd.cc 2012-08-06 17:41:08 +0000 +++ src/fd.cc 2012-08-12 20:25:21 +0000 @@ -33,11 +33,13 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "comm/Loops.h" +#include "Debug.h" #include "fde.h" +#include "globals.h" +#include "profiler/Profiler.h" #include "SquidTime.h" -#include "Debug.h" // Solaris and possibly others lack MSG_NOSIGNAL optimization === modified file 'src/fde.cc' --- src/fde.cc 2012-07-17 17:38:50 +0000 +++ src/fde.cc 2012-08-13 09:44:13 +0000 @@ -33,11 +33,13 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "comm.h" #include "fde.h" +#include "globals.h" +#include "protos.h" #include "SquidTime.h" #include "Store.h" -#include "comm.h" bool fde::readPending(int fdNumber) === modified file 'src/fde.h' --- src/fde.h 2011-08-26 16:50:49 +0000 +++ src/fde.h 2012-08-10 11:52:29 +0000 @@ -32,6 +32,7 @@ #include "comm.h" #include "ip/Address.h" +#include "structs.h" //for struct _fde_disk #if USE_DELAY_POOLS class ClientInfo; === modified file 'src/format/Format.cc' --- src/format/Format.cc 2012-07-23 15:34:12 +0000 +++ src/format/Format.cc 2012-08-13 09:44:13 +0000 @@ -1,5 +1,6 @@ #include "squid.h" #include "AccessLogEntry.h" +#include "client_side.h" #include "comm/Connection.h" #include "err_detail_type.h" #include "errorpage.h" @@ -9,6 +10,7 @@ #include "format/Token.h" #include "HttpRequest.h" #include "MemBuf.h" +#include "protos.h" //for urlCanonical #include "rfc1738.h" #include "SquidTime.h" #include "Store.h" === modified file 'src/forward.cc' --- src/forward.cc 2012-08-10 02:41:14 +0000 +++ src/forward.cc 2012-08-13 09:44:13 +0000 @@ -31,33 +31,36 @@ */ -#include "squid-old.h" -#include "forward.h" +#include "squid.h" #include "AccessLogEntry.h" #include "acl/FilledChecklist.h" #include "acl/Gadgets.h" #include "anyp/PortCfg.h" #include "CacheManager.h" +#include "client_side.h" #include "comm/Connection.h" #include "comm/ConnOpener.h" +#include "comm/Loops.h" #include "CommCalls.h" -#include "comm/Loops.h" +#include "errorpage.h" #include "event.h" -#include "errorpage.h" #include "fde.h" +#include "forward.h" +#include "globals.h" #include "hier_code.h" #include "HttpReply.h" #include "HttpRequest.h" +#include "icmp/net_db.h" +#include "ip/Intercept.h" #include "ip/QosConfig.h" +#include "ip/tools.h" #include "MemObject.h" +#include "mgr/Registration.h" #include "pconn.h" #include "PeerSelectState.h" +#include "protos.h" #include "SquidTime.h" #include "Store.h" -#include "icmp/net_db.h" -#include "ip/Intercept.h" -#include "ip/tools.h" -#include "mgr/Registration.h" #if USE_SSL #include "ssl/support.h" #include "ssl/ErrorDetail.h" === modified file 'src/forward.h' --- src/forward.h 2012-08-10 02:41:14 +0000 +++ src/forward.h 2012-08-10 07:35:11 +0000 @@ -1,6 +1,13 @@ #ifndef SQUID_FORWARD_H #define SQUID_FORWARD_H +#include "Array.h" +#include "comm.h" +#include "comm/Connection.h" +#include "fde.h" +#include "ip/Address.h" +#include "RefCount.h" + /* forward decls */ class AccessLogEntry; @@ -8,11 +15,6 @@ class ErrorState; class HttpRequest; -#include "comm.h" -#include "comm/Connection.h" -#include "fde.h" -#include "ip/Address.h" -#include "Array.h" /** * Returns the TOS value that we should be setting on the connection === modified file 'src/fqdncache.cc' --- src/fqdncache.cc 2012-08-06 17:21:57 +0000 +++ src/fqdncache.cc 2012-08-12 20:25:21 +0000 @@ -32,11 +32,12 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "cbdata.h" #include "DnsLookupDetails.h" #include "event.h" #include "mgr/Registration.h" +#include "protos.h" #include "SquidDns.h" #include "SquidTime.h" #include "StatCounters.h" === modified file 'src/fs/Module.cc' --- src/fs/Module.cc 2012-08-10 06:56:49 +0000 +++ src/fs/Module.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "Module.h" #if defined(HAVE_FS_UFS) || defined(HAVE_FS_AUFS) || defined(HAVE_FS_DISKD) #include "fs/ufs/StoreFSufs.h" === modified file 'src/fs/aufs/StoreFSaufs.cc' --- src/fs/aufs/StoreFSaufs.cc 2012-08-10 06:56:49 +0000 +++ src/fs/aufs/StoreFSaufs.cc 2012-08-10 07:35:11 +0000 @@ -36,15 +36,7 @@ /* TODO: remove this file as unused */ #include "squid.h" - -#if 0 -#include "squid-old.h" -#include "StoreFileSystem.h" -#include "DiskIO/DiskIOModule.h" -#endif - #include "fs/ufs/StoreFSufs.h" - #include "fs/ufs/UFSSwapDir.h" /** === modified file 'src/fs/coss/store_dir_coss.cc' --- src/fs/coss/store_dir_coss.cc 2012-08-08 07:21:13 +0000 +++ src/fs/coss/store_dir_coss.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "CossSwapDir.h" #include "Store.h" === modified file 'src/fs/coss/store_io_coss.cc' --- src/fs/coss/store_io_coss.cc 2012-08-06 17:21:57 +0000 +++ src/fs/coss/store_io_coss.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "CossSwapDir.h" #include "Store.h" #include "store_coss.h" === modified file 'src/fs/rock/RockIoState.cc' --- src/fs/rock/RockIoState.cc 2012-01-20 18:55:04 +0000 +++ src/fs/rock/RockIoState.cc 2012-08-10 11:52:29 +0000 @@ -13,6 +13,7 @@ #include "fs/rock/RockIoState.h" #include "fs/rock/RockIoRequests.h" #include "fs/rock/RockSwapDir.h" +#include "globals.h" Rock::IoState::IoState(SwapDir *dir, StoreEntry *anEntry, === modified file 'src/fs/rock/RockRebuild.cc' --- src/fs/rock/RockRebuild.cc 2012-07-12 09:08:16 +0000 +++ src/fs/rock/RockRebuild.cc 2012-08-10 11:52:29 +0000 @@ -8,6 +8,9 @@ #include "fs/rock/RockRebuild.h" #include "fs/rock/RockSwapDir.h" #include "fs/rock/RockDbCell.h" +#include "md5.h" +#include "protos.h" //for storeRebuildComplete +#include "typedefs.h" #include "SquidTime.h" CBDATA_NAMESPACED_CLASS_INIT(Rock, Rebuild); === modified file 'src/fs/rock/RockStoreFileSystem.h' --- src/fs/rock/RockStoreFileSystem.h 2011-09-06 22:32:30 +0000 +++ src/fs/rock/RockStoreFileSystem.h 2012-08-10 11:52:29 +0000 @@ -3,6 +3,7 @@ #include "StoreFileSystem.h" +class StoreEntry; namespace Rock { === modified file 'src/fs/rock/RockSwapDir.cc' --- src/fs/rock/RockSwapDir.cc 2012-08-10 06:56:49 +0000 +++ src/fs/rock/RockSwapDir.cc 2012-08-10 11:52:29 +0000 @@ -17,10 +17,15 @@ #include "ipc/mem/Pages.h" #include "MemObject.h" #include "Parsing.h" +#include "protos.h" #include "SquidMath.h" #include #include +#if HAVE_SYS_STAT_H +#include +#endif + const int64_t Rock::SwapDir::HeaderSize = 16*1024; Rock::SwapDir::SwapDir(): ::SwapDir("rock"), filePath(NULL), io(NULL), map(NULL) === modified file 'src/fs/ufs/RebuildState.cc' --- src/fs/ufs/RebuildState.cc 2012-08-11 00:14:47 +0000 +++ src/fs/ufs/RebuildState.cc 2012-08-13 09:45:17 +0000 @@ -32,11 +32,19 @@ */ #include "squid.h" +#include "protos.h" #include "RebuildState.h" #include "SquidTime.h" #include "StoreSwapLogData.h" #include "UFSSwapLogParser.h" +#if HAVE_MATH_H +#include +#endif +#if HAVE_SYS_STAT_H +#include +#endif + CBDATA_NAMESPACED_CLASS_INIT(Fs::Ufs,RebuildState); Fs::Ufs::RebuildState::RebuildState(RefCount aSwapDir) : === added file 'src/fs/ufs/RebuildState.cc.moved' --- src/fs/ufs/RebuildState.cc.moved 1970-01-01 00:00:00 +0000 +++ src/fs/ufs/RebuildState.cc.moved 2012-08-10 06:59:30 +0000 @@ -0,0 +1,540 @@ +/* + * + * DEBUG: section 47 Store Directory Routines + * AUTHOR: Robert Collins + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + */ + +#include "squid.h" +#include "RebuildState.h" +#include "SquidTime.h" +#include "StoreSwapLogData.h" +#include "UFSSwapLogParser.h" + +CBDATA_NAMESPACED_CLASS_INIT(Fs::Ufs,RebuildState); + +Fs::Ufs::RebuildState::RebuildState(RefCount aSwapDir) : + sd (aSwapDir), LogParser(NULL), e(NULL), fromLog(true), _done (false) +{ + /* + * If the swap.state file exists in the cache_dir, then + * we'll use commonUfsDirRebuildFromSwapLog(), otherwise we'll + * use commonUfsDirRebuildFromDirectory() to open up each file + * and suck in the meta data. + */ + int clean = 0; + int zeroLengthLog = 0; + FILE *fp = sd->openTmpSwapLog(&clean, &zeroLengthLog); + + if (fp && !zeroLengthLog) + LogParser = Fs::Ufs::UFSSwapLogParser::GetUFSSwapLogParser(fp); + + if (LogParser == NULL ) { + fromLog = false; + + if (fp != NULL) + fclose(fp); + + } else { + fromLog = true; + flags.clean = (unsigned int) clean; + } + + if (!clean) + flags.need_to_validate = 1; + + debugs(47, DBG_IMPORTANT, "Rebuilding storage in " << sd->path << " (" << + (clean ? "clean log" : (LogParser ? "dirty log" : "no log")) << ")"); +} + +Fs::Ufs::RebuildState::~RebuildState() +{ + sd->closeTmpSwapLog(); + + if (LogParser) + delete LogParser; +} + +void +Fs::Ufs::RebuildState::RebuildStep(void *data) +{ + RebuildState *rb = (RebuildState *)data; + rb->rebuildStep(); + + if (!rb->isDone()) + eventAdd("storeRebuild", RebuildStep, rb, 0.01, 1); + else { + -- StoreController::store_dirs_rebuilding; + storeRebuildComplete(&rb->counts); + delete rb; + } +} + +/// load entries from swap.state or files until we run out of entries or time +void +Fs::Ufs::RebuildState::rebuildStep() +{ + currentEntry(NULL); + + // Balance our desire to maximize the number of entries processed at once + // (and, hence, minimize overheads and total rebuild time) with a + // requirement to also process Coordinator events, disk I/Os, etc. + const int maxSpentMsec = 50; // keep small: most RAM I/Os are under 1ms + const timeval loopStart = current_time; + + const int totalEntries = LogParser ? LogParser->SwapLogEntries() : -1; + + while (!isDone()) { + if (fromLog) + rebuildFromSwapLog(); + else + rebuildFromDirectory(); + + // TODO: teach storeRebuildProgress to handle totalEntries <= 0 + if (totalEntries > 0 && (n_read % 4000 == 0)) + storeRebuildProgress(sd->index, totalEntries, n_read); + + if (opt_foreground_rebuild) + continue; // skip "few entries at a time" check below + + getCurrentTime(); + const double elapsedMsec = tvSubMsec(loopStart, current_time); + if (elapsedMsec > maxSpentMsec || elapsedMsec < 0) { + debugs(47, 5, HERE << "pausing after " << n_read << " entries in " << + elapsedMsec << "ms; " << (elapsedMsec/n_read) << "ms per entry"); + break; + } + } +} + +/// process one cache file +void +Fs::Ufs::RebuildState::rebuildFromDirectory() +{ + cache_key key[SQUID_MD5_DIGEST_LENGTH]; + + struct stat sb; + int fd = -1; + assert(this != NULL); + debugs(47, 3, HERE << "DIR #" << sd->index); + + assert(fd == -1); + sfileno filn = 0; + int size; + fd = getNextFile(&filn, &size); + + if (fd == -2) { + debugs(47, DBG_IMPORTANT, "Done scanning " << sd->path << " dir (" << + n_read << " entries)"); + _done = true; + return; + } else if (fd < 0) { + return; + } + + assert(fd > -1); + /* lets get file stats here */ + + ++n_read; + + if (fstat(fd, &sb) < 0) { + debugs(47, DBG_IMPORTANT, HERE << "fstat(FD " << fd << "): " << xstrerror()); + file_close(fd); + --store_open_disk_fd; + fd = -1; + return; + } + + MemBuf buf; + buf.init(SM_PAGE_SIZE, SM_PAGE_SIZE); + if (!storeRebuildLoadEntry(fd, sd->index, buf, counts)) + return; + + StoreEntry tmpe; + const bool loaded = storeRebuildParseEntry(buf, tmpe, key, counts, + (int64_t)sb.st_size); + + file_close(fd); + --store_open_disk_fd; + fd = -1; + + if (!loaded) { + // XXX: shouldn't this be a call to commonUfsUnlink? + sd->unlinkFile(filn); // should we unlink in all failure cases? + return; + } + + if (!storeRebuildKeepEntry(tmpe, key, counts)) + return; + + ++counts.objcount; + // tmpe.dump(5); + currentEntry(sd->addDiskRestore(key, + filn, + tmpe.swap_file_sz, + tmpe.expires, + tmpe.timestamp, + tmpe.lastref, + tmpe.lastmod, + tmpe.refcount, /* refcount */ + tmpe.flags, /* flags */ + (int) flags.clean)); + storeDirSwapLog(currentEntry(), SWAP_LOG_ADD); +} + +StoreEntry * +Fs::Ufs::RebuildState::currentEntry() const +{ + return e; +} + +void +Fs::Ufs::RebuildState::currentEntry(StoreEntry *newValue) +{ + e = newValue; +} + +/// process one swap log entry +void +Fs::Ufs::RebuildState::rebuildFromSwapLog() +{ + StoreSwapLogData swapData; + + if (LogParser->ReadRecord(swapData) != 1) { + debugs(47, DBG_IMPORTANT, "Done reading " << sd->path << " swaplog (" << n_read << " entries)"); + LogParser->Close(); + delete LogParser; + LogParser = NULL; + _done = true; + return; + } + + ++n_read; + + if (!swapData.sane()) { + ++counts.invalid; + return; + } + + /* + * BC: during 2.4 development, we changed the way swap file + * numbers are assigned and stored. The high 16 bits used + * to encode the SD index number. There used to be a call + * to storeDirProperFileno here that re-assigned the index + * bits. Now, for backwards compatibility, we just need + * to mask it off. + */ + swapData.swap_filen &= 0x00FFFFFF; + + debugs(47, 3, HERE << swap_log_op_str[(int) swapData.op] << " " << + storeKeyText(swapData.key) << " "<< std::setfill('0') << + std::hex << std::uppercase << std::setw(8) << + swapData.swap_filen); + + if (swapData.op == SWAP_LOG_ADD) { + (void) 0; + } else if (swapData.op == SWAP_LOG_DEL) { + /* Delete unless we already have a newer copy anywhere in any store */ + /* this needs to become + * 1) unpack url + * 2) make synthetic request with headers ?? or otherwise search + * for a matching object in the store + * TODO FIXME change to new async api + */ + currentEntry (Store::Root().get(swapData.key)); + + if (currentEntry() != NULL && swapData.lastref >= e->lastref) { + undoAdd(); + --counts.objcount; + ++counts.cancelcount; + } + return; + } else { + const double + x = ::log(static_cast(++counts.bad_log_op)) / ::log(10.0); + + if (0.0 == x - (double) (int) x) + debugs(47, DBG_IMPORTANT, "WARNING: " << counts.bad_log_op << " invalid swap log entries found"); + + ++counts.invalid; + + return; + } + + ++counts.scancount; // XXX: should not this be incremented earlier? + + if (!sd->validFileno(swapData.swap_filen, 0)) { + ++counts.invalid; + return; + } + + if (EBIT_TEST(swapData.flags, KEY_PRIVATE)) { + ++counts.badflags; + return; + } + + /* this needs to become + * 1) unpack url + * 2) make synthetic request with headers ?? or otherwise search + * for a matching object in the store + * TODO FIXME change to new async api + */ + currentEntry (Store::Root().get(swapData.key)); + + int used; /* is swapfile already in use? */ + + used = sd->mapBitTest(swapData.swap_filen); + + /* If this URL already exists in the cache, does the swap log + * appear to have a newer entry? Compare 'lastref' from the + * swap log to e->lastref. */ + /* is the log entry newer than current entry? */ + int disk_entry_newer = currentEntry() ? (swapData.lastref > currentEntry()->lastref ? 1 : 0) : 0; + + if (used && !disk_entry_newer) { + /* log entry is old, ignore it */ + ++counts.clashcount; + return; + } else if (used && currentEntry() && currentEntry()->swap_filen == swapData.swap_filen && currentEntry()->swap_dirn == sd->index) { + /* swapfile taken, same URL, newer, update meta */ + + if (currentEntry()->store_status == STORE_OK) { + currentEntry()->lastref = swapData.timestamp; + currentEntry()->timestamp = swapData.timestamp; + currentEntry()->expires = swapData.expires; + currentEntry()->lastmod = swapData.lastmod; + currentEntry()->flags = swapData.flags; + currentEntry()->refcount += swapData.refcount; + sd->dereference(*currentEntry()); + } else { + debug_trap("commonUfsDirRebuildFromSwapLog: bad condition"); + debugs(47, DBG_IMPORTANT, HERE << "bad condition"); + } + return; + } else if (used) { + /* swapfile in use, not by this URL, log entry is newer */ + /* This is sorta bad: the log entry should NOT be newer at this + * point. If the log is dirty, the filesize check should have + * caught this. If the log is clean, there should never be a + * newer entry. */ + debugs(47, DBG_IMPORTANT, "WARNING: newer swaplog entry for dirno " << + sd->index << ", fileno "<< std::setfill('0') << std::hex << + std::uppercase << std::setw(8) << swapData.swap_filen); + + /* I'm tempted to remove the swapfile here just to be safe, + * but there is a bad race condition in the NOVM version if + * the swapfile has recently been opened for writing, but + * not yet opened for reading. Because we can't map + * swapfiles back to StoreEntrys, we don't know the state + * of the entry using that file. */ + /* We'll assume the existing entry is valid, probably because + * were in a slow rebuild and the the swap file number got taken + * and the validation procedure hasn't run. */ + assert(flags.need_to_validate); + ++counts.clashcount; + return; + } else if (currentEntry() && !disk_entry_newer) { + /* key already exists, current entry is newer */ + /* keep old, ignore new */ + ++counts.dupcount; + return; + } else if (currentEntry()) { + /* key already exists, this swapfile not being used */ + /* junk old, load new */ + undoAdd(); + --counts.objcount; + ++counts.dupcount; + } else { + /* URL doesnt exist, swapfile not in use */ + /* load new */ + (void) 0; + } + + ++counts.objcount; + + currentEntry(sd->addDiskRestore(swapData.key, + swapData.swap_filen, + swapData.swap_file_sz, + swapData.expires, + swapData.timestamp, + swapData.lastref, + swapData.lastmod, + swapData.refcount, + swapData.flags, + (int) flags.clean)); + + storeDirSwapLog(currentEntry(), SWAP_LOG_ADD); +} + +/// undo the effects of adding an entry in rebuildFromSwapLog() +void +Fs::Ufs::RebuildState::undoAdd() +{ + StoreEntry *added = currentEntry(); + assert(added); + currentEntry(NULL); + + // TODO: Why bother with these two if we are going to release?! + added->expireNow(); + added->releaseRequest(); + + if (added->swap_filen > -1) { + UFSSwapDir *sde = dynamic_cast(INDEXSD(added->swap_dirn)); + assert(sde); + sde->undoAddDiskRestore(added); + } + + added->release(); +} + +int +Fs::Ufs::RebuildState::getNextFile(sfileno * filn_p, int *size) +{ + int fd = -1; + int dirs_opened = 0; + debugs(47, 3, HERE << "flag=" << flags.init << ", " << + sd->index << ": /"<< std::setfill('0') << std::hex << + std::uppercase << std::setw(2) << curlvl1 << "/" << std::setw(2) << + curlvl2); + + if (done) + return -2; + + while (fd < 0 && done == 0) { + fd = -1; + + if (0 == flags.init) { /* initialize, open first file */ + done = 0; + curlvl1 = 0; + curlvl2 = 0; + in_dir = 0; + flags.init = 1; + assert(Config.cacheSwap.n_configured > 0); + } + + if (0 == in_dir) { /* we need to read in a new directory */ + snprintf(fullpath, MAXPATHLEN, "%s/%02X/%02X", + sd->path, + curlvl1, curlvl2); + + if (dirs_opened) + return -1; + + td = opendir(fullpath); + + ++dirs_opened; + + if (td == NULL) { + debugs(47, DBG_IMPORTANT, HERE << "error in opendir (" << fullpath << "): " << xstrerror()); + } else { + entry = readdir(td); /* skip . and .. */ + entry = readdir(td); + + if (entry == NULL && errno == ENOENT) + debugs(47, DBG_IMPORTANT, HERE << "WARNING: directory does not exist!"); + debugs(47, 3, HERE << "Directory " << fullpath); + } + } + + if (td != NULL && (entry = readdir(td)) != NULL) { + ++in_dir; + + if (sscanf(entry->d_name, "%x", &fn) != 1) { + debugs(47, 3, HERE << "invalid entry " << entry->d_name); + continue; + } + + if (!UFSSwapDir::FilenoBelongsHere(fn, sd->index, curlvl1, curlvl2)) { + debugs(47, 3, HERE << std::setfill('0') << + std::hex << std::uppercase << std::setw(8) << fn << + " does not belong in " << std::dec << sd->index << "/" << + curlvl1 << "/" << curlvl2); + + continue; + } + + if (sd->mapBitTest(fn)) { + debugs(47, 3, HERE << "Locked, continuing with next."); + continue; + } + + snprintf(fullfilename, MAXPATHLEN, "%s/%s", + fullpath, entry->d_name); + debugs(47, 3, HERE << "Opening " << fullfilename); + fd = file_open(fullfilename, O_RDONLY | O_BINARY); + + if (fd < 0) + debugs(47, DBG_IMPORTANT, HERE << "error opening " << fullfilename << ": " << xstrerror()); + else + ++store_open_disk_fd; + + continue; + } + + if (td != NULL) + closedir(td); + + td = NULL; + + in_dir = 0; + + if (sd->validL2(++curlvl2)) + continue; + + curlvl2 = 0; + + if (sd->validL1(++curlvl1)) + continue; + + curlvl1 = 0; + + done = 1; + } + + *filn_p = fn; + return fd; +} + +bool +Fs::Ufs::RebuildState::error() const +{ + return false; +} + +bool +Fs::Ufs::RebuildState::isDone() const +{ + return _done; +} + +StoreEntry * +Fs::Ufs::RebuildState::currentItem() +{ + return currentEntry(); +} === added file 'src/fs/ufs/RebuildState.h.moved' --- src/fs/ufs/RebuildState.h.moved 1970-01-01 00:00:00 +0000 +++ src/fs/ufs/RebuildState.h.moved 2012-08-10 06:59:30 +0000 @@ -0,0 +1,102 @@ +/* + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + */ + +#ifndef SQUID_FS_UFS_REBUILDSTATE_H +#define SQUID_FS_UFS_REBUILDSTATE_H + +#include "RefCount.h" +#include "UFSSwapDir.h" +#include "structs.h" +#include "UFSSwapLogParser.h" + +class StoreEntry; + +namespace Fs +{ +namespace Ufs +{ + +/// \ingroup UFS +class RebuildState : public RefCountable +{ +public: + static EVH RebuildStep; + + RebuildState(RefCount sd); + ~RebuildState(); + + virtual bool error() const; + virtual bool isDone() const; + virtual StoreEntry *currentItem(); + + RefCount sd; + int n_read; + /* FILE *log;*/ + Fs::Ufs::UFSSwapLogParser *LogParser; + int curlvl1; + int curlvl2; + + struct { + unsigned int need_to_validate:1; + unsigned int clean:1; + unsigned int init:1; + } flags; + int in_dir; + int done; + int fn; + + dirent_t *entry; + DIR *td; + char fullpath[MAXPATHLEN]; + char fullfilename[MAXPATHLEN]; + + struct _store_rebuild_data counts; + +private: + CBDATA_CLASS2(RebuildState); + void rebuildFromDirectory(); + void rebuildFromSwapLog(); + void rebuildStep(); + void undoAdd(); + int getNextFile(sfileno *, int *size); + StoreEntry *currentEntry() const; + void currentEntry(StoreEntry *); + StoreEntry *e; + bool fromLog; + bool _done; + /// \bug (callback) should be hidden behind a proper human readable name + void (callback)(void *cbdata); + void *cbdata; +}; + + +} /* namespace Ufs */ +} /* namespace Fs */ + +#endif /* SQUID_FS_UFS_REBUILDSTATE_H */ === added file 'src/fs/ufs/StoreSearchUFS.cc.moved' --- src/fs/ufs/StoreSearchUFS.cc.moved 1970-01-01 00:00:00 +0000 +++ src/fs/ufs/StoreSearchUFS.cc.moved 2012-08-10 06:59:30 +0000 @@ -0,0 +1,90 @@ +/* + * DEBUG: section 47 Store Directory Routines + * AUTHOR: Robert Collins + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + */ + +#include "squid.h" +#include "cbdata.h" +#include "StoreSearchUFS.h" +#include "UFSSwapDir.h" + +CBDATA_NAMESPACED_CLASS_INIT(Fs::Ufs,StoreSearchUFS); + +Fs::Ufs::StoreSearchUFS::StoreSearchUFS(RefCount aSwapDir) : + sd(aSwapDir), walker (sd->repl->WalkInit(sd->repl)), + current (NULL), _done (false) +{} + +Fs::Ufs::StoreSearchUFS::~StoreSearchUFS() +{ + walker->Done(walker); + walker = NULL; +} + +void +Fs::Ufs::StoreSearchUFS::next(void (aCallback)(void *cbdata), void *aCallbackArgs) +{ + next(); + aCallback(aCallbackArgs); +} + +bool +Fs::Ufs::StoreSearchUFS::next() +{ + /* the walker API doesn't make sense. the store entries referred to are already readwrite + * from their hash table entries + */ + + if (walker) + current = const_cast(walker->Next(walker)); + + if (current == NULL) + _done = true; + + return current != NULL; +} + +bool +Fs::Ufs::StoreSearchUFS::error() const +{ + return false; +} + +bool +Fs::Ufs::StoreSearchUFS::isDone() const +{ + return _done; +} + +StoreEntry * +Fs::Ufs::StoreSearchUFS::currentItem() +{ + return current; +} === added file 'src/fs/ufs/StoreSearchUFS.h.moved' --- src/fs/ufs/StoreSearchUFS.h.moved 1970-01-01 00:00:00 +0000 +++ src/fs/ufs/StoreSearchUFS.h.moved 2012-08-10 06:59:30 +0000 @@ -0,0 +1,83 @@ +/* + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + */ + +#ifndef SQUID_FS_UFS_STORESEARCHUFS_H +#define SQUID_FS_UFS_STORESEARCHUFS_H + +#include "StoreSearch.h" +#include "UFSSwapDir.h" + +namespace Fs +{ +namespace Ufs +{ + +/// \ingroup UFS +class StoreSearchUFS : public StoreSearch +{ +public: + StoreSearchUFS(RefCount sd); + virtual ~StoreSearchUFS(); + + /** \todo Iterator API - garh, wrong place */ + /** + * callback the client when a new StoreEntry is available + * or an error occurs + */ + virtual void next(void (callback)(void *cbdata), void *cbdata); + + /** + \retval true if a new StoreEntry is immediately available + \retval false if a new StoreEntry is NOT immediately available + */ + virtual bool next(); + + virtual bool error() const; + virtual bool isDone() const; + virtual StoreEntry *currentItem(); + + RefCount sd; + RemovalPolicyWalker *walker; + +private: + CBDATA_CLASS2(StoreSearchUFS); + /// \bug (callback) should be hidden behind a proper human readable name + void (callback)(void *cbdata); + void *cbdata; + StoreEntry * current; + bool _done; + + StoreSearchUFS(StoreSearchUFS const &); //disabled + StoreSearchUFS& operator=(StoreSearchUFS const &); //disabled + StoreSearchUFS(); //disabled +}; + +} //namespace Ufs +} //namespace Fs +#endif /* SQUID_FS_UFS_STORESEARCHUFS_H */ === modified file 'src/fs/ufs/UFSStoreState.cc' --- src/fs/ufs/UFSStoreState.cc 2012-08-10 06:56:49 +0000 +++ src/fs/ufs/UFSStoreState.cc 2012-08-10 11:52:29 +0000 @@ -33,14 +33,14 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "Store.h" #include "Generic.h" #include "DiskIO/DiskFile.h" #include "DiskIO/DiskIOStrategy.h" #include "DiskIO/ReadRequest.h" #include "DiskIO/WriteRequest.h" - +#include "protos.h" //for linklist* #include "SwapDir.h" #include "UFSStrategy.h" #include "UFSStoreState.h" === added file 'src/fs/ufs/UFSStoreState.cc.moved' --- src/fs/ufs/UFSStoreState.cc.moved 1970-01-01 00:00:00 +0000 +++ src/fs/ufs/UFSStoreState.cc.moved 2012-08-10 06:59:30 +0000 @@ -0,0 +1,519 @@ + +/* + * $Id$ + * + * DEBUG: section 79 Storage Manager UFS Interface + * AUTHOR: Duane Wessels + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + */ + +#include "squid-old.h" +#include "Store.h" +#include "Generic.h" +#include "DiskIO/DiskFile.h" +#include "DiskIO/DiskIOStrategy.h" +#include "DiskIO/ReadRequest.h" +#include "DiskIO/WriteRequest.h" + +#include "SwapDir.h" +#include "UFSStrategy.h" +#include "UFSStoreState.h" + + +CBDATA_NAMESPACED_CLASS_INIT(Fs::Ufs,UFSStoreState); + +void * +Fs::Ufs::UFSStoreState::operator new (size_t) +{ + CBDATA_INIT_TYPE(UFSStoreState); + return cbdataAlloc(UFSStoreState); +} + +void +Fs::Ufs::UFSStoreState::operator delete (void *address) +{ + cbdataFree(address); +} + +void +Fs::Ufs::UFSStoreState::ioCompletedNotification() +{ + if (opening) { + opening = false; + debugs(79, 3, "UFSStoreState::ioCompletedNotification: dirno " << + swap_dirn << ", fileno "<< std::setfill('0') << std::hex << + std::setw(8) << swap_filen << " status "<< std::setfill(' ') << + std::dec << theFile->error()); + + assert (FILE_MODE(mode) == O_RDONLY); + openDone(); + + return; + } + + if (creating) { + creating = false; + debugs(79, 3, "UFSStoreState::ioCompletedNotification: dirno " << + swap_dirn << ", fileno "<< std::setfill('0') << std::hex << + std::setw(8) << swap_filen << " status "<< std::setfill(' ') << + std::dec << theFile->error()); + + openDone(); + + return; + } + + assert (!(closing ||opening)); + debugs(79, 3, "diskd::ioCompleted: dirno " << swap_dirn << ", fileno "<< + std::setfill('0') << std::hex << std::setw(8) << swap_filen << + " status "<< std::setfill(' ') << std::dec << theFile->error()); + + /* Ok, notification past open means an error has occured */ + assert (theFile->error()); + tryClosing(); +} + +void +Fs::Ufs::UFSStoreState::openDone() +{ + if (closing) + debugs(0, DBG_CRITICAL, HERE << "already closing in openDone()!?"); + + if (theFile->error()) { + tryClosing(); + return; + } + + if (FILE_MODE(mode) == O_WRONLY) { + drainWriteQueue(); + + } else if ((FILE_MODE(mode) == O_RDONLY) && !closing) { + if (kickReadQueue()) + return; + } + + if (flags.try_closing) + tryClosing(); + + debugs(79, 3, "UFSStoreState::openDone: exiting"); +} + +void +Fs::Ufs::UFSStoreState::closeCompleted() +{ + assert (closing); + debugs(79, 3, "UFSStoreState::closeCompleted: dirno " << swap_dirn << + ", fileno "<< std::setfill('0') << std::hex << std::setw(8) << + swap_filen << " status "<< std::setfill(' ') << std::dec << + theFile->error()); + + if (theFile->error()) { + debugs(79,3,HERE<< "theFile->error() ret " << theFile->error()); + doCloseCallback(DISK_ERROR); + } else { + doCloseCallback(DISK_OK); + } + + closing = false; +} + +/* + * DPW 2006-05-24 + * This close function is called by the higher layer when it has finished + * reading/writing everything, or otherwise wants to close the swap + * file. In the case of writing and using aufs storage, close() might + * be called before any/all data is written, and even before the open + * callback occurs. Thus, we use our tryClosing() method, which knows + * when it is safe to actually signal the lower layer for closing. + */ +void +Fs::Ufs::UFSStoreState::close(int) +{ + debugs(79, 3, "UFSStoreState::close: dirno " << swap_dirn << ", fileno "<< + std::setfill('0') << std::hex << std::uppercase << std::setw(8) << swap_filen); + tryClosing(); // UFS does not distinguish different closure types +} + +void +Fs::Ufs::UFSStoreState::read_(char *buf, size_t size, off_t aOffset, STRCB * aCallback, void *aCallbackData) +{ + assert(read.callback == NULL); + assert(read.callback_data == NULL); + assert(!reading); + assert(!closing); + assert (aCallback); + + if (!theFile->canRead()) { + debugs(79, 3, "UFSStoreState::read_: queueing read because theFile can't read"); + queueRead (buf, size, aOffset, aCallback, aCallbackData); + return; + } + + read.callback = aCallback; + read.callback_data = cbdataReference(aCallbackData); + debugs(79, 3, "UFSStoreState::read_: dirno " << swap_dirn << ", fileno "<< + std::setfill('0') << std::hex << std::uppercase << std::setw(8) << swap_filen); + offset_ = aOffset; + read_buf = buf; + reading = true; + theFile->read(new ReadRequest(buf,aOffset,size)); +} + + +/* + * DPW 2006-05-24 + * This, the public write interface, places the write request at the end + * of the pending_writes queue to ensure correct ordering of writes. + * We could optimize things a little if there are no other pending + * writes and just do the write directly. But for now we'll keep the + * code simpler and always go through the pending_writes queue. + */ +void +Fs::Ufs::UFSStoreState::write(char const *buf, size_t size, off_t aOffset, FREE * free_func) +{ + debugs(79, 3, "UFSStoreState::write: dirn " << swap_dirn << ", fileno "<< + std::setfill('0') << std::hex << std::uppercase << std::setw(8) << swap_filen); + + if (theFile->error()) { + debugs(79, DBG_IMPORTANT,HERE << "avoid write on theFile with error"); + debugs(79, DBG_IMPORTANT,HERE << "calling free_func for " << (void*) buf); + free_func((void*)buf); + return; + } + + queueWrite(buf, size, aOffset, free_func); + drainWriteQueue(); +} + + +/* + * DPW 2006-05-24 + * This, the private write method, calls the lower level write for the + * first write request in the pending_writes queue. doWrite() is only + * called by drainWriteQueue(). + */ +void +Fs::Ufs::UFSStoreState::doWrite() +{ + debugs(79, 3, HERE << this << " UFSStoreState::doWrite"); + + assert(theFile->canWrite()); + + _queued_write *q = (_queued_write *)linklistShift(&pending_writes); + + if (q == NULL) { + debugs(79, 3, HERE << this << " UFSStoreState::doWrite queue is empty"); + return; + } + + if (theFile->error()) { + debugs(79, DBG_IMPORTANT,HERE << "avoid write on theFile with error"); + debugs(79,3,HERE << "calling free_func for " << (void*) q->buf); + /* + * DPW 2006-05-24 + * Note "free_func" is memNodeWriteComplete(), which doesn't + * really free the memory. Instead it clears the node's + * write_pending flag. + */ + q->free_func((void*)q->buf); + delete q; + return; + } + + /* + * DPW 2006-05-24 + * UFSStoreState has a 'writing' flag that we used to set here, + * but it wasn't really used anywhere. In fact, some lower + * layers such as DISKD allow multiple outstanding writes, which + * makes the boolean writing flag meaningless. We would need + * a counter to keep track of writes going out and write callbacks + * coming in. For now let's just not use the writing flag at + * all. + */ + debugs(79, 3, HERE << this << " calling theFile->write(" << q->size << ")"); + + theFile->write(new WriteRequest(q->buf, q->offset, q->size, q->free_func)); + delete q; +} + +void +Fs::Ufs::UFSStoreState::readCompleted(const char *buf, int len, int errflag, RefCount result) +{ + assert (result.getRaw()); + reading = false; + debugs(79, 3, "UFSStoreState::readCompleted: dirno " << swap_dirn << + ", fileno "<< std::setfill('0') << std::hex << std::setw(8) << + swap_filen << " len "<< std::setfill(' ') << std::dec << len); + + if (len > 0) + offset_ += len; + + STRCB *callback_ = read.callback; + + assert(callback_); + + read.callback = NULL; + + void *cbdata; + + /* A note: + * diskd IO queues closes via the diskd queue. So close callbacks + * occur strictly after reads and writes. + * ufs doesn't queue, it simply completes, so close callbacks occur + * strictly after reads and writes. + * aufs performs closes syncronously, so close events must be managed + * to force strict ordering. + * The below does this: + * closing is set when theFile->close() has been called, and close only triggers + * when no io's are pending. + * writeCompleted likewise. + */ + if (!closing && cbdataReferenceValidDone(read.callback_data, &cbdata)) { + if (len > 0 && read_buf != buf) + memcpy(read_buf, buf, len); + + callback_(cbdata, read_buf, len, this); + } + + if (flags.try_closing || (theFile != NULL && theFile->error()) ) + tryClosing(); +} + +void +Fs::Ufs::UFSStoreState::writeCompleted(int errflag, size_t len, RefCount writeRequest) +{ + debugs(79, 3, HERE << "dirno " << swap_dirn << ", fileno " << + std::setfill('0') << std::hex << std::uppercase << std::setw(8) << swap_filen << + ", len " << len); + /* + * DPW 2006-05-24 + * See doWrites() for why we don't update UFSStoreState::writing + * here anymore. + */ + + offset_ += len; + + if (theFile->error()) { + debugs(79,2,HERE << " detected an error, will try to close"); + tryClosing(); + } + + /* + * HNO 2009-07-24 + * Kick any pending write/close operations alive + */ + drainWriteQueue(); +} + +void +Fs::Ufs::UFSStoreState::doCloseCallback(int errflag) +{ + debugs(79, 3, "storeUfsIOCallback: errflag=" << errflag); + /* + * DPW 2006-05-24 + * When we signal the higher layer with this callback, it might unlock + * the StoreEntry and its associated data. We must "free" any queued + * I/Os (especially writes) now, otherwise the StoreEntry's mem_node's + * will have their write_pending flag set, and we'll get an assertion. + */ + freePending(); + STIOCB *theCallback = callback; + callback = NULL; + + void *cbdata; + + if (cbdataReferenceValidDone(callback_data, &cbdata) && theCallback) + theCallback(cbdata, errflag, this); + + /* + * We are finished with theFile since the lower layer signalled + * us that the file has been closed. This must be the last line, + * as theFile may be the only object holding us in memory. + */ + theFile = NULL; // refcounted +} + +/* ============= THE REAL UFS CODE ================ */ + +Fs::Ufs::UFSStoreState::UFSStoreState(SwapDir * SD, StoreEntry * anEntry, STIOCB * callback_, void *callback_data_) : opening (false), creating (false), closing (false), reading(false), writing(false), pending_reads(NULL), pending_writes (NULL) +{ + swap_filen = anEntry->swap_filen; + swap_dirn = SD->index; + mode = O_BINARY; + callback = callback_; + callback_data = cbdataReference(callback_data_); + e = anEntry; + flags.write_draining = false; + flags.try_closing = false; +} + +Fs::Ufs::UFSStoreState::~UFSStoreState() +{ + assert(pending_reads == NULL); + assert(pending_writes == NULL); +} + +void +Fs::Ufs::UFSStoreState::freePending() +{ + _queued_read *qr; + + while ((qr = (_queued_read *)linklistShift(&pending_reads))) { + cbdataReferenceDone(qr->callback_data); + delete qr; + } + + debugs(79,3,HERE << "UFSStoreState::freePending: freed pending reads"); + + _queued_write *qw; + + while ((qw = (_queued_write *)linklistShift(&pending_writes))) { + if (qw->free_func) + qw->free_func(const_cast(qw->buf)); + delete qw; + } + + debugs(79,3,HERE << "UFSStoreState::freePending: freed pending writes"); +} + +bool +Fs::Ufs::UFSStoreState::kickReadQueue() +{ + _queued_read *q = (_queued_read *)linklistShift(&pending_reads); + + if (NULL == q) + return false; + + debugs(79, 3, "UFSStoreState::kickReadQueue: reading queued request of " << q->size << " bytes"); + + void *cbdata; + + if (cbdataReferenceValidDone(q->callback_data, &cbdata)) { + read_(q->buf, q->size, q->offset, q->callback, cbdata); + } else { + debugs(79, 2, "UFSStoreState::kickReadQueue: this: " << this << " cbdataReferenceValidDone returned false." << " closing: " << closing << " flags.try_closing: " << flags.try_closing); + delete q; + return false; + } + + delete q; + + return true; +} + +void +Fs::Ufs::UFSStoreState::queueRead(char *buf, size_t size, off_t aOffset, STRCB *callback_, void *callback_data_) +{ + debugs(79, 3, "UFSStoreState::queueRead: queueing read"); + assert(opening); + assert (pending_reads == NULL); + _queued_read *q = new _queued_read; + q->buf = buf; + q->size = size; + q->offset = aOffset; + q->callback = callback_; + q->callback_data = cbdataReference(callback_data_); + linklistPush(&pending_reads, q); +} + +/* + * DPW 2006-05-24 + * drainWriteQueue() is a loop around doWrite(). + */ +void +Fs::Ufs::UFSStoreState::drainWriteQueue() +{ + /* + * DPW 2007-04-12 + * We might find that flags.write_draining is already set + * because schemes like diskd can process I/O acks + * before sending another I/O request. e.g. the following + * sequence of events: open request -> write request -> + * drainWriteQueue() -> queue full -> callbacks -> openDone() -> + * drainWriteQueue(). + */ + if (flags.write_draining) + return; + + if (!theFile->canWrite()) + return; + + flags.write_draining = true; + + while (pending_writes != NULL) { + doWrite(); + } + + flags.write_draining = false; + + if (flags.try_closing) + tryClosing(); +} + +/* + * DPW 2006-05-24 + * This blows. DiskThreadsDiskFile::close() won't actually do the close + * if ioInProgress() is true. So we have to check it here. Maybe someday + * DiskThreadsDiskFile::close() will be modified to have a return value, + * or will remember to do the close for us. + */ +void +Fs::Ufs::UFSStoreState::tryClosing() +{ + debugs(79,3,HERE << this << " tryClosing()" << + " closing = " << closing << + " flags.try_closing = " << flags.try_closing << + " ioInProgress = " << theFile->ioInProgress()); + + if (theFile->ioInProgress()) { + debugs(79, 3, HERE << this << + " won't close since ioInProgress is true, bailing"); + flags.try_closing = true; + return; + } + + closing = true; + flags.try_closing = false; + theFile->close(); +} + +void +Fs::Ufs::UFSStoreState::queueWrite(char const *buf, size_t size, off_t aOffset, FREE * free_func) +{ + debugs(79, 3, HERE << this << " UFSStoreState::queueWrite: queueing write of size " << size); + + _queued_write *q; + q = new _queued_write; + q->buf = buf; + q->size = size; + q->offset = aOffset; + q->free_func = free_func; + linklistPush(&pending_writes, q); +} + === added file 'src/fs/ufs/UFSStoreState.h.moved' --- src/fs/ufs/UFSStoreState.h.moved 1970-01-01 00:00:00 +0000 +++ src/fs/ufs/UFSStoreState.h.moved 2012-08-10 06:59:30 +0000 @@ -0,0 +1,129 @@ +/* + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + */ + +#ifndef SQUID_FS_UFS_UFSSTORESTATE_H +#define SQUID_FS_UFS_UFSSTORESTATE_H + +#include "DiskIO/IORequestor.h" +#include "StoreIOState.h" + +namespace Fs +{ +namespace Ufs +{ +/// \ingroup UFS +class UFSStoreState : public StoreIOState, public IORequestor +{ +public: + void * operator new (size_t); + void operator delete (void *); + UFSStoreState(SwapDir * SD, StoreEntry * anEntry, STIOCB * callback_, void *callback_data_); + ~UFSStoreState(); + virtual void close(int how); + virtual void closeCompleted(); + // protected: + virtual void ioCompletedNotification(); + virtual void readCompleted(const char *buf, int len, int errflag, RefCount); + virtual void writeCompleted(int errflag, size_t len, RefCount); + RefCount theFile; + bool opening; + bool creating; + bool closing; + bool reading; + bool writing; + void read_(char *buf, size_t size, off_t offset, STRCB * callback, void *callback_data); + void write(char const *buf, size_t size, off_t offset, FREE * free_func); + +protected: + virtual void doCloseCallback (int errflag); + + class _queued_read + { + public: + MEMPROXY_CLASS(UFSStoreState::_queued_read); + char *buf; + size_t size; + off_t offset; + STRCB *callback; + void *callback_data; + + }; + + class _queued_write + { + public: + MEMPROXY_CLASS(UFSStoreState::_queued_write); + char const *buf; + size_t size; + off_t offset; + FREE *free_func; + + }; + + /** \todo These should be in the IO strategy */ + + struct { + /** + * DPW 2006-05-24 + * the write_draining flag is used to avoid recursion inside + * the UFSStoreState::drainWriteQueue() method. + */ + bool write_draining; + /** + * DPW 2006-05-24 + * The try_closing flag is set by UFSStoreState::tryClosing() + * when UFSStoreState wants to close the file, but cannot + * because of pending I/Os. If set, UFSStoreState will + * try to close again in the I/O callbacks. + */ + bool try_closing; + } flags; + link_list *pending_reads; + link_list *pending_writes; + void queueRead(char *, size_t, off_t, STRCB *, void *); + void queueWrite(char const *, size_t, off_t, FREE *); + bool kickReadQueue(); + void drainWriteQueue(); + void tryClosing(); + char *read_buf; + +private: + void openDone(); + void freePending(); + void doWrite(); + CBDATA_CLASS(UFSStoreState); +}; + +MEMPROXY_CLASS_INLINE(UFSStoreState::_queued_read); +MEMPROXY_CLASS_INLINE(UFSStoreState::_queued_write); + +} //namespace Ufs +} //namespace Fs + +#endif /* SQUID_FS_UFS_UFSSTORESTATE_H */ === added file 'src/fs/ufs/UFSStrategy.cc.moved' --- src/fs/ufs/UFSStrategy.cc.moved 1970-01-01 00:00:00 +0000 +++ src/fs/ufs/UFSStrategy.cc.moved 2012-08-10 06:59:30 +0000 @@ -0,0 +1,183 @@ +/* + * DEBUG: section 47 Store Directory Routines + * AUTHOR: Robert Collins + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + */ + +#include "squid.h" + +#include "DiskIO/DiskIOStrategy.h" +#include "UFSStrategy.h" +#include "UFSStoreState.h" +#include "UFSSwapDir.h" + +bool +Fs::Ufs::UFSStrategy::shedLoad() +{ + return io->shedLoad(); +} + +int +Fs::Ufs::UFSStrategy::load() +{ + return io->load(); +} + +Fs::Ufs::UFSStrategy::UFSStrategy (DiskIOStrategy *anIO) : io(anIO) +{} + +Fs::Ufs::UFSStrategy::~UFSStrategy () +{ + delete io; +} + +StoreIOState::Pointer +Fs::Ufs::UFSStrategy::createState(SwapDir *SD, StoreEntry *e, StoreIOState::STIOCB * aCallback, void *callback_data) const +{ + return new Fs::Ufs::UFSStoreState (SD, e, aCallback, callback_data); +} + +DiskFile::Pointer +Fs::Ufs::UFSStrategy::newFile (char const *path) +{ + return io->newFile(path); +} + +void +Fs::Ufs::UFSStrategy::unlinkFile(char const *path) +{ + io->unlinkFile(path); +} + +StoreIOState::Pointer +Fs::Ufs::UFSStrategy::open(SwapDir * SD, StoreEntry * e, StoreIOState::STFNCB * file_callback, + StoreIOState::STIOCB * aCallback, void *callback_data) +{ + assert (((UFSSwapDir *)SD)->IO == this); + debugs(79, 3, HERE << "fileno "<< std::setfill('0') << std::hex + << std::uppercase << std::setw(8) << e->swap_filen); + + /* to consider: make createstate a private UFSStrategy call */ + StoreIOState::Pointer sio = createState (SD, e, aCallback, callback_data); + + sio->mode |= O_RDONLY; + + Fs::Ufs::UFSStoreState *state = dynamic_cast (sio.getRaw()); + + assert (state); + + char *path = ((UFSSwapDir *)SD)->fullPath(e->swap_filen, NULL); + + DiskFile::Pointer myFile = newFile (path); + + if (myFile.getRaw() == NULL) + return NULL; + + state->theFile = myFile; + + state->opening = true; + + myFile->open (sio->mode, 0644, state); + + if (myFile->error()) + return NULL; + + return sio; +} + +StoreIOState::Pointer +Fs::Ufs::UFSStrategy::create(SwapDir * SD, StoreEntry * e, StoreIOState::STFNCB * file_callback, + StoreIOState::STIOCB * aCallback, void *callback_data) +{ + assert (((UFSSwapDir *)SD)->IO == this); + /* Allocate a number */ + sfileno filn = ((UFSSwapDir *)SD)->mapBitAllocate(); + debugs(79, 3, HERE << "fileno "<< std::setfill('0') << + std::hex << std::uppercase << std::setw(8) << filn); + + /* Shouldn't we handle a 'bitmap full' error here? */ + + StoreIOState::Pointer sio = createState (SD, e, aCallback, callback_data); + + sio->mode |= O_WRONLY | O_CREAT | O_TRUNC; + + sio->swap_filen = filn; + + Fs::Ufs::UFSStoreState *state = dynamic_cast (sio.getRaw()); + + assert (state); + + char *path = ((UFSSwapDir *)SD)->fullPath(filn, NULL); + + DiskFile::Pointer myFile = newFile (path); + + if (myFile.getRaw() == NULL) { + ((UFSSwapDir *)SD)->mapBitReset (filn); + return NULL; + } + + state->theFile = myFile; + + state->creating = true; + + myFile->create (state->mode, 0644, state); + + if (myFile->error()) { + ((UFSSwapDir *)SD)->mapBitReset (filn); + return NULL; + } + + /* now insert into the replacement policy */ + ((UFSSwapDir *)SD)->replacementAdd(e); + + return sio; +} + +int +Fs::Ufs::UFSStrategy::callback() +{ + return io->callback(); +} + +void +Fs::Ufs::UFSStrategy::init() +{ + io->init(); +} + +void +Fs::Ufs::UFSStrategy::sync() +{ + io->sync(); +} + +void +Fs::Ufs::UFSStrategy::statfs(StoreEntry & sentry)const +{ + io->statfs(sentry); +} === added file 'src/fs/ufs/UFSStrategy.h.moved' --- src/fs/ufs/UFSStrategy.h.moved 1970-01-01 00:00:00 +0000 +++ src/fs/ufs/UFSStrategy.h.moved 2012-08-10 06:59:30 +0000 @@ -0,0 +1,90 @@ +/* + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + */ + +#ifndef SQUID_FS_UFS_UFSSTRATEGY_H +#define SQUID_FS_UFS_UFSSTRATEGY_H + +#include "DiskIO/DiskFile.h" +#include "StoreIOState.h" + +class Swapdir; +class StoreEntry; +class DiskIOStrategy; + +namespace Fs +{ +namespace Ufs +{ +/// \ingroup UFS +class UFSStrategy +{ +public: + UFSStrategy (DiskIOStrategy *); + virtual ~UFSStrategy (); + virtual bool shedLoad(); + + virtual int load(); + + StoreIOState::Pointer createState(SwapDir *SD, StoreEntry *e, StoreIOState::STIOCB * callback, void *callback_data) const; + /* UFS specific */ + virtual RefCount newFile (char const *path); + StoreIOState::Pointer open(SwapDir *, StoreEntry *, StoreIOState::STFNCB *, + StoreIOState::STIOCB *, void *); + StoreIOState::Pointer create(SwapDir *, StoreEntry *, StoreIOState::STFNCB *, + StoreIOState::STIOCB *, void *); + + virtual void unlinkFile (char const *); + virtual void sync(); + + virtual int callback(); + + /** Init per-instance logic */ + virtual void init(); + + /** cachemgr output on the IO instance stats */ + virtual void statfs(StoreEntry & sentry)const; + + /** The io strategy in use */ + DiskIOStrategy *io; + +protected: + + friend class UFSSwapDir; + +private: + UFSStrategy(); //disabled + UFSStrategy(UFSStrategy const &); //disabled + UFSStrategy &operator=(UFSStrategy const &); //disabled + +}; + +} //namespace Ufs +} //namespace Fs + +#endif /* SQUID_FS_UFS_UFSSTRATEGY_H */ === modified file 'src/fs/ufs/UFSSwapDir.cc' --- src/fs/ufs/UFSSwapDir.cc 2012-08-11 00:14:47 +0000 +++ src/fs/ufs/UFSSwapDir.cc 2012-08-13 09:45:17 +0000 @@ -29,7 +29,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. */ -#include "squid-old.h" +#include "squid.h" #define CLEAN_BUF_SZ 16384 @@ -48,6 +48,12 @@ #include "StatCounters.h" #include "UFSSwapDir.h" +#if HAVE_MATH_H +#include +#endif +#if HAVE_SYS_STAT_H +#include +#endif int Fs::Ufs::UFSSwapDir::NumberOfUFSDirs = 0; int *Fs::Ufs::UFSSwapDir::UFSDirToGlobalDirMapping = NULL; === added file 'src/fs/ufs/UFSSwapDir.cc.moved' --- src/fs/ufs/UFSSwapDir.cc.moved 1970-01-01 00:00:00 +0000 +++ src/fs/ufs/UFSSwapDir.cc.moved 2012-08-10 11:52:29 +0000 @@ -0,0 +1,1350 @@ +/* + * DEBUG: section 47 Store Directory Routines + * AUTHOR: Robert Collins + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + */ + +#include "squid.h" + +#define CLEAN_BUF_SZ 16384 + +#include "ConfigOption.h" +#include "DiskIO/DiskIOModule.h" +#include "FileMap.h" +#include "fde.h" +#include "Parsing.h" +#include "protos.h" +#include "RebuildState.h" +#include "SquidMath.h" +#include "DiskIO/DiskIOStrategy.h" +#include "StoreSearchUFS.h" +#include "StoreSwapLogData.h" +#include "SquidTime.h" +#include "StatCounters.h" +#include "UFSSwapDir.h" + + +int Fs::Ufs::UFSSwapDir::NumberOfUFSDirs = 0; +int *Fs::Ufs::UFSSwapDir::UFSDirToGlobalDirMapping = NULL; + +class UFSCleanLog : public SwapDir::CleanLog +{ + +public: + UFSCleanLog(SwapDir *); + /** Get the next entry that is a candidate for clean log writing + */ + virtual const StoreEntry *nextEntry(); + /** "write" an entry to the clean log file. + */ + virtual void write(StoreEntry const &); + char *cur; + char *newLog; + char *cln; + char *outbuf; + off_t outbuf_offset; + int fd; + RemovalPolicyWalker *walker; + SwapDir *sd; +}; + +UFSCleanLog::UFSCleanLog(SwapDir *aSwapDir) : + cur(NULL), newLog(NULL), cln(NULL), outbuf(NULL), + outbuf_offset(0), fd(-1),walker(NULL), sd(aSwapDir) +{} + +const StoreEntry * +UFSCleanLog::nextEntry() +{ + const StoreEntry *entry = NULL; + + if (walker) + entry = walker->Next(walker); + + return entry; +} + +void +UFSCleanLog::write(StoreEntry const &e) +{ + StoreSwapLogData s; + static size_t ss = sizeof(StoreSwapLogData); + s.op = (char) SWAP_LOG_ADD; + s.swap_filen = e.swap_filen; + s.timestamp = e.timestamp; + s.lastref = e.lastref; + s.expires = e.expires; + s.lastmod = e.lastmod; + s.swap_file_sz = e.swap_file_sz; + s.refcount = e.refcount; + s.flags = e.flags; + memcpy(&s.key, e.key, SQUID_MD5_DIGEST_LENGTH); + s.finalize(); + memcpy(outbuf + outbuf_offset, &s, ss); + outbuf_offset += ss; + /* buffered write */ + + if (outbuf_offset + ss >= CLEAN_BUF_SZ) { + if (FD_WRITE_METHOD(fd, outbuf, outbuf_offset) < 0) { + /* XXX This error handling should probably move up to the caller */ + debugs(50, DBG_CRITICAL, HERE << newLog << ": write: " << xstrerror()); + debugs(50, DBG_CRITICAL, HERE << "Current swap logfile not replaced."); + file_close(fd); + fd = -1; + unlink(newLog); + sd->cleanLog = NULL; + delete this; + return; + } + + outbuf_offset = 0; + } +} + +bool +Fs::Ufs::UFSSwapDir::canStore(const StoreEntry &e, int64_t diskSpaceNeeded, int &load) const +{ + if (!SwapDir::canStore(e, diskSpaceNeeded, load)) + return false; + + if (IO->shedLoad()) + return false; + + load = IO->load(); + return true; +} + +static void +FreeObject(void *address) +{ + StoreSwapLogData *anObject = static_cast (address); + delete anObject; +} + +static QS rev_int_sort; +static int +rev_int_sort(const void *A, const void *B) +{ + const int *i1 = (const int *)A; + const int *i2 = (const int *)B; + return *i2 - *i1; +} + +void +Fs::Ufs::UFSSwapDir::parseSizeL1L2() +{ + int i = GetInteger(); + if (i <= 0) + fatal("UFSSwapDir::parseSizeL1L2: invalid size value"); + + const uint64_t size = static_cast(i) << 20; // MBytes to Bytes + + /* just reconfigure it */ + if (reconfiguring) { + if (size == maxSize()) + debugs(3, 2, "Cache dir '" << path << "' size remains unchanged at " << i << " MB"); + else + debugs(3, DBG_IMPORTANT, "Cache dir '" << path << "' size changed to " << i << " MB"); + } + + max_size = size; + + l1 = GetInteger(); + + if (l1 <= 0) + fatal("UFSSwapDir::parseSizeL1L2: invalid level 1 directories value"); + + l2 = GetInteger(); + + if (l2 <= 0) + fatal("UFSSwapDir::parseSizeL1L2: invalid level 2 directories value"); +} + +void +Fs::Ufs::UFSSwapDir::reconfigure() +{ + parseSizeL1L2(); + parseOptions(1); +} + +void +Fs::Ufs::UFSSwapDir::parse (int anIndex, char *aPath) +{ + index = anIndex; + path = xstrdup(aPath); + + parseSizeL1L2(); + + /* Initialise replacement policy stuff */ + repl = createRemovalPolicy(Config.replPolicy); + + parseOptions(0); +} + +void +Fs::Ufs::UFSSwapDir::changeIO(DiskIOModule *module) +{ + DiskIOStrategy *anIO = module->createStrategy(); + safe_free(ioType); + ioType = xstrdup(module->type()); + + delete IO->io; + IO->io = anIO; + /* Change the IO Options */ + + if (currentIOOptions && currentIOOptions->options.size() > 2) + delete currentIOOptions->options.pop_back(); + + /* TODO: factor out these 4 lines */ + ConfigOption *ioOptions = IO->io->getOptionTree(); + + if (ioOptions) + currentIOOptions->options.push_back(ioOptions); +} + +bool +Fs::Ufs::UFSSwapDir::optionIOParse(char const *option, const char *value, int isaReconfig) +{ + if (strcmp(option, "IOEngine") != 0) + return false; + + if (isaReconfig) + /* silently ignore this */ + return true; + + if (!value) + self_destruct(); + + DiskIOModule *module = DiskIOModule::Find(value); + + if (!module) + self_destruct(); + + changeIO(module); + + return true; +} + +void +Fs::Ufs::UFSSwapDir::optionIODump(StoreEntry * e) const +{ + storeAppendPrintf(e, " IOEngine=%s", ioType); +} + +ConfigOption * +Fs::Ufs::UFSSwapDir::getOptionTree() const +{ + ConfigOption *parentResult = SwapDir::getOptionTree(); + + if (currentIOOptions == NULL) + currentIOOptions = new ConfigOptionVector(); + + currentIOOptions->options.push_back(parentResult); + + currentIOOptions->options.push_back(new ConfigOptionAdapter(*const_cast(this), &UFSSwapDir::optionIOParse, &UFSSwapDir::optionIODump)); + + if (ConfigOption *ioOptions = IO->io->getOptionTree()) + currentIOOptions->options.push_back(ioOptions); + + ConfigOption* result = currentIOOptions; + + currentIOOptions = NULL; + + return result; +} + +void +Fs::Ufs::UFSSwapDir::init() +{ + debugs(47, 3, HERE << "Initialising UFS SwapDir engine."); + /* Parsing must be finished by now - force to NULL, don't delete */ + currentIOOptions = NULL; + static int started_clean_event = 0; + static const char *errmsg = + "\tFailed to verify one of the swap directories, Check cache.log\n" + "\tfor details. Run 'squid -z' to create swap directories\n" + "\tif needed, or if running Squid for the first time."; + IO->init(); + + if (verifyCacheDirs()) + fatal(errmsg); + + openLog(); + + rebuild(); + + if (!started_clean_event) { + eventAdd("UFS storeDirClean", CleanEvent, NULL, 15.0, 1); + started_clean_event = 1; + } + + (void) storeDirGetBlkSize(path, &fs.blksize); +} + +void +Fs::Ufs::UFSSwapDir::create() +{ + debugs(47, 3, "Creating swap space in " << path); + createDirectory(path, 0); + createSwapSubDirs(); +} + +Fs::Ufs::UFSSwapDir::UFSSwapDir(char const *aType, const char *anIOType) : SwapDir(aType), IO(NULL), map(new FileMap()), suggest(0), swaplog_fd (-1), currentIOOptions(new ConfigOptionVector()), ioType(xstrdup(anIOType)), cur_size(0), n_disk_objects(0) +{ + /* modulename is only set to disk modules that are built, by configure, + * so the Find call should never return NULL here. + */ + IO = new Fs::Ufs::UFSStrategy(DiskIOModule::Find(anIOType)->createStrategy()); +} + +Fs::Ufs::UFSSwapDir::~UFSSwapDir() +{ + if (swaplog_fd > -1) { + file_close(swaplog_fd); + swaplog_fd = -1; + } + + delete map; + + if (IO) + delete IO; + + IO = NULL; + + safe_free(ioType); +} + +void +Fs::Ufs::UFSSwapDir::dumpEntry(StoreEntry &e) const +{ + debugs(47, DBG_CRITICAL, HERE << "FILENO "<< std::setfill('0') << std::hex << std::uppercase << std::setw(8) << e.swap_filen); + debugs(47, DBG_CRITICAL, HERE << "PATH " << fullPath(e.swap_filen, NULL) ); + e.dump(0); +} + +bool +Fs::Ufs::UFSSwapDir::doubleCheck(StoreEntry & e) +{ + + struct stat sb; + + if (::stat(fullPath(e.swap_filen, NULL), &sb) < 0) { + debugs(47, DBG_CRITICAL, HERE << "WARNING: Missing swap file"); + dumpEntry(e); + return true; + } + + if ((off_t)e.swap_file_sz != sb.st_size) { + debugs(47, DBG_CRITICAL, HERE << "WARNING: Size Mismatch. Entry size: " + << e.swap_file_sz << ", file size: " << sb.st_size); + dumpEntry(e); + return true; + } + + return false; +} + +void +Fs::Ufs::UFSSwapDir::statfs(StoreEntry & sentry) const +{ + int totl_kb = 0; + int free_kb = 0; + int totl_in = 0; + int free_in = 0; + int x; + storeAppendPrintf(&sentry, "First level subdirectories: %d\n", l1); + storeAppendPrintf(&sentry, "Second level subdirectories: %d\n", l2); + storeAppendPrintf(&sentry, "Maximum Size: %" PRIu64 " KB\n", maxSize() >> 10); + storeAppendPrintf(&sentry, "Current Size: %.2f KB\n", currentSize() / 1024.0); + storeAppendPrintf(&sentry, "Percent Used: %0.2f%%\n", + Math::doublePercent(currentSize(), maxSize())); + storeAppendPrintf(&sentry, "Filemap bits in use: %d of %d (%d%%)\n", + map->numFilesInMap(), map->capacity(), + Math::intPercent(map->numFilesInMap(), map->capacity())); + x = storeDirGetUFSStats(path, &totl_kb, &free_kb, &totl_in, &free_in); + + if (0 == x) { + storeAppendPrintf(&sentry, "Filesystem Space in use: %d/%d KB (%d%%)\n", + totl_kb - free_kb, + totl_kb, + Math::intPercent(totl_kb - free_kb, totl_kb)); + storeAppendPrintf(&sentry, "Filesystem Inodes in use: %d/%d (%d%%)\n", + totl_in - free_in, + totl_in, + Math::intPercent(totl_in - free_in, totl_in)); + } + + storeAppendPrintf(&sentry, "Flags:"); + + if (flags.selected) + storeAppendPrintf(&sentry, " SELECTED"); + + if (flags.read_only) + storeAppendPrintf(&sentry, " READ-ONLY"); + + storeAppendPrintf(&sentry, "\n"); + + IO->statfs(sentry); +} + +void +Fs::Ufs::UFSSwapDir::maintain() +{ + /* We can't delete objects while rebuilding swap */ + + /* XXX FIXME each store should start maintaining as it comes online. */ + + if (StoreController::store_dirs_rebuilding) + return; + + StoreEntry *e = NULL; + + int removed = 0; + + RemovalPurgeWalker *walker; + + double f = (double) (currentSize() - minSize()) / (maxSize() - minSize()); + + f = f < 0.0 ? 0.0 : f > 1.0 ? 1.0 : f; + + int max_scan = (int) (f * 400.0 + 100.0); + + int max_remove = (int) (f * 70.0 + 10.0); + + /* + * This is kinda cheap, but so we need this priority hack? + */ + + debugs(47, 3, HERE << "f=" << f << ", max_scan=" << max_scan << ", max_remove=" << max_remove ); + + walker = repl->PurgeInit(repl, max_scan); + + while (1) { + if (currentSize() < minSize()) + break; + + if (removed >= max_remove) + break; + + e = walker->Next(walker); + + if (!e) + break; /* no more objects */ + + ++removed; + + e->release(); + } + + walker->Done(walker); + debugs(47, (removed ? 2 : 3), HERE << path << + " removed " << removed << "/" << max_remove << " f=" << + std::setprecision(4) << f << " max_scan=" << max_scan); +} + +void +Fs::Ufs::UFSSwapDir::reference(StoreEntry &e) +{ + debugs(47, 3, HERE << "referencing " << &e << " " << + e.swap_dirn << "/" << e.swap_filen); + + if (repl->Referenced) + repl->Referenced(repl, &e, &e.repl); +} + +bool +Fs::Ufs::UFSSwapDir::dereference(StoreEntry & e) +{ + debugs(47, 3, HERE << "dereferencing " << &e << " " << + e.swap_dirn << "/" << e.swap_filen); + + if (repl->Dereferenced) + repl->Dereferenced(repl, &e, &e.repl); + + return true; // keep e in the global store_table +} + +StoreIOState::Pointer +Fs::Ufs::UFSSwapDir::createStoreIO(StoreEntry &e, StoreIOState::STFNCB * file_callback, StoreIOState::STIOCB * aCallback, void *callback_data) +{ + return IO->create (this, &e, file_callback, aCallback, callback_data); +} + +StoreIOState::Pointer +Fs::Ufs::UFSSwapDir::openStoreIO(StoreEntry &e, StoreIOState::STFNCB * file_callback, StoreIOState::STIOCB * aCallback, void *callback_data) +{ + return IO->open (this, &e, file_callback, aCallback, callback_data); +} + +int +Fs::Ufs::UFSSwapDir::mapBitTest(sfileno filn) +{ + return map->testBit(filn); +} + +void +Fs::Ufs::UFSSwapDir::mapBitSet(sfileno filn) +{ + map->setBit(filn); +} + +void +Fs::Ufs::UFSSwapDir::mapBitReset(sfileno filn) +{ + /* + * We have to test the bit before calling clearBit as + * it doesn't do bounds checking and blindly assumes + * filn is a valid file number, but it might not be because + * the map is dynamic in size. Also clearing an already clear + * bit puts the map counter of-of-whack. + */ + + if (map->testBit(filn)) + map->clearBit(filn); +} + +int +Fs::Ufs::UFSSwapDir::mapBitAllocate() +{ + int fn; + fn = map->allocate(suggest); + map->setBit(fn); + suggest = fn + 1; + return fn; +} + +char * +Fs::Ufs::UFSSwapDir::swapSubDir(int subdirn)const +{ + LOCAL_ARRAY(char, fullfilename, MAXPATHLEN); + assert(0 <= subdirn && subdirn < l1); + snprintf(fullfilename, MAXPATHLEN, "%s/%02X", path, subdirn); + return fullfilename; +} + +int +Fs::Ufs::UFSSwapDir::createDirectory(const char *aPath, int should_exist) +{ + int created = 0; + + struct stat st; + getCurrentTime(); + + if (0 == ::stat(aPath, &st)) { + if (S_ISDIR(st.st_mode)) { + debugs(47, (should_exist ? 3 : DBG_IMPORTANT), aPath << " exists"); + } else { + fatalf("Swap directory %s is not a directory.", aPath); + } + +#if _SQUID_MSWIN_ + + } else if (0 == mkdir(aPath)) { +#else + + } else if (0 == mkdir(aPath, 0755)) { +#endif + debugs(47, (should_exist ? DBG_IMPORTANT : 3), aPath << " created"); + created = 1; + } else { + fatalf("Failed to make swap directory %s: %s", + aPath, xstrerror()); + } + + return created; +} + +bool +Fs::Ufs::UFSSwapDir::pathIsDirectory(const char *aPath)const +{ + + struct stat sb; + + if (::stat(aPath, &sb) < 0) { + debugs(47, DBG_CRITICAL, "ERROR: " << aPath << ": " << xstrerror()); + return false; + } + + if (S_ISDIR(sb.st_mode) == 0) { + debugs(47, DBG_CRITICAL, "WARNING: " << aPath << " is not a directory"); + return false; + } + + return true; +} + +bool +Fs::Ufs::UFSSwapDir::verifyCacheDirs() +{ + if (!pathIsDirectory(path)) + return true; + + for (int j = 0; j < l1; ++j) { + char const *aPath = swapSubDir(j); + + if (!pathIsDirectory(aPath)) + return true; + } + + return false; +} + +void +Fs::Ufs::UFSSwapDir::createSwapSubDirs() +{ + LOCAL_ARRAY(char, name, MAXPATHLEN); + + for (int i = 0; i < l1; ++i) { + snprintf(name, MAXPATHLEN, "%s/%02X", path, i); + + int should_exist; + + if (createDirectory(name, 0)) + should_exist = 0; + else + should_exist = 1; + + debugs(47, DBG_IMPORTANT, "Making directories in " << name); + + for (int k = 0; k < l2; ++k) { + snprintf(name, MAXPATHLEN, "%s/%02X/%02X", path, i, k); + createDirectory(name, should_exist); + } + } +} + +char * +Fs::Ufs::UFSSwapDir::logFile(char const *ext) const +{ + LOCAL_ARRAY(char, lpath, MAXPATHLEN); + LOCAL_ARRAY(char, pathtmp, MAXPATHLEN); + LOCAL_ARRAY(char, digit, 32); + char *pathtmp2; + + if (Config.Log.swap) { + xstrncpy(pathtmp, path, MAXPATHLEN - 64); + pathtmp2 = pathtmp; + + while ((pathtmp2 = strchr(pathtmp2, '/')) != NULL) + *pathtmp2 = '.'; + + while (strlen(pathtmp) && pathtmp[strlen(pathtmp) - 1] == '.') + pathtmp[strlen(pathtmp) - 1] = '\0'; + + for (pathtmp2 = pathtmp; *pathtmp2 == '.'; ++pathtmp2); + snprintf(lpath, MAXPATHLEN - 64, Config.Log.swap, pathtmp2); + + if (strncmp(lpath, Config.Log.swap, MAXPATHLEN - 64) == 0) { + strcat(lpath, "."); + snprintf(digit, 32, "%02d", index); + strncat(lpath, digit, 3); + } + } else { + xstrncpy(lpath, path, MAXPATHLEN - 64); + strcat(lpath, "/swap.state"); + } + + if (ext) + strncat(lpath, ext, 16); + + return lpath; +} + +void +Fs::Ufs::UFSSwapDir::openLog() +{ + char *logPath; + logPath = logFile(); + swaplog_fd = file_open(logPath, O_WRONLY | O_CREAT | O_BINARY); + + if (swaplog_fd < 0) { + debugs(50, DBG_IMPORTANT, "ERROR opening swap log " << logPath << ": " << xstrerror()); + fatal("UFSSwapDir::openLog: Failed to open swap log."); + } + + debugs(50, 3, HERE << "Cache Dir #" << index << " log opened on FD " << swaplog_fd); + + if (0 == NumberOfUFSDirs) + assert(NULL == UFSDirToGlobalDirMapping); + + ++NumberOfUFSDirs; + + assert(NumberOfUFSDirs <= Config.cacheSwap.n_configured); +} + +void +Fs::Ufs::UFSSwapDir::closeLog() +{ + if (swaplog_fd < 0) /* not open */ + return; + + file_close(swaplog_fd); + + debugs(47, 3, "Cache Dir #" << index << " log closed on FD " << swaplog_fd); + + swaplog_fd = -1; + + --NumberOfUFSDirs; + + assert(NumberOfUFSDirs >= 0); + + if (0 == NumberOfUFSDirs) + safe_free(UFSDirToGlobalDirMapping); +} + +bool +Fs::Ufs::UFSSwapDir::validL1(int anInt) const +{ + return anInt < l1; +} + +bool +Fs::Ufs::UFSSwapDir::validL2(int anInt) const +{ + return anInt < l2; +} + +StoreEntry * +Fs::Ufs::UFSSwapDir::addDiskRestore(const cache_key * key, + sfileno file_number, + uint64_t swap_file_sz, + time_t expires, + time_t timestamp, + time_t lastref, + time_t lastmod, + uint32_t refcount, + uint16_t newFlags, + int clean) +{ + StoreEntry *e = NULL; + debugs(47, 5, HERE << storeKeyText(key) << + ", fileno="<< std::setfill('0') << std::hex << std::uppercase << std::setw(8) << file_number); + /* if you call this you'd better be sure file_number is not + * already in use! */ + e = new StoreEntry(); + e->store_status = STORE_OK; + e->setMemStatus(NOT_IN_MEMORY); + e->swap_status = SWAPOUT_DONE; + e->swap_filen = file_number; + e->swap_dirn = index; + e->swap_file_sz = swap_file_sz; + e->lock_count = 0; + e->lastref = lastref; + e->timestamp = timestamp; + e->expires = expires; + e->lastmod = lastmod; + e->refcount = refcount; + e->flags = newFlags; + EBIT_SET(e->flags, ENTRY_CACHABLE); + EBIT_CLR(e->flags, RELEASE_REQUEST); + EBIT_CLR(e->flags, KEY_PRIVATE); + e->ping_status = PING_NONE; + EBIT_CLR(e->flags, ENTRY_VALIDATED); + mapBitSet(e->swap_filen); + cur_size += fs.blksize * sizeInBlocks(e->swap_file_sz); + ++n_disk_objects; + e->hashInsert(key); /* do it after we clear KEY_PRIVATE */ + replacementAdd (e); + return e; +} + +void +Fs::Ufs::UFSSwapDir::undoAddDiskRestore(StoreEntry *e) +{ + debugs(47, 5, HERE << *e); + replacementRemove(e); // checks swap_dirn so do it before we invalidate it + // Do not unlink the file as it might be used by a subsequent entry. + mapBitReset(e->swap_filen); + e->swap_filen = -1; + e->swap_dirn = -1; + cur_size -= fs.blksize * sizeInBlocks(e->swap_file_sz); + --n_disk_objects; +} + +void +Fs::Ufs::UFSSwapDir::rebuild() +{ + ++StoreController::store_dirs_rebuilding; + eventAdd("storeRebuild", Fs::Ufs::RebuildState::RebuildStep, new Fs::Ufs::RebuildState(this), 0.0, 1); +} + +void +Fs::Ufs::UFSSwapDir::closeTmpSwapLog() +{ + char *swaplog_path = xstrdup(logFile(NULL)); + char *new_path = xstrdup(logFile(".new")); + int fd; + file_close(swaplog_fd); + + if (xrename(new_path, swaplog_path) < 0) { + debugs(50, DBG_IMPORTANT, HERE << "ERROR: " << swaplog_path << ": " << xstrerror()); + fatalf("Failed to rename log file %s to %s.new", swaplog_path, swaplog_path); + } + + fd = file_open(swaplog_path, O_WRONLY | O_CREAT | O_BINARY); + + if (fd < 0) { + debugs(50, DBG_IMPORTANT, HERE << "ERROR: " << swaplog_path << ": " << xstrerror()); + fatalf("Failed to open swap log %s", swaplog_path); + } + + safe_free(swaplog_path); + safe_free(new_path); + swaplog_fd = fd; + debugs(47, 3, HERE << "Cache Dir #" << index << " log opened on FD " << fd); +} + +FILE * +Fs::Ufs::UFSSwapDir::openTmpSwapLog(int *clean_flag, int *zero_flag) +{ + char *swaplog_path = xstrdup(logFile(NULL)); + char *clean_path = xstrdup(logFile(".last-clean")); + char *new_path = xstrdup(logFile(".new")); + + struct stat log_sb; + + struct stat clean_sb; + FILE *fp; + int fd; + + if (::stat(swaplog_path, &log_sb) < 0) { + debugs(47, DBG_IMPORTANT, HERE << "Cache Dir #" << index << ": No log file"); + safe_free(swaplog_path); + safe_free(clean_path); + safe_free(new_path); + return NULL; + } + + *zero_flag = log_sb.st_size == 0 ? 1 : 0; + /* close the existing write-only FD */ + + if (swaplog_fd >= 0) + file_close(swaplog_fd); + + /* open a write-only FD for the new log */ + fd = file_open(new_path, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY); + + if (fd < 0) { + debugs(50, DBG_IMPORTANT, "ERROR: while opening swap log" << new_path << ": " << xstrerror()); + fatal("UFSSwapDir::openTmpSwapLog: Failed to open swap log."); + } + + swaplog_fd = fd; + + { + const StoreSwapLogHeader header; + MemBuf buf; + buf.init(header.record_size, header.record_size); + buf.append(reinterpret_cast(&header), sizeof(header)); + // Pad to keep in sync with UFSSwapDir::writeCleanStart(). + memset(buf.space(), 0, header.gapSize()); + buf.appended(header.gapSize()); + file_write(swaplog_fd, -1, buf.content(), buf.contentSize(), + NULL, NULL, buf.freeFunc()); + } + + /* open a read-only stream of the old log */ + fp = fopen(swaplog_path, "rb"); + + if (fp == NULL) { + debugs(50, DBG_CRITICAL, "ERROR: while opening " << swaplog_path << ": " << xstrerror()); + fatal("Failed to open swap log for reading"); + } + + memset(&clean_sb, '\0', sizeof(struct stat)); + + if (::stat(clean_path, &clean_sb) < 0) + *clean_flag = 0; + else if (clean_sb.st_mtime < log_sb.st_mtime) + *clean_flag = 0; + else + *clean_flag = 1; + + safeunlink(clean_path, 1); + + safe_free(swaplog_path); + + safe_free(clean_path); + + safe_free(new_path); + + return fp; +} + +/* + * Begin the process to write clean cache state. For AUFS this means + * opening some log files and allocating write buffers. Return 0 if + * we succeed, and assign the 'func' and 'data' return pointers. + */ +int +Fs::Ufs::UFSSwapDir::writeCleanStart() +{ + UFSCleanLog *state = new UFSCleanLog(this); + StoreSwapLogHeader header; +#if HAVE_FCHMOD + + struct stat sb; +#endif + + cleanLog = NULL; + state->newLog = xstrdup(logFile(".clean")); + state->fd = file_open(state->newLog, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY); + + if (state->fd < 0) { + xfree(state->newLog); + delete state; + return -1; + } + + state->cur = xstrdup(logFile(NULL)); + state->cln = xstrdup(logFile(".last-clean")); + state->outbuf = (char *)xcalloc(CLEAN_BUF_SZ, 1); + state->outbuf_offset = 0; + /*copy the header */ + memcpy(state->outbuf, &header, sizeof(StoreSwapLogHeader)); + // Leave a gap to keep in sync with UFSSwapDir::openTmpSwapLog(). + memset(state->outbuf + sizeof(StoreSwapLogHeader), 0, header.gapSize()); + state->outbuf_offset += header.record_size; + + state->walker = repl->WalkInit(repl); + ::unlink(state->cln); + debugs(47, 3, HERE << "opened " << state->newLog << ", FD " << state->fd); +#if HAVE_FCHMOD + + if (::stat(state->cur, &sb) == 0) + fchmod(state->fd, sb.st_mode); + +#endif + + + cleanLog = state; + return 0; +} + +void +Fs::Ufs::UFSSwapDir::writeCleanDone() +{ + UFSCleanLog *state = (UFSCleanLog *)cleanLog; + int fd; + + if (NULL == state) + return; + + if (state->fd < 0) + return; + + state->walker->Done(state->walker); + + if (FD_WRITE_METHOD(state->fd, state->outbuf, state->outbuf_offset) < 0) { + debugs(50, DBG_CRITICAL, HERE << state->newLog << ": write: " << xstrerror()); + debugs(50, DBG_CRITICAL, HERE << "Current swap logfile not replaced."); + file_close(state->fd); + state->fd = -1; + ::unlink(state->newLog); + } + + safe_free(state->outbuf); + /* + * You can't rename open files on Microsoft "operating systems" + * so we have to close before renaming. + */ + closeLog(); + /* save the fd value for a later test */ + fd = state->fd; + /* rename */ + + if (state->fd >= 0) { +#if _SQUID_OS2_ || _SQUID_WINDOWS_ + file_close(state->fd); + state->fd = -1; +#endif + + xrename(state->newLog, state->cur); + } + + /* touch a timestamp file if we're not still validating */ + if (StoreController::store_dirs_rebuilding) + (void) 0; + else if (fd < 0) + (void) 0; + else + file_close(file_open(state->cln, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY)); + + /* close */ + safe_free(state->cur); + + safe_free(state->newLog); + + safe_free(state->cln); + + if (state->fd >= 0) + file_close(state->fd); + + state->fd = -1; + + delete state; + + cleanLog = NULL; +} + +void +Fs::Ufs::UFSSwapDir::CleanEvent(void *unused) +{ + static int swap_index = 0; + int i; + int j = 0; + int n = 0; + /* + * Assert that there are UFS cache_dirs configured, otherwise + * we should never be called. + */ + assert(NumberOfUFSDirs); + + if (NULL == UFSDirToGlobalDirMapping) { + SwapDir *sd; + /* + * Initialize the little array that translates UFS cache_dir + * number into the Config.cacheSwap.swapDirs array index. + */ + UFSDirToGlobalDirMapping = (int *)xcalloc(NumberOfUFSDirs, sizeof(*UFSDirToGlobalDirMapping)); + + for (i = 0, n = 0; i < Config.cacheSwap.n_configured; ++i) { + /* This is bogus, the controller should just clean each instance once */ + sd = dynamic_cast (INDEXSD(i)); + + if (!UFSSwapDir::IsUFSDir(sd)) + continue; + + UFSSwapDir *usd = dynamic_cast(sd); + + assert (usd); + + UFSDirToGlobalDirMapping[n] = i; + ++n; + + j += (usd->l1 * usd->l2); + } + + assert(n == NumberOfUFSDirs); + /* + * Start the commonUfsDirClean() swap_index with a random + * value. j equals the total number of UFS level 2 + * swap directories + */ + swap_index = (int) (squid_random() % j); + } + + /* if the rebuild is finished, start cleaning directories. */ + if (0 == StoreController::store_dirs_rebuilding) { + n = DirClean(swap_index); + ++swap_index; + } + + eventAdd("storeDirClean", CleanEvent, NULL, + 15.0 * exp(-0.25 * n), 1); +} + +bool +Fs::Ufs::UFSSwapDir::IsUFSDir(SwapDir * sd) +{ + UFSSwapDir *mySD = dynamic_cast(sd); + return (mySD != 0) ; +} + +/* + * XXX: this is broken - it assumes all cache dirs use the same + * l1 and l2 scheme. -RBC 20021215. Partial fix is in place - + * if not UFSSwapDir return 0; + */ +bool +Fs::Ufs::UFSSwapDir::FilenoBelongsHere(int fn, int F0, int F1, int F2) +{ + int D1, D2; + int L1, L2; + int filn = fn; + assert(F0 < Config.cacheSwap.n_configured); + assert (UFSSwapDir::IsUFSDir (dynamic_cast(INDEXSD(F0)))); + UFSSwapDir *sd = dynamic_cast(INDEXSD(F0)); + + if (!sd) + return 0; + + L1 = sd->l1; + + L2 = sd->l2; + + D1 = ((filn / L2) / L2) % L1; + + if (F1 != D1) + return 0; + + D2 = (filn / L2) % L2; + + if (F2 != D2) + return 0; + + return 1; +} + +int +Fs::Ufs::UFSSwapDir::validFileno(sfileno filn, int flag) const +{ + if (filn < 0) + return 0; + + /* + * If flag is set it means out-of-range file number should + * be considered invalid. + */ + if (flag) + if (filn > map->capacity()) + return 0; + + return 1; +} + +void +Fs::Ufs::UFSSwapDir::unlinkFile(sfileno f) +{ + debugs(79, 3, HERE << "unlinking fileno " << std::setfill('0') << + std::hex << std::uppercase << std::setw(8) << f << " '" << + fullPath(f,NULL) << "'"); + /* commonUfsDirMapBitReset(this, f); */ + IO->unlinkFile(fullPath(f,NULL)); +} + +bool +Fs::Ufs::UFSSwapDir::unlinkdUseful() const +{ + // unlinkd may be useful only in workers + return IamWorkerProcess() && IO->io->unlinkdUseful(); +} + +void +Fs::Ufs::UFSSwapDir::unlink(StoreEntry & e) +{ + debugs(79, 3, HERE << "dirno " << index << ", fileno "<< + std::setfill('0') << std::hex << std::uppercase << std::setw(8) << e.swap_filen); + if (e.swap_status == SWAPOUT_DONE) { + cur_size -= fs.blksize * sizeInBlocks(e.swap_file_sz); + --n_disk_objects; + } + replacementRemove(&e); + mapBitReset(e.swap_filen); + UFSSwapDir::unlinkFile(e.swap_filen); +} + +void +Fs::Ufs::UFSSwapDir::replacementAdd(StoreEntry * e) +{ + debugs(47, 4, HERE << "added node " << e << " to dir " << index); + repl->Add(repl, e, &e->repl); +} + + +void +Fs::Ufs::UFSSwapDir::replacementRemove(StoreEntry * e) +{ + StorePointer SD; + + if (e->swap_dirn < 0) + return; + + SD = INDEXSD(e->swap_dirn); + + assert (dynamic_cast(SD.getRaw()) == this); + + debugs(47, 4, HERE << "remove node " << e << " from dir " << index); + + repl->Remove(repl, e, &e->repl); +} + +void +Fs::Ufs::UFSSwapDir::dump(StoreEntry & entry) const +{ + storeAppendPrintf(&entry, " %" PRIu64 " %d %d", maxSize() >> 20, l1, l2); + dumpOptions(&entry); +} + +char * +Fs::Ufs::UFSSwapDir::fullPath(sfileno filn, char *fullpath) const +{ + LOCAL_ARRAY(char, fullfilename, MAXPATHLEN); + int L1 = l1; + int L2 = l2; + + if (!fullpath) + fullpath = fullfilename; + + fullpath[0] = '\0'; + + snprintf(fullpath, MAXPATHLEN, "%s/%02X/%02X/%08X", + path, + ((filn / L2) / L2) % L1, + (filn / L2) % L2, + filn); + + return fullpath; +} + +int +Fs::Ufs::UFSSwapDir::callback() +{ + return IO->callback(); +} + +void +Fs::Ufs::UFSSwapDir::sync() +{ + IO->sync(); +} + +void +Fs::Ufs::UFSSwapDir::swappedOut(const StoreEntry &e) +{ + cur_size += fs.blksize * sizeInBlocks(e.swap_file_sz); + ++n_disk_objects; +} + +StoreSearch * +Fs::Ufs::UFSSwapDir::search(String const url, HttpRequest *request) +{ + if (url.size()) + fatal ("Cannot search by url yet\n"); + + return new Fs::Ufs::StoreSearchUFS (this); +} + +void +Fs::Ufs::UFSSwapDir::logEntry(const StoreEntry & e, int op) const +{ + StoreSwapLogData *s = new StoreSwapLogData; + s->op = (char) op; + s->swap_filen = e.swap_filen; + s->timestamp = e.timestamp; + s->lastref = e.lastref; + s->expires = e.expires; + s->lastmod = e.lastmod; + s->swap_file_sz = e.swap_file_sz; + s->refcount = e.refcount; + s->flags = e.flags; + memcpy(s->key, e.key, SQUID_MD5_DIGEST_LENGTH); + s->finalize(); + file_write(swaplog_fd, + -1, + s, + sizeof(StoreSwapLogData), + NULL, + NULL, + FreeObject); +} + +int +Fs::Ufs::UFSSwapDir::DirClean(int swap_index) +{ + DIR *dir_pointer = NULL; + + LOCAL_ARRAY(char, p1, MAXPATHLEN + 1); + LOCAL_ARRAY(char, p2, MAXPATHLEN + 1); + + int files[20]; + int swapfileno; + int fn; /* same as swapfileno, but with dirn bits set */ + int n = 0; + int k = 0; + int N0, N1, N2; + int D0, D1, D2; + UFSSwapDir *SD; + N0 = NumberOfUFSDirs; + D0 = UFSDirToGlobalDirMapping[swap_index % N0]; + SD = dynamic_cast(INDEXSD(D0)); + assert (SD); + N1 = SD->l1; + D1 = (swap_index / N0) % N1; + N2 = SD->l2; + D2 = ((swap_index / N0) / N1) % N2; + snprintf(p1, MAXPATHLEN, "%s/%02X/%02X", + SD->path, D1, D2); + debugs(36, 3, HERE << "Cleaning directory " << p1); + dir_pointer = opendir(p1); + + if (dir_pointer == NULL) { + if (errno == ENOENT) { + debugs(36, DBG_CRITICAL, HERE << "WARNING: Creating " << p1); +#if _SQUID_MSWIN_ + + if (mkdir(p1) == 0) +#else + + if (mkdir(p1, 0777) == 0) +#endif + + return 0; + } + + debugs(50, DBG_CRITICAL, HERE << p1 << ": " << xstrerror()); + safeunlink(p1, 1); + return 0; + } + + dirent_t *de; + while ((de = readdir(dir_pointer)) != NULL && k < 20) { + if (sscanf(de->d_name, "%X", &swapfileno) != 1) + continue; + + fn = swapfileno; /* XXX should remove this cruft ! */ + + if (SD->validFileno(fn, 1)) + if (SD->mapBitTest(fn)) + if (UFSSwapDir::FilenoBelongsHere(fn, D0, D1, D2)) + continue; + + files[k] = swapfileno; + ++k; + } + + closedir(dir_pointer); + + if (k == 0) + return 0; + + qsort(files, k, sizeof(int), rev_int_sort); + + if (k > 10) + k = 10; + + for (n = 0; n < k; ++n) { + debugs(36, 3, HERE << "Cleaning file "<< std::setfill('0') << std::hex << std::uppercase << std::setw(8) << files[n]); + snprintf(p2, MAXPATHLEN + 1, "%s/%08X", p1, files[n]); + safeunlink(p2, 0); + ++statCounter.swap.files_cleaned; + } + + debugs(36, 3, HERE << "Cleaned " << k << " unused files from " << p1); + return k; +} === added file 'src/fs/ufs/UFSSwapDir.h.moved' --- src/fs/ufs/UFSSwapDir.h.moved 1970-01-01 00:00:00 +0000 +++ src/fs/ufs/UFSSwapDir.h.moved 2012-08-10 06:59:30 +0000 @@ -0,0 +1,191 @@ +/* + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + */ + +#ifndef SQUID_FS_UFS_UFSSWAPDIR_H +#define SQUID_FS_UFS_UFSSWAPDIR_H + +#include "SquidString.h" +#include "Store.h" +#include "StoreIOState.h" +#include "StoreSearch.h" +#include "SwapDir.h" +#include "swap_log_op.h" +#include "UFSStrategy.h" + +class HttpRequest; +class ConfigOptionVector; +class FileMap; +class DiskIOModule; + +namespace Fs +{ +namespace Ufs +{ +/// \ingroup UFS +class UFSSwapDir : public SwapDir +{ +public: + static bool IsUFSDir(SwapDir* sd); + static int DirClean(int swap_index); + /** check whether swapfile belongs to the specified cachedir/l1dir/l2dir + * + * \param cachedir the number of the cachedir which is being tested + * \param level1dir level-1 dir in the cachedir + * \param level2dir level-2 dir + */ + static bool FilenoBelongsHere(int fn, int cachedir, int level1dir, int level2dir); + + UFSSwapDir(char const *aType, const char *aModuleType); + /** Initial setup / end destruction */ + virtual void init(); + /** Create a new SwapDir (-z command-line option) */ + virtual void create(); + virtual void dump(StoreEntry &) const; + ~UFSSwapDir(); + virtual StoreSearch *search(String const url, HttpRequest *); + /** double-check swap during rebuild (-S command-line option) + * + * called by storeCleanup if needed + */ + virtual bool doubleCheck(StoreEntry &); + virtual bool unlinkdUseful() const; + /** unlink a file, and remove its entry from the filemap */ + virtual void unlink(StoreEntry &); + virtual void statfs(StoreEntry &)const; + virtual void maintain(); + /** check whether this filesystem can store the given object + * + * UFS filesystems will happily store anything as long as + * the LRU time isn't too small + */ + virtual bool canStore(const StoreEntry &e, int64_t diskSpaceNeeded, int &load) const; + /** reference an object + * + * This routine is called whenever an object is referenced, so we can + * maintain replacement information within the storage fs. + */ + virtual void reference(StoreEntry &); + /** de-reference an object + * + * This routine is called whenever the last reference to an object is + * removed, to maintain replacement information within the storage fs. + */ + virtual bool dereference(StoreEntry &); + virtual StoreIOState::Pointer createStoreIO(StoreEntry &, StoreIOState::STFNCB *, StoreIOState::STIOCB *, void *); + virtual StoreIOState::Pointer openStoreIO(StoreEntry &, StoreIOState::STFNCB *, StoreIOState::STIOCB *, void *); + virtual void openLog(); + virtual void closeLog(); + virtual int writeCleanStart(); + virtual void writeCleanDone(); + virtual void logEntry(const StoreEntry & e, int op) const; + virtual void parse(int index, char *path); ///parse configuration and setup new SwapDir + virtual void reconfigure(); ///reconfigure the SwapDir + virtual int callback(); + virtual void sync(); + virtual void swappedOut(const StoreEntry &e); + virtual uint64_t currentSize() const { return cur_size; } + virtual uint64_t currentCount() const { return n_disk_objects; } + + void unlinkFile(sfileno f); + // move down when unlink is a virtual method + //protected: + Fs::Ufs::UFSStrategy *IO; + char *fullPath(sfileno, char *) const; + /* temp */ + void closeTmpSwapLog(); + FILE *openTmpSwapLog(int *clean_flag, int *zero_flag); + char *swapSubDir(int subdirn) const; + int mapBitTest(sfileno filn); + void mapBitReset(sfileno filn); + void mapBitSet(sfileno filn); + /** Add a new object to the cache with empty memory copy and pointer to disk + * + * This method is used to rebuild a store from disk + */ + StoreEntry *addDiskRestore(const cache_key * key, + sfileno file_number, + uint64_t swap_file_sz, + time_t expires, + time_t timestamp, + time_t lastref, + time_t lastmod, + uint32_t refcount, + uint16_t flags, + int clean); + /// Undo the effects of UFSSwapDir::addDiskRestore(). + void undoAddDiskRestore(StoreEntry *e); + int validFileno(sfileno filn, int flag) const; + int mapBitAllocate(); + virtual ConfigOption *getOptionTree() const; + + void *fsdata; + + bool validL2(int) const; + bool validL1(int) const; + + /** Add and remove the given StoreEntry from the replacement policy in use */ + void replacementAdd(StoreEntry *e); + void replacementRemove(StoreEntry *e); + +protected: + FileMap *map; + int suggest; + int l1; + int l2; + +private: + void parseSizeL1L2(); + static int NumberOfUFSDirs; + static int * UFSDirToGlobalDirMapping; + bool pathIsDirectory(const char *path)const; + int swaplog_fd; + static EVH CleanEvent; + /** Verify that the the CacheDir exists + * + * If this returns < 0, then Squid exits, complains about swap + * directories not existing, and instructs the admin to run 'squid -z' + * Called by UFSSwapDir::init + */ + bool verifyCacheDirs(); + void rebuild(); + int createDirectory(const char *path, int); + void createSwapSubDirs(); + void dumpEntry(StoreEntry &) const; + char *logFile(char const *ext = NULL)const; + void changeIO(DiskIOModule *); + bool optionIOParse(char const *option, const char *value, int reconfiguring); + void optionIODump(StoreEntry * e) const; + mutable ConfigOptionVector *currentIOOptions; + char const *ioType; + uint64_t cur_size; ///< currently used space in the storage area + uint64_t n_disk_objects; ///< total number of objects stored +}; + +} //namespace Ufs +} //namespace Fs +#endif /* SQUID_FS_UFS_UFSSWAPDIR_H */ === modified file 'src/fs/ufs/UFSSwapLogParser.cc' --- src/fs/ufs/UFSSwapLogParser.cc 2012-08-11 00:14:47 +0000 +++ src/fs/ufs/UFSSwapLogParser.cc 2012-08-13 09:45:17 +0000 @@ -28,11 +28,16 @@ */ #include "squid.h" +#include "Debug.h" #include "md5.h" #include "StoreSwapLogData.h" #include "swap_log_op.h" #include "UFSSwapLogParser.h" +#if HAVE_SYS_STAT_H +#include +#endif + /// Parse a swap header entry created on a system with 32-bit size_t and sfileno /// this is typical of 32-bit systems without large file support /// NP: SQUID_MD5_DIGEST_LENGTH is very risky still. === added file 'src/fs/ufs/UFSSwapLogParser.cc.moved' --- src/fs/ufs/UFSSwapLogParser.cc.moved 1970-01-01 00:00:00 +0000 +++ src/fs/ufs/UFSSwapLogParser.cc.moved 2012-08-10 06:59:30 +0000 @@ -0,0 +1,201 @@ +/* + * UFSSwapLogParser.cc + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + */ + +#include "squid.h" +#include "md5.h" +#include "StoreSwapLogData.h" +#include "swap_log_op.h" +#include "UFSSwapLogParser.h" + +/// Parse a swap header entry created on a system with 32-bit size_t and sfileno +/// this is typical of 32-bit systems without large file support +/// NP: SQUID_MD5_DIGEST_LENGTH is very risky still. +class UFSSwapLogParser_v1_32bs:public Fs::Ufs::UFSSwapLogParser +{ +public: + /// version 1 cache swap.state entry with 32-bit size_t (swap_file_sz) + /// time_t an sfileno have no variation from the v1 baseline format + struct StoreSwapLogDataOld { + char op; + sfileno swap_filen; + time_t timestamp; + time_t lastref; + time_t expires; + time_t lastmod; + uint32_t swap_file_sz; + uint16_t refcount; + uint16_t flags; + unsigned char key[SQUID_MD5_DIGEST_LENGTH]; + }; + UFSSwapLogParser_v1_32bs(FILE *fp):Fs::Ufs::UFSSwapLogParser(fp) { + record_size = sizeof(UFSSwapLogParser_v1_32bs::StoreSwapLogDataOld); + } + /// Convert the on-disk 32-bit format to our current format while reading + bool ReadRecord(StoreSwapLogData &swapData) { + UFSSwapLogParser_v1_32bs::StoreSwapLogDataOld readData; + int bytes = sizeof(UFSSwapLogParser_v1_32bs::StoreSwapLogDataOld); + + assert(log); + + if (fread(&readData, bytes, 1, log) != 1) { + return false; + } + swapData.op = readData.op; + swapData.swap_filen = readData.swap_filen; + swapData.timestamp = readData.timestamp; + swapData.lastref = readData.lastref; + swapData.expires = readData.expires; + swapData.lastmod = readData.lastmod; + swapData.swap_file_sz = readData.swap_file_sz; + swapData.refcount = readData.refcount; + swapData.flags = readData.flags; + memcpy(swapData.key, readData.key, SQUID_MD5_DIGEST_LENGTH); + return true; + } +}; + +/// swap.state v2 log parser +class UFSSwapLogParser_v2: public Fs::Ufs::UFSSwapLogParser +{ +public: + UFSSwapLogParser_v2(FILE *fp): Fs::Ufs::UFSSwapLogParser(fp) { + record_size = sizeof(StoreSwapLogData); + } + bool ReadRecord(StoreSwapLogData &swapData) { + assert(log); + return fread(&swapData, sizeof(StoreSwapLogData), 1, log) == 1; + } +}; + +Fs::Ufs::UFSSwapLogParser * +Fs::Ufs::UFSSwapLogParser::GetUFSSwapLogParser(FILE *fp) +{ + StoreSwapLogHeader header; + + assert(fp); + + if (fread(&header, sizeof(StoreSwapLogHeader), 1, fp) != 1) + return NULL; + + if (header.op != SWAP_LOG_VERSION) { + debugs(47, DBG_IMPORTANT, "Old swap file detected..."); + fseek(fp, 0, SEEK_SET); + return new UFSSwapLogParser_v1_32bs(fp); // Um. 32-bits except time_t, and can't determine that. + } + + debugs(47, 2, "Swap file version: " << header.version); + + if (header.version == 1) { + if (fseek(fp, header.record_size, SEEK_SET) != 0) + return NULL; + + debugs(47, DBG_IMPORTANT, "Rejecting swap file v1 to avoid cache " << + "index corruption. Forcing a full cache index rebuild. " << + "See Squid bug #3441."); + return NULL; + +#if UNUSED_CODE + // baseline + // 32-bit sfileno + // native time_t (hopefully 64-bit) + // 64-bit file size + if (header.record_size == sizeof(StoreSwapLogData)) { + debugs(47, DBG_IMPORTANT, "Version 1 of swap file with LFS support detected... "); + return new UFSSwapLogParser_v1(fp); + } + + // which means we have a 3-way grid of permutations to import (yuck!) + // 1) sfileno 32-bit / 64-bit (64-bit was broken) + // 2) time_t 32-bit / 64-bit + // 3) size_t 32-bit / 64-bit (32-bit was pre-LFS) + + // 32-bit systems... + // only LFS (size_t) differs from baseline + if (header.record_size == sizeof(struct UFSSwapLogParser_v1_32bs::StoreSwapLogDataOld)) { + debugs(47, DBG_IMPORTANT, "Version 1 (32-bit) swap file without LFS support detected... "); + return new UFSSwapLogParser_v1_32bs(fp); + } + // LFS (size_t) and timestamps (time_t) differs from baseline + if (header.record_size == sizeof(struct UFSSwapLogParser_v1_32bst::StoreSwapLogDataOld)) { + debugs(47, DBG_IMPORTANT, "Version 1 (32-bit) swap file with short timestamps and without LFS support detected... "); + return new UFSSwapLogParser_v1_32bst(fp); + } + // No downgrade for 64-bit timestamps to 32-bit. + + // 64-bit systems + // sfileno was 64-bit for a some builds + if (header.record_size == sizeof(struct UFSSwapLogParser_v1_64bfn::StoreSwapLogDataOld)) { + debugs(47, DBG_IMPORTANT, "Version 1 (64-bit) swap file with broken sfileno detected... "); + return new UFSSwapLogParser_v1_64bfn(fp); + } + // NP: 64-bit system with 32-bit size_t/time_t are not handled. + + debugs(47, DBG_IMPORTANT, "WARNING: The swap file has wrong format!... "); + debugs(47, DBG_IMPORTANT, "NOTE: Cannot safely downgrade caches to short (32-bit) timestamps."); + return NULL; +#endif + } + + if (header.version >= 2) { + if (!header.sane()) { + debugs(47, DBG_IMPORTANT, "ERROR: Corrupted v" << header.version << + " swap file header."); + return NULL; + } + + if (fseek(fp, header.record_size, SEEK_SET) != 0) + return NULL; + + if (header.version == 2) + return new UFSSwapLogParser_v2(fp); + } + + // TODO: v3: write to disk in network-order bytes for the larger fields? + + debugs(47, DBG_IMPORTANT, "Unknown swap file version: " << header.version); + return NULL; +} + +int +Fs::Ufs::UFSSwapLogParser::SwapLogEntries() +{ + struct stat sb; + + if (log_entries >= 0) + return log_entries; + + if (log && record_size && 0 == fstat(fileno(log), &sb)) { + log_entries = sb.st_size/record_size; + return log_entries; + } + + return 0; +} === added file 'src/fs/ufs/UFSSwapLogParser.h.moved' --- src/fs/ufs/UFSSwapLogParser.h.moved 1970-01-01 00:00:00 +0000 +++ src/fs/ufs/UFSSwapLogParser.h.moved 2012-08-10 06:59:30 +0000 @@ -0,0 +1,69 @@ +/* + * UFSSwapLogParser.h + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + */ + +#ifndef SQUID_FS_UFS_UFSSWAPLOGPARSER_H +#define SQUID_FS_UFS_UFSSWAPLOGPARSER_H + +#include + +class StoreSwapLogData; + +namespace Fs +{ +namespace Ufs +{ +/// \ingroup UFS +class UFSSwapLogParser +{ +public: + FILE *log; + int log_entries; + int record_size; + + UFSSwapLogParser(FILE *fp):log(fp),log_entries(-1), record_size(0) { + } + virtual ~UFSSwapLogParser() {}; + + static UFSSwapLogParser *GetUFSSwapLogParser(FILE *fp); + + virtual bool ReadRecord(StoreSwapLogData &swapData) = 0; + int SwapLogEntries(); + void Close() { + if (log) { + fclose(log); + log = NULL; + } + } +}; + +} //namespace Ufs +} //namespace Fs +#endif /* SQUID_FS_UFS_UFSSWAPLOGPARSER_H */ === modified file 'src/ftp.cc' --- src/ftp.cc 2012-07-23 15:34:12 +0000 +++ src/ftp.cc 2012-08-13 09:44:13 +0000 @@ -32,24 +32,25 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "comm.h" #include "comm/ConnOpener.h" -#include "CommCalls.h" #include "comm/TcpAcceptor.h" #include "comm/Write.h" +#include "CommCalls.h" #include "compat/strtoll.h" #include "errorpage.h" #include "fde.h" #include "forward.h" #include "html_quote.h" #include "HttpHdrContRange.h" +#include "HttpHeader.h" #include "HttpHeaderRange.h" -#include "HttpHeader.h" +#include "HttpReply.h" #include "HttpRequest.h" -#include "HttpReply.h" #include "ip/tools.h" #include "MemBuf.h" +#include "protos.h" #include "rfc1738.h" #include "Server.h" #include "SquidString.h" === modified file 'src/globals.h' --- src/globals.h 2012-06-19 21:51:49 +0000 +++ src/globals.h 2012-08-13 10:20:15 +0000 @@ -45,13 +45,6 @@ #include "structs.h" -#ifdef __cplusplus -extern "C" { -#endif - -//MOVED:Debug.h extern FILE *debug_log; /* NULL */ -//MOVED:structs.h extern SquidConfig Config; -//MOVED:structs.h extern SquidConfig2 Config2; extern char *ConfigFile; /* NULL */ extern char *IcpOpcodeStr[]; extern char tmp_error_buf[ERROR_BUF_SZ]; @@ -60,13 +53,11 @@ extern char config_input_line[BUFSIZ]; extern const char *DefaultConfigFile; /* DEFAULT_CONFIG_FILE */ extern const char *cfg_filename; /* NULL */ -//MOVED:version.h:APP_SHORTNAME extern const char *const appname; /* "squid" */ - extern const char *const dash_str; /* "-" */ - extern const char *const null_string; /* "" */ - extern const char *const version_string; /* VERSION */ -//MOVED:versions.h:APP_FULLNAME extern const char *const full_appname_string; /* PACKAGE "/" VERSION */ - extern const char *const appname_string; /* PACKAGE */ - extern char const * visible_appname_string; /* NULL */ + extern const char *dash_str; /* "-" */ + extern const char *null_string; /* "" */ + extern const char *version_string; /* VERSION */ + extern const char *appname_string; /* PACKAGE */ + extern char const *visible_appname_string; /* NULL */ extern const char *fdTypeStr[]; extern const char *hier_strings[]; extern const char *memStatusStr[]; @@ -84,7 +75,6 @@ extern int config_lineno; /* 0 */ extern int do_mallinfo; /* 0 */ extern int opt_reuseaddr; /* 1 */ -//DEAD extern int icmp_sock; /* -1 */ extern int neighbors_do_private_keys; /* 1 */ extern int opt_catch_signals; /* 1 */ extern int opt_foreground_rebuild; /* 0 */ @@ -110,16 +100,14 @@ extern double request_failure_ratio; /* 0.0 */ extern int store_hash_buckets; /* 0 */ extern hash_table *store_table; /* NULL */ -//MOVED:dlink.h extern dlink_list ClientActiveRequests; extern int hot_obj_count; /* 0 */ - extern const int CacheDigestHashFuncCount; /* 4 */ + extern int CacheDigestHashFuncCount; /* 4 */ extern CacheDigest *store_digest; /* NULL */ extern const char *StoreDigestFileName; /* "store_digest" */ extern const char *StoreDigestMimeStr; /* "application/cache-digest" */ extern const char *MultipartMsgBoundaryStr; /* "Unique-Squid-Separator" */ #if USE_HTTP_VIOLATIONS - extern int refresh_nocache_hack; /* 0 */ #endif @@ -132,7 +120,6 @@ extern hash_table *proxy_auth_username_cache; /* NULL */ extern int incoming_sockets_accepted; #if _SQUID_MSWIN_ - extern unsigned int WIN32_Socks_initialized; /* 0 */ #endif #if _SQUID_WINDOWS_ @@ -144,7 +131,6 @@ extern unsigned int WIN32_run_mode; /* _WIN_SQUID_RUN_MODE_INTERACTIVE */ #endif #if HAVE_SBRK - extern void *sbrk_start; /* 0 */ #endif @@ -164,9 +150,4 @@ /// Zero for SMP-unaware code and in no-SMP mode. extern int KidIdentifier; /* 0 */ -#ifdef __cplusplus -} - -#endif - #endif /* SQUID_GLOBALS_H */ === modified file 'src/gopher.cc' --- src/gopher.cc 2012-08-06 17:21:57 +0000 +++ src/gopher.cc 2012-08-13 09:44:13 +0000 @@ -33,23 +33,25 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "comm.h" #include "comm/Write.h" #include "errorpage.h" -#include "Store.h" +#include "forward.h" #include "html_quote.h" +#include "HttpReply.h" #include "HttpRequest.h" -#include "HttpReply.h" -#include "comm.h" -#if USE_DELAY_POOLS -#include "DelayPools.h" -#include "MemObject.h" -#endif #include "MemBuf.h" -#include "forward.h" +#include "protos.h" #include "rfc1738.h" +#include "SquidTime.h" #include "StatCounters.h" -#include "SquidTime.h" +#include "Store.h" + +#if USE_DELAY_POOLS +#include "DelayPools.h" +#include "MemObject.h" +#endif /** \defgroup ServerProtocolGopherInternal Server-Side Gopher Internals === modified file 'src/helper.cc' --- src/helper.cc 2012-08-06 17:41:08 +0000 +++ src/helper.cc 2012-08-13 09:44:13 +0000 @@ -32,14 +32,15 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "base/AsyncCbdataCalls.h" #include "comm.h" #include "comm/Connection.h" #include "comm/Write.h" +#include "format/Quoting.h" #include "helper.h" -#include "format/Quoting.h" #include "MemBuf.h" +#include "protos.h" #include "SquidMath.h" #include "SquidTime.h" #include "Store.h" === modified file 'src/helper.h' --- src/helper.h 2012-01-20 18:55:04 +0000 +++ src/helper.h 2012-08-12 21:10:41 +0000 @@ -33,10 +33,11 @@ #ifndef SQUID_HELPER_H #define SQUID_HELPER_H -#include "squid-old.h" +#include "squid.h" #include "base/AsyncCall.h" #include "cbdata.h" #include "comm/forward.h" +#include "dlink.h" #include "ip/Address.h" #include "HelperChildConfig.h" @@ -132,6 +133,8 @@ }; +class MemBuf; + class helper_server : public HelperServerBase { public: === modified file 'src/htcp.cc' --- src/htcp.cc 2012-07-23 07:02:06 +0000 +++ src/htcp.cc 2012-08-13 09:44:13 +0000 @@ -33,25 +33,28 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "AccessLogEntry.h" +#include "acl/Acl.h" #include "acl/FilledChecklist.h" -#include "acl/Acl.h" #include "comm.h" #include "comm/Connection.h" #include "comm/Loops.h" #include "comm/UdpOpenDialer.h" +#include "compat/xalloc.h" +#include "globals.h" #include "htcp.h" #include "http.h" #include "HttpRequest.h" #include "icmp/net_db.h" #include "ip/tools.h" +#include "md5.h" #include "MemBuf.h" +#include "protos.h" #include "SquidTime.h" #include "StatCounters.h" #include "Store.h" #include "StoreClient.h" -#include "compat/xalloc.h" typedef struct _Countstr Countstr; === modified file 'src/htcp.h' --- src/htcp.h 2012-04-25 05:29:20 +0000 +++ src/htcp.h 2012-08-13 09:44:13 +0000 @@ -33,9 +33,11 @@ #if USE_HTCP #include "HttpHeader.h" - +#include "HttpRequestMethod.h" #include "ip/forward.h" +class HttpRequest; + /// \ingroup ServerProtocolHTCP class HtcpReplyData { === modified file 'src/http.cc' --- src/http.cc 2012-08-06 17:21:57 +0000 +++ src/http.cc 2012-08-13 09:44:13 +0000 @@ -38,39 +38,40 @@ * have a look into http-anon.c to get more informations. */ -#include "squid-old.h" - +#include "squid.h" #include "acl/FilledChecklist.h" -#if USE_AUTH -#include "auth/UserRequest.h" -#endif +#include "base64.h" #include "base/AsyncJobCalls.h" #include "base/TextException.h" -#include "base64.h" +#include "client_side.h" #include "comm/Connection.h" #include "comm/Write.h" -#if USE_DELAY_POOLS -#include "DelayPools.h" -#endif #include "err_detail_type.h" #include "errorpage.h" #include "fde.h" +#include "HttpControlMsg.h" #include "http.h" -#include "HttpControlMsg.h" +#include "HttpHdrCc.h" #include "HttpHdrContRange.h" -#include "HttpHdrCc.h" #include "HttpHdrSc.h" #include "HttpHdrScTarget.h" #include "HttpReply.h" #include "HttpRequest.h" #include "MemBuf.h" #include "MemObject.h" +#include "profiler/Profiler.h" #include "protos.h" #include "rfc1738.h" #include "SquidTime.h" #include "StatCounters.h" #include "Store.h" +#if USE_AUTH +#include "auth/UserRequest.h" +#endif +#if USE_DELAY_POOLS +#include "DelayPools.h" +#endif #define SQUID_ENTER_THROWING_CODE() try { #define SQUID_EXIT_THROWING_CODE(status) \ === modified file 'src/icmp/Icmp.cc' --- src/icmp/Icmp.cc 2012-07-20 12:44:39 +0000 +++ src/icmp/Icmp.cc 2012-08-10 07:35:11 +0000 @@ -31,7 +31,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. * */ -#include "squid-old.h" +#include "squid.h" #include "Icmp.h" #include "SquidTime.h" #include "Debug.h" === modified file 'src/icmp/Icmp4.cc' --- src/icmp/Icmp4.cc 2012-08-06 17:41:08 +0000 +++ src/icmp/Icmp4.cc 2012-08-10 11:52:29 +0000 @@ -33,10 +33,11 @@ */ //#define SQUID_HELPER 1 -#include "squid-old.h" +#include "squid.h" #if USE_ICMP +#include "leakcheck.h" #include "SquidTime.h" #include "Icmp4.h" #include "IcmpPinger.h" === modified file 'src/icmp/Icmp6.cc' --- src/icmp/Icmp6.cc 2012-08-06 17:41:08 +0000 +++ src/icmp/Icmp6.cc 2012-08-10 11:52:29 +0000 @@ -33,10 +33,11 @@ */ //#define SQUID_HELPER 1 -#include "squid-old.h" +#include "squid.h" #if USE_ICMP +#include "leakcheck.h" #include "SquidTime.h" #include "Debug.h" #include "Icmp6.h" === modified file 'src/icmp/IcmpPinger.cc' --- src/icmp/IcmpPinger.cc 2012-08-06 17:41:08 +0000 +++ src/icmp/IcmpPinger.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ #define SQUID_HELPER 1 -#include "squid-old.h" +#include "squid.h" #if USE_ICMP === modified file 'src/icmp/IcmpSquid.cc' --- src/icmp/IcmpSquid.cc 2012-08-06 17:41:08 +0000 +++ src/icmp/IcmpSquid.cc 2012-08-10 11:52:29 +0000 @@ -32,12 +32,13 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "comm.h" #include "comm/Loops.h" #include "icmp/IcmpSquid.h" #include "icmp/net_db.h" #include "ip/tools.h" +#include "protos.h" #include "SquidTime.h" // Instance global to be available in main() and elsewhere. === modified file 'src/icmp/net_db.cc' --- src/icmp/net_db.cc 2012-08-06 17:41:08 +0000 +++ src/icmp/net_db.cc 2012-08-10 11:52:29 +0000 @@ -38,7 +38,7 @@ * (adrian@squid-cache.org) to sort them out. */ -#include "squid-old.h" +#include "squid.h" #include "icmp/net_db.h" #include "log/File.h" #include "cbdata.h" @@ -51,10 +51,15 @@ #include "MemObject.h" #include "fde.h" #include "forward.h" +#include "protos.h" #include "SquidTime.h" #include "wordlist.h" #include "ip/Address.h" +#if HAVE_SYS_STAT_H +#include +#endif + #if USE_ICMP #include "icmp/IcmpSquid.h" #include "ipcache.h" === modified file 'src/icmp/pinger.cc' --- src/icmp/pinger.cc 2012-08-06 17:41:08 +0000 +++ src/icmp/pinger.cc 2012-08-10 07:35:11 +0000 @@ -63,7 +63,8 @@ * ICP_OP_MISS_NOFETCH for sites which it cannot ping. */ -#include "squid-old.h" +#include "squid.h" +#include "Debug.h" #include "SquidTime.h" #if USE_ICMP === modified file 'src/icmp/testIcmp.cc' --- src/icmp/testIcmp.cc 2012-01-20 18:55:04 +0000 +++ src/icmp/testIcmp.cc 2012-08-10 07:35:11 +0000 @@ -1,7 +1,7 @@ #define SQUID_UNIT_TEST 1 #define SQUID_HELPER 1 -#include "squid-old.h" +#include "squid.h" #include === modified file 'src/icp_v2.cc' --- src/icp_v2.cc 2012-08-06 17:41:08 +0000 +++ src/icp_v2.cc 2012-08-13 09:44:13 +0000 @@ -35,26 +35,28 @@ \ingroup ServerProtocolICPAPI */ -#include "squid-old.h" -#include "Store.h" +#include "squid.h" +#include "AccessLogEntry.h" +#include "acl/Acl.h" +#include "acl/FilledChecklist.h" #include "comm.h" #include "comm/Connection.h" #include "comm/Loops.h" #include "comm/UdpOpenDialer.h" -#include "ICP.h" #include "HttpRequest.h" -#include "acl/FilledChecklist.h" -#include "acl/Acl.h" -#include "AccessLogEntry.h" -#include "wordlist.h" -#include "StatCounters.h" -#include "SquidTime.h" -#include "SwapDir.h" #include "icmp/net_db.h" +#include "ICP.h" #include "ip/Address.h" #include "ip/tools.h" #include "ipcache.h" +#include "md5.h" +#include "protos.h" #include "rfc1738.h" +#include "SquidTime.h" +#include "StatCounters.h" +#include "Store.h" +#include "SwapDir.h" +#include "wordlist.h" static void icpIncomingConnectionOpened(const Comm::ConnectionPointer &conn, int errNo); === modified file 'src/icp_v3.cc' --- src/icp_v3.cc 2012-08-06 17:41:08 +0000 +++ src/icp_v3.cc 2012-08-10 07:35:11 +0000 @@ -37,7 +37,7 @@ \ingroup ServerProtocolICPAPI */ -#include "squid-old.h" +#include "squid.h" #include "Store.h" #include "ICP.h" #include "HttpRequest.h" === modified file 'src/ident/AclIdent.cc' --- src/ident/AclIdent.cc 2012-06-19 16:08:52 +0000 +++ src/ident/AclIdent.cc 2012-08-10 11:52:29 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #if USE_IDENT @@ -43,6 +43,7 @@ #include "acl/UserData.h" #include "client_side.h" #include "comm/Connection.h" +#include "globals.h" #include "ident/AclIdent.h" #include "ident/Ident.h" === modified file 'src/ident/Ident.cc' --- src/ident/Ident.cc 2012-07-30 08:49:59 +0000 +++ src/ident/Ident.cc 2012-08-10 11:52:29 +0000 @@ -34,12 +34,12 @@ #include "squid.h" #if USE_IDENT -#include "squid-old.h" #include "comm.h" #include "comm/Connection.h" #include "comm/ConnOpener.h" #include "CommCalls.h" #include "comm/Write.h" +#include "globals.h" #include "ident/Config.h" #include "ident/Ident.h" #include "MemBuf.h" === modified file 'src/int.cc' --- src/int.cc 2012-01-20 18:55:04 +0000 +++ src/int.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,12 @@ * */ -#include "squid-old.h" +#include "squid.h" + +#if HAVE_MATH_H +#include +#endif + int isPowTen(int count) { === modified file 'src/internal.cc' --- src/internal.cc 2012-01-20 18:55:04 +0000 +++ src/internal.cc 2012-08-12 21:10:41 +0000 @@ -33,17 +33,18 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "CacheManager.h" #include "comm/Connection.h" #include "errorpage.h" +#include "icmp/net_db.h" #include "Store.h" #include "HttpRequest.h" #include "HttpReply.h" #include "MemBuf.h" +#include "protos.h" #include "SquidTime.h" #include "wordlist.h" -#include "icmp/net_db.h" /* called when we "miss" on an internal object; * generate known dynamic objects, === modified file 'src/ip/Qos.cci' --- src/ip/Qos.cci 2012-07-23 19:37:47 +0000 +++ src/ip/Qos.cci 2012-08-12 20:25:21 +0000 @@ -1,5 +1,6 @@ /* Inline QOS functions */ #include "comm/Connection.h" +#include "Debug.h" int Ip::Qos::setSockTos(const Comm::ConnectionPointer &conn, tos_t tos) === modified file 'src/ip/QosConfig.cc' --- src/ip/QosConfig.cc 2012-01-20 18:55:04 +0000 +++ src/ip/QosConfig.cc 2012-08-10 11:52:29 +0000 @@ -1,13 +1,15 @@ -#include "squid-old.h" +#include "squid.h" #include "acl/Gadgets.h" #include "comm/Connection.h" #include "ConfigParser.h" #include "fde.h" +#include "globals.h" #include "hier_code.h" #include "ip/tools.h" #include "ip/QosConfig.h" #include "Parsing.h" +#include "protos.h" /* Qos namespace */ === modified file 'src/ip/stubQosConfig.cc' --- src/ip/stubQosConfig.cc 2012-01-20 18:55:04 +0000 +++ src/ip/stubQosConfig.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "ip/QosConfig.h" #include "Store.h" === modified file 'src/ipc.cc' --- src/ipc.cc 2012-08-06 17:41:08 +0000 +++ src/ipc.cc 2012-08-12 21:10:41 +0000 @@ -30,10 +30,12 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "comm/Connection.h" #include "fde.h" +#include "globals.h" #include "ip/Address.h" +#include "protos.h" #include "rfc1738.h" static const char *hello_string = "hi there\n"; === modified file 'src/ipc/Coordinator.cc' --- src/ipc/Coordinator.cc 2012-08-06 17:21:57 +0000 +++ src/ipc/Coordinator.cc 2012-08-10 11:52:29 +0000 @@ -17,6 +17,7 @@ #include "mgr/Inquirer.h" #include "mgr/Request.h" #include "mgr/Response.h" +#include "protos.h" #if SQUID_SNMP #include "snmp/Inquirer.h" #include "snmp/Request.h" === modified file 'src/ipc/ReadWriteLock.cc' --- src/ipc/ReadWriteLock.cc 2012-01-20 18:55:04 +0000 +++ src/ipc/ReadWriteLock.cc 2012-08-10 07:35:11 +0000 @@ -4,7 +4,7 @@ * DEBUG: section 54 Interprocess Communication */ -#include "squid-old.h" +#include "squid.h" #include "Store.h" #include "ipc/ReadWriteLock.h" === modified file 'src/ipc/SharedListen.cc' --- src/ipc/SharedListen.cc 2012-01-20 18:55:04 +0000 +++ src/ipc/SharedListen.cc 2012-08-10 11:52:29 +0000 @@ -10,12 +10,14 @@ #include "comm.h" #include "base/TextException.h" #include "comm/Connection.h" +#include "globals.h" #include "ipc/Port.h" #include "ipc/Messages.h" #include "ipc/Kids.h" #include "ipc/TypedMsgHdr.h" #include "ipc/StartListening.h" #include "ipc/SharedListen.h" +#include "protos.h" /// holds information necessary to handle JoinListen response class PendingOpenRequest === modified file 'src/ipc/StartListening.cc' --- src/ipc/StartListening.cc 2012-01-20 18:55:04 +0000 +++ src/ipc/StartListening.cc 2012-08-10 11:52:29 +0000 @@ -11,7 +11,7 @@ #include "comm/Connection.h" #include "ipc/SharedListen.h" #include "ipc/StartListening.h" - +#include "protos.h" Ipc::StartListeningCb::StartListeningCb(): conn(NULL), errNo(0) { === modified file 'src/ipc/StoreMap.cc' --- src/ipc/StoreMap.cc 2012-08-06 15:38:12 +0000 +++ src/ipc/StoreMap.cc 2012-08-10 11:52:29 +0000 @@ -4,8 +4,9 @@ * DEBUG: section 54 Interprocess Communication */ -#include "squid-old.h" +#include "squid.h" +#include "protos.h" #include "Store.h" #include "ipc/StoreMap.h" === modified file 'src/ipc/Strand.cc' --- src/ipc/Strand.cc 2012-08-06 17:21:57 +0000 +++ src/ipc/Strand.cc 2012-08-10 11:52:29 +0000 @@ -9,6 +9,7 @@ #include "base/Subscription.h" #include "base/TextException.h" #include "comm/Connection.h" +#include "globals.h" #include "ipc/Strand.h" #include "ipc/StrandCoord.h" #include "ipc/Messages.h" === modified file 'src/ipc/UdsOp.h' --- src/ipc/UdsOp.h 2011-05-13 08:13:01 +0000 +++ src/ipc/UdsOp.h 2012-08-10 11:52:29 +0000 @@ -11,6 +11,7 @@ #include "SquidString.h" #include "base/AsyncJob.h" +#include "cbdata.h" #include "comm/forward.h" #include "ipc/TypedMsgHdr.h" #include "ipc/FdNotes.h" === modified file 'src/ipc/mem/Pages.cc' --- src/ipc/mem/Pages.cc 2012-01-20 18:55:04 +0000 +++ src/ipc/mem/Pages.cc 2012-08-10 11:52:29 +0000 @@ -10,6 +10,7 @@ #include "base/RunnersRegistry.h" #include "ipc/mem/PagePool.h" #include "ipc/mem/Pages.h" +#include "protos.h" #include "structs.h" #include "SwapDir.h" === modified file 'src/ipc_win32.cc' --- src/ipc_win32.cc 2012-08-06 17:41:08 +0000 +++ src/ipc_win32.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "comm.h" #include "fde.h" #include "ip/Address.h" === modified file 'src/ipcache.cc' --- src/ipcache.cc 2012-08-06 17:41:08 +0000 +++ src/ipcache.cc 2012-08-12 21:10:41 +0000 @@ -30,7 +30,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "cbdata.h" #include "CacheManager.h" #include "DnsLookupDetails.h" @@ -39,6 +39,8 @@ #include "ip/tools.h" #include "ipcache.h" #include "mgr/Registration.h" +#include "protos.h" +#include "rfc3596.h" #include "SquidDns.h" #include "SquidTime.h" #include "StatCounters.h" === modified file 'src/list.cc' --- src/list.cc 2012-01-20 18:55:04 +0000 +++ src/list.cc 2012-08-13 09:44:13 +0000 @@ -33,7 +33,9 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "typedefs.h" // for link_list +#include "protos.h" /* This should go away, in favour of the List template class */ === modified file 'src/log/File.cc' --- src/log/File.cc 2012-08-06 17:21:57 +0000 +++ src/log/File.cc 2012-08-10 07:35:11 +0000 @@ -32,7 +32,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "fde.h" #include "log/File.h" #include "log/ModDaemon.h" === modified file 'src/log/FormatHttpdCombined.cc' --- src/log/FormatHttpdCombined.cc 2012-07-17 14:11:24 +0000 +++ src/log/FormatHttpdCombined.cc 2012-08-10 11:52:29 +0000 @@ -36,6 +36,7 @@ #include "AccessLogEntry.h" #include "format/Token.h" #include "format/Quoting.h" +#include "globals.h" #include "HttpRequest.h" #include "log/File.h" #include "log/Formats.h" === modified file 'src/log/FormatHttpdCommon.cc' --- src/log/FormatHttpdCommon.cc 2012-07-17 14:11:24 +0000 +++ src/log/FormatHttpdCommon.cc 2012-08-10 11:52:29 +0000 @@ -36,6 +36,7 @@ #include "AccessLogEntry.h" #include "format/Quoting.h" #include "format/Token.h" +#include "globals.h" #include "log/File.h" #include "log/Formats.h" #include "SquidTime.h" === modified file 'src/log/FormatSquidIcap.cc' --- src/log/FormatSquidIcap.cc 2012-07-17 14:11:24 +0000 +++ src/log/FormatSquidIcap.cc 2012-08-10 11:52:29 +0000 @@ -41,6 +41,7 @@ #include "HttpRequest.h" #include "log/File.h" #include "log/Formats.h" +#include "protos.h" #include "SquidTime.h" void === modified file 'src/log/FormatSquidNative.cc' --- src/log/FormatSquidNative.cc 2012-07-17 14:11:24 +0000 +++ src/log/FormatSquidNative.cc 2012-08-10 11:52:29 +0000 @@ -36,6 +36,7 @@ #include "AccessLogEntry.h" #include "format/Quoting.h" #include "format/Token.h" +#include "globals.h" #include "log/File.h" #include "log/Formats.h" #include "SquidTime.h" === modified file 'src/log/ModDaemon.cc' --- src/log/ModDaemon.cc 2012-08-06 17:21:57 +0000 +++ src/log/ModDaemon.cc 2012-08-10 11:52:29 +0000 @@ -30,13 +30,15 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "cbdata.h" #include "comm/Loops.h" #include "fde.h" +#include "globals.h" #include "log/Config.h" #include "log/File.h" #include "log/ModDaemon.h" +#include "protos.h" #include "SquidTime.h" /* How many buffers to keep before we say we've buffered too much */ === modified file 'src/log/ModStdio.cc' --- src/log/ModStdio.cc 2012-07-20 15:31:04 +0000 +++ src/log/ModStdio.cc 2012-08-10 11:52:29 +0000 @@ -30,10 +30,12 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "fde.h" +#include "globals.h" #include "log/File.h" #include "log/ModStdio.h" +#include "protos.h" typedef struct { int fd; === modified file 'src/log/ModSyslog.cc' --- src/log/ModSyslog.cc 2012-08-06 17:21:57 +0000 +++ src/log/ModSyslog.cc 2012-08-10 07:35:11 +0000 @@ -30,7 +30,8 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "Debug.h" #if HAVE_SYSLOG === modified file 'src/log/ModTcp.cc' --- src/log/ModTcp.cc 2012-08-06 17:21:57 +0000 +++ src/log/ModTcp.cc 2012-08-10 11:52:29 +0000 @@ -31,12 +31,14 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "comm.h" #include "comm/Connection.h" #include "log/File.h" #include "log/ModTcp.h" #include "Parsing.h" +#include "protos.h" +#include "structs.h" /* * This logfile TCP module is mostly inspired by a patch by Tim Starling === modified file 'src/log/ModUdp.cc' --- src/log/ModUdp.cc 2012-08-06 17:21:57 +0000 +++ src/log/ModUdp.cc 2012-08-10 11:52:29 +0000 @@ -30,12 +30,14 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "comm.h" #include "comm/Connection.h" #include "log/File.h" #include "log/ModUdp.h" #include "Parsing.h" +#include "protos.h" +#include "structs.h" /* * This logfile UDP module is mostly inspired by a patch by Tim Starling === modified file 'src/log/access_log.cc' --- src/log/access_log.cc 2012-08-06 17:21:57 +0000 +++ src/log/access_log.cc 2012-08-10 11:52:29 +0000 @@ -33,7 +33,7 @@ */ -#include "squid-old.h" +#include "squid.h" #include "AccessLogEntry.h" // Store.h Required by configuration directives parsing/dumping only @@ -48,6 +48,7 @@ #include "eui/Eui64.h" #endif #include "format/Token.h" +#include "globals.h" #include "hier_code.h" #include "HttpReply.h" #include "HttpRequest.h" === modified file 'src/main.cc' --- src/main.cc 2012-08-06 17:41:08 +0000 +++ src/main.cc 2012-08-13 09:44:13 +0000 @@ -32,77 +32,77 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "AccessLogEntry.h" -#if USE_ADAPTATION -#include "adaptation/Config.h" -#endif -#if USE_ECAP -#include "adaptation/ecap/Config.h" -#endif -#if ICAP_CLIENT -#include "adaptation/icap/Config.h" -#include "adaptation/icap/icap_log.h" -#endif -#if USE_AUTH -#include "auth/Gadgets.h" -#endif +#include "acl/Acl.h" +#include "acl/Asn.h" #include "base/RunnersRegistry.h" #include "base/Subscription.h" #include "base/TextException.h" -#if USE_DELAY_POOLS -#include "ClientDelayConfig.h" -#endif #include "comm.h" #include "ConfigParser.h" #include "CpuAffinity.h" -#if USE_DELAY_POOLS -#include "DelayPools.h" -#endif +#include "DiskIO/DiskIOModule.h" #include "errorpage.h" #include "event.h" #include "EventLoop.h" #include "ExternalACL.h" #include "format/Token.h" -#include "fs/Module.h" -#include "PeerSelectState.h" -#include "SquidDns.h" -#include "Store.h" +#include "forward.h" +#include "fs/Module.h" +#include "fs/Module.h" +#include "htcp.h" +#include "HttpReply.h" +#include "icmp/IcmpSquid.h" +#include "icmp/net_db.h" #include "ICP.h" #include "ident/Ident.h" -#include "HttpReply.h" -#include "pconn.h" -#include "Mem.h" -#include "acl/Asn.h" -#include "acl/Acl.h" -#include "htcp.h" -#include "StoreFileSystem.h" -#include "DiskIO/DiskIOModule.h" +#include "ipc/Coordinator.h" #include "ipc/Kids.h" -#include "ipc/Coordinator.h" #include "ipc/Strand.h" #include "ip/tools.h" +#include "Mem.h" +#include "MemPool.h" +#include "pconn.h" +#include "PeerSelectState.h" +#include "profiler/Profiler.h" +#include "protos.h" +#include "SquidDns.h" #include "SquidTime.h" #include "StatCounters.h" +#include "StoreFileSystem.h" +#include "Store.h" #include "SwapDir.h" -#include "forward.h" -#include "MemPool.h" -#include "icmp/IcmpSquid.h" -#include "icmp/net_db.h" +#if USE_ADAPTATION +#include "adaptation/Config.h" +#endif +#if USE_ECAP +#include "adaptation/ecap/Config.h" +#endif +#if ICAP_CLIENT +#include "adaptation/icap/Config.h" +#include "adaptation/icap/icap_log.h" +#endif +#if USE_AUTH +#include "auth/Gadgets.h" +#endif +#if USE_DELAY_POOLS +#include "ClientDelayConfig.h" +#endif +#if USE_DELAY_POOLS +#include "DelayPools.h" +#endif #if USE_LOADABLE_MODULES #include "LoadableModules.h" #endif - #if USE_SSL_CRTD #include "ssl/helper.h" #include "ssl/certificate_db.h" #endif - #if USE_SSL #include "ssl/context_storage.h" #endif - #if ICAP_CLIENT #include "adaptation/icap/Config.h" #endif @@ -115,11 +115,13 @@ #if USE_SQUID_ESI #include "esi/Module.h" #endif -#include "fs/Module.h" #if HAVE_PATHS_H #include #endif +#if HAVE_SYS_WAIT_H +#include +#endif #if USE_WIN32_SERVICE #include "squid_windows.h" @@ -655,7 +657,6 @@ { if (IamPrimaryProcess()) { #if USE_WCCP - wccpConnectionOpen(); #endif === modified file 'src/mem.cc' --- src/mem.cc 2012-08-06 17:21:57 +0000 +++ src/mem.cc 2012-08-12 21:10:41 +0000 @@ -32,16 +32,18 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "event.h" -#include "mgr/Registration.h" #include "ClientInfo.h" #include "Mem.h" +#include "md5.h" +#include "MemBuf.h" #include "memMeter.h" +#include "mgr/Registration.h" +#include "protos.h" +#include "SquidTime.h" #include "Store.h" #include "StoreEntryStream.h" -#include "MemBuf.h" -#include "SquidTime.h" #if HAVE_IOMANIP #include === modified file 'src/mem_node.cc' --- src/mem_node.cc 2012-01-20 18:55:04 +0000 +++ src/mem_node.cc 2012-08-12 21:10:41 +0000 @@ -33,8 +33,9 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "mem_node.h" +#include "protos.h" static ptrdiff_t makeMemNodeDataOffset(); === modified file 'src/mem_node.h' --- src/mem_node.h 2009-03-31 12:39:30 +0000 +++ src/mem_node.h 2012-08-12 21:10:41 +0000 @@ -34,6 +34,8 @@ #ifndef SQUID_MEM_NODE_H #define SQUID_MEM_NODE_H +#include "defines.h" +#include "MemPool.h" #include "StoreIOBuffer.h" #include "Range.h" === modified file 'src/mgr/BasicActions.cc' --- src/mgr/BasicActions.cc 2012-01-20 18:55:04 +0000 +++ src/mgr/BasicActions.cc 2012-08-10 11:52:29 +0000 @@ -12,9 +12,9 @@ #include "mgr/ActionProfile.h" #include "mgr/BasicActions.h" #include "mgr/Registration.h" +#include "protos.h" #include "Store.h" - Mgr::IndexAction::Pointer Mgr::IndexAction::Create(const Command::Pointer &cmd) { === modified file 'src/mgr/CountersAction.cc' --- src/mgr/CountersAction.cc 2012-01-20 18:55:04 +0000 +++ src/mgr/CountersAction.cc 2012-08-10 11:52:29 +0000 @@ -10,6 +10,7 @@ #include "ipc/Messages.h" #include "ipc/TypedMsgHdr.h" #include "mgr/CountersAction.h" +#include "protos.h" #include "SquidTime.h" #include "Store.h" === modified file 'src/mgr/Forwarder.cc' --- src/mgr/Forwarder.cc 2012-01-20 18:55:04 +0000 +++ src/mgr/Forwarder.cc 2012-08-10 11:52:29 +0000 @@ -11,6 +11,7 @@ #include "CommCalls.h" #include "comm/Connection.h" #include "errorpage.h" +#include "globals.h" #include "HttpReply.h" #include "HttpRequest.h" #include "ipc/Port.h" === modified file 'src/mgr/FunAction.cc' --- src/mgr/FunAction.cc 2012-01-20 18:55:04 +0000 +++ src/mgr/FunAction.cc 2012-08-10 11:52:29 +0000 @@ -8,11 +8,13 @@ #include "squid.h" #include "base/TextException.h" #include "comm/Connection.h" +#include "globals.h" #include "ipc/UdsOp.h" #include "mgr/Command.h" #include "mgr/Filler.h" #include "mgr/FunAction.h" #include "mgr/Request.h" +#include "protos.h" #include "Store.h" === modified file 'src/mgr/InfoAction.cc' --- src/mgr/InfoAction.cc 2012-01-20 18:55:04 +0000 +++ src/mgr/InfoAction.cc 2012-08-10 11:52:29 +0000 @@ -8,6 +8,7 @@ #include "squid.h" #include "base/TextException.h" #include "comm/Connection.h" +#include "globals.h" #include "HttpReply.h" #include "ipc/Messages.h" #include "ipc/UdsOp.h" @@ -16,6 +17,7 @@ #include "mgr/InfoAction.h" #include "mgr/Request.h" #include "mgr/Response.h" +#include "protos.h" #include "SquidTime.h" #include "Store.h" === modified file 'src/mgr/Inquirer.cc' --- src/mgr/Inquirer.cc 2012-01-20 18:55:04 +0000 +++ src/mgr/Inquirer.cc 2012-08-13 09:44:13 +0000 @@ -7,6 +7,7 @@ #include "squid.h" #include "base/TextException.h" +#include "comm.h" #include "comm/Connection.h" #include "comm/Write.h" #include "CommCalls.h" === modified file 'src/mgr/IntervalAction.cc' --- src/mgr/IntervalAction.cc 2012-01-20 18:55:04 +0000 +++ src/mgr/IntervalAction.cc 2012-08-10 11:52:29 +0000 @@ -10,6 +10,7 @@ #include "ipc/Messages.h" #include "ipc/TypedMsgHdr.h" #include "mgr/IntervalAction.h" +#include "protos.h" #include "SquidMath.h" #include "Store.h" === modified file 'src/mgr/IoAction.cc' --- src/mgr/IoAction.cc 2012-01-20 18:55:04 +0000 +++ src/mgr/IoAction.cc 2012-08-10 11:52:29 +0000 @@ -10,6 +10,7 @@ #include "ipc/Messages.h" #include "ipc/TypedMsgHdr.h" #include "mgr/IoAction.h" +#include "protos.h" #include "SquidMath.h" #include "Store.h" === modified file 'src/mgr/ServiceTimesAction.cc' --- src/mgr/ServiceTimesAction.cc 2012-01-20 18:55:04 +0000 +++ src/mgr/ServiceTimesAction.cc 2012-08-10 11:52:29 +0000 @@ -10,9 +10,9 @@ #include "ipc/Messages.h" #include "ipc/TypedMsgHdr.h" #include "mgr/ServiceTimesAction.h" +#include "protos.h" #include "Store.h" - extern void GetServiceTimesStats(Mgr::ServiceTimesActionData& stats); extern void DumpServiceTimesStats(Mgr::ServiceTimesActionData& stats, StoreEntry* sentry); === modified file 'src/mgr/StoreIoAction.cc' --- src/mgr/StoreIoAction.cc 2012-01-20 18:55:04 +0000 +++ src/mgr/StoreIoAction.cc 2012-08-12 20:25:21 +0000 @@ -10,6 +10,7 @@ #include "ipc/Messages.h" #include "ipc/TypedMsgHdr.h" #include "mgr/StoreIoAction.h" +#include "protos.h" #include "Store.h" === modified file 'src/mgr/StoreToCommWriter.cc' --- src/mgr/StoreToCommWriter.cc 2012-01-20 18:55:04 +0000 +++ src/mgr/StoreToCommWriter.cc 2012-08-10 11:52:29 +0000 @@ -12,6 +12,7 @@ #include "comm/Write.h" #include "ipc/FdNotes.h" #include "mgr/StoreToCommWriter.h" +#include "protos.h" #include "StoreClient.h" #include "Store.h" === modified file 'src/mime.cc' --- src/mime.cc 2012-08-06 17:41:08 +0000 +++ src/mime.cc 2012-08-13 09:44:13 +0000 @@ -33,15 +33,21 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "fde.h" +#include "globals.h" #include "HttpHdrCc.h" -#include "Store.h" -#include "StoreClient.h" #include "HttpReply.h" #include "HttpRequest.h" +#include "MemBuf.h" #include "MemObject.h" -#include "fde.h" -#include "MemBuf.h" +#include "protos.h" +#include "Store.h" +#include "StoreClient.h" + +#if HAVE_SYS_STAT_H +#include +#endif #define GET_HDR_SZ 1024 === modified file 'src/mime_header.cc' --- src/mime_header.cc 2012-07-17 17:38:50 +0000 +++ src/mime_header.cc 2012-08-10 11:52:29 +0000 @@ -33,16 +33,11 @@ * */ -#include "squid-old.h" +#include "squid.h" #define GET_HDR_SZ 1024 - -/* returns a pointer to a field-value of the first matching field-name */ -char * -mime_get_header(const char *mime, const char *name) -{ - return mime_get_header_field(mime, name, NULL); -} +#include "Debug.h" +#include "profiler/Profiler.h" /* * returns a pointer to a field-value of the first matching field-name where @@ -117,6 +112,14 @@ return NULL; } +/* returns a pointer to a field-value of the first matching field-name */ +char * +mime_get_header(const char *mime, const char *name) +{ + return mime_get_header_field(mime, name, NULL); +} + + size_t headersEnd(const char *mime, size_t l) { === modified file 'src/multicast.cc' --- src/multicast.cc 2012-08-06 17:41:08 +0000 +++ src/multicast.cc 2012-08-13 09:44:13 +0000 @@ -33,8 +33,9 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "comm/Connection.h" +#include "Debug.h" // XXX: for icpIncomingConn - need to pass it as a generic parameter. #include "ICP.h" #include "ipcache.h" === modified file 'src/neighbors.cc' --- src/neighbors.cc 2012-08-06 17:41:08 +0000 +++ src/neighbors.cc 2012-08-13 09:44:13 +0000 @@ -30,27 +30,28 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "acl/FilledChecklist.h" #include "anyp/PortCfg.h" #include "comm/Connection.h" #include "comm/ConnOpener.h" #include "event.h" +#include "globals.h" #include "htcp.h" #include "HttpRequest.h" +#include "icmp/net_db.h" #include "ICP.h" +#include "ip/Address.h" #include "ip/tools.h" #include "ipcache.h" #include "MemObject.h" +#include "mgr/Registration.h" #include "PeerDigest.h" #include "PeerSelectState.h" +#include "protos.h" #include "SquidMath.h" #include "SquidTime.h" #include "Store.h" -#include "icmp/net_db.h" -#include "ip/Address.h" -#include "ip/tools.h" -#include "mgr/Registration.h" /* count mcast group peers every 15 minutes */ #define MCAST_COUNT_RATE 900 === modified file 'src/pconn.cc' --- src/pconn.cc 2012-08-06 17:41:08 +0000 +++ src/pconn.cc 2012-08-13 09:44:13 +0000 @@ -32,13 +32,15 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "comm.h" #include "comm/Connection.h" +#include "fde.h" +#include "globals.h" #include "mgr/Registration.h" +#include "pconn.h" +#include "protos.h" #include "Store.h" -#include "pconn.h" -#include "comm.h" -#include "fde.h" #define PCONN_FDS_SZ 8 /* pconn set size, increase for better memcache hit rate */ === modified file 'src/peer_digest.cc' --- src/peer_digest.cc 2012-08-06 17:41:08 +0000 +++ src/peer_digest.cc 2012-08-13 13:58:33 +0000 @@ -33,17 +33,17 @@ * */ -#include "squid-old.h" +#include "squid.h" #if USE_CACHE_DIGESTS - #include "event.h" #include "forward.h" -#include "Store.h" +#include "HttpReply.h" #include "HttpRequest.h" -#include "HttpReply.h" #include "MemObject.h" #include "PeerDigest.h" +#include "protos.h" #include "SquidTime.h" +#include "Store.h" #include "StoreClient.h" /* local types */ === modified file 'src/peer_select.cc' --- src/peer_select.cc 2012-08-13 00:15:09 +0000 +++ src/peer_select.cc 2012-08-13 09:45:17 +0000 @@ -32,21 +32,23 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "acl/FilledChecklist.h" +#include "client_side.h" #include "DnsLookupDetails.h" #include "errorpage.h" #include "event.h" -#include "PeerSelectState.h" -#include "Store.h" +#include "forward.h" #include "hier_code.h" -#include "ICP.h" +#include "htcp.h" #include "HttpRequest.h" -#include "acl/FilledChecklist.h" -#include "htcp.h" -#include "forward.h" -#include "SquidTime.h" #include "icmp/net_db.h" +#include "ICP.h" #include "ipcache.h" +#include "PeerSelectState.h" +#include "protos.h" +#include "SquidTime.h" +#include "Store.h" static struct { int timeouts; === modified file 'src/peer_sourcehash.cc' --- src/peer_sourcehash.cc 2012-07-18 15:47:58 +0000 +++ src/peer_sourcehash.cc 2012-08-13 09:44:13 +0000 @@ -34,10 +34,15 @@ * */ -#include "squid-old.h" -#include "Store.h" +#include "squid.h" #include "HttpRequest.h" #include "mgr/Registration.h" +#include "protos.h" +#include "Store.h" + +#if HAVE_MATH_H +#include +#endif #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) === modified file 'src/peer_userhash.cc' --- src/peer_userhash.cc 2012-07-18 15:47:58 +0000 +++ src/peer_userhash.cc 2012-08-13 09:44:13 +0000 @@ -34,14 +34,20 @@ * */ -#include "squid-old.h" +#include "squid.h" #if USE_AUTH +#include "auth/UserRequest.h" +#include "globals.h" +#include "HttpRequest.h" #include "mgr/Registration.h" +#include "protos.h" #include "Store.h" -#include "HttpRequest.h" -#include "auth/UserRequest.h" + +#if HAVE_MATH_H +#include +#endif #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) === modified file 'src/protos.h' --- src/protos.h 2012-07-05 14:38:28 +0000 +++ src/protos.h 2012-08-13 13:58:33 +0000 @@ -51,21 +51,21 @@ #if USE_FORW_VIA_DB -SQUIDCEXTERN void fvdbCountVia(const char *key); -SQUIDCEXTERN void fvdbCountForw(const char *key); +extern void fvdbCountVia(const char *key); +extern void fvdbCountForw(const char *key); #endif #if HEADERS_LOG SQUIDCEXTERN void headersLog(int cs, int pq, const HttpRequestMethod& m, void *data); #endif -SQUIDCEXTERN int logTypeIsATcpHit(log_type); +int logTypeIsATcpHit(log_type); /* * cache_cf.c */ SQUIDCEXTERN void configFreeMemory(void); class MemBuf; -SQUIDCEXTERN void wordlistCat(const wordlist *, MemBuf * mb); -SQUIDCEXTERN void self_destruct(void); +void wordlistCat(const wordlist *, MemBuf * mb); +extern void self_destruct(void); SQUIDCEXTERN void add_http_port(char *portspec); extern int xatoi(const char *token); extern long xatol(const char *token); @@ -125,13 +125,13 @@ SQUIDCEXTERN void file_read(int, char *, int, off_t, DRCB *, void *); SQUIDCEXTERN void disk_init(void); -SQUIDCEXTERN void fd_close(int fd); -SQUIDCEXTERN void fd_open(int fd, unsigned int type, const char *); -SQUIDCEXTERN void fd_note(int fd, const char *); -SQUIDCEXTERN void fd_bytes(int fd, int len, unsigned int type); -SQUIDCEXTERN void fdDumpOpen(void); -SQUIDCEXTERN int fdUsageHigh(void); -SQUIDCEXTERN void fdAdjustReserved(void); +void fd_close(int fd); +void fd_open(int fd, unsigned int type, const char *); +void fd_note(int fd, const char *); +void fd_bytes(int fd, int len, unsigned int type); +void fdDumpOpen(void); +int fdUsageHigh(void); +void fdAdjustReserved(void); SQUIDCEXTERN void fqdncache_nbgethostbyaddr(const Ip::Address &, FQDNH *, void *); @@ -195,10 +195,9 @@ StoreEntry * entry, MemBuf * mb, http_state_flags); -SQUIDCEXTERN const char *httpMakeVaryMark(HttpRequest * request, HttpReply const * reply); +extern const char *httpMakeVaryMark(HttpRequest * request, HttpReply const * reply); #include "HttpStatusCode.h" -SQUIDCEXTERN const char *httpStatusString(http_status status); class StatHist; @@ -222,7 +221,6 @@ SQUIDCEXTERN int strListGetItem(const String * str, char del, const char **item, int *ilen, const char **pos); SQUIDCEXTERN const char *getStringPrefix(const char *str, const char *end); SQUIDCEXTERN int httpHeaderParseInt(const char *start, int *val); -SQUIDCEXTERN int httpHeaderParseOffset(const char *start, int64_t * off); SQUIDCEXTERN void httpHeaderPutStrf(HttpHeader * hdr, http_hdr_type id, const char *fmt,...) PRINTF_FORMAT_ARG3; @@ -260,9 +258,9 @@ #endif /* SQUID_SNMP */ #if USE_WCCP -SQUIDCEXTERN void wccpInit(void); -SQUIDCEXTERN void wccpConnectionOpen(void); -SQUIDCEXTERN void wccpConnectionClose(void); +void wccpInit(void); +void wccpConnectionOpen(void); +void wccpConnectionClose(void); #endif /* USE_WCCP */ #if USE_WCCPv2 @@ -271,23 +269,23 @@ extern void wccp2ConnectionClose(void); #endif /* USE_WCCPv2 */ -SQUIDCEXTERN char *mime_get_header(const char *mime, const char *header); -SQUIDCEXTERN char *mime_get_header_field(const char *mime, const char *name, const char *prefix); -SQUIDCEXTERN size_t headersEnd(const char *, size_t); +char *mime_get_header(const char *mime, const char *header); +char *mime_get_header_field(const char *mime, const char *name, const char *prefix); +size_t headersEnd(const char *, size_t); -SQUIDCEXTERN void mimeInit(char *filename); -SQUIDCEXTERN void mimeFreeMemory(void); -SQUIDCEXTERN char *mimeGetContentEncoding(const char *fn); -SQUIDCEXTERN char *mimeGetContentType(const char *fn); -SQUIDCEXTERN char const *mimeGetIcon(const char *fn); -SQUIDCEXTERN const char *mimeGetIconURL(const char *fn); -SQUIDCEXTERN char mimeGetTransferMode(const char *fn); -SQUIDCEXTERN int mimeGetDownloadOption(const char *fn); -SQUIDCEXTERN int mimeGetViewOption(const char *fn); +void mimeInit(char *filename); +void mimeFreeMemory(void); +char *mimeGetContentEncoding(const char *fn); +char *mimeGetContentType(const char *fn); +char const *mimeGetIcon(const char *fn); +const char *mimeGetIconURL(const char *fn); +char mimeGetTransferMode(const char *fn); +int mimeGetDownloadOption(const char *fn); +int mimeGetViewOption(const char *fn); #include "ipcache.h" -SQUIDCEXTERN int mcastSetTtl(int, int); -SQUIDCEXTERN IPH mcastJoinGroups; +int mcastSetTtl(int, int); +IPH mcastJoinGroups; SQUIDCEXTERN peer *getFirstPeer(void); SQUIDCEXTERN peer *getFirstUpParent(HttpRequest *); @@ -405,15 +403,15 @@ /* ----------------------------------------------------------------- */ /* repl_modules.c */ -SQUIDCEXTERN void storeReplSetup(void); +extern void storeReplSetup(void); /* * store_log.c */ -SQUIDCEXTERN void storeLog(int tag, const StoreEntry * e); -SQUIDCEXTERN void storeLogRotate(void); -SQUIDCEXTERN void storeLogClose(void); -SQUIDCEXTERN void storeLogOpen(void); +extern void storeLog(int tag, const StoreEntry * e); +extern void storeLogRotate(void); +extern void storeLogClose(void); +extern void storeLogOpen(void); /* @@ -437,10 +435,10 @@ /* * store_digest.c */ -SQUIDCEXTERN void storeDigestInit(void); -SQUIDCEXTERN void storeDigestNoteStoreReady(void); -SQUIDCEXTERN void storeDigestScheduleRebuild(void); -SQUIDCEXTERN void storeDigestDel(const StoreEntry * entry); +extern void storeDigestInit(void); +extern void storeDigestNoteStoreReady(void); +extern void storeDigestScheduleRebuild(void); +extern void storeDigestDel(const StoreEntry * entry); extern void storeDigestReport(StoreEntry *); /* @@ -463,7 +461,7 @@ * store_swapin.c */ class store_client; -SQUIDCEXTERN void storeSwapInStart(store_client *); +extern void storeSwapInStart(store_client *); /* * store_client.c @@ -577,7 +575,7 @@ SQUIDCEXTERN void linklistPush(link_list **, void *); SQUIDCEXTERN void *linklistShift(link_list **); SQUIDCEXTERN int xrename(const char *from, const char *to); -SQUIDCEXTERN int isPowTen(int); +int isPowTen(int); SQUIDCEXTERN void parseEtcHosts(void); SQUIDCEXTERN int getMyPort(void); SQUIDCEXTERN void setUmask(mode_t mask); === modified file 'src/redirect.cc' --- src/redirect.cc 2012-07-18 15:47:58 +0000 +++ src/redirect.cc 2012-08-13 06:15:47 +0000 @@ -33,21 +33,23 @@ * */ -#include "squid-old.h" -#if USE_AUTH -#include "auth/UserRequest.h" -#endif +#include "squid.h" +#include "acl/Checklist.h" +#include "client_side.h" +#include "client_side_reply.h" +#include "client_side_request.h" #include "comm/Connection.h" -#include "mgr/Registration.h" -#include "Store.h" #include "fde.h" -#include "client_side_request.h" -#include "acl/Checklist.h" +#include "globals.h" #include "HttpRequest.h" -#include "client_side.h" -#include "client_side_reply.h" #include "helper.h" +#include "mgr/Registration.h" +#include "protos.h" #include "rfc1738.h" +#include "Store.h" +#if USE_AUTH +#include "auth/UserRequest.h" +#endif #if USE_SSL #include "ssl/support.h" #endif === modified file 'src/refresh.cc' --- src/refresh.cc 2012-07-18 15:47:58 +0000 +++ src/refresh.cc 2012-08-13 06:15:47 +0000 @@ -37,14 +37,15 @@ #define USE_POSIX_REGEX /* put before includes; always use POSIX */ #endif -#include "squid-old.h" +#include "squid.h" +#include "mgr/Registration.h" #include "HttpHdrCc.h" -#include "mgr/Registration.h" -#include "Store.h" -#include "MemObject.h" #include "HttpRequest.h" #include "HttpReply.h" +#include "MemObject.h" +#include "protos.h" #include "SquidTime.h" +#include "Store.h" typedef enum { rcHTTP, === modified file 'src/repl/heap/store_heap_replacement.cc' --- src/repl/heap/store_heap_replacement.cc 2012-01-20 18:55:04 +0000 +++ src/repl/heap/store_heap_replacement.cc 2012-08-10 11:52:29 +0000 @@ -41,13 +41,17 @@ * http://www.hpl.hp.com/techreports/1999/HPL-1999-69.html */ -#include "squid-old.h" +#include "squid.h" #include "heap.h" #include "store_heap_replacement.h" #include "Store.h" #include "MemObject.h" #include "SquidTime.h" +#if HAVE_MATH_H +#include +#endif + /* * Key generation function to implement the LFU-DA policy (Least * Frequently Used with Dynamic Aging). Similar to classical LFU === modified file 'src/repl/heap/store_repl_heap.cc' --- src/repl/heap/store_repl_heap.cc 2012-08-06 17:41:08 +0000 +++ src/repl/heap/store_repl_heap.cc 2012-08-10 11:52:29 +0000 @@ -41,8 +41,9 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "heap.h" +#include "protos.h" #include "store_heap_replacement.h" #include "Store.h" #include "MemObject.h" === modified file 'src/repl/lru/store_repl_lru.cc' --- src/repl/lru/store_repl_lru.cc 2012-07-13 10:48:12 +0000 +++ src/repl/lru/store_repl_lru.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "Store.h" #include "MemObject.h" #include "SquidTime.h" === modified file 'src/send-announce.cc' --- src/send-announce.cc 2012-08-06 17:21:57 +0000 +++ src/send-announce.cc 2012-08-13 06:15:47 +0000 @@ -33,12 +33,14 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "comm/Connection.h" #include "event.h" #include "fde.h" +#include "globals.h" #include "ICP.h" #include "ipcache.h" +#include "protos.h" #include "SquidTime.h" static IPH send_announce; === modified file 'src/snmp/Forwarder.cc' --- src/snmp/Forwarder.cc 2012-01-20 18:55:04 +0000 +++ src/snmp/Forwarder.cc 2012-08-10 11:52:29 +0000 @@ -9,6 +9,7 @@ #include "base/TextException.h" #include "CommCalls.h" #include "comm.h" +#include "globals.h" #include "ipc/Port.h" #include "snmp_core.h" #include "snmp/Forwarder.h" === modified file 'src/snmp_agent.cc' --- src/snmp_agent.cc 2012-07-18 15:47:58 +0000 +++ src/snmp_agent.cc 2012-08-13 06:15:47 +0000 @@ -32,14 +32,16 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "cache_snmp.h" -#include "Store.h" +#include "globals.h" #include "mem_node.h" +#include "protos.h" #include "StatCounters.h" #include "StatHist.h" #include "SquidMath.h" #include "SquidTime.h" +#include "Store.h" /************************************************************************ === modified file 'src/snmp_core.cc' --- src/snmp_core.cc 2012-08-06 17:21:57 +0000 +++ src/snmp_core.cc 2012-08-13 06:15:47 +0000 @@ -29,7 +29,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. * */ -#include "squid-old.h" +#include "squid.h" #include "acl/FilledChecklist.h" #include "base/CbcPointer.h" #include "comm.h" @@ -38,6 +38,7 @@ #include "comm/UdpOpenDialer.h" #include "ip/Address.h" #include "ip/tools.h" +#include "protos.h" #include "snmp_core.h" #include "snmp/Forwarder.h" === removed file 'src/squid-old.h' --- src/squid-old.h 2012-08-09 10:32:57 +0000 +++ src/squid-old.h 1970-01-01 00:00:00 +0000 @@ -1,170 +0,0 @@ -/* - * AUTHOR: Duane Wessels - * - * SQUID Web Proxy Cache http://www.squid-cache.org/ - * ---------------------------------------------------------- - * - * Squid is the result of efforts by numerous individuals from - * the Internet community; see the CONTRIBUTORS file for full - * details. Many organizations have provided support for Squid's - * development; see the SPONSORS file for full details. Squid is - * Copyrighted (C) 2001 by the Regents of the University of - * California; see the COPYRIGHT file for full details. Squid - * incorporates software developed and/or copyrighted by other - * sources; see the CREDITS file for full details. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. - * - */ - -#ifndef SQUID_H -#define SQUID_H - -#include "squid.h" - -#if HAVE_UNISTD_H -#include -#endif -#if HAVE_STDIO_H -#include -#endif -#if HAVE_CTYPE_H -#include -#endif -#if HAVE_ERRNO_H -#include -#endif -#if HAVE_GRP_H -#include -#endif -#if HAVE_GNUMALLOC_H -#include -#elif HAVE_MALLOC_H -#include -#endif -#if HAVE_MEMORY_H -#include -#endif -#if HAVE_NETDB_H -#include -#endif -#if HAVE_PATHS_H -#include -#endif -#if HAVE_PWD_H -#include -#endif -#if HAVE_SIGNAL_H -#include -#endif -#if HAVE_TIME_H -#include -#endif -#if HAVE_SYS_PARAM_H -#include -#endif -#if HAVE_SYS_TIME_H -#include -#endif -#if HAVE_SYS_RESOURCE_H -#include /* needs sys/time.h above it */ -#endif -#if HAVE_SYS_SOCKET_H -#include -#endif -#if HAVE_NETINET_IN_H -#include -#endif -#if HAVE_ARPA_INET_H -#include -#endif -#if HAVE_SYS_STAT_H -#include -#endif -#if HAVE_SYS_UN_H -#include -#endif -#if HAVE_SYS_WAIT_H -#include -#endif -#if HAVE_LIBC_H -#include -#endif -#if HAVE_SYS_SYSCALL_H -#include -#endif -#if HAVE_STRING_H -#include -#endif -#if HAVE_STRINGS_H -#include -#endif -#if HAVE_BSTRING_H -#include -#endif -#if HAVE_GETOPT_H -#include -#endif -#if HAVE_LIMITS_H -#include -#endif -#if _SQUID_WINDOWS_ -#include -#endif -#if HAVE_SYS_MOUNT_H -#include -#endif -#if HAVE_MATH_H -#include -#endif - -#ifndef MAXPATHLEN -#define MAXPATHLEN SQUID_MAXPATHLEN -#endif - -#include "md5.h" -#if SQUID_SNMP -#include "cache_snmp.h" -#endif -#include "hash.h" -#include "rfc3596.h" -#include "defines.h" -#include "enums.h" -#include "typedefs.h" -#include "util.h" -#include "profiler/Profiler.h" -#include "MemPool.h" -#include "ip/Address.h" -#include "structs.h" -#include "protos.h" -#include "globals.h" - -/* - * I'm sick of having to keep doing this .. - */ -#define INDEXSD(i) (Config.cacheSwap.swapDirs[(i)].getRaw()) - -#define FD_READ_METHOD(fd, buf, len) (*fd_table[fd].read_method)(fd, buf, len) -#define FD_WRITE_METHOD(fd, buf, len) (*fd_table[fd].write_method)(fd, buf, len) - -#ifndef IPPROTO_UDP -#define IPPROTO_UDP 0 -#endif - -#ifndef IPPROTO_TCP -#define IPPROTO_TCP 0 -#endif - -#endif /* SQUID_H */ === modified file 'src/ssl/ErrorDetail.cc' --- src/ssl/ErrorDetail.cc 2012-07-23 15:34:12 +0000 +++ src/ssl/ErrorDetail.cc 2012-08-10 11:52:29 +0000 @@ -1,9 +1,12 @@ -#include "squid-old.h" +#include "squid.h" #include "errorpage.h" #include "ssl/ErrorDetail.h" #if HAVE_MAP #include #endif +#if HAVE_CLIMITS +#include +#endif struct SslErrorEntry { Ssl::ssl_error_t value; === modified file 'src/ssl/ErrorDetailManager.cc' --- src/ssl/ErrorDetailManager.cc 2012-07-13 10:48:12 +0000 +++ src/ssl/ErrorDetailManager.cc 2012-08-10 11:52:29 +0000 @@ -1,7 +1,8 @@ -#include "squid-old.h" +#include "squid.h" #include "ErrorDetail.h" #include "errorpage.h" #include "ErrorDetailManager.h" +#include "protos.h" void Ssl::errorDetailInitialize() { === modified file 'src/ssl/ServerBump.cc' --- src/ssl/ServerBump.cc 2012-07-19 00:12:22 +0000 +++ src/ssl/ServerBump.cc 2012-08-10 11:52:29 +0000 @@ -9,6 +9,7 @@ #include "client_side.h" #include "forward.h" +#include "protos.h" #include "ssl/ServerBump.h" #include "Store.h" === modified file 'src/ssl/ServerBump.h' --- src/ssl/ServerBump.h 2012-06-19 21:51:49 +0000 +++ src/ssl/ServerBump.h 2012-08-10 11:52:29 +0000 @@ -8,6 +8,7 @@ #include "ip/Address.h" class ConnStateData; +class store_client; namespace Ssl { === modified file 'src/ssl/support.cc' --- src/ssl/support.cc 2012-08-06 17:21:57 +0000 +++ src/ssl/support.cc 2012-08-10 11:52:29 +0000 @@ -33,15 +33,17 @@ * */ -#include "squid-old.h" +#include "squid.h" /* MS Visual Studio Projects are monolithic, so we need the following * #if to exclude the SSL code from compile process when not needed. */ #if USE_SSL +#include "acl/FilledChecklist.h" #include "fde.h" -#include "acl/FilledChecklist.h" +#include "globals.h" +#include "protos.h" #include "ssl/ErrorDetail.h" #include "ssl/support.h" #include "ssl/gadgets.h" === modified file 'src/stat.cc' --- src/stat.cc 2012-08-06 17:41:08 +0000 +++ src/stat.cc 2012-08-13 06:15:47 +0000 @@ -32,36 +32,38 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "client_side_request.h" +#include "client_side.h" +#include "comm/Connection.h" #include "comm/Loops.h" #include "event.h" +#include "fde.h" #include "format/Token.h" -#include "StoreClient.h" -#if USE_AUTH -#include "auth/UserRequest.h" -#endif -#include "comm/Connection.h" -#include "mgr/Registration.h" -#include "Store.h" +#include "globals.h" #include "HttpRequest.h" #include "MemObject.h" -#include "fde.h" #include "mem_node.h" -#if USE_DELAY_POOLS -#include "DelayId.h" -#endif -#include "client_side_request.h" -#include "client_side.h" #include "MemBuf.h" -#include "SquidMath.h" -#include "SquidTime.h" -#include "StatCounters.h" #include "mgr/CountersAction.h" #include "mgr/FunAction.h" #include "mgr/InfoAction.h" #include "mgr/IntervalAction.h" #include "mgr/IoAction.h" +#include "mgr/Registration.h" #include "mgr/ServiceTimesAction.h" +#include "protos.h" +#include "SquidMath.h" +#include "SquidTime.h" +#include "StatCounters.h" +#include "StoreClient.h" +#include "Store.h" +#if USE_AUTH +#include "auth/UserRequest.h" +#endif +#if USE_DELAY_POOLS +#include "DelayId.h" +#endif #if USE_SSL #include "ssl/support.h" #endif === modified file 'src/stmem.cc' --- src/stmem.cc 2012-08-06 17:41:08 +0000 +++ src/stmem.cc 2012-08-12 20:25:21 +0000 @@ -34,11 +34,12 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" -#include "stmem.h" +#include "squid.h" +#include "Generic.h" #include "mem_node.h" #include "MemObject.h" -#include "Generic.h" +#include "profiler/Profiler.h" +#include "stmem.h" /* * NodeGet() is called to get the data buffer to pass to storeIOWrite(). === modified file 'src/store.cc' --- src/store.cc 2012-08-06 17:41:08 +0000 +++ src/store.cc 2012-08-13 06:15:47 +0000 @@ -33,31 +33,37 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "CacheManager.h" #include "comm/Connection.h" #include "ETag.h" #include "event.h" #include "fde.h" -#include "Store.h" -#include "mgr/Registration.h" -#include "StoreClient.h" -#include "stmem.h" +#include "http.h" #include "HttpReply.h" #include "HttpRequest.h" +#include "mem_node.h" #include "MemObject.h" -#include "mem_node.h" +#include "mgr/Registration.h" +#include "mgr/StoreIoAction.h" +#include "profiler/Profiler.h" +#include "protos.h" +#include "SquidTime.h" +#include "Stack.h" #include "StatCounters.h" +#include "stmem.h" +#include "StoreClient.h" +#include "Store.h" +#include "StoreIOState.h" #include "StoreMeta.h" #include "SwapDir.h" -#include "StoreIOState.h" +#include "swap_log_op.h" #if USE_DELAY_POOLS #include "DelayPools.h" #endif -#include "Stack.h" -#include "SquidTime.h" -#include "swap_log_op.h" -#include "mgr/StoreIoAction.h" +#if HAVE_LIMITS_H +#include +#endif static STMCB storeWriteComplete; === modified file 'src/store_client.cc' --- src/store_client.cc 2012-08-06 17:41:08 +0000 +++ src/store_client.cc 2012-08-13 06:15:47 +0000 @@ -34,20 +34,22 @@ * Portions copyright (c) 2003 Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "event.h" -#include "StoreClient.h" -#include "Store.h" #include "HttpReply.h" +#include "HttpRequest.h" +#include "MemBuf.h" #include "MemObject.h" +#include "profiler/Profiler.h" +#include "protos.h" #include "StatCounters.h" +#include "StoreClient.h" +#include "Store.h" #include "StoreMeta.h" #include "StoreMetaUnpacker.h" #if USE_DELAY_POOLS #include "DelayPools.h" #endif -#include "HttpRequest.h" -#include "MemBuf.h" /* * NOTE: 'Header' refers to the swapfile metadata header. === modified file 'src/store_digest.cc' --- src/store_digest.cc 2012-08-06 17:21:57 +0000 +++ src/store_digest.cc 2012-08-13 13:58:33 +0000 @@ -40,19 +40,26 @@ * storeDigestRebuild/write schedule to be activated */ -#include "squid-old.h" +#include "squid.h" +#include "Debug.h" #include "event.h" +#include "globals.h" #include "mgr/Registration.h" #if USE_CACHE_DIGESTS -#include "Store.h" +#include "HttpReply.h" #include "HttpRequest.h" -#include "HttpReply.h" #include "MemObject.h" #include "PeerDigest.h" +#include "protos.h" #include "SquidTime.h" +#include "Store.h" #include "StoreSearch.h" +#if HAVE_MATH_H +#include +#endif + /* * local types */ @@ -103,7 +110,7 @@ static void storeDigestRegisterWithCacheManager(void) { - Mgr::RegisterAction("store_digest", "Store Digest", storeDigestReport, 0, 1); + } /* === modified file 'src/store_dir.cc' --- src/store_dir.cc 2012-08-06 17:21:57 +0000 +++ src/store_dir.cc 2012-08-13 06:15:47 +0000 @@ -33,13 +33,16 @@ * */ -#include "squid-old.h" -#include "Store.h" +#include "squid.h" +#include "globals.h" +#include "mem_node.h" #include "MemObject.h" #include "MemStore.h" -#include "mem_node.h" +#include "profiler/Profiler.h" +#include "protos.h" #include "SquidMath.h" #include "SquidTime.h" +#include "Store.h" #include "SwapDir.h" #include "swap_log_op.h" @@ -59,6 +62,9 @@ #if HAVE_SYS_VFS_H #include #endif +#if HAVE_SYS_WAIT_H +#include +#endif #include "StoreHashIndex.h" === modified file 'src/store_io.cc' --- src/store_io.cc 2012-07-18 15:47:58 +0000 +++ src/store_io.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "Store.h" #include "MemObject.h" #include "SwapDir.h" === modified file 'src/store_key_md5.cc' --- src/store_key_md5.cc 2012-07-18 15:47:58 +0000 +++ src/store_key_md5.cc 2012-08-13 06:15:47 +0000 @@ -33,8 +33,10 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "HttpRequest.h" +#include "md5.h" +#include "protos.h" static cache_key null_key[SQUID_MD5_DIGEST_LENGTH]; === modified file 'src/store_log.cc' --- src/store_log.cc 2012-08-06 17:21:57 +0000 +++ src/store_log.cc 2012-08-10 07:35:11 +0000 @@ -32,7 +32,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "format/Token.h" #include "HttpReply.h" #include "log/File.h" === modified file 'src/store_rebuild.cc' --- src/store_rebuild.cc 2012-08-06 17:21:57 +0000 +++ src/store_rebuild.cc 2012-08-13 06:15:47 +0000 @@ -33,8 +33,11 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "event.h" +#include "globals.h" +#include "md5.h" +#include "protos.h" #include "StatCounters.h" #include "Store.h" #include "SwapDir.h" === modified file 'src/store_swapin.cc' --- src/store_swapin.cc 2012-08-06 17:21:57 +0000 +++ src/store_swapin.cc 2012-08-12 21:21:22 +0000 @@ -33,7 +33,8 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "globals.h" #include "StatCounters.h" #include "StoreClient.h" #include "Store.h" === modified file 'src/store_swapmeta.cc' --- src/store_swapmeta.cc 2012-07-18 15:47:58 +0000 +++ src/store_swapmeta.cc 2012-08-13 06:15:47 +0000 @@ -33,12 +33,17 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "md5.h" +#include "MemObject.h" #include "Store.h" -#include "MemObject.h" #include "StoreMeta.h" #include "StoreMetaUnpacker.h" +#if HAVE_SYS_WAIT_H +#include +#endif + void storeSwapTLVFree(tlv * n) { === modified file 'src/store_swapout.cc' --- src/store_swapout.cc 2012-08-06 17:41:08 +0000 +++ src/store_swapout.cc 2012-08-12 21:21:22 +0000 @@ -33,13 +33,14 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "cbdata.h" #include "StoreClient.h" #include "Store.h" /* FIXME: Abstract the use of this more */ #include "mem_node.h" #include "MemObject.h" +#include "protos.h" #include "SwapDir.h" #include "StatCounters.h" #include "swap_log_op.h" === modified file 'src/structs.h' --- src/structs.h 2012-07-18 16:21:47 +0000 +++ src/structs.h 2012-08-10 11:52:29 +0000 @@ -31,8 +31,11 @@ #include "RefCount.h" #include "cbdata.h" +#include "defines.h" #include "dlink.h" #include "err_type.h" +#include "hash.h" +#include "ip/Address.h" /* needed for the global config */ #include "HttpHeader.h" @@ -63,6 +66,7 @@ #if SQUID_SNMP +#include "snmp_session.h" struct _snmp_request_t { u_char *buf; u_char *outbuf; === modified file 'src/test_cache_digest.cc' --- src/test_cache_digest.cc 2012-07-20 15:31:04 +0000 +++ src/test_cache_digest.cc 2012-08-10 07:35:11 +0000 @@ -36,7 +36,7 @@ * Test-suite for playing with cache digests */ -#include "squid-old.h" +#include "squid.h" typedef struct { int query_count; === modified file 'src/tests/TestSwapDir.cc' --- src/tests/TestSwapDir.cc 2012-01-20 18:55:04 +0000 +++ src/tests/TestSwapDir.cc 2012-08-10 07:35:11 +0000 @@ -1,6 +1,6 @@ #include "squid.h" -#include "squid-old.h" +#include "squid.h" #include "TestSwapDir.h" uint64_t === modified file 'src/tests/TestSwapDir.h' --- src/tests/TestSwapDir.h 2012-01-20 18:55:04 +0000 +++ src/tests/TestSwapDir.h 2012-08-10 11:52:29 +0000 @@ -1,7 +1,7 @@ #ifndef TEST_TESTSWAPDIR #define TEST_TESTSWAPDIR -#include "squid-old.h" +#include "squid.h" #include "SwapDir.h" class TestSwapDir : public SwapDir === modified file 'src/tests/stub_DelayId.cc' --- src/tests/stub_DelayId.cc 2012-08-08 07:35:10 +0000 +++ src/tests/stub_DelayId.cc 2012-08-10 07:35:11 +0000 @@ -35,7 +35,7 @@ #include "squid.h" #if USE_DELAY_POOLS -#include "squid-old.h" +#include "squid.h" #include "DelayId.h" #define STUB_API "stub_DelayId.cc" === modified file 'src/tests/stub_access_log.cc' --- src/tests/stub_access_log.cc 2012-01-20 18:55:04 +0000 +++ src/tests/stub_access_log.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #include "HierarchyLogEntry.h" #define STUB_API "access.log.cc" === modified file 'src/tests/stub_acl.cc' --- src/tests/stub_acl.cc 2012-01-20 18:55:04 +0000 +++ src/tests/stub_acl.cc 2012-08-10 07:35:11 +0000 @@ -32,7 +32,7 @@ * */ -#include "squid-old.h" +#include "squid.h" /* * DO NOT MODIFY: === modified file 'src/tests/stub_cache_cf.cc' --- src/tests/stub_cache_cf.cc 2012-08-07 15:58:08 +0000 +++ src/tests/stub_cache_cf.cc 2012-08-13 11:30:53 +0000 @@ -32,8 +32,9 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "ConfigParser.h" +#include "protos.h" #include "wordlist.h" #define STUB_API "cache_cf.cc" === modified file 'src/tests/stub_cache_manager.cc' --- src/tests/stub_cache_manager.cc 2012-01-20 18:55:04 +0000 +++ src/tests/stub_cache_manager.cc 2012-08-13 11:30:53 +0000 @@ -1,5 +1,6 @@ -#include "squid-old.h" +#include "squid.h" #include "CacheManager.h" +#include "Debug.h" #include "mgr/Registration.h" #define STUB_API "cache_manager.cc" === modified file 'src/tests/stub_errorpage.cc' --- src/tests/stub_errorpage.cc 2012-02-05 11:24:07 +0000 +++ src/tests/stub_errorpage.cc 2012-08-13 11:30:53 +0000 @@ -1,5 +1,6 @@ #include "squid.h" #include "errorpage.h" +#include "protos.h" //to detect linkage to apply #define STUB_API "errorpage.cc" #include "tests/STUB.h" === modified file 'src/tests/stub_fd.cc' --- src/tests/stub_fd.cc 2012-07-30 08:49:59 +0000 +++ src/tests/stub_fd.cc 2012-08-13 11:30:53 +0000 @@ -1,5 +1,6 @@ #include "squid.h" #include "fde.h" +#include "protos.h" //to detect linkage #define STUB_API "fd.cc" #include "tests/STUB.h" === modified file 'src/tests/stub_http.cc' --- src/tests/stub_http.cc 2012-01-20 18:55:04 +0000 +++ src/tests/stub_http.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,7 @@ -#include "squid-old.h" +#include "squid.h" + +#include "HttpRequest.h" +#include "HttpReply.h" #define STUB_API "http.cc" #include "tests/STUB.h" === modified file 'src/tests/stub_stat.cc' --- src/tests/stub_stat.cc 2012-01-20 18:55:04 +0000 +++ src/tests/stub_stat.cc 2012-08-10 07:35:11 +0000 @@ -32,7 +32,7 @@ * */ -#include "squid-old.h" +#include "squid.h" /* * DO NOT MODIFY: === modified file 'src/tests/stub_store.cc' --- src/tests/stub_store.cc 2012-06-18 23:08:56 +0000 +++ src/tests/stub_store.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #define STUB_API "store.cc" #include "tests/STUB.h" === modified file 'src/tests/stub_store_client.cc' --- src/tests/stub_store_client.cc 2012-01-20 18:55:04 +0000 +++ src/tests/stub_store_client.cc 2012-08-13 11:30:53 +0000 @@ -1,6 +1,7 @@ -#include "squid-old.h" +#include "squid.h" #include "StoreClient.h" #include "Store.h" +#include "protos.h" #define STUB_API "store_client.cc" #include "tests/STUB.h" === modified file 'src/tests/stub_store_rebuild.cc' --- src/tests/stub_store_rebuild.cc 2012-08-08 09:24:40 +0000 +++ src/tests/stub_store_rebuild.cc 2012-08-13 11:30:53 +0000 @@ -32,7 +32,9 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "MemBuf.h" +#include "protos.h" //to detect proper linkage to apply #define STUB_API "stub_store_rebuild.cc" #include "tests/STUB.h" === modified file 'src/tests/stub_store_stats.cc' --- src/tests/stub_store_stats.cc 2012-01-20 18:55:04 +0000 +++ src/tests/stub_store_stats.cc 2012-08-10 07:35:11 +0000 @@ -1,4 +1,4 @@ -#include "squid-old.h" +#include "squid.h" #define STUB_API "StoreStats.cc" #include "tests/STUB.h" === modified file 'src/tests/testACLMaxUserIP.cc' --- src/tests/testACLMaxUserIP.cc 2012-01-20 18:55:04 +0000 +++ src/tests/testACLMaxUserIP.cc 2012-08-10 07:35:11 +0000 @@ -1,6 +1,6 @@ #define SQUID_UNIT_TEST 1 -#include "squid-old.h" +#include "squid.h" #if USE_AUTH === modified file 'src/tests/testAuth.cc' --- src/tests/testAuth.cc 2012-07-13 10:48:12 +0000 +++ src/tests/testAuth.cc 2012-08-10 07:35:11 +0000 @@ -1,6 +1,6 @@ #define SQUID_UNIT_TEST 1 -#include "squid-old.h" +#include "squid.h" #if USE_AUTH === modified file 'src/tests/testBoilerplate.cc' --- src/tests/testBoilerplate.cc 2012-01-20 18:55:04 +0000 +++ src/tests/testBoilerplate.cc 2012-08-10 07:35:11 +0000 @@ -1,6 +1,6 @@ #define SQUID_UNIT_TEST 1 -#include "squid-old.h" +#include "squid.h" #include "testBoilerplate.h" #if HAVE_STDEXCEPT === modified file 'src/tests/testCacheManager.cc' --- src/tests/testCacheManager.cc 2012-01-20 18:55:04 +0000 +++ src/tests/testCacheManager.cc 2012-08-10 07:35:11 +0000 @@ -1,6 +1,6 @@ #define SQUID_UNIT_TEST 1 -#include "squid-old.h" +#include "squid.h" #include #include "mgr/Action.h" === modified file 'src/tests/testCoss.cc' --- src/tests/testCoss.cc 2012-08-10 06:56:49 +0000 +++ src/tests/testCoss.cc 2012-08-10 07:35:11 +0000 @@ -1,5 +1,5 @@ #define SQUID_UNIT_TEST 1 -#include "squid-old.h" +#include "squid.h" #include "testCoss.h" #include "Store.h" #include "SwapDir.h" === modified file 'src/tests/testDiskIO.cc' --- src/tests/testDiskIO.cc 2012-08-10 06:56:49 +0000 +++ src/tests/testDiskIO.cc 2012-08-10 07:35:11 +0000 @@ -1,6 +1,6 @@ #define SQUID_UNIT_TEST 1 -#include "squid-old.h" +#include "squid.h" #include "testDiskIO.h" #include "Store.h" #include "SwapDir.h" === modified file 'src/tests/testEvent.cc' --- src/tests/testEvent.cc 2012-07-13 10:48:12 +0000 +++ src/tests/testEvent.cc 2012-08-13 11:30:53 +0000 @@ -3,11 +3,12 @@ #include -#include "testEvent.h" -#include "event.h" #include "base/AsyncCallQueue.h" #include "CapturingStoreEntry.h" +#include "event.h" #include "Mem.h" +#include "protos.h" +#include "testEvent.h" CPPUNIT_TEST_SUITE_REGISTRATION( testEvent ); === modified file 'src/tests/testEventLoop.cc' --- src/tests/testEventLoop.cc 2012-01-20 18:55:04 +0000 +++ src/tests/testEventLoop.cc 2012-08-10 11:52:29 +0000 @@ -6,6 +6,7 @@ #include "testEventLoop.h" #include "EventLoop.h" #include "Mem.h" +#include "protos.h" //for statInit #if 0 #include "AsyncEngine.h" === modified file 'src/tests/testHttpParser.cc' --- src/tests/testHttpParser.cc 2012-06-13 03:17:53 +0000 +++ src/tests/testHttpParser.cc 2012-08-13 11:30:53 +0000 @@ -7,6 +7,7 @@ #include "HttpParser.h" #include "Mem.h" #include "MemBuf.h" +#include "structs.h" CPPUNIT_TEST_SUITE_REGISTRATION( testHttpParser ); === modified file 'src/tests/testHttpReply.cc' --- src/tests/testHttpReply.cc 2012-01-20 18:55:04 +0000 +++ src/tests/testHttpReply.cc 2012-08-13 11:30:53 +0000 @@ -5,6 +5,7 @@ #include "testHttpReply.h" #include "HttpReply.h" #include "Mem.h" +#include "protos.h" CPPUNIT_TEST_SUITE_REGISTRATION( testHttpReply ); === modified file 'src/tests/testHttpRequest.cc' --- src/tests/testHttpRequest.cc 2012-01-20 18:55:04 +0000 +++ src/tests/testHttpRequest.cc 2012-08-13 11:30:53 +0000 @@ -6,6 +6,7 @@ #include "testHttpRequest.h" #include "HttpRequest.h" #include "Mem.h" +#include "protos.h" CPPUNIT_TEST_SUITE_REGISTRATION( testHttpRequest ); === modified file 'src/tests/testHttpRequestMethod.cc' --- src/tests/testHttpRequestMethod.cc 2012-01-20 18:55:04 +0000 +++ src/tests/testHttpRequestMethod.cc 2012-08-10 07:35:11 +0000 @@ -1,6 +1,6 @@ #define SQUID_UNIT_TEST 1 -#include "squid-old.h" +#include "squid.h" #include #include "Mem.h" === modified file 'src/tests/testNull.cc' --- src/tests/testNull.cc 2012-08-10 06:56:49 +0000 +++ src/tests/testNull.cc 2012-08-10 07:35:11 +0000 @@ -1,5 +1,5 @@ #define SQUID_UNIT_TEST 1 -#include "squid-old.h" +#include "squid.h" #include "testNull.h" #include "Store.h" #include "SwapDir.h" === modified file 'src/tests/testRock.cc' --- src/tests/testRock.cc 2012-01-20 18:55:04 +0000 +++ src/tests/testRock.cc 2012-08-13 11:30:53 +0000 @@ -2,18 +2,23 @@ #include "squid.h" #include "DiskIO/DiskIOModule.h" +#include "fs/rock/RockSwapDir.h" +#include "globals.h" #include "HttpHeader.h" #include "HttpReply.h" #include "Mem.h" #include "MemObject.h" +#include "protos.h" #include "Store.h" #include "StoreFileSystem.h" #include "StoreSearch.h" #include "SwapDir.h" -#include "fs/rock/RockSwapDir.h" #include "testRock.h" #include "testStoreSupport.h" +#if HAVE_SYS_STAT_H +#include +#endif #if HAVE_STDEXCEPT #include #endif === modified file 'src/tests/testStore.cc' --- src/tests/testStore.cc 2012-01-20 18:55:04 +0000 +++ src/tests/testStore.cc 2012-08-10 07:35:11 +0000 @@ -1,6 +1,6 @@ #define SQUID_UNIT_TEST 1 -#include "squid-old.h" +#include "squid.h" #include "testStore.h" #include "Store.h" === modified file 'src/tests/testStore.h' --- src/tests/testStore.h 2012-01-20 18:55:04 +0000 +++ src/tests/testStore.h 2012-08-10 11:52:29 +0000 @@ -2,7 +2,7 @@ #ifndef SQUID_SRC_TEST_STORE_H #define SQUID_SRC_TEST_STORE_H -#include "squid-old.h" +#include "squid.h" #include "Store.h" #include === modified file 'src/tests/testStoreController.cc' --- src/tests/testStoreController.cc 2012-07-13 10:48:12 +0000 +++ src/tests/testStoreController.cc 2012-08-10 07:35:11 +0000 @@ -1,6 +1,6 @@ #define SQUID_UNIT_TEST 1 -#include "squid-old.h" +#include "squid.h" #include "testStoreController.h" #include "Store.h" === modified file 'src/tests/testStoreEntryStream.cc' --- src/tests/testStoreEntryStream.cc 2012-01-20 18:55:04 +0000 +++ src/tests/testStoreEntryStream.cc 2012-08-10 07:35:11 +0000 @@ -1,6 +1,6 @@ #define SQUID_UNIT_TEST 1 -#include "squid-old.h" +#include "squid.h" #include "Mem.h" #include "testStore.h" #include "testStoreEntryStream.h" === modified file 'src/tests/testStoreHashIndex.cc' --- src/tests/testStoreHashIndex.cc 2012-07-13 10:48:12 +0000 +++ src/tests/testStoreHashIndex.cc 2012-08-10 07:35:11 +0000 @@ -1,6 +1,6 @@ #define SQUID_UNIT_TEST 1 -#include "squid-old.h" +#include "squid.h" #include "testStoreHashIndex.h" #include "Store.h" === modified file 'src/tests/testURLScheme.cc' --- src/tests/testURLScheme.cc 2012-01-20 18:55:04 +0000 +++ src/tests/testURLScheme.cc 2012-08-10 07:35:11 +0000 @@ -1,10 +1,11 @@ #define SQUID_UNIT_TEST 1 -#include "squid-old.h" +#include "squid.h" #include #include "Mem.h" +#include "SquidString.h" #include "testURLScheme.h" #include "URLScheme.h" === modified file 'src/tests/testUfs.cc' --- src/tests/testUfs.cc 2012-08-10 06:56:49 +0000 +++ src/tests/testUfs.cc 2012-08-13 11:30:53 +0000 @@ -2,15 +2,17 @@ #include "squid.h" #include "DiskIO/DiskIOModule.h" +#include "fs/ufs/UFSSwapDir.h" +#include "globals.h" #include "HttpHeader.h" #include "HttpReply.h" #include "Mem.h" #include "MemObject.h" +#include "protos.h" +#include "Store.h" +#include "SwapDir.h" #include "testStoreSupport.h" #include "testUfs.h" -#include "Store.h" -#include "SwapDir.h" -#include "fs/ufs/UFSSwapDir.h" #if HAVE_STDEXCEPT #include === modified file 'src/tools.cc' --- src/tools.cc 2012-08-06 17:41:08 +0000 +++ src/tools.cc 2012-08-13 06:15:47 +0000 @@ -32,7 +32,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "base/Subscription.h" #include "fde.h" #include "htcp.h" @@ -46,12 +46,22 @@ #include "ipc/Kids.h" #include "ipc/Coordinator.h" #include "ipcache.h" +#include "protos.h" #include "SwapDir.h" #include "wordlist.h" #if HAVE_SYS_PRCTL_H #include #endif +#if HAVE_SYS_STAT_H +#include +#endif +#if HAVE_SYS_WAIT_H +#include +#endif +#if HAVE_GRP_H +#include +#endif #define DEAD_MSG "\ The Squid Cache (version %s) died.\n\ === modified file 'src/tunnel.cc' --- src/tunnel.cc 2012-07-23 07:02:06 +0000 +++ src/tunnel.cc 2012-08-12 21:21:22 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "errorpage.h" #include "HttpRequest.h" #include "fde.h" @@ -44,15 +44,21 @@ #include "comm/Write.h" #include "client_side_request.h" #include "acl/FilledChecklist.h" -#if USE_DELAY_POOLS -#include "DelayId.h" -#endif #include "client_side.h" #include "MemBuf.h" #include "http.h" #include "PeerSelectState.h" +#include "protos.h" #include "StatCounters.h" +#if USE_DELAY_POOLS +#include "DelayId.h" +#endif + +#if HAVE_LIMITS_H +#include +#endif + class TunnelStateData { === modified file 'src/typedefs.h' --- src/typedefs.h 2012-03-07 23:33:53 +0000 +++ src/typedefs.h 2012-08-10 11:52:29 +0000 @@ -31,7 +31,9 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "enums.h" +#include "rfc1035.h" #ifndef SQUID_TYPEDEFS_H #define SQUID_TYPEDEFS_H @@ -98,6 +100,8 @@ #endif #if SQUID_SNMP +#include "snmp_vars.h" +#include "cache_snmp.h" typedef variable_list *(oid_ParseFn) (variable_list *, snint *); typedef struct _snmp_request_t snmp_request_t; === modified file 'src/unlinkd.cc' --- src/unlinkd.cc 2012-08-06 17:21:57 +0000 +++ src/unlinkd.cc 2012-08-12 21:10:41 +0000 @@ -33,12 +33,14 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "fde.h" +#include "globals.h" +#include "xusleep.h" +#include "protos.h" #include "SquidTime.h" #include "StatCounters.h" #include "SwapDir.h" -#include "fde.h" -#include "xusleep.h" /* This code gets linked to Squid */ === modified file 'src/url.cc' --- src/url.cc 2012-08-06 17:41:08 +0000 +++ src/url.cc 2012-08-13 09:44:13 +0000 @@ -34,10 +34,12 @@ */ #include "squid.h" +#include "globals.h" +#include "HttpRequest.h" +#include "protos.h" +#include "rfc1738.h" #include "URL.h" -#include "HttpRequest.h" #include "URLScheme.h" -#include "rfc1738.h" static HttpRequest *urlParseFinish(const HttpRequestMethod& method, const AnyP::ProtocolType protocol, === modified file 'src/urn.cc' --- src/urn.cc 2012-08-06 17:21:57 +0000 +++ src/urn.cc 2012-08-12 21:10:41 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "errorpage.h" #include "StoreClient.h" #include "Store.h" @@ -41,8 +41,10 @@ #include "HttpRequest.h" #include "MemBuf.h" #include "forward.h" +#include "globals.h" #include "SquidTime.h" #include "icmp/net_db.h" +#include "protos.h" #define URN_REQBUF_SZ 4096 === modified file 'src/wccp.cc' --- src/wccp.cc 2012-08-06 17:21:57 +0000 +++ src/wccp.cc 2012-08-12 21:10:41 +0000 @@ -36,11 +36,13 @@ #if USE_WCCP -#include "squid-old.h" +#include "squid.h" #include "comm.h" #include "comm/Connection.h" #include "comm/Loops.h" #include "event.h" +#include "structs.h" + #define WCCP_PORT 2048 #define WCCP_REVISION 0 === modified file 'src/wccp2.cc' --- src/wccp2.cc 2012-08-06 17:41:08 +0000 +++ src/wccp2.cc 2012-08-12 21:10:41 +0000 @@ -30,7 +30,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #if USE_WCCPv2 @@ -40,7 +40,9 @@ #include "compat/strsep.h" #include "event.h" #include "ip/Address.h" +#include "md5.h" #include "Parsing.h" +#include "protos.h" #include "Store.h" #include "SwapDir.h" === modified file 'src/whois.cc' --- src/whois.cc 2012-04-20 17:14:56 +0000 +++ src/whois.cc 2012-08-12 21:10:41 +0000 @@ -33,16 +33,17 @@ * */ -#include "squid-old.h" +#include "squid.h" +#include "comm.h" #include "comm/Write.h" #include "errorpage.h" -#include "Store.h" #include "HttpReply.h" #include "HttpRequest.h" -#include "comm.h" #include "HttpRequest.h" #include "forward.h" +#include "protos.h" #include "StatCounters.h" +#include "Store.h" #define WHOIS_PORT 43 === modified file 'src/win32.cc' --- src/win32.cc 2012-07-19 13:49:54 +0000 +++ src/win32.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "squid_windows.h" #if _SQUID_MSWIN_ === modified file 'src/wordlist.h' --- src/wordlist.h 2012-01-20 18:55:04 +0000 +++ src/wordlist.h 2012-08-10 11:52:29 +0000 @@ -32,8 +32,10 @@ #ifndef SQUID_WORDLIST_H #define SQUID_WORDLIST_H -#include "squid-old.h" +#include "squid.h" +#include "globals.h" #include "MemPool.h" +#include "profiler/Profiler.h" class wordlist { === modified file 'test-suite/ESIExpressions.cc' --- test-suite/ESIExpressions.cc 2012-01-20 18:55:04 +0000 +++ test-suite/ESIExpressions.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "esi/Expression.h" int === modified file 'test-suite/MemPoolTest.cc' --- test-suite/MemPoolTest.cc 2012-01-20 18:55:04 +0000 +++ test-suite/MemPoolTest.cc 2012-08-10 07:35:11 +0000 @@ -32,7 +32,7 @@ * Copyright (c) 2003, Robert Collins */ -#include "squid-old.h" +#include "squid.h" #if USE_MEMPOOLS === modified file 'test-suite/StackTest.cc' --- test-suite/StackTest.cc 2012-01-20 18:55:04 +0000 +++ test-suite/StackTest.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003 Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "Stack.h" int === modified file 'test-suite/VirtualDeleteOperator.cc' --- test-suite/VirtualDeleteOperator.cc 2012-01-20 18:55:04 +0000 +++ test-suite/VirtualDeleteOperator.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * Copyright (c) 2003 Robert Collins */ -#include "squid-old.h" +#include "squid.h" #if HAVE_IOSTREAM #include === modified file 'test-suite/debug.cc' --- test-suite/debug.cc 2012-08-06 17:21:57 +0000 +++ test-suite/debug.cc 2012-08-13 09:44:13 +0000 @@ -34,9 +34,10 @@ * Copyright (c) 2003 Robert Collins */ -#include "squid-old.h" +#include "squid.h" +#include "Debug.h" +#include "mem_node.h" #include "stmem.h" -#include "mem_node.h" class StreamTest { === modified file 'test-suite/mem_hdr_test.cc' --- test-suite/mem_hdr_test.cc 2012-01-20 18:55:04 +0000 +++ test-suite/mem_hdr_test.cc 2012-08-10 07:35:11 +0000 @@ -34,7 +34,7 @@ * Copyright (c) 2003 Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "stmem.h" #include "mem_node.h" #include "Generic.h" === modified file 'test-suite/mem_node_test.cc' --- test-suite/mem_node_test.cc 2012-01-20 18:55:04 +0000 +++ test-suite/mem_node_test.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "mem_node.h" #if HAVE_IOSTREAM === modified file 'test-suite/refcount.cc' --- test-suite/refcount.cc 2012-01-20 18:55:04 +0000 +++ test-suite/refcount.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * */ -#include "squid-old.h" +#include "squid.h" #include "RefCount.h" class _ToRefCount :public RefCountable === modified file 'test-suite/syntheticoperators.cc' --- test-suite/syntheticoperators.cc 2012-01-20 18:55:04 +0000 +++ test-suite/syntheticoperators.cc 2012-08-10 07:35:11 +0000 @@ -33,7 +33,7 @@ * Copyright (c) 2003 Robert Collins */ -#include "squid-old.h" +#include "squid.h" #include "stmem.h" #include "mem_node.h" === modified file 'test-suite/test_tools.cc' --- test-suite/test_tools.cc 2012-01-20 18:55:04 +0000 +++ test-suite/test_tools.cc 2012-08-10 07:35:11 +0000 @@ -5,7 +5,8 @@ // XXX: This file is made of large pieces of src/tools.cc // with only a few minor modifications. TODO: redesign or delete. -#include "squid-old.h" +#include "squid.h" +#include "dlink.h" void xassert(const char *msg, const char *file, int line) # Begin bundle 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 pauzECcObsyZK7Hl5uMj14Td8c05d3nUbGeZwpr3nfVmJBTvh7FUh10vxvlM+mlNO0cXKVXpNY/O WfOY6pp5J0YfKj4F7h33tM1ysXdu3WF55PO6Xdrd3cm9y7HGq9yW+RKQ0b1vvP1qy1h3qebIPbbk 4L88E+4muteSa21K1yMc0pl1avvTgzH2SgdGjVvie3r3xWb4VyWUPTnCclqbM6tq/b1btrh235Lr uvWtGW/B1XOu1F9xYnpqetWRnPnfZUjt2yuU7TLudrsD33s7De6u41XnxWbS7NiuOVYvZrnm2V3D pPZVVqvDzhNnsm3WOitG5V9Vbme97aovjneNbV3t3QOkbc1fJm98uqsHh6jmE+OdObJM45O9k+vj Xs8MfSnl9vnTmn7TNkScFZ1uQ7FpcrllTjaFTTk8qF0dm7TsrZty20a3112LsuxiVb2bfUjSaQl5 N7rBBd4gTNcrEho9edxuTXDr6TzHtTU+8WlhlnzEZ6iamSDi9dHUdkW6y5vjaycei77NrxyiPWve 8+q1ZqqW+Sm6phNV07OOZniM45pI3b472LJ57R3VzklYR2tmck+e0k5vJSG41VFYsq+9yl+NUaW8 NfBNSNOi865w1SvnqLt5Xqdis7dzexWJnjKaTQVtzMmpNLLF2aFqrbnjjvLHGdCNXVbRkrqct7ou 6U1IlVxfcbm8mtzJNTvuWWO0LFvl6ux5enprr27PZztzeE0Kua3KV1XLuoNCsfKicvJFk8U1hDlK p46ZvENF85mRLdG4I1WN5ChxzTJRF12ophuiXuo3tV69qVPhfkVxHO6ruddda7PkLrwr2Z7Ndr2C 3NVKFq1dTXqn3PAa1sXlhcstixdZmhP3NzVHKpL093etPx4M8hW8u2e6rmzN063t6z2J2arzsn0v vIAjfUrzGRL2nLpmk98LnjPuc+GdQNsYKd2L5LPUR3EFM8d2prbnLYpMG1G+mt1TLmt9LWM2+436 fdPWdrqtUKlZd+Ob4Y5uVl8Xc9t1PPKp5dN6rlcszoFBJJ7zRCkWDMvvb0549nZ5VUtz7qzO5+nK ZvnfjaHvaNmULaFEiw2j59yZRrZe0fdWr04q5zZEjPROULc+kVXJLVZZ5YVircSWMmjLnKUtdO9n NVpGzkcF2Prcry9RTfvafZwkoVizCSbYs3vnivtw12D1DKs8ueu/NvxlVy8d8DM/j8cMtHuWXsUT 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 KCXDU0TVEqOQ7Ki3J1szSzNXSaFNVEQrqS1LtL3zwbB4yorzLCed1JXa0YOsg7XJu5uLInA7Njrx NTmpZDIGyNMoTnn2eXGoU9g422222VyxbVXy1npu+ycik5SN9820TqHQ9xMOggcP6iIJJkMIT2iR n5Dg3Bij6YCgIcrkboEqQjWBxkXeRhAJJAHU83ts0sXgaB1LpjLV+mdaquTXHDRATd3q8+MQvsmt Niaq1LfXRIxqFEIsIknDaxZjv05lzPvGDh+xBQwVgk/6PzrEGIoICIjGBGJJPmgFsP+H+k2SJCdB Pn+K/sP8AGof+sKNP9rVqr/1wwLY42LhrLvi4An9nFwLrjWO2Q3yn+fKI/7Lwsd0t0HLkRz/RdqM U0lGBoGQsjfbWZCcoKW1MloAFSRDmQgpSDmHJEknWQxGMDSVaTQMDGEP7UgZpsySXsFgET2dqeSe vs7wL3+HdJVi9VSYzJMfD7kKkkWAsStTBGHO8GPef9CJNbEfYklihCD9mdeWp145Pp98/P+Wz2+r 7/lW/89X3cvNjn+7b+/2aq2c2HPr3/z+ez7P1c2fVov1wo//P9c0/x9UAoCW1XzlmEYZc52m85Ri +MINOEDj1c676Zuquqrm0k220kw222Ek228bbbSWZMzSSdUqqqqqqqqqqpmZnZmZbbDbSSSSX2tt JTfTO22krSz1TKSSVNslJNhtJNtpK9mZptttpJJPqyqmbmf3/nV+N3aS33VVVVeqqn6TPqraommf pMpKUpbbvsu7ttttvG3LbbbbbbYYbd38fHzrzPn47nVUW0kvnZmaHy2TKUjdqqoTMzO+4T8d3dXE 7u3d3di93d3W25TblzPemetu/ltjamZ6rqsu7u7+Lu9u9bd638jzaS+W2kv72fHxmZ1yIiZd5s72 tURi1q6tO3V2sTZlznJaIiGZTMzKS822kT8SG5SaTSaTSSWj90AduTMEeiIiIjW8Vu9738bd4ZnZ mZqqptas5zMyyXb8TM+qqqvDaqkk228zB0qZzMr6TM4G3s18XdzUzObMzQbdddVWZMy22kpF3VVd kmZmf3Dd0kmbvbN2h9i7MzJmUlM1VVTbZxVM/HGz8egQHRA3e40Pn8JmTgzHVS2xP9/4dzdyJ+lV VB1vslfXMSV5e1X2BJhJJaRd1UyW0kqSYSSWNuW2G2w67Lu6LaBKcqZk4pmRM1VVRHld3d0kwlsQ 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 5r0yt33yrHK06v0eo13sX2/ve3W5l7aiq1vO5tjnZ9t/TZjav7LY1isrz3NbWfamJ4tZms4t3PTD RZuWLj5vPW3Y7jnfR3Zt/aczy3H5qdWat3VirczD27lcvni89mt8a/eF8e5ht2grXKjnqnMZHZrt y27zr1Quc3u3u7bUa3iLvtabF3lbu9e1fhbnNResy2MnSTlhsrnUm1vamqe51XtRd0uvuNzWd61r pdXjvMm74bMcNHLd2eLlxzBgg4VQuhQ9ItGxxhhjw174rOZgwYJOkFzRYUcvm0pO63beVx61c97X tUW4c03Odl9PrC61fd47TeqXvPeHu+eGzvtDTpdrl7kVi5Y4MFiIJLFhzRyTBeShd2tvmDJ0jgox JB2SDJoINrg2OcHOj8sXfOfL5VocezyrNBbyzkl7NXMr4xyOb0LR0ya5HCjrBwoXxwogelXgXOHR R04GgsQSKmzpccxB4yeGwvRrQq4FCDB0MmhJFwL5iS87oYwtoLWM99cXKrYcuPpDYvazHJa2G6rd lr9fW16MaNlixJBYc2dLklChBAwQWRRmOm8KtEhJkgsQZFNEBkg8YLFGgogtcVyTJfyr4g4KKYJJ q+hpLmjJkcYc2bPHBi+jZo4GBjw5PVcwKWOHjhy2mwMOcLjm4X1662ZVZPEHSTpOCxcsRJo54kc5 Sj71K253b9a777nFvJlLCdjpg2MKMMbGJDBajxw3R0yceoo5Wcb4Sc7h29ePZkkhYsRAra1Z+Vw1 pu12b79psT3u4fixOt31u+ZnjHM14poiYe2N3XtWlt+1hqaDT3nGe5tnHZ9nl7dnW8rf3ORmp3fE szTExNLe/ee3Iq2XWY3e/Vqb7Z79ZurppxmNxiuGapc6ayv7HPVe2c+xac69nmM+5BhqXens2Du7 exfbDZ3Nuy3u69totefb9m8+9dd26Zj2c273ka4093k7jd++z7zvgdpvNyd87fju9sP3Lkv1u628 zjz07NibKtpy7Z4awa95r5urPWNekjvMVa0ajpELgwzZ0nrNbGtRqCeWWgqqbzjaorXay695qO4Z t1Farzz32s2w0R3W9Z9194vJkvfNrK84rdtcqNe7rdr+W87MZR/+Lv4ub70x07Tctskt29tZ6y49 A5M5a3udmdFV0sZepvjrl+5nE1et8nHyTdFwnShWDK2espcfRDEceCLEawN/kRA9zkp6CzTN01UL QlqAWKJtHJgW2zBISzjVbkE1+9E5icZxgyYjR2nByehAVBo+CIaQ2k22egvnau75Pp6e3h0Xe8kD xol9zO0JjMZnphlGFJwUy7RsHwRCmixQ2BJaNwwkUHsDS2othBxGodJItyoelBB80RG4FgRJjCOo 7iiQA6IS9HATDXKorZYigbjsggCBLmEiEUSrGG+XnBQKJC4W8bJrwFSoHBL8NR0kC4nmQ6sjMaUz IKJkc0mslkQRAo0WT+5JAoJ8mjZ8WRH4nI+HslxLn0lLlXXSuspp4xspnv72vLYobBxWw5mUnoNr p0mhdS3McKIxFBHiW3nb7ognRYjWo6EdJhAVRsRlKA78Eyq0bRyTQqphowRQNsxS9wqgG2yvYjbJ qRJndneWRyXbpa3CCluFwi4GgVBaNVipUyPI16Ncgdc0DyTnE62CJyRVKD4z4URahEvUhaxxcvti 9NdEBLqloGRSRNxcwUhVr06meNFPQvli3XMDZRCOINzwYlnGhY24NZFPeyYisFusmWxt6LtlBKIr Qm6lawylz2SDIuySCyj0EMSRaIOelOEANI5hdbhgRkBMyjkUFVZ0X7AmHAyRkQD9TA2Syiqz1TrA BLHoqY3jBQOBSkpBsqrYJhIpEIGe5rpCECE2gNQ9RcSJLJYnu9zggwy688m5NGthIRBPSRh3R5v0 ZwlUCMg9CNk6E0SG5ZEcMgpgt11PQJjaMnLPFEIaoUO5JeJVW+LnYlIOGN3TFRlQJCac4MwKuzYY 72IgVN6QpxLaCSBlHgdP66INt3E1YUXiUNwIPzCmCxmaTeiiAqCkLKxM6yZIcLG2emLDx1yyPYZC rM9sHRouMuiyR2GioqINsSsM5qdVISqqEZmaH3467JdlOzFojckD8PmZSBK03dIO6ynedjhSweBi KPXJnK6GKJA1ldk5FWkawRzxx5hsMzM8mfOSdZ66+C+uaXCluhmMrGJBRKW71kHLJia7uLu6zC+e 9l56vzwCyEVDV/+fB7AhoWyYBpXFBvgR6KrhdHVbsLlrC0IBgcggprhBuGjx39FRaNmJc25tNAHw eChREo4iIXny+TkoG8EJsTBNI2BAwgel9j0x5XG4jHEIp03WSCcRBCLNLvHF3zCyOQqpvscJC4hA 0kDhQZdMC2wzAbmlQm2MGxsRsCLm4+de2KcSBq2Gkum+JbTQ8AgikHIVTIaS0EoTNyaW7S2AWQ3k sJWFQFFpoL7EJYXUKclKQbIFpCgpx9vFDe2TY6yhcwgbAg54EjcQl4JmmcHm6T8GKGJFsldWuaWE Kq3guNHJLjSnCheVkrLFKtg2wQSFQEiONg8Toxl8Oxi9XgS4xgVa2WL0QsJ4i/ogdlapKHRXoUuc oDb5S1aEkf2bKdDsDDinQ+Jklm9C5CU+sBG2h4xJDuJcs0xuamVZHTyayOlBH6iUoRIXcWuaLHyE frQoeqCEPHIQc5Ki5fNMkgj7L5sN671rA1Q4zLxryXg3WeY6AsAbCV9gF6VS7FyqTqJC5JErbqgg WquCWTgAyb/ENbDEcJS4nFDimEMqQBMPJ1neCg7DcIM4lZN1RKpgTJSkTIjlFMbQvgLBUbcyeIEs +SRQKKCxQRi7UQK82mPO+F6t3ZcsGe+rgixvRJd+CRO6yeLJTOUFRK5BMIZ6pPVieqqool8k9vNA B3UEEjXYYCiSY6xuwmuk74i2NG6TEDtmJbSKKbGHkhw6LwyXxM1Mx3MvwpZ4h1mBwyWKRJJRHbJJ o7/s+oSKVoMeOxuaMbe+6QkmO7D5sVPDg2dH9iCETa2SsPNGvsiaSQMPxhF4ivMG9o4IlkXNlbEc Y2x7hfvCwstOQBX2m2+GMepxK++5RxQjAooGASSJI+opfQ1G0WaQG5ey1BSdSDErYM3+VgVkrmbg Qke82WzSsOwq+2jzQgolwHssCDQd00lkKoe+AqMoAcoW5VUCWS5PxZAEJeGUUgKhJIasIVIWC4JL cNhXNiaUynKVqUWK5SMGjiZpa8vSaLpBGOJg8fDlJbJsdBAx8k5QL7RDQwlggUgbycIAmxAQmMmT 9iYggJ0VVgudDow76NbbNjA7kyDBiaYoSEgHk7RU4vfYSKhhU50dJp572ChFOjI6Igs1NhB4PKCv eFUtsIJT0oiXOB0YN4OHHRUecMv4kk1vCBdRhtwHkCTFhxdQ1kmbCaaPMSVxxQ/Hex0WLEu9lHgg 7yGq5NGJrOPKyWq65oVxc10ZRi1z9Of6DkTwYOHKKptNBrCRx2jK0SVvO1+CywbSp0qIVchuxdkj FPJNjiFEQNo1toLjg4igj55gCd754nG7wzNe7UysE5wU/l70eQ8ISEGQC4sX92wQxs9bX3kE0Tkf FyaFUQ1Vg5IPAOISGNQrrSIYXwybkViJHoPcxLsIGiXSDulckMoRsSGaWo2cU8/2DkHzUISghQpx DZNzaaYCx0+n8JlEK+E+cweZNdbq6Sue6TcwONJjLjpvQho1lOsoVBAQqIsTGiGnPRGnEZ5wyZnR M5LemKkMIFCMjFRBERHG7C0kJwVuZvYS6pI4c7OFQvozo6KDnHSD0uiWrWL0UkaJknjpi6kHSogs C2ykCxsJ9cuaU0hwSiCcERCmjBqCQI1511M/Wxgjljx1u+nFx5h29SGCSTKDiAsAmTGOHed8ilhi A4MGTT0LVxQ8JsZBstLiv8yThF4LyKlAgyv5kLsdzkysVzG/d8xBOo3BqeKHUBXOaiirwlSpDTYq 3HWGFBMNj5M0h9DAiWJ41QCUy6af6ocQ4GweCsrIRcR3ChB74gsBMQpV5wBcRGwslPPAx2EE98FV FnI8BT2yUi27DBmYpkSOgQRyJ5GR6YGS567HQKCXcVHEtmZJaJyVF2FrAEwQaZc/bQRw7GAOxU4P JyQKmyQ49zRwoqlJWyg78riF0kJqRkKTkVuTG25B3k0my+SbLDdpIrMKqadhOd4H5myILMV3h7np 2SmRvWNmy9xCFEyd0Nc+lcI5R3xc6MTYNSgpGEN7bU1jwnEcqoCWOMpERscO2OqB2eHGoIw4bhZy TLeA1IXrQ8wdpCgqFHmPJ+Lmxk5wsdMD6LLjCcTB4Mv/rwSPkk0tzZoNBfdbo0gexeLj9OWj5VUh b5U0SWaIcFEKomUu9fGCIZgf6vWYngLx4850Fi1nphxTk5T4PHyY8wi6pD4STnnx7mSQkPXARmUN Jmg9KwLkmpG0FjMJY8mBiuf4kzYMEE3OZNZHzaybPkv9v7yQZk0ZLkzVGBznTThc85XDpc8kWd/F 5McukzY8eg+MF5OHxcL5IhOkCotHhguWNDsjFsyPrbhxLI5rI7h1y1g92DHfnluLF9Yh6CqetRQO lsqm37gcjM3UwyjGb4BTx0lMwNkRX9KPJp2dpIoWIy0TCY/tuC5eP7cPVW/qaC19pkW6WKdznLbc 8z5yXOIoNbE6x5TdwvdxJDykQo6WFPviWbgeNP4Myib95fDd+YW4xewpg1Iovm8XS1t+ShuVaTLz nlVStKWqLgs4cMQlBSn9GLcTSZyPHlxxEMRpjY2tGaRUfSJU/HUUvng+xWetFj9foJ9WQOsbkk2K JYfDpHMpDy3zcXqeIngjd/Tq5sD6HZ3t5gUdlvDPlG1cqm+Co5OExXmDcTW4uPwiCMj6viM4ZZ8I E7VOQGDo1qojtk0kEKxGy+TQyKdM8w3VOmD7944U0e38SnAhIyxmXNHEkP8SM3k38UC7dzPSYvrV y2S0hQ3q2IM+5D9nST50SL4L2NDsFYAovJCwCgs/RJlC9zJNIQ2TOjGkqFzocKTIJOE4kMkSl2Pn wf0XMfs2ununBRRW9KQPlSSpb5oNF7SLwySgppPH1yjsFiSfIaGjB8yqXCxzRhFG2o4c+4UbM4Hz i/1LbbefBoUOFvj2SimS5rpnJ5MMe6UZr7D6rJh9p2i9T9fGcbPjyfyEym5VnfRw1oKToSKaMD/z A/VROnkWsSkw6pYrAzG/IjE0yQI9k93Lp4T6Zri545YbI7W+asr+P8ixKFKMWIEBgZHVjROFH9FS N35RmNVRwYO5yRiDrKmW251368ENxBDE22v3QRsdqrKNwol3o8Z9U2YlT34acP78ZPD9I/txiKQU 8DgU2OcaDe9cdGC3wpqhWBZDUJplKMk7GXT2bK3ok1Qo+s8HfKXYrfS2vm65cdjxtyCyLiW6l9Gg mUhLxwYznuRTx/tcEybPtjndJ3JnCihhTkG4THON8JDgPqYE9qRTeqbdeoYFgYkDLBNC9Aoti258 Oi3XI0K/MQRKYlyZhyxo4H4yQQ/03oqxKYRzd7+JO75fRvbYF+XW5WTImiaMZkUMjBY0KW+cIKUf VTOqaLmKOZydUOhEbRJpEuD4Y6LwTBAmw4tfw3akR5ZKqYwc7La4KjriXV9y+pFEg7YpOhhJvLB0 POBwMTY56nfY3UTUGDhqZucnMRe73j1g5C8KnLseQfkBY6kLvJnYRV4+FE3o7+QeH7gw8RR6ne6U OR0AO7SBtXzwd3LGEiwHUBgPeAX40ONda+QIeDwXQ6Kd2zX4m3nbbR6Dd0utE8HE6XiBOoUQDqDs 4OMeIet4h4HQnRcCPhEVTveA296x1B3D0iW2Dgg9gWr3naexpaexNIeaBrdlQJ9yHA8pHcLED76f fkJLe8gTnjZktMTBi7pYnN4YCgwR264kTdzESRZgMFGyLNHDilxEobZD5TtrXtjhYpFJbQK1IeEM QjbDTIpNMFhiGasA0g2yuW6tNFshq2GIOayGOmCauJMSFtBakmZmEwYpDbA13ryIAZBhFUkgAmAI GDygACWprCAk962xL+Op5im8D47x1o/DR9ljvUeM75Z5zc+wI4/dK63OEP288ztupspYPbe3nNVK kG72rnq2szb275dpvk6xTm9zXZhZqL67nm53uvdDWDNS3dla9WejhqRDm3AQMQHBERJDKMnkhvti ySCqKQESCgRZAFJAikggqBIshFIsiwBEkWEIoEUJFgoEIsgAEVZBQkFhFkgqwWApAWQIsAihAkQI BIJEAIDMLaBHWmLWbrETk7WdlbeUqpJFAh+whggiVUiY0NLjpmqDaq5gHLBZMErSMKyaSiSaIUCg SyBZJSbXZTZl0t1habwubch2hpkNnFMam+Lm6b2Wa3mSGQBJ/D6PPXFO357rEdNi5oziL+GGcHwR T+eImKD9vrmi/VcCj3WVMA3qAotMsqxAqBQwV6o1KfADeqjMRYFbKRu8oUZG1OVQtl6KqhUiABlL SdCg5GGI0ebGI73XW3Cixb9OVCz0at7usCOsxm4PZEKH401xArPDBZqOwbqn3LxgWLUABRvMQCWR BNAnRLfkKdupXs7DT3LvAb9G7IFQR5BE2lQ5e69lkZiIu7AWzcedRyVmTxqp2piYrsp9XYxuATd7 VsVpm6jCzNQZKypNQe339v5/6OnJft/ZQbPcl/j7Y6rsVhW3G33FuTgnIcvFfkNfLB5YDL+FeJjz 14a9X6OQf7ThIJKevl6JVh+iWeCc+MxnPDjvRaZ3xLnDynIVXMFksRSwaypa8Qhe7lg7yzkUhwez 9j2KJn76Vq5UYiSDBhOYySfOghkMHTFCw3CnAbNA0gXXlwXHY3VJFMkxRSwBhYoLVSmDZGgulAgE CJIDjVlhtAxEJMEMrR8eAVpTgZ059EGUVSZ8XdtmIJ+A3EF3Bkxn5J0LOZ4tOs6KpZ0yjqowAHRU Suj+Ewk0nUQL8rK0ABpN+BYEbxT1+ylAR0RAU1hjvPndVHMIohYgq8ERA2kUUskAUe12bO3N3hqa ZrxTNUSDEIhhQqG5xSlFXERVgKogE4RmjtPM4PRB2J03qlvgEO4kSE01PpBkQklqi38SmxucI7uS aLnWUkSk1U2kCAJAdsm/KoJJPuIMSVeINtLI0zjQRowAFpThcqUDTS4HWu9qb6qtkFxXSyIYZYjx B5V1C2a71vTwMAKHicJBrcjdKqW6kLDaEDAaYRZKaSRK0AgpsA0jJ7b8mKHc0jZg7g3VsS2ZQ0nC RAoEIwYYChE4qrsSzM81zapx04SBVGhCQZYAI2MwuTSa8XVqHEhFRFNUBBFdEEUAMjWmHQ5ENHeY 1qMIlwBlQFyo4rUpCN068Dydf6qI7JizcsVSpAl5JcnwmQSYO7neyQU8FxzQmK8qYgN+YeieDuxs kZS7ES7tOHzuUN5ttiRfQcydWXrAOjbCBCcA6Oa0GR376aqi0tC2Fn0IF1a1K+9NasmjLRho9mOa 6AJ8+BUDtJUTgUJKYkltYNgwvY4kBlU0jcSsIVjSINAWIDS9yCGKimeLhxbYLtuZIQ0IQiCWhBvY x7cbHrbYlJ5Qhe3FAQIZJaNuVyY7dLcfRcFBskQJLgjZI4mkDogjAOiI5tgHorw6MftpGP727zxt t25WVo+rPo/p7WZRrNzVTFd3vQgJkapm4xMmZHDijtRRqC8n3COsNvr40xrLU29v3szJ7ntLpdBn vMBLotNI42CjUooSh6Iu5xNRqNHA6+HEM0yDUqUmphFLG+yoWQhg6U5I7ExG3aCDVA2cxttIBzKC wILUEHEgEZBIV2TBETnZOEy/E4ZLqq5AGtYcg/FCl79ELBYMYDKSwAcSARA9iCqfY5WoULiRtSpd BQPGUzeROneEIyXee/JwUNA4F6HVTJdBhLE6Z2nBURB6RMHQPrPaUTqRvw+DmjB/KFSjI6ybzbBH 5mN58F8YS4eO3O8TsFif4c2a3Y3mthfWb4hR150xScXjrg4SUIPcKLl632OSSqk0C43U+x6QEvCb z3gtLMlt1lKMTrMnvQ1llYw0My19HHUEEw1qGlq6ddHj6iRDWoeZDkMkEEhZF0Y6ohXViLCAFddr zhMWl4kKfFhYNgRhEDFhzZRJssOQI5AJYIGQRBAoBNRQIJSmuyjhohhLyzLqKGtwBMWAXQ0loVQR GDxjA+6qgWLDQMWQusGAUa1GyqJkFIlCFg2FIatWrKWt130ZaT5FuWYjbNyYFOBIgPXJjiqYzeS+ cpNE8jVQKBx3OEiezBQmLkgiJsKoiCQjFInHRP5M126fzZB27JPm0GQNKLpAt7h5tqCYhZ5DZzWM FOZRLjzHHog85qvKXJHCKk8tr+8N6SaoqBW50/p+xyFznhMHUiJVBERCwEoJVNvSpOA7ccOFeck5 8p8Kdynrsi6BkzGsyMXqbfZDhpo43nDVXH0l0nJRpOuMfjoXGvdLbCfg3Xm2IXLJnU97ReKhhJ0s 90kzmSefzCWbM4fpvewEj0DBnhjHN8xAXpAu73TSZIoxn5tL1VFkzbFIKr+0ZlPvQvyEe2BDH0Ro LixExVUsmkW9E0hWXKmcL2KATLnrdJeaISWyELcsevBgDnjwDLxfsT3FvNiFUSSO3Ywhc3F6mAWz sKEjk0GNG6OnJLhSSV1gRUuQdu5VJFzHC0VqdbHayMGTAIAn5zVZhVogdG8Cp2LuPJapoDSomhDd aDgKUECQFzoqVJ3kEjrRMyj5gtpBYikyz4IiIgVRiu9mXLjCEcmjo2Pw5MIb2SkykxU1hGQn0BB+ Bk2B8VdGh2/pIDHzovom5TA/qg5QgNAiKmhblJFi5rBt4Tnt9s7mL1+Y+wOWL4bqt/WMLjSYNcNQ Va0I5JGO03PIxrXY6p2/M/T+R/Dwl17m0NvMHHwSR71RvqG24YNqsKkkoZ74C/EEUoKfJFIK0t6y rEIQrJelcUkKNrBGFq6uMNKnspE+5dKPYaCp7WXR9wLVOIGC9RMU3rE4ox68QQlFAcSE35g47mOD eEaBcZorcBdMOSYrjbdk7kI4OyS52ab2sWslhVVc2Eva2oiUWVmh3oqbIQLhtHDk6lkfwhpOWLAr bFBr1uID9j53LJ7U0K5LpW5EnQoqZRRRjnUekuU2Dh2WOpWCVRzZJ6S7zrXSpnZQdO6THmjA8v10 1k3w6ULBss+pHuK2ziV9XyQb1gs5+PzJRjxV8dwnAceMph8JiyMFzCRxActmGWxByXM3fL21AYmM c1Y6WVxPwD4Ik/YRfyp94bHLvInaklJzlA3F0Aj/Zu5jL+6ds2YE/PRcbUoazUZg+7XTS+9yRPhE HJCAhZJ0DNSoedl7wnSmktkWhcraz6ePTbbJqejaNgFw+RbnBmiBLbHsZNkmCykCGJJZycap6J6x ogxuuOd0tmMY+u2yWUsy5Xez7VlhtdkkQKghGR8nXKVrpYyb967ZQB5LQK+gDTFKNHmyFsmhEQ6J 2LIKjHmTLBtFo7R+PEIZsidKuTqpAqTHEJ3wOOywI0bc4kkOhHJo6mZxfF2F7sRjJBAaB3Ea7pT2 amZIJopMISIsKW8ZSGiBEhDUtlLao7SWS7Co+grEUlRnYZMhJJxL22bNzITOjNX7Wbt4a+jI7F3E dkSUz+sEJn4ikQPKNBTtHL7IW80MXjVnmZSaBBm0wfgo/hMOBQBxU2fihlTWlq4daVAMIBCRJEmN g+iaVQ7mbGBbkefh55wGPPSGqeRwwTKpkTiHECaII+hNHTOCbwRIIgGFADILqTkmO35pWmZih1HO nQbZOr0miionDCplEImyT+iGaJs8WHBk10RRxsVDVCxEwUroZm7uMjGr4ns4LAcLhO7Al6UHw30n dMjiRYyk8EDKXodmkHuWBOdHpovYdsqQURaGn0KGq672EV6DA8dwyiap2kDEZ5LTtxIC6ydRS8ny 5T8s24VUpu3ZTNrygmeVlIua/sWZFF+OLL0F7zs6WQ1mQtWE2dSTp4smxFuCeScowtluLuV9JUrt 5IbXacmzmCEvLE7g5+aLdfMNapSaQqxMC/oXKx/nJSBhE1COiEFt9JZGeK2WxuKnthK/mwx+SY8h 5LomxSyrs7I6e+gjjYUK0RC4KjCx8FOYQYpwiacFVv3J5VUtuZmuTqpopoF0eReqUp00t5C/Q+6K KiOIB3HlrprqCKleEixWsbTcVHjjRg0nCaPrfHQva826eSVJjp56HGCcyBk+wGUKKLJ+TnQ1bnDo jva8pUFGxsydAuS8chgNDGBMXCnL7oaDZ5D+fworhJeeSW9PCpUXnhooJCubzNscdObNuNpNmOQm YLEqZtZL20qb3w99Y2MnOb9gr/MjcPxRX1J+9LrJy/MSryN0444Cz3ITR5+0bxlho44t61nGOjU1 S8Fr3cTKNsMMzSIHOqveOt1JqE1hYCnbtqIkci9DjzOyocRpeRPzK0Bx2BD2Rx4d6bbbrLg1epXb YUCNFfVjrLIVpNWAxqI0U9+3jQITMhca5QW4qz1I67yOR2xBCCMd7xciGpH4y5/OmCCbE3g4Z6JP rp7JkzkkkoY+NMrU33ynQb1jCHldEjtrhYFwbE8wGVKSjrbWMVQ6tSF5WqXIkkV5s2PBjonklqJF 0kf0c6gX1mekYoUy3eNWjsIKcYpeFz3cTbpc0yPcpwuCFmCS4xc7+y8BJvqkNkOJHaIkx8QEOXvK aNNhQXV74KoefGrz3M9fkG4EgdwTLiYbISSNjAXvkkpF6x3hLvkO96VNlQiubcJ9c0aUXNEIoimX YWsXuYp5TuPglCDxoljg2RNWlsrGEsSWd8ktGFdM0eSq54QawxSuIbTqUb++9vVjJJefCIIgkR+T IYM9C3I0KO8n8LdZnnZswmyD8FOjhGxYU0tkqdICXSRvRaF6kwsKb5G91VNG90dYz5NuzGjqSXPV BAwJC5vJNOUHhrqJZUydJMzEcbj1cyljrvBnZ/SQhCK8TwG/YsQRs+CvsnixOMFnOpVDJ2qM6Xap lvWi/JGwznI/uD+dAvkf+B9w/zUH2/ZzAmtBeAEVV7z2513w9/2S9WPjid5F6BPl0hYm6D9Xo7w7 jv6/A7O0OR07e62HNV8+crEO41WG+xgmlzNSdD7heTJq5rBQWk3XMknuDCoy3KouSGxTyR/roYKI XGu5D2PEJwsGeai6fEFG2KslD+wWPcGN2km75g1wxs7yTAXLjZNpbawPgfqpJwgn8firNhPNwfh0 9YkvlTe8MSYDHUUe/jxNd4fIprHN/7wRMFoGNOjnEc6dPEJ6ivap2Olj/aoFJdJ+TWHNXSOe5+OW VP2ZFrezaaQzDYyyW4RaZ88LiTWrApWN3VMClC9bziFjCQ3ksMkQqWC8oEDpG0lE3gPk+NtPG6HL ngxXtt7FGqmxR7hk3e3L2klPn5luDxfvA5XNmt369GDvcO8bNd1o5JcGKx2vDGhzV5NHDtHCMpuj xYVKVHNnUluJ08UfZPHwcuOea7xAxvA5B6pbaY/AfgSyIE0LVNzUnloJ+hkbTJx1bdB1l8HoIWGu cNFVP0jS0Cw4dIudEGK92H3HoxAyHC7hZ88YMChwLmgX+WsTk0bUu1DHK2ZRZM+npvHRTAxjiPp1 TfCLp44ZQkgrmyTuwxYtrhk7rhbfj/CMcJDOngU9Y0Zk9F3uCmddJDzaEzq9k48uVuvOJnEWGNtg K0MpEoQN4xYroFokU0Z2i4Mta9ywx+8Lh5x9UUpohwyXsbO4qd8CYb6OjoVmqRCncLlYby43CqOI ZOkFHd414rRtMhnd7DFtfaC5i2SzFoLpBf4By5jZY3qk3nWO4ibJncBLeTyfFWx0sVk4Y0e4d00G L8PHlucCQ4SPZhdPxjsYKSzzhTX3Fz1NpThuxuzcuTc+GMjFGtJPUV+lLFBxjFrQFLFUpR2D9E5E Nmslvon6AgaK9Hc2OE7j+8B1h7NUewN0XOEFCB1y5ZaJgi7Ck8XoRKHaRH4lapk1EP3e6RsFhSJU qQsb9AEIFnI86ocCHQ/oYsWViZEKJGg0yIK4n4WisZ05Zr5TkELc/glG1FP61Qx8UpakwWYejxg4 abBnuMFJmx7ZCVofiWGJ9uhTFYdS6XRYYhIfgwavUbsVyWcqJ/T+ZcoPtNenJXHV4EDD+rNF6pAo NxYQiTIkBjoJKdJd7IZzSMoPRsuzmwxgMW0OZFSe2BlP4WJI23fMWYFsWKjpOeWwSPl29TkS2BRx arDIuipkvKRVaBxx3Qxj6xDafLMMkW+/Kk5MfFzAyKVxO6RyNVvJ3ZY5tLfnNaGlNHTJOL6I05ki PwSgYrdiEULVcEqkwgEucVeJpP4/vQ+iH6wdfrOF293070OURV8OgUNg/LaDkP01KM7wNi7kOUfu 0IOLxIdKYOauw1qcHxVT1j2iCd6HcD6kTHar63pE4BNSMDqDpOFDWevuTvOdx7HmHMFdHSAuxt6e vv6Ae94U7eXseZMuMQ81HmA5QdodAdwAcKib1gKpyciReHQL0q7ER4XoOBdicLxJs6gCAbFzA2qa FO0FbhyiCbkPaHHls6fRHmmi9DUMHr1ppOqc5Dd1ggcvTAPehIcu+KQmtoAK3UiFbzB1gMyYFsoX Kg9faajEGxmju8czt9SLCpVYdMqvhheN5JXVqhpg6duFTaGkil0WGk0hiLFBRZN2mk0ybut6hiGk KmhFBYsFNu2GLlm2G3SbYadMnjdm+ue+jPKEjDBIgAd4IGha3aSuSsNCnUtoo0UgdO4MG5mh++Kn kczb0SivMeOKuXdvGsedM8jlor2U51g3XjZkPKCOqlVGTjmZ9Wbm28sE8KFUdvSFxxDPGz6Qlk35 7r4ygTmPPdtZ7SQn3e5znTg0369K0xCtBDEBGmbVygjEkTJT8hp80LuQbO0mF2c217ru+57Przkx Z9p4ou8O6kaqmEYNqSYZZRcLRhVQo9JdAWSznrQBqSJESJDjYawhXNpSaJlNmJKGrR1OBnIx31YH TpzjeVrAzM7sxOtbyMmCiKQjijXAWmdpq7MUSZwPiOV3DEgx2D2pxt8kOOzQqzwHbsCgQQJv0gZx 9HtogX6nk7ow+yQMA7dufQ4m04MguK70OEKh9vGZIHCe6MRwEze+n21Xpjcsxmio1+j3QuoYgF3h dXAgCXmHI33owNuAAGQJ2hauo2b6YqR2RcYG58ooiC/Rj4ge8FERHHQSYESYUoCTFw0LJ9eXQ8bN 95btRXe4cr7zA0Yo80/Rs4MmDk3b4aQQtp3exSFBTtHewYGht895+SOaq71Kat+W5Lur2tFuQq8s QEp2LtDOvJuvfAkwKKmEhcfm+tPWvq+oo+Kb4/f1+Y0QMBNGRpjGxBRLaAfnhwvZYsQDWZoMzI9h iGJgUWfouJBV4wLhEBD7oiL8P2ft/e/dw/NZpJhtr9EzKvEbbu+LvONmt7IdkhPBZON0bRpQMkJ5 35wYSOhpcrjTgFLQa+BxpuQMVFAulAglMbJYxRuWCxAMFFDDChSw4IRuGAVBFubYIGKi0Bzpv6ek rTams/Nj19UgZ5eK+V4eNBVPOgaw3HLxhiuT3FHAy6ukoBFgaEDeEWCogyBcTAxNgxnuL2Sm/ZDy DPefnn19BZX6A3EIihLRo2NqLngvQKpCa4BADSAJIkz6Opcu6bHaZgbjVSBimkualpVU2bNtnFxa +mdtLSipxlW2LDMCQsJpLdoSU4DJLsZA6/ViUMqVOhMmh4iYkEFdjBEHhqaVIRxLorkfXAuRnPIH ImJPYaS7k43YYgWyFNdHOjdUugXCFkBFZALJE6ej25UcFTGt3LDgCoJHJqAQbqaElB36W284nlFi 7FRsBHTSMIQoXU/0rQwZ6t09R1ncN0uk5QdoBAYVBEXkEVR6QL0R0TkzM2wyOqZtY0Uc/qKfENVc ST+GUwSpk7BPUeiBRfHDoqXLpBZJ7IWCZCSe0ZDAb09WIOFDECk1KQHWua3D/CbvGqtKu8KsRy1r KWskKDQwqogMI4fFSGCprjbN0XYw4QpiwzRCV3U3dSBKGy3Bu1bWW0iLjmtOZk5AkFug5DuBk4G8 bSuDIFWSE7AXmTTI8RHKxbrYjhgpwZgazDK2y1AXVDdBWGSUqmstoQdEQLWROBbb/jYdbkZP4O5L ua3e1T9X7D9vOP0Y8SNbhR4ofEpBRwkc5N4oYvnetPqOfa3btljO8b96NvOqNiyOGUX9c78qDBrK Ql6siCdVGyF5BjkaYY8ZTpji/Ww6XMDJzWd7a6sF9QNbrlf1CmBCugSVyBYRWChuZF0Q6tUmGerJ M0X41jYcSB2Todkxwb0FtIT5Udzn6FuuStRW5oc+muiyuuPJ32mvtQsnSYooPANVkbf2do9SQj4O OXwlk8Jrxk3ZETBEFKxIWRi8ijQecInaZhvGs0OZStNFoGUro716OD9JDVFOFuhl020y7hSBnUHR Na6uUmKnUygLpOhq1/CTTHuJL2PTzQ9Ebx5u4oz1ZBzhquG0JOtWBDRs3gFtAxz4cZq0zS9Yfj1z JkFxLrDJTuECjMgacQwhzNCZtjk4c8xl1UQNiKs98A5x7iA9FDwHJR7Uyke9tGK2gqgagwHupAU8 G1ZEsKjbwFcIQt2JJFF7nHRCEkFICDk9Yr0DSq4VjEtA/eo8I7mTKCuPHC620kjIkixvyR0SQgtc 6NjzJkOiiRUqkcJyFyrw2csg1UMqJXYsTkbEzMRzZRxKLRmEAJZwUO6HK5SDS7keMBcMCv2iV3xD HhDhK8DJmH80P2IqcfMbyqVJ5gpvyGDfElGZ/cCW8qlKOHscoVMlXoPOFWOtuKFzgsPldZOFZaW5 7Bva5MvwMoP8xIPcegXjdDoknD1I9OqW5CVI8E4b1eGGVrCtsK5r03JR5auxNghQNNzftEiZWdPb G30AVNF0hUBoVZaEJb4AN178AgD6PJMSL8L2pWy6XZvMjP2xgCnETCII9UCcfUqczolQKrdPYO4G tS4lLLzSaRHkBtpAyTsXcgcLvQ7RIhJkQbTqDmyKpEYCwp7mPvfGx5XCJtEjFqOc8YNI4iasm00P JlHuFfIvIVU76waMpogY7NUQKqKJqNxaQntChY7qKW6qmS+zpMFciL2CUDWFHkX8SZwjvg4mmWCR LI0mHWIchB9ezhrEJJsxidEgcNlS5RFE3SlMRCI+6Km0q5Lnfq+Trt9H2/NA37zOFwct3lceXRvT u6h7bYSScXDiVqamaKcOkNQSYwILNdawl3ITnaSzesZj0TDzUP2lwRoBhjx6Jd+yZfLTfQvNeEBD 6I8msWDwUKDM1MrweqlNK4s8rs8iqEbr59JSQr1CgE7F00Gzo1kN3/9b8BgDvefJmhHwSTR3ZzED f8TSDhUFB4HEERUjHECDYUjydzub1AzyXJF56ylRCNHpSmeIOpyAvDSQHVLi9qgOIoQrZxo8tydO 8QLEzGW2MbLMl35I3KWWSTIIxmwdJhKNkLEItPhReXmr33Pg3j2iEvswN/CAza3jOWk2mzoXM5C8 wHntYuY3g8TjgWSxmJwjHcTmksVbcVkcr0B1Od+MnBOlSwKazkMJKlTZKHKIBAw9ddalYG3HYkKh UlEOEBFBAxg4QVkGRvEbwePHQHStOKbjJXSCM61sKVLEHg0SWTtnyvBQsbez0WuqsSEAGTODyMkc 9alEtmJCOC6CBNJloEal1NGjjE0hIKmdi3thHC5Mg+NLZW9w7XXV1M3sQOUG6uDzL0gglAv1qhQS IHRc2UUMLskJ1j2rJNjx0aHQ94IinJ3LpicbEHwMxOiwpy4zEeJ2Y7SR3sjV+0TRfWRTI2JTFJRm kSJJU6ORtUl2WUtw0W0FSVFfg2amWSeiwphKQLGVqaxiDVy5BHv2/FH7F8wQB7XZ5YkR7kNDyfgl Rt9vpl+OpmWRGLUIBKwJjAaiNNUoMg5xhBaqkXKNoCqG6LUKgDhAHCLjBZHCKNuLnA0gaeMYi6Ih INYWl39bnB6W4cE956PS928ueRk7ZPIbRGtyAbJJugKixRKA2anome6qVV+DJ6royXYzpF0clYwi gyaOPRFwD4l+niMwQ6oiFnbTdiKYsOR12NdnRadSHeCfKwTuXSOslK84a5u10UkdlR6Aa2d3hdOx 5iaNFIHdeDp9B3cO+32c4IxRZjZkpNB5PEnT6xuFg/oF3+k5MFi2RzKP0sR73TJuhjBGh03RDJRZ NawYS9UqTUYJVpoukaGjVjEh2kT3+PIeX8Mi3Vg4pQsiAGiqE2sDhitouyCDxRwgSLlAVHK9C4zA ikilojiQHCABGBLvP2SuoT2WwErLkyaxnC9Erx6yEjnjXLO9wfF6blIGbusat6sXxhMHt6CtFx6M 4Dv3EICIV1fxVY8UOdQ8njAU5hkTJdOlxPjqdIqES6GkC77zTo88ImAJGCcemeS6ts/kInfZ4NIv jJ0YTvWqhwdIyn47zkqVsLdMECIMLXuLycJEfLB5FUGI3uloj5hQ7mabJWC3FHFRUrq2C+eyb+0Z MpB3ZzX7hdKtfAspft0F2nk5o/scLG/OcMypBlBTxLtmHKcY4Ue/yiB9IGvfPX5i/aFz5oe7eY34 0omIl9tAturKSQUJPVA744hmoh7t0nDtOOKSsACcom2yg1DTrHGwU+Au+RaygwpQJJEkFxpWNJSC W3wmqLse7ZcnhyR7LeSZk7U4FwtjyoV2WZLehoSG/RJm39HVHPn11BhhLpM4Li+mJcrqNtROeWUc phBMJB6uMEnGjhh1EM3O+6GsDsJ2dukKkNTsOVVNohh8QmTuilcTgTK4ly6PLSWWplzfJ9lTRYkd E0rouQzRLCm2UzSpVJnSSiZGM34SHsKl0iS5jWVKS7qYLR7oT6HDCN4xRo2f4EcSVDJIpqM/Zgik 5ESff2KeFal4yeL3tGqFbOYKNTu6RNmQqPMmRlKGydHEZN7MvYqGDP9HRsFh7nwqWThijr+EGeQH EPjPkRkhfj15UuU5cymhgt9tuqAAp6oTD257tbHlNmrA5TbD2MnDIIk5NAKlIJtJtF2FWWaVXa5f bU0sBQRgSAVQkgRJ1OiNgfsdxNmKuCqaJxtVcpMyS4ZEkNU0HUi2MTdoYed0P3Igj0QynFkhh++X NQTGXt4rYsy07bahgRHB2uYjJ1Ohy6KNNETFyfaTEtsqGZSVb13xJHM3DBsMCsXGU452ScivFLkp 6TBe7RShYzZ8SBus9dySw+6WFcREOJV/38agzRk4d7BJc2R89B1JLtssY5xGPsn80KbPbxAyOZJF DbNOTSUlxes65Ys5dwSye5/JP7fnRARKfa0yovjQxiB0KU4V7G7JypImPgcudFSTJWNvjyTSYKGi fmWxUn5mDc4orjZosZybMXmYhMgRxxzxxkhcqcujXLEDfE2ZIIouyDjY6+iOyFnYKPSgKUmxImDL jZ7ChiTRiIJLmxzJm9z8e2eVHF/GTGDBk5kHDRAtlupYmz5I8dNJnxwp/8QCG6c+saTGzA4p9rxp TXXIUrCh+8Zzk32Es7cDul3Yqkw5wvvo2E2i5Lpgk6Gkt1mycsMKkwW39ogpmNjG7dk1RfEsH4Uz rutJjvsZD4i8wyZyfeJaCf9a07PsDEFHn4a9B9QyZHjiuB48rUNzL0IEI728uVNziV0OT8ELjzRb b/wLJexrzEGySn+/YaUyQYKMY1azlGtaGO/iS0C43mybyNIxcSg1fe0z917Lnd+Yz2k6OSGrvhyn 0XLt+SZxwW8pRJi/jxpTmB5BSkBN7NDoacXMjTJlUwPIJggb3YgbzBTcYux3QzjJ13wWFTZBnP1O OvBnk+sPhIoyN/akuZwC7ODb6KfbDlGVOFRIntaCxCb3r2M6WNTr4+hV0QeLRyJ5u9URkHwcIPzP tRitxPyEEBEPogfwqH13U6TZ2OYcbwlxx3zhzDcOwfPMuyNEaZVixM05J1dZKEJkhbEklCF6UIWh M1MUpWRKrwek3eBzW/eJdNFh+rXT97jDknUfF26jyO5K3RtJ0GrCg8gXmmNHVsUGFo1QYS1+fyi3 l5rKRpOnS7HJxrFQyP01/A8a1lHUJE4tAwJndPUAPNzyaXdqqW265sYjkg451IiUuMo9HESpOB1h IYolMC4IlwpQ6L86XN+TcqzY6nvjBlqcF6tn3xA2JvZkpe6WDJggjTFyUZ2cjR0Z04dC50bytHhR IYFS/HEMnBkfExwwWM61dPBRc/nVPGFH+Ppbl2Y1BC5Zw2XO+VduS5UHOuYhvnEwMaJEzEUeanVX xCtqtFDUNoMKZsIiGFihkgcrA0bIVUwnBL1DaoE9rR00hhjRyzzJlONOycNmIy1My8ODCpJXMuXL lhxkXgKSnB3sdC8HjGtpCaQIWSkQecJJctvR0n7BEE5S10UxsmVj0lyaaHmYlRTViRc0Kl4l+s9O ARM9VGLBVJKebWNZGogmTxMYi6+NHH58fF08PKbTtFl4lDc4LoMvwn4xEeOFxVGXh0+Ons2KNRFt eDlK27cTtfQeYesTYo8vOiCnsh7+OlUTFTreg2p2ACpoDbQiibixmkLi2wH5b+UfiHTYMT1aea/e h4O9OR5ldTu+fNt8Q6kel1AZAFdaHRqQ79AHCeHNtV4dncu5NwcZ1HLz9GpeteN2DsXQZ5rgCHa+ F/eHQ6XS7Rc18jiQ0qm8C48Inq9qdU1dHnykrA7phhxh52ha1JIfnxACw5CYi2hpw3K0jGqINhMj Vhq/2GcLVip7UdzLf0iyGQyETyFsXUqU/6JQ/oWELm0Ei4IMzLmUjCMoITKZCCaQYnRcdNtqV0mt Xl26aw8eDnyPSBwMAPS5E0j4D2apJysLk1gS3cvfV1Cnu2Etn6eq+gds97Z4Sb3tPLnqTyz1iu0S X3Xdzvd3tEzerN9mF257zy+alnDItkHtk5OG/H10s8wsM1U3asrnuEDKkDHMURCAg0XKjVbvsxTH ls9QwnVJG9UavVp4xpsghE+D46URyVzOZTkPZxS4GlGDYy5jT4645zQyJzdZYUtJtKEDUskpIBSW SS82F3Zg3e3EZd3e7MYJveG9XHbgMMxBIxKBwNizeTdFAiQYmnkidTuuxBDDNEgkdTjQwO4WdeAw FqHSaFpr0ypr0WnxXhQ5mY3hJGoCjNRXr211gx6111Y3uPUJFOpiYe601OTlmtF2GgNY1xOnaD4K /RW+AzbsaFqzOuvaCeqIEIEAEwBrV4FHBTcjkO3REDvUikFZAVIQPQTqgZDCEkR1Jz4PAQXzGgh4 pwYeOACoC2JeTCMDgbjO6vWM7JNClOj1bVi6CwX4WifarJIFRW2OhiSijETShdLC497mQM29jnnD cR6Zcec+/i39R/mXwfp7voij9v2/DvO3KDOSAIEVQEPif5c8NZd3alP4kOCKNwwOtAPE9WRfRwAm CCWOeeQNBqQ06ycmj4E+34fP9dbhmY3slxFfaZJx2BGAACIGnYiNwAu0txjQmkdgNhvZVuQiJN6I UIM0WpMmYw1Q08TxZ5UDqB37QnYKosWIKqikYrEUYsFVGSLG2qwj+xsiqosig0UMTQc/t3Nns/YB TBX7HL5urO9aExJEodoEMYQuUi2W5PSz50+lkNiSVkinDAgKcMTVNprVJw8TdBdb68iHPjx90G2C KAMCwCYbLCwhlj9ZABj4H7Mhk3XCklH1GZhauw/lQzY3CpoVl8ihXR4M6kl+1CPx3mgsGtxhMVkG GJGgpuFRpdWVJBw4Xsa8qoF8IKiHdkYDs2WCg7BQ2SEo9KPROixI7oxZ5BJYpEclkQJPBDlam1U/ gcHCh0bMuUfgS6Ig/bw4Su8yaHJDkw5YnaUjWXvMnRBCybmdF73AnYQQwojjd62gkeKaOQCLB1Lk /diKBPzthEBERESD+JXbFqTmKKULuWKQOJNqmy+0wlDzHnDRUKjpkIcJlGBRzfAU+TVsJgeKOUMZ sEwfYD4jGwPITo4rbOETgdHHw1VpJKpKiCWgQ4ylCXsWcsmmTzyysJDEkNRD32mODAWuZLjHdFSy SRsqoJCA2FYBGUpquR3oPyM7YskrGPCo2X2ECNjE2WAoGGLYgDGSAVUW8HOTnXt7KKIPYr42Om1w gOkkFJ9OBABrygiOEDVPM4m+oPipCJlokrmKS6fWTyLNa3akykjhsfTMxTLslAplKuKjGRwpMyYN M+z40V2Wm9T1tYa3bb36PTo9RhV8/HsTq6dxf8YCgERzZqwwyP0UbB8WF6Nq4qgUBTohxuCdMGLY 6neH7gbVVXaCHBJ3dOnpglo4dddCbLnT86SiVSF0Jo4SKAoXJ1TSsDM1bbJgoNyRS5apQjv3GafI YbthLAmwhAXZgq0/kYKRxHSbh1jJkYdNKMSfiibFyhTRsMn4lGWrpnw3uaIc8fjxHIseHG46ScS3 SJ22PSVxIyeyvM4G48+9ZMJmIaybpH7FzfPpC13v4s2Tq6T7xANCECE0LtkAsAZNosuXAZPYgc45 kFIsCbQ2M2MBuamanfOvvgTJZDh9wXjsokUTXt3IKs6Jbs33HmrojEHk1kg7rdkjFijf9+MQJrOd AQCh/YyjaiZNO7hJvvNcO6TFkEVURgyWLW5U35ox+qIptPO4UC5L0Laptsd0zgg8eYFOht1Yto4I tfyYHpYLeMW36TeESF4xYt1S+gxm0jps2gaWEEXWJM2wMMMNouHKPGDaaREEQShTmU+H8OVm6XPj MED5+oHM+/fEJgzx9Uc526XOBsx4O+SSM6OxWb4L3Lc7LauwdFV0parYLGVJUD2SFFPVMHNScX4R V03d9vr8N64w3m92Ym+LAh7U2JghwhiCyDlJw7QgGxgvNppOHOh7IVOJpgIRUMBawHaguXlzVCag qRh3mWPrXO5htsMAaWp6kYEP1tE2zYoMs79ji6nX0aNBIGel1kUtNbFWUTmLcyW0HNhJGB7RqDWA mghTqRlNo407SZzVRdeIFCpRjOVMYsbL0CFspopg2RJ1oBxBlR8oIn1RIUtOpgnMwiKjCKV2/OEo bcSJ8wJdHT9Vn1VLp/Nb16T1ja2LGD1jQ8ZuNvJR44NvDY4PvWzCmPH+M6e6e3kMuHK24XUg8QdL dMqqqOcPY0lLlyhmcMc+YHlivqiHkBicBzIJVWI7tYT3PCbcZDByOMmYmsgpzpoByiVWhtFXDCXm 1/emTDsWSSkYvjolRSFJdKErmyD+TwxVAqiIg6eS54p4aPgg59dAImLZX244eOn42BLXOnJoUeaO VwgQmWHG+kwYToIFAp02bzdBDhHhLuenH+D37aQHFQJNpudxlqr9N0wqxn4LGjP8j+6rGjxfKfWO w/RpjSZI1PBZmMQBjcSVCQ6UJukdF02eE0YrIsiXMEpbJ/E70/Gkd7JSlcH0fLaS36DGj3B8205F he2OcwxyoyNgzZmUPkt2jYx+ckiMmDyUGJi2J0I14KO0ijje7OLJW9rngEGFAFJ7TPL3lZ65TOLL RtYQu8DPaa3hJreZrRTae7UprjeGJMYSZqmz3Vb4LPmOpNwsrBAYUAZEImkSKbMLklVCSfdxMPU5 vOgqNmmqWCACQ1Q76LLymKF3jxrORD9EF44gKW8DpmU3V4iBZSJikQcr/HTIakgTz0NC4yUMktu5 dTQKod91BwfUCS6uva2+xpVIonkMO0WBTJDQpAzHSpAxabuAqY7B8eiUCheWDPVEvnxYQmBopbKS R10vwhDPSRYsgcE0LShOhuGE1RNoJ0jMiFzZfJ1gTq9dJLlhXRYCqqRs2uloMQ8YKJ5OjRsW891w pWKG5/Sg3yb1fVz+jBREkcqbJh0WH+TaeDBIUc3udbeBT7wApDSTaPcCjzPMpCzDZAOCJsNmqhdU EyhILeIkjpjfHRzDniu4WIgwgRskwxV7dFk24HnWnU4yXu9guiPRG6weVtO8F7FRFUoKQiKyRj2D xThK2t0E8YIqSNH2s/e/iMjHkcJTZcdEK5ozhHPczr3irKnUpSqUgypF/yEsacZpwgdaTt24jyxU L5rEZxm4vHQkjw7Md5ayQmOIBIHTLptHVPMcdm1umbVJ30nNkSjuDizNSdtIpYKlVgWpEwRFGbiX iftPVArLRhFrMJjtmOcCsSFDkkUU31F8dmRv07TT6h8sdcnOgbZUV6QaDmIS9UyR4oe4cfWhcpFh Kw6aM4usk1bMYGrZEUbfta+viAJeM3QeFJIyjSWkqIaBS0OsjyvXo89aOosZmMNtmDxy9GCkpbkG rYL3SfrNDGzrv6LZRx8KpYMKhfRPsGhdu0zAxmgz7JsISSwUEolbUKg4TpCg85YlRFYpEhgLqADE DGkRNOZ+pJriWjA8sxvLWk4ZIONbvcsHbOUydcMVtM3UNYLnQYHXug7OKCGebLFJF7nRowVqm3jh /BHGTDn1OsFbzDHeUr0Ximsl3IJI50U6Pz3waLQoZTkmyPpKbeiDuPWr8lTblbb7mJHBwTtq/0iJ JCQT8oSbAhPawIfIh80NK+Vvl55laIciVk6QSm1rarWCsqQcJViYYb+XxU05OiC6QIo9ibImNejJ Y7bhCXq3o9uTydjOgWTaaDiF75NZtJzXzEgM7IyR/alohbhkUilni2ymU9XJVEoxl6WyXeVCAmSc p/QBEqg2FOCqXTLTUvYYjMNdRNkjB7VaaY5c3flNzKxXeGSA7squb4KzqZDUeFR8NXjmZOoRNlhj CcOJfQurZgno5KPViGiRQ5h5aV1LmxiJd9iJMOkwlXdFSsB8XlvwFuzcJ2eXoOhTSYLmerOaMTRE obFo04R3X0nCYsN0L10CWiE4KRAKIopISB6oPchq/E2+59+ejiqOrpMYxPYxvouWLu8M3vetb6sl eGEbc35mTPE+nZMAO5lQCxISEhWyd83QR4maMFy24W2OxqFg6MTBERCtH0kOqXJDnMzrHTr5pmta jBB9F7rxhj38C/yAx1MlbFSjAqUbSJC3EhPC8M+H8/TZzPbaTXpLC2OhcGBkQIMCpSmgpgLqZQnI rtPyqEzIZKLZGujpSXV5JoLhAkQqmb1uMDJcsKWdOyORxMObKnJl785kW5gMRoXhvmW2Eq3RxEXk YDETgxcJuSw4I8Y3gM7oq3yS/XOJ8KYc3xc6ZJaycX1XS74MPxINGDpcwro1zxwuzubS+24Uaiza zc9RssqoAF1EzUFVYraxoODYbDOAtHhyOY3HTrlix0W8jKb6QVV7jHTm7HZ78isi96VI+3yfbdM+ o7xKPHyd4SSMsO9Hikxcqk3EYwduKcC3viw3hyD4UhGsa4OLDbgfGLW90Yajxc0pBki9fGThk5jo UHrnhiLhvJY9KbxWfFJKdH6SQW1uduYQlfvGbotvi5rqm6Hp/K+DZ7NgIoS7HExb1QkbyIiGcXTA wquMmTx746kbJKSOZm3DxHaLBrNVKSN0FZYJc5nX3j2TfeTc3q2WGfrEltJNCmSg0kpw3yz2rCdg 4QF9d6SXF8/yYzkwlGGg3qR7nxuwYMd3XsHxoyZbs9z4sQxFIDWxIvkpFcwTWzd4VJ2BdxWU3wR9 0ayYPiZgtISpebxr7FkZxApyaaFqgpsJKppAgjB8fjxkgvL+7bJgx4ze+Cs7Nd7M27e/mMmgfnrn KLTe57dytJw+8FsLg63UYe4vuaIuLOpc2ZsnPE5Mmh+GD4rKLo6tPZOkpskzgVt8eGk1dMn3GTgp ARxzQ8G+N7pkGOSd3vBapjaLUqGi5WyXGuxRZkSOJ4aAWKYIDyJJjcCw8sn2ro5I4rLgwk3qyPHk LKq5gEygSBrocT3pQ62khnbSZWoXGwcmR2RJpUmwx/NKPWeHx1eoSQbGoL9sPI207fRVjc/tRvac M3JRIHHnecjuJuYxMndSqKXjIUcLg0fTcms/GmPupjdxificD5/FFz20+kaBTxZLqKxy314LkGx5 8Sc7hjJ0sSar6453iHvfaNxc+M34SGEYLaKT6OfJBZNHPtQlGiqJntVfoC+VFLzxvI3+SSRzwcQv VDJRPz6iPEzwqEDwgxgxZFPGBxKBEgXsWbytMiFzA8lFr5NzyNDoPTn7tYOgvy7X70xK4NW2/maq uWqKiiq21UbajS1iqKrbbaq2lt/NliIosUUWH1NYu27tVjlKqYNeDkOj4HUp6YeocHu5nu0YcBRR wx07sfws6cV6mRhdHEzt4PHMlh2FBxio7ZjzpUxEcqlzWTJN5EHD6nkbZzjW7EUHtXz7WdsWTpYw csnx0+Nxgv4k33Hn+FHNBQUoPLNWKbDaOd7iIIAa5iJhxfhFTVSrOQFkN8P2y3RXerSFfu5waGsU o4ZSrRH7Y+9+OmSzHj9jNvPbPo6UnDKWwdLZMFnDJNy/+BPw4tybaHoPSaSsiqW6KVuiwewN04Uf u65vX7ibrMZ6THv1x6+yVkwSv3vSTcvN1JXNw9cdN86dRtplOeVJU+Nvocb6fP5LE+3ffVTl9Xgx LNpqDoduBn7UIPo94j8f2AaIaoBz4g7gOl5n0ekMF1BgooRRQPVtxe578BDkQ8w09DxvUAZo+wHc HTl8ARi6gOVXYKOleVHxGmyI5+PID62vY6AMkPA5hEFNIc/kO8XjADp0CHMeWSXBDAORsIlg3713 vwQ8h5OUDkH1+nIbfLDvLemDjAeDlyMuIVBThp9QKjZx1IzJTFB5URHbui6GsjaqhPdtUJ4oUr0E fsBMDDEaDDpCmgETCE0ZTMpMpQFmIaTWqaakxCpphmIcoQyvSw0oQEQL0XnwIUGBHEMO7cuJHxXx I9QbwpCcPCR1SGadrAWh27fxtVWcj3KZ71jLq+09cVfiNlNVsjlmEGRl9wXE6Rd3KuUa045Fa7vv d3LH0i28RSvXgnhXljn3CXd92QK3LjCyNoS3ECiL32dhYmdu4kewKpCkYU6qee0Gctlzj0T4x7hX KQelFe2PNAWiFZTBgAghkcpghDN0MGAEMCqzmpZerXEDbjBkDD4qdyQLmXtkRoIhxVNkA8VSCwi+ mGRNjLFbHHkwyPNB8WsPoRdJK3utD3gWxabIYFMynHvR70xZi9WQCDMgMyhIqAo2jVMDRCmBl+WZ B6KjzUaSI8oU+jGK7dq9wnSMm3YsR5CYCNnKFuquc22wT0E9q6GCJid8yRmE2odEegxfXQMKE4Zn izpOdU3DnnIEIoTnuUmxNsPD1N+5jKGndFdXnpEzQyUQRykhgxEYoQgGK8W1znwqAF73vKXt70RE C3FaJiq970KUtghOfC7FoKDam8iI6Yxx2TGjJnSwRkFPNqvIXUXqj0+cUCa0JzFCU+F3a9ouCYDW RxA0x5qPWuMVBi3H9jh3vcmj8KeLkRg2pGghNO8qJcS5+jOq8v9JbkK6bbaJsIgFiqSLU3y5IBdT WuAFYTFu83MBzGJPlkUU9o7VDXiamQ4QU52E8RCgyIYGNyyFwKQ1IkcBCwiRawuERtdS1BcLFYYA jg8eQN4DcD3Ag2iHKTpqHwA16EVRRVi9oJIPx6oTny2dmtGE3vNBjNZmVgYyGN9tfbJIHwD0kUV1 4BVWsgAYqkFWJrIrXJASPV/uPuW3AbBsNLaMoEtoERBckW1LRvuOWbKrWEhnLlIZbFin5rMX3ud8 kMJjD9gkkVDA/ecbLamYEEREmBYD26CmadHRNz4mJ+Q+m+mY2EndJ2EBunC6phJsOUAhako0e+0Y T+EcXOBbHekIhkB8CrhEoaAYrDBsoOcSZtssAgwkdhoRyxEEovaDg4VLjmhcVNYJpYdQLjCApBI0 GYJWN1M/FC1SWQulCnWyAP0Ng6IeWzXJSiYH4Ic4X8EzVyhKGVubGI6xjrJl4DcSEhXDwifMJtjB nEBPnIYeZ8N5jgocID1guTxvgzHeqG0hQaJprJdFvcHWBBdJi3SC5VTMJnhB3NLkKzLhjx2x4J6V xIQBcWTJCEiFqdxmpEwRB4gNSO/jagzwlue0wCTSQzg7075N6ezr9iYbFotVj+N+eBibfvsVP698 dLNRw6RyTo6dJMlj+OXrVyzLls61Lcbo+Grr71pduZYyc6BBmvYOUcBcTilitGto78LEhq+3MLaz KWxhIIEmjznFTy6bLggKmkZAyTl1c3WAgyZKAKuOMoNz0VhaxU4NzFtaMMWiEjqgmWU1uhBqGRye JaGvB1aR33kdbhsIGLnY4DJBhI6Q2bWhRMkUdYRhasg6R26wiCSJ7iVTs2MSRxK0JaKHY+MxVLGL YeRKE5+MWIffC1EDkd7VtPNksOXFg+vjDGP46d95ywJD2e9GPTv01wauKwqWEggLHGR04lCGwbSX LnLXkuksd1UCSDF1wYNkboNaspIAmISM9u67GTQ11gV0klS+TwPosXLDRpoulLdFyMDYUEcTnEda 9IY+afXIQkkYPEbmoOxVQZJ1WeTpUqaBMQW8aNm+iJkXWiWhBCaoBMvfeJSKdFCUeF8PdOpcmjTs izaaCaEG4kHVOzyw5yaVbb7bNtNbVaNzJKlEm2KQipOEqm0LlTn3koOEPkIgbXSonp+p8/z+34HS 8l7VTBs8zCkOOHenZSXilTtJTJNYbzuX8GHkbq4gQqRgSLBekvQ87Zxk0DJmTg1g4LK/BnSycZ3M 8I/UFx8BsSAWQJ4ZPpqHq32NF9xbxUttm0lMQvuS40VR8UDT6u+K3Nen1niyanrkhIGyI2PAgM6T Y2aCQlOPB3WeCONouy1qmLGYapsK8wRRkp7z2KKYtVPl8o8bKK830GVsyU18PCF4uIIlCBBdE4dO Wk2nv5kNFsOgCwawFclbmxYkE5ozCMTZlkLA45x+PGclzFyddXRMc/UlF+zOy4Ni4YafBAhAkdH2 qALmdRkmKqBggUiiFo4WwOygg2CwNVyhQKrMgx3kYY2SS9XP2j3byRM9nbtHCCmMnh0jAmzbFukF hfDfGNHZMjd7d3nSZJXBro3ON+sF57fTP0gTYiTTgv4HnMpYkUCaOE4jC6PhTJUFvnYaYpON32fI JA5khSpUAJC5yT7QExCMFkmMBeDVcKYSD24hbk6+iFNpSJmRt7imLSYKpv6DoncnbucNqgKau6M7 SjGqSSaopl4pst4eM81dsqTwmTFlAqKqAVqpl8vROXS5qbs5qbtwspBVP1ZhFg2pQePxXolP2nHC xWzx9ZRxVp473Gk0CsdymFNC0a9VzwSJoc3KxlODeaYFeaSfDBsyKVGzmsed5S858FRxFiYp9AFF xinrIIoGY3BXiUA4CI3AQPaLBDuYgikiiKS8MZa8L7dOq+MURESB2ZIlNi0fRmPCQiTNOM7ISNMD ECKPKUyvU1uTPW5I1ni7VF4OFtyeSvVZlyocO7MZKnOShRNWLpBkosY4MG5BOOpXZKRuan+Pz+BG xOD9DMLP0WYdfalgMoEM/faCcBp1AmF6MK6jrTrSKB7vqkNzN8wnAQmAcqvtFc8lNCEkvMZPW6md zrZFUFTMG25eDg6tDteU9KVmUIQ8aSjrpQLv5aboD44aDhh2R2RELihlOJiEuD495DkFLFrhVvZe 2drltQslVvNbJWz2uutEXLC3sdkJnhXUYwQlQKa79U0YSxkbBqxo2Vcj6muiIX/E9/F9hBK/KKQZ oX0aKHKRbHCYOOEEcjqg5HWHC8S97G3JwqUEfC0eGahYSsnYFN3B7koQIMnW7xULp0a+3kAThRsY ZLOhBcZ4GT7CXkt+u/23NnxlcZ3MQHCzncrcHOOjbHvPwQj8w9rcqF6H7EkVVT3tL8GkN3RgVyZZ 7MtSZ7jWuPmbgBOAOBp0OJiYIuZwxoVODQooFUWjZCOAQKndxlKFnTDofgVHDyxEkZE7jA6hY5Kj kJ1OBRo/uU4L1JDgaThvgB4wZhMyqq6yaJYvPRs3A5ab654XfbKcMj9D8Ek2kERBtjXqpCIYLE0W DXIzJZ5aj5BwmYRbm2KiPdnY5IxHpRx7oJ7J9o5xI6Qsb2Rv12aSJcps3nJqqxrKgpj+MKQfo4Qp GqbBKf06ZTDWM8cT3u2cbJywtG5l4mXoJB5rk8ofEEZiLJFFS6czKRoyqLjSHZCH2kOqIq8tmJDp 1qk3aWb5zvp0XghB6AoSTNnsPbMODwApItTZixErwos6cHgXJhVyQ4ZCAkHpVJvHJNuBZ+aFgIuj 6iubM9TS50nEuCuDJomF3PJhAE0kTZAiHVCM5I4dU2MSL8J8VTZI6pJHGDrhn7B3cOqHRtLGXGFy pwJpMYnNfOPfBdyKwGsqbRBIR5HIfUSNCRk8NKh5JVLoyOFNVGWpChlxPyIE+W6WpIwYLkE5FMM1 KvJsbs4tyVPbsj1dj49cyhSHHiJRKJSHKTiTDaZOUKcB5gghpE5T25Kz+RJCp6F2CJGEgYe+TQ+f ybdHsYCUgM7clv5rT2/ZNfxKOBfyt5EjXBAuC9RSVai3I9EzYwGANtJCuYNiRByT3krlIXRowD4U +tBpSbF6HU5qs4FOVzKcCyUkeFKOGzBtGFAQfXf3St3B5xNlDvO7j58JFzaPrGawSSbSjOvLEloW I3j8qZSvGP4yc/gyQm9k2snCYphrHBqMhbsNqbJuYSHkmMF0nMlqZohXA+mo0MmkXHVydy37Qhdf Dl7T4afWm0wrXbDLcBBTMsJWkq9YF4QguIIQosFi4oQbxolMPED8EJi3g8tHmKjbU4J1c0awYSkG AyaccIo8V6CBO485xwuh1yJgrVIbPnHdjxrihnY3V9m7VDoahIgOV15FQcc0GDp0EGTtNmn3epuR ldDVT6zLQqF+07h0St11U1IjBtJlxekh5XiUY+vk6pH6iAY5YZKutjRowfwi8JFaC6SJyE5KXCU2 JY/ptetgwbThwKJ1eCvigonApSag8W0F23njpmHIePOhoP8YmUP8wkmTfbNUylakdMjPoqZR51np OLZOikiMiJWraUm+YqYWDzDn8M93lMHy+g8b8Ot9/FwdpL0l/dLOd1j3uG0e7n0nxBPdDwCsxqt4 6xw18Pr1YyGlLlxqpiopKsq0opoUVMmwjKZPB3t1EslCi/EZ8NJAyUUZL9wl9hWyXLRpCxgOBpOE DFMxzeWWkPDBuCliZPXCGcsXuOSBM8esn9wB5GibeKPlPBYtGSfHBcWY+SrwkMbOl92LhhM1bYpu DB7hlEwXGK2Tw2a25MdQIwmbNCUuNJUGBjBsLGKsQ3NilgsQOEdmYZsV4Y1PeSopmPEemig5oECF QzuMC102wKeGJykWPFCiluOWgZM8Loq55fLnCjWTMaDPLkFQuskdJOQXFlcqHE4TcaFyNomcBGQp VUsSUkG37ZgoIiEvsTKXfXbGOukfhOJToWUCMYvJOokt0nAIagDdD4ZHSF0YHzvI6WylMUnxtNoO p/mGOCk2dhzUOuNGDFi598knDOCk59o4c2Dj72UmhQUvYH/gyMkksQZunSJ/XXBHcGSQ6DE1eQpa Lc9jKVcU7Qs2Uiw0bKzjuQXckBJar9XQ4204xAYkNmLWBrePb2lyo0LdNAt0qC4maRiWtCkYJoUq lzBi5+BP2JmRKa4yPHsUI2q/d6nVpELfbKLFmprwlFZhQhjMqInnOlk6208nY6vBLnCDEp6z0fm6 ymyKpkcRkXvferIxLZpjS69dNFGAW6XMIv2UuksGsd06lg+8ZKZNVwpGxUyFxjB5AhcNE7TJbTaZ iEzGmeYOpB06uRnJvo8Km53YtSaX+EN39fd5TJrVUgaMmrysZTBWsCSKrKSFer6y+wQPqHL9TqaO dSppqFEjzljgxYkbHwIcMzkU/YrybzTx7p30ijqN3Q7UvUzWmYMUmKS/gv5XwdlAsPSZl9w7nJC2 6LUUEiYki7Wzp2hmDLUiDOXUoPpRHUr2teqIYR8IGSItxuiRaE8DKO6pJ0J2ypVIJgqVTUZmTLnJ +1AvucrooRLm9aMk0ppHWxt92Y1LLEyayru0qjkvsE/cJ8H6J1map2d3dAIN1c6nIZzsv5XsehE4 Fu5j2dgnS0RTwRlQ8D08EYpEsVIF7pZyKO3s4oQKVJE5JNxBN22bcnJEzOtmqHHboiz90rkJiWG4 SSWZIOZ2sJB3B5oiYRLIym98eFFXRFKcS0hEiTIE2MxsfJguqeGJRTmOmh5o1g0dG2UZLZgox290 ro++AQmApy+DRoqX22ynvk4H5oJPoQDqOF4uU0vL0dKGtObU+/dsPaGgDePWG4Ufdzl33ABdfcpD a6lTsEXv6APJ2gdetE5g8EOHe8avkAUiIbH38xQ2FALgFPEiGkO8ba3BOoDI0BzoYAOKIbhVPVgo odoho2B6bRzU0nmGYieI6UcR69GAEPLs3o84dzqDsBANppa2cnmM6OfnyrrxMrFjPMwxggaKUCJ2 RSTBH6XqLHcs0ABR0zNgq+p9eZDZZTxkojPAEhNsEhPOmqEksBFsK47txqO95iatVbma0bw3rWGx oMwJFaZn+iKpKhA2lZ4zOLWvtTM9i5eo6JpEypLm1V23aXGz7tPlgyvH3qPpr3bjzBb3hnbQnypv XQpb3u8nm6LXMI6fSs2ROxeHswh75jB3c5Jnq9d6sd4umsmpVKc9s28Xu8xDGx7zj0G2qnWRWXrN VqRrcejLmQyS5KMywGCCYQtSLMz49zlV7n114zfWd85zODmCIieEJQRiQkpvDACTAwwmlZ2rtg6v Tt0ytvNu7ym2BphFg7OOjGIKXlzRGAI3amyFfPPJA1jYVwo9cd5bdXHGHrqQGIMDHp01Ue2N7FN5 nOVMwzEViESZG5desRZEKDGeUExee2Y8YmK1iXlmeMEwmFFaJqYA1rTCTcejdcMiNIgtQyNMLuFe UzNafAxJjAfYo6/ZIhXHLpjxhcoEYRpHlTEehIIwIJJywA2JNMJtJrgzs727pxte8OOJQfHPjXI9 KMYxSJNUmda2gWJqcM09dsiiSdu9IE2FAlKEghApBbopjw2FFz7pAk8JUW4xwfXUD3rjjFZAcia7 zxWM0VHEB6oHj4EFGoZMckMHh4ONXriYjaf9XuSoSrO06PVmvV6s0HFGXFH0m3yoT+2fvz+Ji2lE 0HCGlDBQ0Bc4ADQcDbdwPJ9KwA0C8OgDxdGg0SM6AySWZRAnjSQhdxEUUoQosYCEBosFK3WyLSfX 8APB0/t88o+O6fIr5PKb3abzKrDyvw1lznUVYXzIoUgpzCCzq7WP7aImst5xlbKEGFkzgmFMFkUc zuQlgxEQQSkJIx4J/QZg42DcZIWUhIMaNgxpVGK6/Me69xpXNqhIrskJAMSFh4yWRbCqhmbWPdpM rEzlIT4JBMWUQZkldpBXkzXR+qtayvMySEEwWQYMGCKkug6uQ4JtcQU1bcubyQDeTyVWDuEoyMYf A2bXjQ6DBKJIKxIqCFFjKThPlSuksIlAwmxwDTdI0Ju4bNHKnIP/YJTEjYwoBVSMliETSC2tbE69 K5buUWUy34KVd12dHQ/JDYVUsVNPcOq4pByZHVMzvEvYIcNzw4wk2QeOOJjaagkNpM0sWMTSIWdW pFTOwvgg9stL1xzEeHDiO7iJucy77DJShRtrLhm9GDuJo5osld7qjkm4HmAhOQlwdET0CEoWIwlj 4rzkeZ5J1mC6a1+SwxWw6PcwcCBlxZ8qZz1Ao6f0EQQA0hYEDoE7UA/i/kgPJwaT4d+0q+rPL3r5 /PnmzVRLXus7vvO/3MgpwprdjWTNGzZKSPo6OKXF6b2MdUeOVu/d9nWuTd/0RzIsxyqo9t+SWYkZ 2bYwWTdx+xIeNwe2Uqh/GSJTZyZOAXedFTaMVxQdLxgqIlwVDipzQZcJMVATvqcdHeZsZ8ZJ9Lnp CpiEkbVXfiNhpQgMZIBJWW7QglIMC5FFAoLaSxoNeziL21modoYXZJocI9O9pprCJ2WRBHDtQCnC k2Vu8NbO9HB50kxxg2Zc+AORxmt+FNm6zGK0GiyPsHChmk7wH0LNeRI4ZCSnMG53HvNlphwVsbAb oyPO5I/MXyA6+1fohJI927b1GzfntrWUmK+z379+sTjgaKqO0hs0vHxp32Vgka5Gu/oJmC6iiS75 J+oKCp6Z0VPRzAnXKTEmYb0xluQU3iHoaM8Mb4EMiTS48IQNvypRxikqhsSjxGt2qVDJoNS3atga hLZkfHeu8tiyZrOUfAVQ0HXhlFJq0GbhEGWc8ppWmZOCQNAEUnhFjOVUzR/LxmS0jhoIYT3BHgoY VXY2NaouxyDoa4xgZPY6NDIGYQ5ahiCP6ypYwx9WaOJ8SVvN8GtpgOsZTScHl8BYymRcPLs8Z80k RBOwCnnbJ4yKXbp7lFplEH7U6qmgkrpSGkmPq0YRczICiJwfkgxSS6F1zYuheDOujuq7QbKt4bns 1zkrq/drK3UpFVQuTR4ma0sJGkhnYNqTQg0XrrRA0OwSMnnG22F2dij7kuJYrAJRJFDEakzltoFI k3mxxDzMokUOdHSRQpOjySAVTmsili6OfOVxthvCVO6hPJBGNaWovWCvfWaPLhMWR2Y62U7SE8xq bGGqM2rJscKdvO5ZKlspsU6pc+zklv3w0Hc14n0yMufraWOfG7tK5Rtihu2tiZgihpMW9ajIIlge Ly8E2dEB6tusqm771iOV1n7TzumbgqefWa3ia1aIDhqO/BhgT8Kp6Aebi3JsoWFOxTvyYgdSkNnk yexsGboPChJXMLkkmazovPapq5kjPzI3RIeAVEVcGqoODvI1KIVH4oXPBDktazscMmh1zJgu1jVQ hosl0RxsoinnI3RMJkcYSJZO6xYyTL8JQiwc4FY54ILS5XcfCL4CtDiQOX4P2AOBJlmQwFBx0Pfn H67TLqU90hHzSVTzax5NHJBvBWvgpEuIGfvOyVGHPOokjCnlXs8ypmaQi+vh1MYqogILYiaOZiQe +INlxeywto1ahhkuKJrzM4cvn2qisbVwMzqKQbfDpMBd61TRg41bmQ7WPLz7/U9PaBbQ8NyNvvM4 3X7BEEQTAjk5ctpX7HsOOmSmsOuipLp85xjxCZDJismv5/AVDaWMEJbCqoAWSZ5WQ4qfjJkTMqCC XWiTdnzEpwuQKmQC6WxBLmBHI7acNlyxQIMWAcF/lCY9LywXLeMoNzQNlBAU4MOkDaGtLc/CMaOt Dd1IQ5a+JDpMMWK8YfCwZimOpOSmLBEvgsaM2+aZOMi9MWpj40lW5UsLmhi5hmKbSat1tNVHG+N8 bkiCRMKC6XywreA63+QHnhtqQp1WcWldymtXbDqqkDzayxYBVV76ktpDBPSR6xN/MRmtx5Kj8FVO OODzpxPuUkoyYFuDpkCLjKZIJfaQfZTsgStHZtISKBE8qEkweR+aoYkzKQbIRYG74c1/dpOmk9R/ IcPIU/nODkrskZITHMPSSZ0RzySS1A6imSqbHFk0aqdRYnXMDnJuOJAlNNkiSY/giE9kaI2sn6QL lEnGdQ6bLnouckEn31ouPgRjxIZnHbizrk0kcm5Wp3Ot1WMiF9vv5ycSXd+ps3d2qMZu4GAxnTKp xInCjqIU2imMz3+z6hCsVpTrRBueQdaJjHghmipRGPJpfcTxcs3mxKxsvcxnbd1klQzo4lbEF5qd 3Ubc/OaUeO41zlh2MBUwXC9yY/ZhopA5k4xd5F42h0jJy3BsllHlV9rT4W0cDnx+H3ZGF2nh0dPl j+DMTlNJFA0Omj4LrYpajJcOYPxOeDmypbd2Pxj45kta2TgzvtkzHCyVxubqR0MlikHKLhdAfj7h aYfK/xJ8XtVQ8I5fgnXpvPK6ENdGZuTL1r2GiuPCVyeG3ZJlyQx1MVqwWNx7GY+GzqjrPsj7DGnJ GiRvJchUgRSdSRfVSwTzUf4NEzFfA9tHLD9qYjddwImLhJOTLpZR8XDqClyYvBX8s9043DZ09JZO Jh85Ik2G/KwuE1ZKTLML+/fUG/JZNnx8ZyGhcGaLF/oMucMmzFHkf4gK6yRoWp+omZo9OXHFdGoW XdpRNkrFBSoSWAU8+k3TpOVXDhp/u2eaBpTnmjzzWYw/jhw5zjD3vIM5LM53F7es2cpForFFer1B 7Pt+EpDxSnDrBlVOYUr7OozjtBt6GXNSUlB1qrLlvBb1g6cYHClg2UzLESJ6GyF013F9uFy2xsEk JUZJ3Lcs3nMmLtG0mjOtwlt5mDsxhxMFU3QMEeC0TZmyd1KnCJpsV2nKmBXEjbnhrJV3KkeixcqQ p0Uu1jpMjaHj1nLEhk2n2R1SaTrogXyWebKAIc0aqXonCQp4h5JSqkuiSj7FTPRXSWbWtsTt1Aiq vGge2ZV1FBuNxmTccTgbL4h5eOuIxTpz1WQ6rq5cQ5AekPILKkpWrdLGYlDdFzhgigeJP6OJn+GD JS/MlsnztcU650oewpBt86U8Z2jEn3ErqaLYIuXKMkFtQVbRtG+nnM8PbJMDmeI7TIMbJTh8sEQS HDHNGy4cOI6eQ7WoN9DsrqyW+t2wujSkuWTN8x41sYlN3wmUwZuWI1ovftzQlIhsTVE/dsd0Ukp9 ojXLHEfx7F++Ti4QZO+KRUPCl09ooyzORA6QHe+JxY9oPCIhvphv90gTWCLSCHC1C3EUgEhjTNSW Cx52uafMmmSZhzBOXS2GTLKTPgREQVw826djU8OcQ7DNDscRHOPvBk+NzRblWKonfjJ3lksWWxfn 82bx4ZNizsnbdXMHKoQdtWpWBhhlOnSR8g3hCPf7IfJM/UDyBjGDTn0KkXRTrEs+WzklPAeCTvBd MGCmfIlF6Ls2npHaFr740Y0R5G3OVFu520ngUtKfuDpmBXxFdGNl1Yaw5a9738Wb8nirApKTrP5u BapGva2g9aWG2a+SuHYTJue8+jZo+6mko3w2VrZY50tU/Je5sUo+6eWulkkVPltFJY2XbZfmFZBW BzZdxcmC3IMkDhli+aDGpdBBK1StzsNMbKSOcRiGSNoPGVKmkD9oIiITjwO0VTDuhTHayy9sUgO4 XdgjO7Otm6Zg0dcjP0FYO/0li5NH7BBs3ozbQxuAbj6Rc/cg9AuuU+KyKfWFK37viE8cOpp1wXt4 s2xV+jp6RgaU8noUHJH9zydNmkWTg+La+TPpSyUluMfIQXSTBJRpOKYuVg0MYH++TKRoLyWtaFBy vBXxJn0HkzmOkid5fJYnhNmi0UdNonoJ2g2AVOkkcMuMRN2Lpc6twg1dsxPpwo8oVgKRusC1npyx PrWB46JMMZld8uCUNJl5ChKacee1lRXvvUZIzR5g4KD5Axi1SIVMpbqu7hbZBrm4efWy1io47Xro 66pc6k/wmTscU+OpPBcowCSzKmUb6Oao9+wQXRCzmyLnyVEJ5M8Ic/wv8qbJtsg72xknoQLS3MhY cSM4fq5e98vNlP0oe2Dd782PJMP3Byq6rO0vecop1yZR6WqK46JipjxV6K7u2SCEr1Q0nxTm/En6 no/GUuUVsZXZJmD46dsd14g5YwUHhUe+hnaRK7Nsi42XLJJHpeA1hUWtwhhShY3Nqb0sxYYuWRiC mEiUXE62mSMVNKefVjvRjZBGUnp4jTmAzzJEb0ZS5Rs8a2zLo1q1MT5ZpPRSe4HpI6XS+xLS8i+C +kX7AS7R0AHn6y3tTq1OkR9R3a3TkuAFAaekeBPV8V5keEB8Q9PF6h3d6oc/eJ3r2htXLlToUPJH HsHk8UIoq+AAcgKJWJyDZA7tgHS7UHsedmnmegNmjrHa4adXW5PfYDmXs7k0Ln7K6ecTn08nrNnD 39MLeXRe5hot2YRvehq1GWJC9sIAS0SwZP7SBQ25X4VBkJFTbiiJ+pPkoGXQ06Ztbu4LFiguZYYm Nbt1s0ZtMiKaDmKaaCImWx4Y/gAMZu+U5I41rhhH4sS2kt+JqmDdGVIq7fblTNCtkGSa2lVK9m93 19Ymu0hmaL0qRlteuy1qnbW7WUXSXhfjWKnzO0GgZYYdaU62RdJ7dHx4uzaQzVRs1UXoEqIIRtsd kQLkzVqeqk5hTK5UpFD1K5upnh1vurawWLJSakgenmjqJVkeLud0CjB1AMSUJgwMSgBDW/RC5yk0 cJx7KM1TUAhy/QnW3YMmYDBvOcg48mERNpULcdiiSuqmR7WpUlXF9OEbWGdLqsinVwjyIQDMZIXi GXgtwQOhuAz4ggCVG3F9YmhHLzikGwDahu+mutrlFEMFI6xGTjgAeU5IELJMOAHbD0sSM7q1rdxz 1WZAwru9Mcc1bUIDLbgbKiIV0XAiBAzFAA4gDDg8Ea7ZRpi+kDxAcGJqfUcmyKQy9KqFkyKoQGYB Q8Yfh5ZfhYYmPDywVFGEkJHioMDZUhJmq2AYsCTNiYiYynHlCU7oiY0GNjyo8scKDBMFKJlUkDgi d2hCznDBgQOSyI5aQKMVY2Zmuzlt+oI78D2e38Pvmt2v1wLuQgVPDA2kUIpV4aoJvr3fT9n1fkpN +obfLiX0yDK0CyB4YgZ4bOOUENSBClaCwmC2AuNm+Law1gWAsl27glIhZMMAVsKGAEuLWAFJgoRB +8gQ/Vw6ED5g60fP3ZxkatmkzDqw+GtYRdBnvsr9xnNowi4Z7eYecBPAv61me5E/UYfNMmCwdCHa PMJkz7nHEkStUfBUiSkciRPvbSULICFkDx4gT7n5OFu19XsYNnKP4cRE6VRRJm00qpHRcCQZu4Uj o0oO5cS6qLdKhCC8jLkpsFSZub8gLy6DFCAiUC7ro5LOOWJ96pBhCyhTOiYV7yIMY1AcGNVhBsk0 LYKzKmjFDcB8xEQrouYVYttIi4kxqdCZ0Q6H64ZXuS1p7eSJLlRtbm9mvaYjp0wv5NlLkmHBeCIT 2zKkQMJPbClPyGmg8rzPvp3iaM/b0ySLBFm+ly3+Y1OkkS3NoGiI0n7p+4+hUrJctXAHmEK3Mo3u QECVBpVQMPBwb8WgnVJbXU5ZGvC2I2SGkkqq0tLZXjG1u9Fdccee21l5/p8/248M174/lu2qLWtq o7wl51k6fi5BQ5c2MXNHQlFwOXOGucUwNaVMS29cW+eYneNvu1+cn2+3tGbQmI3b3a4dzuPqK58l wTgih7QzrrXeGAnL4AQugIpiSoRIRCJJsN4dT+1MCoIJSXwFQbJMkFZAmIGS7a7etzvG5VXNb4UH ZaSp2YV8GLTBEJF10kZJqUw6MFVuFUgoeC5Etkni5gOxGFBsFQsII6EXgqUOD/5Xr4OtpvRc3xjH CczfKBvt/FamrOJaIFrZJxNu3VSkjAXHzY/dRKXeEFnnt8YCkC8ySrYdM6gSx1Jwz5n6p+SVTwmv RDfoOTze0yi6ZgZYUwjpbDRTryCrK8ukDc/wgPAURBGCBFwEx6oSPQs50xgn2UOipDMXAZ2XqSlM g5BJRvAexM2qSvtRVAyMgAVSEqmDPuj0YqVNnaXJ3FCWyS5YIOjkjwyeF/k/j8TcJxaDnGwNv4hL Qw9a6O6RpQEVQRNRwuww27T0dLoEQU0rkaQXOKAaKUOdIRLDzmHFIJxFuE4pZkuyT2Ci0LEL0F5d GNpGhdkMUfKgsJGsDwii0mfCAk7YqkT1IYdsjwdNDdM9sQKoydEzhuYxMcSFLpMIteP36/e0ROU8 PwUo65YY6YxjJ3atNj7iHA23uXLe/9OfzQhdHuR88G79P3cwcylSCUoIYpM9jFpRPzKQyxMtqtbW hhM+OAPRiAtt7FF7prxjcH60FTKPjYhISDOnsSCq2ZLgKjsaNV85HqTHStFaJQwHSMky0hzip4kW NmkEROaYTSKXMmSovxrCiIIAKggekfpITXTzGU7ApTFQ0UnLh1kmEdS0YSr0tpTRmBQhR0rNA0nk uT5U0jlk5l6ExG/YuFelKhwde8ILfHyIKiJnr9jv6Uv+demhy4YUFPF5j45sWPuA60DQWsj0VOcf v4D+OjWBbcsiJ8UDwuo1ZUqHHBM35vQ2jpGoaz4Mjmz1I61EYf4SZz6oWT6gjF/K+JRtkEtgGhcT svFZJlmAoosJk3iXSYYym8MEyw1zreE0ICHDZa5huwhaBHhgK5LGu6bR1yxJczTq10elBkYx6zns Ow1BBg930WYwWlM7NoSCkXD90dARz3VeKHSQAkI+5saYaTRwtq2UkgWQ5UKTwj+RHGhyPFrwoYTx YtfsrwMG+yQ5OjhvqY/GPjHcVSUGnNlIvX3wDOE/Z7R0/ENe1oUKRJFC8k70XNuLRoXsbgUsjyFi B+7I4xs1XszsY4juifpX9K6nHA5sk2mNhaI8twE67sOpYtazQhad0CTNi8m0pJjAFcMFxa/pyrXK O/205oD+3IhFYmdai+x3Lj3/zwBCZKW8iVCsWS7k50rIsZ8hgmbEh9hgBskJAKfjNFSdkkhRf7h6 tfSc4Sgimj+JzYSdBUR5WGJjUH6GulC0ykLpUxcYtMiQMR6OnHyOdZTBrppQ6aOHEL9RdCb+8Pik 9r2VyqnD1dv1MJrFiB/R9lLJszwdTg53QieyWH6Kc7geVIeDvZ1KMjuxbso0Ma7VhxAE57x+YkYG EundJxgpMidndLXTpSpNy2Fy4uUsnYd9l8Ks5FylqXuSpMfJIlKdY5YtrhuJFMk6msTSBo2aSpKK 1QKAxtFB1OOtflI1FM6KWNjysatU53i+1aYTTRMyVNIQIl0kK866KXV2R1TliA8hQejqjh75bOT0 PhTDys8ei1ppFmcDvymfxR9MFy5dcfC+MDFvJ4nQTmxUPswlxZpIbGDaOJYkT1nViR8B5gdvAXwe gnbzzTHo5bpE3QnEqTccv1OhvG0WrPuonKUhWvbG0z4bHpI8zB0S8z0Lopzz72nXY+h3msfTkZby RN1mGUsbgYCYtDZAb0FOmYjwxLK58k0uTiJs3AKoVI9NtVUXBEzXqtoajQnqgW0UH1KrRg60V1hk apginLjFTJkcShvHLow6THd6kjo1meJafJdI6+DipYLNBqxnpvpqWN2zkklEoN/zdUZpBw3KHHPt wdk7WKMJk/lkzYz4/0AQIJ2XGy5Q3w24bAfhMo4PVF8JlQ9fPSqii9tZd6xJUgrTBQJSkSm0vekk 1UO57DOxydzYzTR3fJ5mj+NWDqkj00GAoKPIYImjBEeesxQ9OifEmZ0Q7Kh3AfJyZkYXDHKvMpwb sqFJmkcVnOSdJUJ40PhR8tLB/IHpWWDUSOjWOOtqBprp3RSxDckt3kOrjJY2YCYwx1V+CAVwWyYS xBkwUlSXv17+MIzBAwsWf1rlJvymJNGDZhF0VwTg/Q4mFCJZH5xSKNr6IiXE/Xfknqku7PIQYFzK bc4XBOkUPNShOhWk6yTZOkse9JAgOFOyGqE9w8Kedg86i9OI+VGLeRHnmbJo8ma6ImEW7m2nLklS ZcJlC8K0o9nJtdBWaEh5WZz4p0nDMSRIiOJ42WU2jbDpR5ZSQYdis/k0jo490xX4jXSCgVMpKZNK fknp99fiZ3o2NoyRH7LdKLkx0poI4a7VDXy2dP4LDBNeEDY7fJnY/A8gQHa0ZsSCCZkjjELdhYoT zKNiyKEBqjFFpHlyh8b4ZolVwk0Usl9D0jAT2D6wRARERE0aMUGN4LfZETxI1XVm8HhlxLcPEY6b XY4IQZTYV2pc7IFZDtFJixsUHwpGFoVSo6cC5g3QVLOqjhrbtiu2S92NMbYLC6jtI78Z2SdNnCxK ZTua5WPrEF0sNY9DHxojRI3TJo+MHjWDUFdORo0Sd5KWuX9HLLhqdNcsQfHp0dJ2o/xy+9XFkU45 08wqVx3Mne7qyR8U8i2SPZ5vZR26H7SPzh1O+zyMpjiVcxwrxRs6Z1ls7RBKNhQz7J9u+OH7eTHb h+LCg2RbDR6kk0k25QfeWVPEJj4PiLOOPaTjXHSThYzfdk3z4MKlzWj6vnd/c+Njip0UUjcZlRVQ QuDpa3KqoYVujpU1cjQUfGL6PHjfS5a3xnFxTCeQsW2n3kiE3DeunEnxA2S2DJ8RPzDjbC781Hvv E3FPc5wyUXVJwmxPZBqipc4Z3bZetgqctTDF37mRhtglsY/Lyjpgg9pM357qUYe6msKGjR7E4UwH FTJYZ0TtHsm+7LL082bmuHE8Fjm75uXUdFNzjKS0lpU+ZTWBTRsKG8ES5l8VawcsSCos44hxIjwx pIBQ2/ImiHrHBBIktmydn9HHkNcffdaS4pP4vw+KDtiVJRj8Uw0yT+weoqv9NwP0BAD7ggZ3kUob MtwxUUu8kL0im+zltqzNwe5EYtU6Nhm5/bv8CijmnL9wh3Oc4F7J3SySkmcCySN8h4icMsXJUIjZ iljBU3sZhtFJ8pFkOJ1y9j8HPHL8iDoZGcfSd0W0iuGbWpjakJ2wprRbCaPrjYXBUNpNFGMpw5aS mrx491BzR7ponRvJZU3Xw3wVAxchoNmzCbaR05i1ysG7ZIZsFQbyXL42XNZF4KLowX2QzmLHm3zd jiXsSrDdMPl3gxYUvUxW2SDgoXsPJpNw4dsoRHkEvMs5Pf1W5lJJKRjgp1EYOWOGCW9Y2pRSScJr G0QuShqavelyGopMM3O+3JkyTLE8Qhx0TDMjZF0QcOCYpElEypZ5qRUUuV0fon70KxV+TV5oodlj M9khk0TiVTeh2zlxZGHySzHUe44lO/HljNk2cRpkB/mOBArwik1vZ84Xkn6pibpVMEi3dtaHijVY akCUyTzIvbTO8TN0LUc7WrZWmmf1p+VCuOkBdOCgycxR1pJRBOOD/GbLRq6mSbmmIl/85EH+Jtwg vjTEn27D6Hg5+97accZN7W5nHz+ThyCE6fhVbZR686R6Nl0X7pj7FFaTGDLFi+jB74I45g+xoMpw Nn3kzi3TldN5PX2YJvHagadohtFU4HuzXqsj7RPWHsUbnMLmB3bQ9Txu9R7ovQHWurbq4u7yfIcl O42Go5QPEQ9vOOYdPYHt8RPAR5k6153h3UHZmA9QITpHWPM+0O4eEHgA7R5Q3DuV8wHsEekUQC5Y RBTJ6neebBrQ7yzyorxvuBM0edRQ2L5J5CmnFPIDjAToDpPR8jVsk0Qv5S+Hi+cnfnRfO9bsTQWz B0YUrUyBhCXVJ2kkO3GTnVIW0vKUO90MQBhHGSbobVXg+7xkjOApjMVkwQTRJigqmW1JDktxJZkw Zm79n8QHfGtaDW0/g0p26lTTs+bJDq69KCxee3dZNdLEhz5jZweXvT41cjvcWm+9721eZd9PeiZp icncpW6vbNzc3vXoO7nDu9ss4ZPuXTm1fsmvarnHO8FpfNen2nvbM3Dvg5F6Hk82sQhEXZFyEBar hfVcy/eT8lgwqyzJ3uYqed12ZQ7l1oDSHo2TIWZcodUxIgkwOQQIKC0gMAWYAggr3S5tETjCQl6n swJcyQJGzw9VEytaBSIGSEJVVEDjPnXYbiSSBaB9asSJqPKasUCyOPvV4bd5GWWwFdXpsTlkDCZN jwvyqrgnM91DRQW5OgEL0Av0F1QoSexOjHvLDVmObGSkq2NrxHF2zxzo7xTZXScdU7eVwuK8osFg CzEAW0yAAvaUdw37IijPijBFRhRDkcJkPwbtKBcvHnDe2BeYyCPG9JMDjdEHvbndW6Fs0bAdqfDB 6l0qdIFefb2Qox9ubA89PhAdj1YCsOMhiRvxkQBZJEFwwhqnF7F/qcpv1e236CWQRC4gKRDpAkmb RJpgmNZihIqyo0xTcKlFFHyJfh932Ztm+6i26403NaczPzn3qqxihyRrO+pKGAixVjBgkNeUJ1Jw EDQdTiYBvQQbpZdCKIXCAFwuhjVZIQIwCKqYoRC7ZowG2BZaFhhSgYUAwyQ3qF8/tPOStifr46oX k+RpX2OtaxdWrjlzWkXvR5YV2G7SuY5oSe2QBnAb/EuHiaggx4DlW9FT3MipQsJqGghBWVTGjJOZ UCvtdfTC/Px2OSbM9N3MoEmCC7SowkJpAMBpAgB4g4k8GDY8kcljRcQuxzNLppXKKEk0mI3I32Op qZs3XJsZXUCBIIYRgQLkgyA4a6YH36bx9TaQ0EFUIyMACEdNI2M0J7HNMXRyZBcmCYAkLZpHa9Nd KuCMhcRuAJoEGwMYH4VDwOXCtGPxEGRIpEoRBC6EheF2EEwrxZCEKzSAQgsNKZBydsHB2Vy3Kaag 1kXRPcbNJYmS/35P3dGZLjB46acYsZJy4qL59sWGsEnHZiFljhwcgjtIKlXPUHaRcxWDrVgiy/EX vPQcYhW8fENow6uUEP1elUfgokgVBc/engmo++W1cywQCwRH4xGQMAZQtCSQIOQGkIF23wpKZYO/ koGjWbiV4wYPRrHEjfnMtGioroK1Xk9ECSFIMFpTiUjou+ajtauzxfj/efcfRRL5p5d+OTd9Zzgy 179Hzu2d2Lrp7KNJs4e6YLigspotUDPYqmvEX7V5XVczmF3tuuaXFoTVFv71/EIAJwFASwogGgyp dMJbQpzxETLylBzbcejkEOhULvMhcMEaae5CY0QmyCMcNlFoamCASRENsiIHXOuosjaMMVE6K8Mb qgQsHalSANgqzsLkL9KVHjCjiyJh8W6HnTiQ4nm6OKmuI4qZGnkzmeOJF5smbFOECZUHnD79jKZv IrDQupkydcp9hroxqc2NObM3fCuV7mSZTm5FnFCoTxpNSf4IXC94fH1fqF1698/ZQ422YqT3+usr Lp2oe2zXnlz3UnD0dQh16I0d1bvrQqgQtKPIMrUqWN/Q/aGpQa+KTghU9JU49ETAohuEjeoaYvLk zXCXRN1TIjh+ZLDm005OdlDyggiiGEVBBjUsG+fxi7oQNyMeDdjQZ2OMvFSRjhLwl8csZKHKScRN MKf5gPHkNKQf3B0dvE6SxAxYezlQjqu5vEHgOeV7O6GzxavUMXMn6ogiBwHpIppJGcasacZCBkd2 FxYBAtZFGDeI0DiK66uzM0mEhiRm5AkTolC9xjT0npIky53vKKmo1NGCNsTK0/BHIvxD7fvSwHw2 YZfw5YoOfeD2HAFaDSWJESCBv2L8ImF766ONUUFXVg3t+0Vcrkwj6hDC0wKgYEIfdGRnnVhQ/fRe 8ocBxkQo/Sett1cZybD2svrW6K8llEUZ8DKqmi6IJ0gm+MlByUzP3V24qD2GkSguDljSkEYlc4at IwWEL1EDFXuFENpj30GCgt0txQ0mUXo/E+HgL8GJydCkipfZi4x/RkvY+NhcDuhWPwL/DbwGBTJq RaJ4ezA54sMcM42ESxOTBIXMIwKZBlND3z/iDN/r7o582vm2TGcIKReS45fZ7vNio2AES5OE0P/m Qce5FGveQeTEQ2xqjkxyjUyRqcdqc1KLic3K01k8SEo+oCWqPE0ZKy6MYsKnlVSDRDsrErPnBX0p BsqkiNjxPcvjiR7A1kfHBUASIbTk0JH+BkInZ98Qb3Ip42hU8oj7h/TiCFI0k9MFCCQgQNs/WNBz aVRHBHI2HY8wjei3Sj+PLuLkTaVuFCFzk1FITdWYtvzsRtEEREJGwYPQfpThx5ooHngxVIopGSyp k/jUF0fJczPj992jpWuZHTMF8sSSOZXfRxW4KkkikkzQYpiGXCzSWeDrR+fkcUMqkl9OdkV7FSAJ yl43xiZXZzrWhOChiStPl1SOR+DkkexGDt3DBGDg42ZZtjeufIaIk1vusES5aC6S3P7HjgZJPlXO 7nSx4zqiMljSSfHhjqPL4iWM7u/chyTTkk5fQgiImlTUyyefyREIHW06TU8kBg5bSS6KMMFaDiZW oP4fgRA5OZ4iHZfxt5uKh2HN+SZ0XOljKiStoqoVzYIJmSp7XHjls558RzbP/ExgZHuG9kWv/Ach /HCtU9CkzjqLOpwrqu5zCq1Na+oQHJ86+5LTR7w1J+qNj5GbugPy6TnLqnPpuZa0iUxhWciPoARO eFQt0XXr4a9FcerrE6VWxzk4Z7vL591Tcc8HcdHcr8nJz13J6MMRc2eF4aOJkLkbYKgm889ketIy V9Bjg6YM4eYYeZ5nFynRY6IndR8MJhjo00RZYymO+5WQYsZNMYHlUnA5guMOKhYZKykecypUeSzx i1hBCxdBw2AydKVYmmC8ekfkm0lMvHU3hJzSxaBSZWSaRTpmNuWxKu7G5bWYPgA7oDdsb3PRs626 Ya+9DX4PzbQ9fqj8+vlRtMxopnOsnvfgPBwa36t0b3toKDoecMwankPmOGmp6WPAeJOrWdR+MWed OgOLsjDir5koE8k5WUf4ek6JAoYtp4Z9D0uEmwhRs9YtznvxGkdcchFpLX4pkz4ME/Gd0pCtCoXd stHSZknMuLIyUpvaZIFcDJa4RNLCpxxRKfOT+5+72iterdumB070y2DtGsFhZO2MJSZhFTVS2Tkl 7nMY+zkyVrBBfNE63k4T4o4aMmRRh9rXHEMPyi4svaJzcOggqFSHTM5MUTG2KIGQp0g7uJqedq5X xBMuSOaHg7FbH3Dkr0ztO9jMBgdhgwLQzfYMvR0xz6ZLTH9l9I483CoENE9SdESR4M0QcWfXRLg+ Lx/hJJguPjs7MQIEkVHDAsjpLTSvxbKWWpwHZH9CXCj+r5T5MBJ/JutBV6O3vt0/NTOT8SozywNN rLdnHZroWMHkdUxRLoxDom65XVLXXewWFEUgFBxk0mwuSlBJBgkJ4yom+nPOOrKZScmMUuzpLNJS HKSpydeUJKZjfbwdGxoSQwX/jPMjuPf7J7x4P51HJc5CfDnPD/zRwkay91S2FWZDibNweSHGeYvT RvMTLAwxu7hS5rme9E+LcFVKzgLl0VOHzmpuSfGTCOaxz4c2pvUUmEjHRoog+KMnE7ogMbg/Hp21 WeStXhJXuF0n4RHfEsGCx2ZuQGSBxkYxrPBWRjCpz+tbL1+JgcrX8fVyxmCy4SRd12dmwka3TVqQ rYdkdKZIXKftRPZC+LkBMjnpU2Ywc1kaaQYjVuquCFqkNXCmyBiZMf3TI8jYsNk00TMSpCBo7pU3 jFTswlClA5CBbjp42V4+Qw0GpxOPSU8PB6zqmFK4fPgK6bzg2OgAriOS3zp3GzJ994zG/kw365g7 Eox8ccqZk1gkVsXliYO5MC8LfuWt49Q/LlGbD2KTjDULeCjDl+F7cT0J033ZjhJdNkl/KT34POMi fUHOZmVIyvBvKc8xfh2uPzpjmo70+xF0K/1AKPwugtzqeJ275mTKQSSYPcyX0n42IyeyfbzgpFMZ oyYTj9Pvwz4rZDpefvEmC6f2u1LBXjBvqOLtDx0cZk+dHUxancwdf0IxGtHb/r/uKn1tpnXkiw+f Bo5w1a85gHTurB1KMIYOSfHDxpMiXFKKO3JpOGNzy6bhNVTYwRw8ZLzhlL5Rbozlz/L04KSmeGn+ aXc3YoZaMz2mx6XOWGlHRYpxxY3OtnJV5jBxMYkI+qPMkXBlg2FBsPnRQWeh6VK1xCh1V8GDq1ze ZVQ6myA6rEQ1Fd7kg0X6av1iuBk3/d9ij9pQsaOLDeOG2hsNjiuGYcUSI8HDKOHfb8xIB2D0JiTM dmjCDy0shkm5jnHvHcL9X1qxUrb0RHV7xIfyD4PeSUIty/DeEZR2K2q8eUuyfYMXLIwLw05I5Aft X1zF013CpWBNm0jHOdnNy5dywd4R8YO9O7OTHel8WZMpgfjm0yXLfhTSXzqcE8ipLFj0FDchYJ4e MeNL8O5fEI6NjhxK8lkpTJlMZUumix8mIyNd+nj6cwafCHyN83HyiZTRbpJJ6A8F1ZPtQXyYe+dm IIzbJrksLfDnkDZHUNeIJpSZus6nKJYpD5M34ZliN0a6R5sU6wRw9Rjs7HmbMb3kgNtVyRiVORwY wX11ObBp6GlKuGjtrmznbJix+NMbKgbkBpN7G2WKSjnheCbLZc30rBo0NmxnujQeOlkH6agokYvE g5R5MaJM1P2mkhLGsg1tijihSYZ0lS3ZItcqmjiH3QPw8BRUFSRfZQpW47vsdFLm+u9ukzybSBSC mjMHB1mZU6VXMVLXIbTJsgQqXuPgYvjSUjI0ONj5mlOkQRITWxUyzCl0ZLHHkQyJ1Md7Dfk3BlOm puLr4zk4m1MnzcdZHFHbh++PlF14PG/g0my5ShRRHfqMTtKKyeTn2iB7jHOa5gJM7Zzzn7PfXLdw KdVFOfD/tkWgLHKlypQVVyRuEb22y6ZU6y1udef09+4lNCDEEbBAgcrlw+rme59onWIHUYexDQhw Hg+wPaNCGa0CcivSIJu2I0e0eoOdDg6/NGynOnKgIPt25AebtHt0gnMnSvKA8q6nQHaB6xdNlMgN Y9Aep5A0nDzmlNYIQDq22DDuVpbDzr0AJ5jp83zADaJ594iWXZwxnl3ponPCQ59ddXVSHNL0FZGW NrY0D5QgGokA5EAnSSjIEwYLCcKklGTkQlzeE4ahygu0LwVScuh1w5m6hZr8BXYxh04OxBFsohFt QyKKq7vLi0lluMxYUQjSUOIgLsR/xhr4iV8d5fGbJWt05fOaFe56by+nV7TwaDfe2kdtYZ2xz4e6 onFNadqzdoXnbImb6d3MSyzg9lKxLHufXeTQYI66Xn1btsZVVM+568mZJzvbTnc6rsRyJduPZY9l eeP3heV5z0yQgcp4s9leiAIgGs6SqkZbdWgPaOrhnsux5L032c5jxRIPjEEgjEgTA1BGQoAlPICJ ASvK5g5iOa1mzLgbZd3L4NcUjguvZQ3syRxhSlEGL55MGvHwQsTRIlS8tXQusvaYsYLT7a61p0Wg tlUwJD40EwYIDvRvgOPsWZycwPLzjqoS+jN9u2URMzU6fdMXu5Pn5h8LB7D4jCkqgmUEBGYMmILt AjMBmViLTnZkMQmwChhocR6h7rbrjDMcgbxwPCr8hs5Yx3cZ0LUsBAszA5Pq9YnlFwK4PlxFc7pd WysmsPUPGTUUBi6awlbjsRrqcKthtYwPRCpKrnUw4JuLZs9pzVlT6M+/a0tWP03QacmA4K1RWxE3 9zNIiXEDQNUhIyEipiOS2bCCUl0QjZsLAkSzcA0aRsC4DLXLqQAuGOCXAKGriijQDZNQkkNE9PtA V9wefJeLzlTpk1uzWHh1gQiq8hCi/laVskXjoVsRMAvlRh9Cn2iT7pE1pWGnygwlvmEgPtkHrlYN ZFSJWXRag5cUdGkzh9am5qCEDCIHyiGxUC4pYC8tUejBVIVkj3H5/mtbgdmlq90tJcnMX0U7sWAa F3oWOjUEjrCsgMg0tUMFxbzAz8w54Oy8eHsuAa3S4YgKWNbjrHBVK2WoEpLMcCJqASSLNSoYycUW 2e+6mJLsTDYwHYpu2BO1JDt8f3XodK2zU1IwTQiIVCZmk+m2QYNkW7apguSbH/w+37FZPGLFktBJ syKpsUySUz28k5I3LDPLi6DJsVHvHpXVKmDf5JAPvSUCkgL75/RHPtRz2cvMp9O46R2glOZHMQRO ET7QFLgkkSR2tAGE/DQqHbHnx50b3FtxAhVeZjniW5qfJ7Ee0db9kaWx3UkElI3ISJJogoXHiIg1 p9cdKtY9Vc50NcnyNIk7DyhYuXfH389Y7g37UnAkyaIMKOmjOPZkwSeL56uOD25G95jevcmNGKdT ZPRbccU/O0IwqB8jBhFmTYpomctZLAgCJBQiYK4k5z3tQO7cMKsA7Ds0CQkYZJU3OTcIFRdKpLXC qwIJyg+xq5FEoo0KC9RMMKdTtzVhX6AxCMMnDjwYLp5iBoTiOBgUjBwslG5D3jaaGDlWNfNpHODH MpBOFuXPjlsGiHGtDaL72dR8HhzI4XGLbRowdNF4fPr+MEBrcgyRSuth1Gw5X0+4BeF2PAaempMM sWsdqskv61RuioFxiEx94r6XDyKmBMTiF0xC/M4oHUNnfUR+FVkIJVJLpIlc5NGamdqhDZQYAudk 08HWtzvuhxLRVA2rP6mXcKVKQqkZ0A4wlXpcoVWJQiDqmYpsImSwDGwZFlvqjxU/bPaNR+8LK6Li wFhUpMzn6wtZC3BBCyGj5iTTMGyikoZME/GA0j2Q58bKBvGdewfjp65o9gL7PPTeNrY8M80Tc4W5 c75bDk4kX6pm2ixPRYtYtl7BXbiRmyXx9UiiCSAXsQ8xA9QKpdTby7eGiVyyqrDhtZsWJW1HU257 rhk4NoZeN2e3WcGXkyznv8RJ7PlFGyiKgjCEG3u93ofBLySRa3ksc8ULy9xOJqvnZLcdYiI2nmQp 0+udQMGxUsUUYuehauR8AG9bpBjmArIh5UVzlF8p4GTeBjWRcHy/jSWGYz38nyPKppkD7aPLyZF/ F06SvrnPF7HPtJ7R44K+cUkcubckt5N/hTuTpRk62Rj3Nk4ShYuk/HDGRyzjGSTSpElhdVnnBwtC WErbBow5L1Vv01oxUtjJZjBBGTKWHaGrI9j3RIp6Yu27eE6hVhbPCLNwVwzmk/ub5tKUYQdF4TUO q9SlPQmzhHyZPzF/7ZCnk9w8eMB0y5GDNEf0QhZj3k3BSnn8R9b5QES2XFI+wQNZKRKIhal0BQg+ xPYXKDJmJYrKo+67PIilKzY2W2mpLwiWC0zSZozgtLQWTYiKiCcVBaaMcxoyIgiCKSRdIyKG7Axl GZTbjn3IJLng9w4pw42WVlI6TxJSyYu0Y0ObMR4jB4zzP4yTXU3lFNwlzVDUGQ6cLpPchQ8KEixZ dUzH6gH1ADQW8a34GezM6fXHvaMHSc6TUpxNh3ZY5ZEN1k4kSZ82dB3z0UffxUdk8shQySVyIFw1 DwRND4jHlAYlajiA8hC531CxGpehY6HibTm56OuI949HOYMVKB0jtSOl6XyltH1Dvo4aTq2ifFmY WsJkY3BUES4iIXua+HT+kiD6mMeRxy+jhiSVcYEhMIwuT9kjIojoek2cTKqPYon7yeREvjUEb0Dk 6PjqTaT6PFiNGLnxt0Yw33COa8WTpDmDcfx/X6logl9MjJpMe8XpOD6Od/ELBdLc2ZauKAaxPQz1 spgL1vuzexHjmJRxOfhyN47zlajsWkRS84Tk1bqVMmPzChq6mvGzykJB2Yg2PBSQcDQirAKBweFg 8yoCpMguuZM6vMIuiPjzEnTJN2ZO2R8EovROZcluqUS8i0XWDTzcqSB9zzwcH9rOZkKUNv2xTMFl 0cSWChS1U6HQRnWCJSI6HQ5/FKrhqlpSKPx3ShB5Vt5wWUgkJ5xM74miwa3FJkUgPLhEiKWCbTOJ oVh7Jy5NnOlR8GLHArZ7O5MQipG00hY3kql0YekhaEDvcOFif2A/RD6IlEBOS8+283qZVfJ+TvVs h18JMLbmx5T5uMN8F0Vnsp7yQmMRB0ZkIDK+xYD3TBBvtjfPqoxyrGp7wvRPQYolOI11tFOEqj+F 0KQKJEHWiamqivtwt5lHOM3L7CikShzXNFmISYubMHODq1t30PqPxVxl2Onjh9TOkoUDKUekQqb2 L+15eJ2imRb2H3NRYq/RLvNFS7xUddMhujiJgnYz28urOsRMHzAuYJpDZfeIwbKQL3NFaBbJkiNS 9ilZxSS7B2z5WS3lvmRDIiCI1Ik4m5g3sNDKygyU0bwQ4/l7yR0REQlQQHsfnQERYl4PAY7fUkrQ c0MHUSUWZSmB8bJY8Qt0aMTcntwqcITB4cThyxyxdaEE4KaKGuFTwbUhldBKRYaOTI4mcvBM9X6M 74bmcMPoN0cepI4PspmlRZUwLSTo9MWHkpxMHWOhlgWCuWKXH7LEDNXygx94jFhtcOnTQqVdWcMS OUqUMlffw9ShPd/zxwcUKNklDGTfjL4H9mhjN12ZgzR4mhBvWDWwQMBJHcrBvHVKyV5VEtMsJOM2 tYvw4Z6rGQGVA1e2TSZLa5w0eFFyNy1h+KUQWwIySkF/yO5k1OXC3L7h47ReOTLWLVhYfvIpCm0P HAmbpjBzg5JDIgCJbBIpLJV3S2LGyZ0nMCIkRREAsXLjBm3JNGQdzptgQBF2nx550b3qzrAVkygD 2Bjcl0Uy+32bSTux/1sB0MllN0nyn84WSw26R3Yp6/fcOQxAty5YWRYWdk2J+z9LJnVDU7FSKuI7 FF0/JTUan4QRNzSRPmB7zB5Bj7JzBYWf1GLa8fKWDBD5557A/c2LOicwpC6MCIhgotu3wcwlWNMO QXLmEyWC35JDMPT4T4SCST2kz6pRhxzRPdGQkZqMFPW5MwObPBy5RQvw2D0ayc+6N9ckvN9/6hc8 XuffkPMfOH6T8YUU4mCIMSeh3wg7ZyOMAuUVH8F3CZMnbRGeCApZLkJaUUeUD3DKIyAkRUOhQph5 Qmm3ftEokzG5xLYeSN8S5gmUpzVBxIerjkEiLvGLnRur8yI7R6QgjzFKHDrJsUOl16SP9z40RXyz g76p2W+VLEGsopEg/d+jYY9HTSd2ecsHSj2BpMJPxCQUWJTw1+JodLEzY1w+LmEOFk65s168HBSW StSIWwTxaJBkrWxggipBsFvyQQH6SpubE7mFoYOLSRtKbF2iahQNmQhK7TsPSJMfzQ8kfJKHCRUw 9RXXtBKKl3HvtH6MQmOOFcMmJBPEOIbtMgZjJVv8I8gthiAXws3M+d95FcO61pHXRNrPvOp3NECu CczmIVSI8GHw6xSmjaXog/c8lHE+R8Cz1iDSP4zSUK5LiyehLWlFtEplLyc0RXJrPaWaBeE6B6Ub n6TMHjpSO1E5nczVkcQNPemOUSeJ+EB6fNC4Id6NdrPjhuiYzrQSDjDGXOx01TsTWKkGsvO8tLHl tkClGM0N9FzDkKaLXb0e1Y6ZR9SXLpLYQLzOIXHLM32TuERrGEe19jn5JIY4/bHyoCGTwZIIOXKy QxvWy1fjmtJ9MDDFzhIGCxRGKTpk6csF+SYNbubHG+sbfsmnLJK8wHSTCxpAXQ+RnMCGyxYtSKNU wZGgmeewIH32QrIr0aTajh+lWJrRIZ5CKTlDosbRx0OKPZTqUSJ2dmMZY9aI0glA2ZTYrwcXLmTk 5C12TOSFb8H7larfNXqqKzPcydmjGecHngZX21Y5+Kckh/yT+tmW/jXsn82EUlF7Jwjo6WfwuhjA 0CCQiZwYV5ibilahokjQ8Q2Mriw4N1zAiIYUzf40l09cpr0Pkn4qN/Dj5KRj3pRBVI2dB2R7QheR C6TN2mX1Es7XyQJ0WhL2wiQfXTE+ttykkc3lTBB48Fv38rUE0GEvbW/0E9NTKUr3ZhVkZJ8h3LMo zYvQawsLqVsA77C0m2O6OEpcZLF2HLM5VYTbLf5NHDR8l1HXekve0LRayXubV+P2oGUjcwboXuj6 QIXGJUL/sHPSOjmdz6T6fS1yt4ZJbJ1bxcsFnIPZTdzfD34u4xJm2/mYbRgvB6quaqTJWRyUvcom u+mxhlrLGx1FBk+p4Xq8+pI8z3CHEnsVPMTjDkDIehex8WB6dmddgHqgwIse8UUeAAOEfLhOnG4Z gcytwOgPIcnmdQOC2EObcr36w6V9Yir2dCZrgO5XoQe4dSDhg6g4XpWPkOxMw4QQDjNneCdAviBu MrBtAOYaBHk6V3AYC+iqeLwga+vSlId4J2twDh3+o4fCLLVTVU0SoSz/nWXr6LFPBR9kz7P8f6pX qf8nEfT+Ua4pULLcRzY+/Wv7/45zd9M2udFk5L8pH64i4sne0rlYLZpK8RYOz+jzKyqN2HOSu2zP vjZ92e6UStAfBt7M4ZH/ZG9Nv9777QO+LQ2p38l83E50NLeaebrXOZmHhmhYsMdoft4F3zM5Z7h0 ZhNBlkJgfRDDiCjXlP+7z2F7LclWkQ7UDDbHliK4O2xWTJD+j6dmptSrT42SIe/xMjF5Zj0DRl3F Qkvl0xsKVdg/WaEtQVMnnWDBoVl59fgvF73DNoJtn5G8yrXH0Wb/npwGbcqRA0fj/nyO9zzRIlXw cG/4Nf2QYj1rpyV9GuSZT4K2oU0f9Xpt9y16QleOGzxExkvlwHPzocjDxsnyKA9Aqzx3p+s5xkwV 9r000beIUgxtfo9DM/T2dnzPL/kqng9axV+GY9vpnyedngZCXO3l8aIy1FnVl/15hWv9TCWSMfVz T3BzVS08xIXoan8w9BKQS6l2PXxKrsmffXqhg8WFdX0eCr6+NUIqWoqOos6X7dEpR1Q4Mfw3qvZQ Wb0fOPLFUOBB/Rl/6Di+k+xmMxLHw78pN60p9dHgenzJ9M+9SGGQKW/P6Hken2mOno3OtsbMA6is betLdqvoCj2QADRo6rKqAGHK9nDQ4hooDm8qMMFbRwVggZUgWn7AgGqaoZm4hSZwE0kELEEFbBTw OlYfcOogsyIiFh0PvwKJPx0pHStEZqSO0dzRtXej1OA6ZDDgPFnJqAiBlbDYj4joMEiSdQJOD+jt DRgkFdhQ/j/03Qk5kiB44pH6PKm/MvJwfkAc8AVZFETkQBiRVA5YKpSxVIHxLAlKtlUCQIEWIERQ IEFAIB8oreC/gqoAEDGIF1BVWIv3qCqsUNhAGsFEoyiC0oKqwzQXFAoSgRVWJ8YqBv1clGr/EhGQ nzlzCG/1XDGdX4brCZTCBsnC/BxX5/VMnhR/64jTXofHEBvQjisL/pe7eMSIdtnzWYfGcB/Q3Kkq RHNYOHVo/JgR2gow4zAtMPN4Z8LeVjNIlsMEFD0T/m/PvHb18NH/Z5RGe0gPI9OXMfj3gNFd8fZe hU5ZZ7Obu7XIk7vziCzm16jttNX+utt/w8VQ+bpBdpA2g+NYQAZmFArUUSEFQhopEOaApIAKSSoE WE0JCcoBUhD+0SZ5WTTF1RwMqQbw54mcAFLRRxvhhyYDxTgm2GLUkqOcoUM3dOr8fvoUv75fr/GF 8nl7n0eZJdmuPzj3NOeaO/jhx3kosTltU5b6rGcePbu5dX+eLsijhy0c8RD5YsQ/xhL/Bqa/zO+S +FoC+KbV3eWT+53q5cUHYcL8+r5rfXyyTfj9kW1iCXNY299JYY6H88KG595Hn5wf39QvPMBZ3xvj 38yxe970la31Xmtn5Z8Wq9syU4g6aVh+YkRCKooKAqwNPwYGn2nPXlNYwxt/ftKtdpVLtwsuEyuI RO3upWymzTma9YKN+6EbujrT3ycbyDywEGzSu1pnrmRJtA2DnLMYJugvWCBacTvT1eOrWrOdrWpk 8YN3xvmVHNozSCPfF2XNbbETSDDCgxTd2WwoEU+qDzS8u7NhgYNj6aEhkEwMjXl02gDI6T5kTZZ4 +6vE0e+IOGvcmSNyDs11OrkSZp+HZnxFiVndK56KoMokGqrhV5F3reFrMx/o7b5rGdtuI84An571 fjb8PovfvHp7ygjdtQJX9HKSqf0JJrbvV41dCupX05/crtVwm/cH/kCgYkEAZEVViDJEYRUU/0RQ FqKQYpIiSAqVFRZFESQABpTOCISKqqSICP/CCCrUguDNNiiQij/tgCAVzUNbMCxrSo0/0lmSMWww SPZRqvU/1AlREQogJnSqWimRGf9pP9gZiwEZJ/pthHptl/tHdSiyrokD/dqaTCVHVLd6NGhgWogx itCClj/+BlVTGokhtCSoc/5lzDGv0MC7SgQ4awy0GbbJ0zMpGJBETDUe/n7Ps4rcQYGzpMDPM9mZ T3YW9MbWMptgJ0LgELKhBRSRRZGIsVERgIrJGCgqLFBRVRYgqixBiwUVjEVVIgMYqopEUGRVVQ/T ZJA+8IJCYQoKpUVRYtgW2FqrIsCkawirZBUBAtLapBVFgCkFVZ4kFBQWRSKCihFFkUFUBRRRYpFi ySAwkqEIrGKxICCBIyMSAs22gcEscXv0mAi9tFHxz3Zm5+/hPFAkEkEB+NJSMULxGQQ7gSwrp6zP epZesZClq4wvKU9Ty4BhVrD/wl6W8AhfEQxXRBUJAQWEFQkF1Z+yp7+vJDUVSvkW7zL0NS4lfFRO PLE7ypEVWMEAgQEUIRBFQkAFQCMFRkUEP3oL1gn9P+quk44ofvv9DzKwhz4mKvh/PBX/z/xMdRgh +yWR++cp/S1qLezb+kNIG3I/VpP9mk0/9k0Bsf2cBSgqQmA/6tif7y6B/d/mm/TbQqIByK0rRwK3 eTM2xYNyAfwCzQ+5XRkPEtxEDJ3waV3IF0TaN8TNVNtDqDiCKJs4AvbeO8HUI4oESle/VsRgm8AD EFyQNgF8lE+HA/M/kGFzxTB12bYt7LYcC33d9fXswCJdIH0+DWbcNVP2GgFjU75VNAf695rQNtTs JfvTLIJTbG4bIejcep/qTXlp8/AAK6ixzkjP8JUntJpxw3IAD+0kAIf70CoQCAIMIwWQRghCARRI CsUhERSQIqAiSICEBgi+/+vt27VEm1RAX9ivgPklBezytS4vtV4i4l4/ojXeP5cUj3CmFYJ8TwCx dX6qzh42ujgPl8XVqVtbi0PCCKkQOIoNUTluhIYgwKe4UOhPkg7EOdT2Vir/z6TacSp8jeYjlsLQ kEhSBiqk4sjisFwcsvugYaGE0in8hL+8sMwZJOVRfU/edfcCmFGoigGjgijJEgSQ4L5mrXyGhWjL XkgZix9AivN+EiB3QLD1/phkWhIQgeFJX2udjv9+lqWvI+8jb4oYwy+4upg/MzZ0g2V1N5KKgTqI VKKt9nr/Zr3mGYNM8qBQHtuSKmYZAyxBLfUCbC7VToMwCzh6VXqcmyxJOM27jLHEyIe39Mm00OpN uFl1IN38oiHWAlMKcog5r75ID+JioEirl/el/bEDrJYb3EGLgSSMCx4nT690RGQPLxbCT8HYbkl3 ljQYcL+uwMpSBzsv0fR5FESET4gafwXOJUUyNFw7w+SiY+00KIC0pgG1KbCYiVtNw3LjODaax3lv YOatGK+WpDQe81fHEnwDiHSG5kEPlFTafgfgnYv6J9qKo5+QMmCbyKC2IViwWKCgoCin6/yShUNu 6787J18SQD7fbKWyZB7izT5wOfU4gTpiiXi0ETzCqRBdnwwJ7DIslkJD4CSpi1SxxyEq0Yw48mT3 w1NCxabDnPAiuQOeYn6R+00Elj3+BY/I4shPZhD45tOll4SxbepiYEb7SRIlIKn9IQLyeL4FcMrc TYz2ToX/bxcOwdGNjSnr7/d9JP/Rru8wv+Hw9xgJhHCwfCIg53+Th3UL0/aUcpO39rskpRocSakt WIMFwKiZCXzDuwAsPyMT4hlRr1NvjWSBtccbJTBAJceB0oXL/PgTSoGEOUzNTfoNC0YJic2eBFdq COx0qZOIpN9zMdi8WkHgMs4mZSaniUtv57iwL2/loL3GS2QW6F6SK0CyA6TEMNYNUA5WIVbkEA1l NgAtlwE1enz4e3yOY83J7wrxVDEgI3hSpIHuY1g2PG5XmXNsLGKYsyTqITMKraXqH1NIYzFxt7y2 3PCPUfw+Huv/DrQIH9sT4z+2ystsrOz8hSEsTQi0QUkkA/IhL0PoYGnVP7cdX2e3ICBoP+pNeQUI WNR5Ayyh/s9o9pACDEZAQQMhDqRMD5F2g0wYwISdM8D/NMjtIeCYsm4bcjPvNVtF4Br/HrNGjt5/ GikpNGYPFS7JhH2fxyj+sKn9ZU8L7gJ0DjVZt9ocBzLQV0MFdl50//rYvAwDEXqZgSKQkkBVUGR/ ifAwIOFhEQf40kJqBhde21pNP57e5UOggjIgkhIAQCK/qOqjtGiIGiLEU8hnaYDz/6KfiPzyCJ+I gqQhVGiNlRAIYQC/YaUU2hDu4E4rLZC0scsLYeAkxH41v4ED0RiIwgH0K/D76YgZgAfgWCwWQH6E kUZAGlSwDAgmUV+5XfDABwG5giQU+0MfZ91R89uanzCx+S0nMP2iaPxaPyZeuRY9bZI+Bep/m/Vm H6oppgSSIkPdHQWV9lhKXvPxeup7KHCkgHOYKwEVKcZILClcBsYKzi+VlMnpoFPO7YPt7xxQLp/U X0/oVNA2APhB9qu3MDUqIB+oC48Yb5bANy64oAcP6GaEwhiCT6d3PRDU9rCLfXGxgQbU+KlvfhMd 6vC3DoxyFwDgI9SuIYd+hRMk8SOA4A9GJ+Vjt4Tgs4x7AerqKXEeg5zpTselWAipkrgZKwbGKvW8 6QsHuyecDVy7egOPn5yXwHufXhcTCGQQGsQ8/MjdXD5SutyMjSF1+nX2qa7zyEiPAdxQy/w88RYJ 60o+cnLpcMzMBmj1bLWHenc2tsT5OZJ56hrBmrnOY2Y4J817p8LIdhRQXLFgD6PLkGtMtd8us5A0 EM/PZZ7N4yXN63rDKWFltglsJ5JIG4qCSCBHCrhho36Ap1AS39iXCy0wwxz8NYaQwNQieatKpsA7 kWoAePgay4YOF/eJDYUDYsMKNI0Y5Aeqm8YkxXkIT3mSt9aIvzxNA8YEDIbDjsjcNPOBLahKQOcO bnOzMh+6n6uukVyleZc8SsKtYlMPxcJPB3DPyw/nA/Cz+Vc3v9BvmytZbW02WUlqxMpMB/4uOEcZ QY4Ve6LrPdKG0E/N+Zqsk++hteXsifUooEx2hpU5MPHm+dkD1+voQLSAn6yG8i88OrAf+9nEfM9W KuxwYRosB77e0h5+PkmeSogFwso4L8ijgIHP0dCOw6GK3aIP0U7afp6PqPUf+5/8GrVN7q9Wi+BN Ne/p9DBbm2kag7aqycDcC5uh6pkZLs9yVH1EHv1Gg0wn661746N3x6nUFMpfwJ/h7mQDvrC+MagO XEEjId4HQ3KH6B4Awwshk+au0zuXFpCA08CYPcQgIFgY6CPtoFtzYyvhH8COJMz8hkDUDSBcNkIK IBFisKViUgaEUxHNikgnuiU1CooQf2k/7REOM/cnBvNKuo2AUFyu/pOrsDstNZRb9bdG6vLCSQJ2 d17l5laWYTK/3TD9VcnoSiSf6fzsfI4F7Cer5ledgpRPzwSg/TICRXzFsfgZn1oh7EMV1EO3l0g7 R7j1AYqGE15zSM9g8P+62LwK4oEAxEAsrqbq0HEra8gPAEYEHSbxXhV0AKAfqIcWk0cF1eHYBqZV CF3EkaGCGEC/0eapLBrZW2Z26CYD0ff2fWRWrvP9iPfi+CXIODX8PLPHP6wMcjJP16aTzGDz4foK DXqKLMHxhbAs5uNvedvEddiqA7+4qhl5Ywb80xl4wMUxxMBu4IQbnOw70NHeRfsGK8k/QA3ThMtg +JVGJqKHbqVXQQkhAGjhJUJhYoHBgoG1ACXJb/TRXFvhoNdxhuDQh/1KPd1X0h184wgyMQOaHMEm LT1fyKesFOqMgIaTWT294/PCoSTISKVGYOJsJNLr2WwwhL0rRNw32lIeP8bax0XH9a3d+51Yi6go wxP7NrgYZquRlcFfs1coB0J2hME+HgKBNCbrhrtxElH6LyHUUcm/tNYePYr2q8Eo8Z7nIyAxuPgx U2ZWVgxA76TiV0j5GRZBHR6tBpXFppA+SaBALGhcKiaBqDI/c4K6X1q4n6XSCKmJ8xgORMlNIiBi OQgG4UyC4mKuwybABAHUK67DY2l9dhpBQC6sL8AbAwmA4UFsCEJJIajneDv/sgHqbnV6dtkhh8zg fLz/EyBKGJjh3ff4W8W5aWv+mPlbcSqH92Mkl2qqqqqqqhTJ+6ed/OGrI+GdgUp3EV0oRDDa0TAh NqYyzxYERK4Iafjcxf6UGBDbW0ssUgSK5WJjUllnWfbtwQ1KQ1hJOWkvvtbhTdpLJ92DWR390Ah7 B8IFWqjD3HvAIXOCxUnfAo8FclYrYxvVHrI/+kLXgFZUlhCLBIPqP0UjYHTQBo9qvv5ZtH2JiD9n iQ/HD8B/uA9Vh/o0FE//6FW+Y6UXp4ADYOJ9hwU1LcI2C4LjH7lTAA48TIMiFhdNa7vOowcm4r8F LNCEIn9CgamzBWLsATRfBDxDcA4LEERyNJ99SEkJJkpmegO4iGkgXadwx8aGn+U8DQO6xgDAOJcx Tr3HiOdBcMlyOQPwwYDGQViaSv3fL3eN+dFeG80q4V8sgi5+1L/nPeEzzdJY0u8qg/BKYFfnz5n4 FHTYyhPuKyqI0PUNv+Kkf0eKnCDMBz9s+4XKIAxgKLYmk64nnASoSKEgJiRoAI4NQ5L32pWrp0bg oJrQgoKCgxYwYxUX5/KmIiLkaezMc8xwVMCWRgSyWRBFFEBIiIjroDd6T6tz4+ROiH8x+4PTs/l8 w3gAa/EFBL/iaRiAKsUGe6KnWSUin8clEyFlaKMKycB9EAQ9fCrdMOocGKiSf8f+Nh/y/5U+vo8s s68s8OjzOMKHH4o6iL/ToN98ltk46iqqqufJRcXfoCkyczORL1LuoLMenHNTphAi3CAVEIxPzgLW PVymZofyp8OkHqA/239ShpV6pvZvSBqQ3AQnFCQKZCHlxU4E4IlEeAXEo8dNAEKoogYRU/zggVBF cys9Tv8JCSMPEpqbpV0HnP2Z2HSKscoFni0UHJC4c4qfVPu+yK2/mrPlf3DYE+1L7c6J9SWtQKgG Q5WjZWBZUQC4v2hFLApz7A/M+egwDXNdGk8rrpM1M7A5FwdyNj94WxksA6TADFXEuKbSwIqaVdGh XANJt+4ODNXcuszViuADjYH1ipwAmxWxrCk06SbCkTUFgGkC11cDfdsazfuUunBqGicmGw25dYbl f3ND+tMLr/7ZUCPiuJ0oF+kMHrokImwTA0YmLcoyxG4/ekLf0hDhD1EK1Qs4GFv9P8dQbGuZFNPS GjdP4wdDAgQN/JYVPb7DCeor6B6h99y/7ZlP98/mj5tMYxjGPNMp8yg1ln7y1tD984jGcI43CJpk FjxOY4K5olwyjxwDWya9qrbVVVtqqq8Adycz2evZyeJumePAW2KMGZ4Xx/DMy3Lw+11lqqqqqqtt 4zMyWrS1ctVVy1VVbbluW/2221clqrq3LbbbVVVVc7zNWqqqq6tt9BRERIKIiWK715ewx0baXzzJ Uob6b0QMSG2bCDYj7h4BD+YB6x5xQKGfJXrRF6g+40Bn7uEtkQfVDz4qPkrFdUVfAA8FTcrR6h8A wF5nZ4ykATZjIRSPyPpDMXn1ZEtkCpFTv8q6ue2bKQwgwIfs13OsGXYyfeHrObknyDinTTnflAA6 29w+Trp4ZxSJO7cBXObTR9didiJiGSMgjBZIsIskIoESSKsE4KBqDdMIWVxJcCY2wa+51fQyywT+ gYBZBtqlSQn4ft+hidhjXOpLHC+40Y/e/1/8p/2qnCJcOx6wHrGEU9ZLri6I84YnXA/OTu0K0r+t ZLgy6yyvu6aO5XuUMXYHcOgDcF9qhi7wO3oP7Tz9foddsHsrIpxvWFVTsnh+NBc0FsfHaD9IBJpz y/X+fvvhhhuyO4gkn+5gOzO+72ef9z9m0mh/3GYlEDjNxD9f+eyf90hPhesv8G+UJlyhs9n56qlY 9nH/jqmTi/4QKPH0stn2UuG32vy/oBvPDGd8x5nDmF/wPcG5D5IFI/QeBw/2HuFKIAf6WFH0cuRM KMx/sNQgqX66TADL/mOZYxIS/AYlhC5r2fZ03uP7GJKYnhQj9URG/AEPlAsQKGb2F+TTZl2vLXL1 e15CguqIBFy+pQ6tRgasRyXWfuMh8uXBA0LnTTp3FLg8bWtxK6zjPUnCBsgV9jSjyixAgBn8fHKm azfcWqDP8D+6BEqCUUONuG8/DXz8AVmAHlxbLBq3QGGQ/ssm1eX3/h/i+oYzrJ7f1QviGR416w/C BqP/StAZOaaGBoE1p+gbxYQ9xdXpNm0+Wl+OKhRAkXXc9fCGv9B+Qahy3IQflsNBNZrlzOKwjpUL kGEgQOAP7Q0jrDB4oJZaAp2bSklUBRBClIP/SWU3cofqYF3hDfvG292Bv8eD9g7rAi0YAPTCsyHr udhCUxBe66BqXCN2ry1Sce6h1Xw0Fw5ngXAtronKvEXDDgcbKiIxIjBIyMUGIMQYsGAgIsGCsjF9 QghYyCKgopBYJAEhEFAIySe3OZiquio9SGdJNwPS8SHRdgxUua820JIbcqRVVbi1DtakouX2NmIm kHkMZVhQhqoGwNF1MN0GN0SzKf747jWBnlEFhoIjjtNGDf4BI0mb8gmKCYUwj7i9g7AaF9LR2eSq DvjGHTPE9Dqc/42CJaUq21qLVVo+zOEFhdl8O6INgWQywDbdsb71uC8f4DZ1RD4FRkEELolwhZRP ulIRzoN5W1CSoxC/78drmdmNPYD3ejKDwBsDErj7gCFxQP+XE472cILwWVYspQhA3sLMDPHzSzfn VSJYHfHV0G7AzdHocmm85LDSCf+rtKOgI46JZ9QkNJrWtE/EXM3ApqyGCOJQr79d8k1uudFk1Fcq RFvhEFm2o7czG2xNCZIebVw3VNgkInFk6WxfVtTDn3XWLYbLcrSUp5mvxHy4Q/ydysFH4iFiHaAU GQUgLIqkFiIvjH15+P8eZP6VQIfL8WfcDkOGzZUEgD4FzH9xLRto44C5/9PvLKrTG/+RRSx+bPnS VBxeRchUrW3grUp1BKmQyVL0P+ygubEHGLQHjQ3mLZNmbiip/lua8Tf1ys2SEmQ0+c2MGjNihSqN ik8kMFt7FFmNLZVkq6vyXL1f3faPGzmTxjN/sbv87Cx8iJ0r25h6MJPClj9VShl8Z1thUs3Yg1YN sGwaWehrsMoNhguP88eGuGpOI54uG5T6mb1Kaz8GkX64J3BzrpRfaetEwMszfNxc3chtZxONFZBe mcZ3AcYeJs80HJ51WuJSMYu9fD7q+lM6pObVlCu9MaXFQ2LRGMTa+TCYYgwXKgsQZTB/YvwaIDpI 3Tc9Sz4r7LYU1luEP73b+bZue5Meacpo6zsNwJjmL3wacon/SRAREREn41iQYPhtkYDVSLqV9Ikj ik3wpi1o1DiK42ZVMwHBzL6W4VhFLo8LwJzkV2YNpAnwEECm7RXYr6liI4I6t4RLV3laFSREuODg 9/OmCUyBFlp07Qvzmxh4/h8n6CxdyR/x4rw6N0rHTjF9BPgYvfY9HSLZWFsxA4jWNPgk5Y+uLpz4 G5a5yN/e5RZzJdNBPyaS51oc5oa3IFwMjH3pKqAavprEFxi6QeH05OIz/iT8Pz43kLGo/H5ZFHOP swziSUcKo6EfYMmDxgOp38+zckpY9pKxbWIMoxzKRoshdf+XtJMH8G6au/DZlHaDHEjYdeZZFsoR FNtwnTLxpESyMNSSWdg/MQRER6fb2ROYTJPvZd0corjTA+kaYFFg5C9JWNMXPG3jEcyYsd06JOUz fLbMAqYyne4k4LNLDDqeJwgsqKa4HDhaBgoPLoo4bGgkpMD3zKJRXsJJb4yNwjnBpIVPzYN8exvb ocFToAmzfhjpjZgma4n31mOSePFu6O9uj+3vBiuEEFnlLkA5YbEWtYfNslznvuHCxHIzJR2DZERE LRNJF5gzWJfGr/PsJCOLxVJZILkNyIs42Zlk482KbRsdE8ujwjXo1i1ZI+VaiYLF0LmNFEzlG2Zi ST2TA+ZsaZuwsBgh00aT+2/QUdNHjX4cdM/yBXOGSxgeBR5XofOp1otIdi7ySWKFwkRtsICnIVR1 1LmRau1RtOvCY7L77OL6MkmSBMh1Ci4xyyyLli4YvZM7LkLk/WhE3mREqUCysyZt4Eb9Q20o4HdH UToUeaV4ZKUpk7oTiGiBQqS1iKdpCNFerGXLAocK0yaMESs82CjjHTq7ND9bNGTaXPP948Qhe7jF qcq5EhwYMrTkoSGDC2SK9o2p7XnkrujiZufcQc4laIwls48VQ2YCRi5Mol4TCQyfmVgi5WRtOWhQ yPSr01uWCYsgcqjnMQJRPUSJkQRLvU60TTHW06tfuFVF5CW9wckvkrFjV/5ki+/3T92vHEcfiYOw ZbtzFzaYJsb9cVjD7i0ZLo26FHfadMB3c7PZL/7YMp8CnDW/C1uhIT5yWpLjuWO7ZjsjKwryBsyM azMmVSxMMUyQEcRgbeYon4+3cud4yaNzR2yMt7qnSvDUMYDBucnHTJU1J5eRihFFjZIFrqhM0z5Y +XmgeKFzo6qdGty0cIPyb3th+K3CaTWvC3RM7huBdFMF7I7DjSQGTNidCsD8hErkLi4sMXyYiayP RsEr6mPKNk0VNk36KE3xvg4RMmceXt1GaJWbULhswuN44TJj6Fdhcvs4EDofUaGCpBcQGkZOilE5 TgqVfow5WBi6e9SKHcDX0GjQparg9RBc8cuQpk8lJs0l890jmTDoxK2OLMhifsIJ5IIif7a8vkkn RnhoeQk80kNmhWiUKkWoQ2K0k4Y4MOoOBZ0IJ1gyUSP3AyOoSGsZJKT8vKBSONFtGZPJpcscOQqa YaI8YZ/TEmoRMlDoqVMZMLNZCxIikyyTY5BLQ3opkoVIBYysImB5gpuhR5Ct6G7MbfYpCFBd5G4c v8tjGKI7cUrx8mq+scHPSdCgtLfRr1csK+ueN4uiucYpNv0xohajzToYAP8SJF8padMYKcls3iHI FcE1oVxE0TJvJouX0rcuMQYoiLdkI1SZjh+NkuYHPHTJeTHYyr21cwV0w7GN5KWA61d/Gp1MkGhx jxpj3tZLzko7pxddMrskY9O9kCkDOeDWulnIUwxuSOj1rmXf/OBD0qHcikz08WOFG/e4YpSyXN+O 7A06TRstwb0S6HWA+Ss9bz/ceiv9xUrCqSlgFNmqKYf8fY3cf9VYkcZIUNOQ+fqpzI8xx9FG7l6Z YO7jeQ7ecnZ2WyOwMezDDFNNdse02kkil3WK5WR9CENlYGBlISDScKGGRrSGGRpN6PWyjTqj2ay8 IuAeNLk7Ap8Kq0/3x2csMaODjjGc/XCq3ktFidOMl67NwmS5oJLmMuWX0xcorfjXX0ehixyiizT0 5ZrsetMUefTmQzDFBLqo4J5SyOYs9Js4ucJa2GMEm+3oIICIfmjvEvCppMLkbFjk00wqvl2KQ62W Z10r2l5DoBdMBZaxlbujhiyTsPTDTGLZNLEqWOylXXSJC+SFsDKKxLJ5ViGSwKSTG4WzLz/EUQXL n4Y43rFiBzRZibRkNhK4Pt7TE4vyUndIJkvipcwHDKQMC5KaxIicJu/XY4rQdO5VZtYvSQOLSSLk oddJsfRjidFLMdES2FFFzE9BNgoo+IHU9LoCqu7yjt8RoMBkROXzQTachEKoUKoNbV43dux0e3co Ume4eVe+rl7gOLST0H+zDkdUtKvqZp6+s6rgoj37KEYC2Fyg3mZemlKy1Y3bMbFClCINPBofYukV JC5L0XFFpLWN/k1g+dbzxLGj7iIl07DmKJ4LwxfBMim4NoGFyRIjJwIUGCpsWtSibo8qWS23W1h2 0Zr5R1ZmnOnWU6j5pVP6u0/2qMMJpgskqKhvfuHBydtFzmVdjizrclP0fESVf2woJQmktFTcNlor VhTvomLe54khL55vXrGuQ5dZwJ+Su2AyBBkBQBAgwRT5Hv9weoJ7aUT8SCyEP2WoGFbcQrJCwH6Q JJIE5cb4M6HsOoJ1oUBStoDIoUNogGLABti0IDPsAzcu4sky8pD/HqeDj2BIfCTh/6BGHqZcgiUZ cpHBoFt1rWl4wJBjAgQhIj1dvU99/A8OjuzesoUPm5mckZYSxFU/G/e9fqWMupWbEiJgyxMMUNZb 76elHG2RZIr1BQlqy4HEPvYuXF2PTUwlnp8lw6fFUGCk6OTZLHwR95TIzHfibpi5JspGVLi9YrpM xBFZG0X+4GwUMoJtUBd200lAMx0bmNtjnncZXBskb9ejwhL5dldCkc12xE5oYgOOaKbj1R+hIePH UScpwin6/84xi3Hr9xPg0c3Pc4g+Z12nlVf/dUQ95E/vgGwmrJKDty0IejycvYd1c/Y8rxHGt8Tu OQRXSEYdWZoNVH6jFNKRNTwaUCHxUbvMoRV89iFAn9A1P8acW0fl+UTxA/JBvBgmng8izDpCjvyd mTfAVPt1VacVNzI1hU1q7xi4zdO1KVtWD+laaTf87FDX7qkjt2NGqcTO+vVSiaIDcOyuzpaZ3CbF On5VKslTDpYyj3XhlMngnomayaqNSg8YWqNKhMUvYuZwZsTrkvXSNaRHRnQ3bbapnCQVxi4rKeU2 5s/ljZJb5JQYra8o9o+c0NcMcf3Fk2k0MX0gHpTEd9Ljk4N/K6PKodeex+i9p058XdP4kb0YZOFj h2KLni2iGOlmgtopXX7LkU1/nQc5yeXQMlKD6aiOOHHxNQdZXJxSiTaY5lND9j0dTM3EGWyTvzKp otT1QoVhdS3eZ2ngqxo4XJtCWuei6lvk+FLBqqUwmLz8RNQaJbjwsBctU3MU7ZzagkjjSmzWz0y8 fuM7JkxXRgiJAwXNvE2j1xIp0UwOV5rJxiA34UPEHSvcHyRPSJH9kOtLF3w9Dkk+VLpzwMC0gRiR wTAEVV7PWHerg4gRzHYcghn9mxd0ExgDPNDq3616HcahVMXSCZg3Xr/aQkIQiBJBWyAkQ1G0PuuB QUQWjc0EqEuQsJ/GHobutGU/ckqEKGoJIMIM5D9A/19Tx+MT4okD1mtNgMEdpceVuVkX4Brn75YV KQLcdYJhzfHDBLTAvjVHtwwEDPBDGQzRpLcD1KKBV3MTAMxyAusI52++nANhQbXA1DnSAH/KEkJ+ Su1MeVK1kA4w5XSRipp450JGoE00EREYRkjFQSEWCwWMZP5c0f0J/oI4BIGITnx+uCvO8FdcB4wD nVQ+QeCJc9ymQhzyQWT1x2diAT8EQgFtp0D/TFXBqvDuXA0RFP7IBIjICUQJAaiggYEV2vQFQ+4y VMOY9sdaVwlrWlliWoecvZXuvVqwSx0sIwIBSFSQ7581A8QobscSJ+X5ELQoKQsi2qguEEPTWpJN oHvnDAdmSZqZEUNNG9LCtYmBuT+sJECMISDGIYgfwcfAOd4U3ugzzgEIkQMykkX88E96vBlhHfCJ N3yH6l3MxmpeCtoJ7rq2OcE4dUgByq1Xrjxr92K5vfK9WnuKQlVAnv3sNGjyffMCa1JZM1os0JZH YOBhgQikgmAgi5MExIAJAImARKR3waEGIRA2EWhPaqlAgULB0XzCzFOD0IanQRcTq49yal5EAifh +YFO/UApMaQZE+6Fj4UD5+257rvOthFOfkEdpFbxXgWKwSKzESwKAga1+/sHDp16svxeW32a4PEG sbK6XR+OkFAYjCLFJBZBGLEBjAEWSRBBIRAEghEQgoxGh5gVFG1UJ7I6eB9ekridCT5AohqdcOIa kjSRKKVqEYQPKvr9BrgANgHQkZGBXvALLmj7odO93yzmmI+RpI3/AduGQo8sXmn6l/2ST+UGSBMj HV0hOCeu9BNBxDrhQwE/uCDXWMBC6iYmnckivBZfyoOG0kM4QHWOYTKOpV/hJKah+tnkDNpDR6WQ pQawgkP5J9DBixEWRYCMYJEVigjAkYCKjBhBQgKoiKAgfnkhqG/wiIMtGB5+zrwqSjCdMNnx/HxP 5ObxlwzlTPgX7OS7NxeBUbM4Ld6zbbRGsGMsEgaemQkwEEEKDFjSK4gxxUHGkEaGZnJZxDOgBOJQ 7ykxKRQ5hNSABs7ISwhdsP7kIGtgeofYKDIIyKRViwRIyDFARFhBYIwERSCkRgwNxtVgWsDeKkAC +bqmhmompqqbkMMNmOEDJwDEtaF1asJAWlfMD96ty+FFXzstQlOxs2SIanjxV08x0EdExU3OCWT8 l35gJ+nsE4/TW/z+oHFpFOrjDoNamClpwbk2atqZNCHcEiyAYQCJEf07DG44vJ6DDiggYx4KsWOM yNROdE4ehD2ij+AHEBw8rqdDj1IaxO1yGqCEgkgDyi/FKC00kU8eqp06KklFUtKvAAQX9iQQ8Agm uIQLfr8PqIgpz9f5HQa6Lq+bwFYyQJJA/L59/3/hz6ss/BdfNArCtf57+6+Vay36sLWq1rSpgb/b kElNEA0j0chxiHwYu4Tg4MdlrSi0ohIUyhylIiIhuIiIb7cPq/gse9VHT0efYjwZKznK0EL3KRYg 0qFw8EZriHKQySq1rL/v0Urn3wcdh4ypSWnScJ4Z6cH0aCpdPJSeMzSS4UXU6bMY9OTKv2TRRY0c MCOc6doyqW46e4YYgU8bTiZOdYNR/xyjey48icPc4GxTGz5NdUwmLyp9cREIe6GKPjSeSFtreE3f TF997wcXcPsH+PkSyJVJBY6czhc77369zrXGHLYkwYTdj1cjTP4gY0eLpjRsq31dxHcPvOEzswWU d9GvKops5bYvbjFjeTGcniRSxc74u4p4Y6M0VWmjG1K1GO+b3JItfWG9Rus8NqvroScS63JfqNBA 32d8RfHNJ4ZEE0R9geyT9yn1ekuFy+qBzuDqQT0J6dLpo8XLnxzrx4MPdVDQ83WpVKmofsAwG1JF qE8lF5eJc4cjI1wg67hhUcqVFHOxUuY5MGSwuC12KrIYGilbnyRULpFNX1ZM2IGsBrovCYuSWovj aDJf9wSsnLld7ToqbJSmxYrsatTQuiRUwx99q8c5ZH6mncotjucz45q3jBu53VCU727RupKmtGjJ W2b3sYwYI5K8lCZOtipBwTxtDe9B2xjRlLZLTrXMpFKlQYPbOaMmNGMnE0hfVtlCyVzblgYNDM43 DiavZFziJFKC57dJr6xs0CwfEnIA4mbh2CtWU+9JY4UnC3jLi5GYYJZJ0DsT9idJhEmpkoYTXNCa 5tecJLOw8xd5cZMFbQjdJC8u9DM4EW/XVeoTTHYRP08VGYGKPxRtpukHtYRvuouUY1gG+hywyMkB +zbzqYOE0y3RT9ccv104nKN8uxslz2nTJxjOggvbb1tE21jL5ZHzcWOEEmA+uZNFjdCoTHZcOQ3s 2FQvjMMpnFt6NGEUZNznkimK0dO+jDs2MpHA5Nq8oWNZ0bbnIRMJnwgnriskarJFTBdiqj6m3ZTo 7JJUl/O9h42BlL0Wh0XTB2i3SPg7mmoEBpC7JjhPE4EDRGeBrsPOisxikQzscOgEdRW4XsKLEgNw 4cjJMFPBaOZPX/E7votPyYw0psPG9JnnRoPeTZgRENBosQLiCjxxMdPtW2mU4Hjmi5c79RSboMkW qjHj0eDZfZsdStlIFGjnYjI0HyeKamO82OZ53jHBfHTnI6bWemukmI/00ReFj86d/PcjgwrBPU8T 8WBzIv4p6MxZDJBTaZWunBOgWJnOYlOTClMwiWoxlRlHGyyfIYNMuBsniMinyZnR8GHV5TIpdOul J72u0TrDnGMBrMhfa4DaXTTaM87tj5jRmeqQrYjYvRKBLSG1+WCwXNWLm47cYTBfQWMQnocbsVmb vXVTIXrZTFw1pIuhQ5k1EJ5LZFN/e0kMUGfts+ySe4sHxw+wLZPGT4MbJWThRxpuNBj0HO/Koydy NzkXTh2qft2SCGPFoNoei4tz4wUGMbynxwgrZouGeEcRdnyhfYxViSykwmhr/a8b7tPpkbzHSVIt T6JUXFcLNawFJl9lEwGAqeyfX/kRHvhwXbIxrrRDJI7ou2dBp/MWfUh1VOhrpgqPCrzuDnEouMYu Z6utLyZRx3FMXYgkQgL4ew+d7mUWxAdkfsx4xQplawT81j4iTJyyX5bSNufIR1wnUWMfeQ6YjiXH IUtco3RM5ylowwRkxYLzzS8KMuk3Q1w6eiThAyaMTBo+03sr7oiIh/ogPBA+hYRUh0YFFJ0LIw1j roxtolRKaqOMw06TX88NeZOHDGbn74umzqhwpkhh0oge1vZTBfSULmHKT+KNJow5XrmOBxF53TEK a5JO0stDJfIbOc2cGyLVyyNJgI7tN5NOfWgo6eLJ41jpwHyYMHm3lJ0EFHkhGzoeCdX1IKEPyQxS ZR07ly7Eksnzkb1siFh0nmRjZYzyL4rEkFiI8spVZ2/agfqiD/iW7lr0B1zxdz5kTX7AlXZFUl3l iJAmeL2GfUvMyiWhcGfSJ2mCzk78JhMFTGhzUm4GFXVajGJnIZGRS+BiZsbN7vbSaG1ZZOsaODmn ybOcRR/JBRA+D6U1PESgiie9IDyAn+RCAczpZUG2dLGxThHSXLRxIxsk4kZz5FT+yGMZJX8aHNLk SzyaTnI3rZ6QsNlGscYJFbVI4sWgDFi5lhoxm0NJ4D5zm89Z1ARkYMghCCGO8lA7TzHpIuR35ovk Ul2U5+POzvMtR7eVran5j8EogojxB8Z0WkwXe37Bgg45JtPxJGRTcwxfujJYpNB+Ml08cN7GGRuz 5fjN8zdxYME42huQRGJkgvQij03gyWWbots1Mh9UCDGVplZNZoYN7caGEiLCQkLylzinSx6W/jPC j5o/Rh/cxMGgAj3NFVXJ3a4Cn8Q7LjurEzsUGY8r0bF5VNZJHvwd44XkerB4IW/OTHoQkdCeOwUP 6fISfitxxc9/HZzopAonUDXZWwQl7OxBYnmVSvguKed3SIELHs6BiOypflCJwhSg2rlhk+P8D8Lm yjJanSUhL69sLkmDputWF0KTTNGSIlP0BAcQNAuTgYK4MGXl97sGomzctjLHsda5+YkJCxcyGpQG SZ4Mk4YbHD9Ppq3zcOjzjli/LfWoaEzY7goyawfXuZ9qC81sOwUqJ+qIedpyutLGk0KP1eeVeVe7 jlsG31LsWOXed0FOBUqQxG3WpSImEmpAZ79amZQ+v4Y8ZGg4e9nJkwpVtDpRZGF4MTvh4ecnC1Gk 2GDmRzBkXNo6k5YdcOQEGmHbQSdMwv9lJTKKRHzKXoSzrfxccbThmocIAt+amu1CY8maddF1gOkb hK9oVySusmaDMqhCUCaOUsnVwubXEtZpmCYzhMnzQ/LeFMkW9+b0bIuvtNEOtEB/T+gWXgNwUiyb RdpEumE7rBN1swauUUsTsjamMYJwCeyXiNKTldHGJ0erjZvYSkH4qw2rwYG7tNmC5MUPzF0slkzk lNfiyXT8SQKjevweRzudmBreOufu0Lo1dX1BVjfDG/rIifeVIPunhl4enPrKbymTB5NOCs+mLFb2 yPkSTOiFY0eY19gGQQJCJ9wPqAhuZqCdCvDFkcZKr6AcPE5HiKTmliyuJBBOUKHORkP2Vh3wKfxa wQeOySdKe/9oPV25cxP0ea/ou/mp+pxDY+rJhumlY4Zc4dWyqZQXQgsE1mtGJrLIV8Hw9L0eXeDv 2b4p2b6DuXdSQQOTHla9ke5Ao4JuLqYJ0eMcYkXplTLh6VJA/GEy/0wZM5fTabFpO8JpggMMls6M EDMiV6GC/mIVLMb3KcTGjJRMEh9yFzY+41zSaKGkkbTFJxmZreBUPwKfYUPzVE8kED4Eb9ERPuDe ech2ZOjKM85Aeb7d5wmp2ZwexYNVLlqlJI9G+iZMZ7e6fClBrnQzSppNpOnCRxhixbvii3Sb1yEy OXBv8N9yLJvP2OlHrH/GE58WnMjinx8lI3Wj5jdDvQ4cXRK2TCW/buYLy56zN9Yu2eBzf1FwklM7 uZIZjaRwFede9JcLbcwPM6lA0QY4SSHurLflZBqN5Cw6NrtCJ7gJinYcSOpRQOTUehAOj7m51axq MIifWqj2z+rJA79Aoo0JaCwGARJCMYpiiHKO5E7rcQw6QOgNs79lArG0IWIgK1JOxIYQA1U0rxoP uT/HiMTiPeJmP4uj4gohNQHALn8nN6ret+X+tAs6gkIEhIQJ+cpqe0E2jch5Jmid+w3P0CfoCGYf F2gB1BmQcPaPfY9h4Kc4FlDYaFfCrz7U73A6TgXF8uB4iP2E/VBqRs3C2PPct+4qDO99h2ETBj2W u9DpxymZD6T/ndNsGwH//nxRQogAqsgABIiTeO3wsi8gge8DmfiHkdp9OkfinWncmgOZ6x0B+JwI qnsDc+PcIcIiGn7mAbXnNPMouPZBJHlJPvCEkiYDl8PjUTPafOV8VRQA9IiiokICh/lAES3QxMBA Mky5Dmul7UhiUUBDE04ACwnN93cfhefH7+vtd9+PuEh8DaU9HPXPs/b3+wLfwytz+7VynxIBggiu DFUXkCIhGCAEYqDIikSKxioBCCqkCKoGxYgFRBYEVAs4PWdu1XyzQyDYG4NwYCmv7KP/N3iRWiv7 Yg8kPR+H4/L5BQPgY8HnK/FmSxcYqvzsFPmmvnUL0tYqNiWf8MSrGxa6Qos0tC2Aly0Z6ZuZzkLl jAYcuVeL9vkyYyheSM7vR6p0ZN2sO56PEmvIdOlXzl3MYjRyEZ4v7bIopx7klskbNHS148ZFsilg 0lFzovPFmubmjicyFamC6NlsSzjDyqsn8w8+y7lBmuyff5PxYgJVMnfmH9jDop/uRzKYlYTxfYUY DUddSxLrCyxGkYYktqVKZFlGHdZYMl2XC4zsFJCkjkYOc8OaGNlh00YKPGihaM5q3hWbq4zOLdqm nNX7dcni/vjW60Yzw7Hw8GRjFElM7waLcPVo2Nq31imtNg0Hk6KbIY+9q9j0qRBw6tQlpxFE/0ct cIFnTsuHfqI0CIxgzzmxh0ZX3Jw55DJ06IvJGcE+uE8mIHCmqo2t/uc88m7XOGjgpw5H2TBkhvvz p5rJTXp0YoPxltZISqgh+zuifl6RKljJQ8uyPMETTCjodQeq8n4SFU77KKeIJF0saS8DorPOspkm ZrKYqPXEnJBNJWeLeyaDOei8CVPrpovF9XQ8V4eH9/riYI4G4p/hs0RB/M6wcKs4lk1xrS0S43Tu EwkaqWK0fWGPrJbag43RTfiJvYiTWLlItNRlS1t3K9K8M/bOEcOPSMLDpAY2SaM+OaOmGUBmxOVl NyNsh9p8z5pHFv1S7wXXPjU9w8LB0eNDoupNGINwvWPxNPJ3gHKeFGMlChW6ZMj/f3OTXyYlU0MT ctJ+x6q/Z9gkuWjLMha/1pTRtki2BviuSpo7pG7bqUn1iVFwMdOQN5L6xwaLybJNPs6nULKqdPWF Rz7Q3CsY8aNpouKRlNkmKvqXT2h/u4j3DX+PEWJG/B0wGPHc0R6nE2nDBOeyx8fsRPRE8OAOdYn4 CLjHYrkiNGCqSfswQNxkdFqWTomIyScXSpRrA95t3ZlH51CeTqgjqd0UnP4YTVHNJ2cFDni+budx h2u3RK7XaSM2GLkC1yA4ztKhU2UNsknF1nIdqPDBTQScFFuxzAeGR0wcas+qEjxjQqb1v9kGTA0D lXa4SNQu0mHbCf2SqQ4ZLmqMlNqYMVua4NN/z7udXTyRLJ5IFZRUyQLFMmqBMMngt1EsQIDETb7K kdJiPY1CaYvqqVIpU+Ityk3WKXNiYQT3tUjyVRfzYtGB3VEbHdLm0+aoU5fI0co1Mg8cCogmZmIj JmtMmLizIJULVNMwo7gaCUCrwg4xoqZpcebPuXyoGP0n65lwhPEsOpZ0yaHMrU3NlMHG05Ye5fpR QfY3JD85eD9+3ok1a2Dl/Jfdj3jQtGS/Di6vR8R7ERcgg5PzaoutBEjtvp/ngP5zQujRQ05xchzZ M2QRiaKSicIuTSaN6N7w4p+NnmT7OtEHU+NHxodO3SkZ6UswxoJynbbC6lzrI2rvJ7GO5MwON0PZ 1Y8fGNmM21d3ymDp8QwfG9ljmssyYhU7uyYwQcGNmakLxOSDR2Tk9JSNNY46by9HSCGPLfqdmmna J3JQtQiRT4E/j+xDVgmncuuQZUg6OFHHQuR0w4R0WQYHEk7eOY3T+4qTLnWXpaApOuEYK53Z5Ju+ t6pH8tOPso1jFeIMSf0WylPyQl+8lo1kxGkNXPI5KJkpQqLofrYYFVN5kZII6GjmsimA0YLEJJKa M89+KMJtTR73jIxsT1GspWqRkquyGbYNW3xPDpUbQc3ZDydLmdFhYG5ewbMZDBsY2PwNEai45GrG do7CX3tT7GstdYKzTuM5ucTL9bjhxcLbcGCoUJTWZNOY3fLqlw4Wzkiaeilnl04OUgTS9i+x1M+Y c0nHkw/ThXGZQyfcKT3YTZnLGkyql3jaGe3NY1XeV2y8SU4n3LFkgUf4X7WUwmNdPvsnNJ8vW7Lx YsljZTHt0V9JqFXZ0uRJRgKVK6ePP1DEEoRwGRyZLZgKcSkzVTkFwcgwyqXLluSz0HatpF/5AJUS 94FLqvIbTBjtR3RVmNnMvIXlFloM+bnag5qyYskOls4GUQ6BnBg3CCq0UWipfg2aIVC4xmTul5FC s4wUcjnnWXo5tpAvYyPHFRxj7JggLTdBm1yUgJJRS7dUVDJsn4K6Kn6Q/UTMmfg/Bs99KeR/c2ny aPsdN6N4skPxPD8KJ9YajDEPp6Q4TnZb5ZTqcfpnYULzfw6rk+av8ks55p41TUQnsq6jWHYq7Qr0 1Pjb1RBSMD6In2U6tr3tHfKEGiVsyMVbLwe4x9kA26eQ5DdaKcdpG+SnqVlQ9pzHWlXe5Ey9L+ei xtLBIi8elJMsGJFMC2P7q/vogsSmBe8i9bSEo6urEwDEcedTI1n69dYYu4uOcbTTJQ0ZyZKMkDZP Ad+bCcRfDm6Mt3j7Dl85nmtmg5ouXRtNY9uxVFJkKYN0mMUfkm+pPekkQKmh0pifoIeq8XLAIsKs gKoBVoQJIEg8qdH4gT5pTHJLEfzxyLPzxChxyCh7GqenXz8/TQTluHqLA778eXnBKzLHuSPUVokb l0Phh94ZvjAzvP5nYQiPCmIQNYQ+p96c4ljH7yiIRkYEAOiT0DQHsDnwPcwRiayp3lWIQIGe08ZJ ICbLwNy2HEYqHte0MfRWZDghsoRJo/IGk99kSUGyHkiCFxsDnUhPiB0GBzeHV0ldj4PZzms5eco1 vQYHqjr0XLngXPF0x0y33tUZLE9aHaAhA2lUxMufh0jLiYpSL0uWLeSvnDqdJMpOgx8Diouqq7Fi XSSRyR7CtjwdDJp4NsFlpOEb9mV6mNUlOGS81mhWwqMKGcE7aT2PxioXibJ5DAXwa6Ku2atKxsZF gGy8iajrFoZ33xUmZ78n2C+XpNQW2lyM7CdCnlhtTyNBM1mWnodep1G3SfsRBEA6DwBV27K+DFRB HtEtrNvAaeE4nn2mesqc/JElCXKxHljyiPZyUfgnUknhfBaSVaRNlIBgbaTct/cj/cLG1MwLjM3M +cK+vWtsnJvD5zTMFy6aYIMpMnG8UZVPuvjybOeSN8Yp125nGLijjTyw0FM2NEBx9ALlSL7uSmAY xQ2G983va8zJatwydjqVNjNLBztZfzSD/eDY2hpiTQinjJ1vmZUmU9BmeP9P1pNpMGgY1n6znv/W nl5+hZNehXy8Ib9PYqmaK0KH19ChNPb0TJ6l3PiW/HQrbuXO28UuA+zAbDzi/IrWIOBqij/QQMHP GCg3o+t7vs1gtgg4VzUWuS6deVPgghK/mo5NcwWJvfBORw9S5vpZP2rmCU4YOXpFV0mDOkm41IIp YrahTCeLsEdnOXhQ1ZyTh0V8nOZ8XII0YSEzB8OYNEhagUN/iKKsiunwxbOE8Iw9HlnIUCatIYzT bGT4CaqqIkkR/IsYlo0rVU/EmGRsjJH3/wi2zvSaEwar/BaNzPbXgzHK9E60L+GWKHip7eZyLlvB QRxKk7V78FjA9XFaVuTHmCE6jV1awTHAv9HuqzKaNGxNmjWmeD+bsWexDXHv0SPTEV2gnEcT2NE1 S27pxI9KZUhE648Ivcjn8LyMkzk3M19eikOEEDZANENoaIzi2d5G6W3JoqUsR+xAwpIdC6K2SSGE f+g6DjaJ09+00h9vToDInjyxm4Y4jubVU77MB8kunnlapde8g4waL6Z+sljJz7k/W0LYLe+pb3XX uXcENLcKXdqEeXfG+hWoLHIFbJhhvC0KGBAuj7+w9oeogZK4hzBISSJJCMAkkQIjFy6gPYrx6+vn erq6zoMAh2FuUos1ovzkhkz8Hq6iOH4+SZKEJPe6CPT+okZJGb/FPmSzoddLkz6iD3A8YI11qI7q 3C9TG7gpApLojONitBePHA5/DTwcUGmmq15ocEKiuJC1fLZ+4BK4uRL5Pq7SQtqMEhhDZLaKcHE0 xyhxeKjsvBz+ZOlru7BJRjkJ0UylHVt6vFgumLi/qGSBJ1yg/VTZ8hA/jp9hOhP4CO+SfyU6+Pk5 ww+iXu6mzTmIgpQ0SCjMbvgMCTefK34GofzA/lRRQjP48TDGSsBGaFEsWMFWMYYaSLM1QNYOaw0a EBn1+qAoIHlBBLPtifRPwCvUT1h3gby3CaBPwwSg0I2gVd4BjRPJDXm8jHrExMQuQ7vI2F4CQE9o TzDvQxBBMbxTYrog2j61OswSYByeKd21cw7UM8ugKKamNNFhBhcyQyMJgyEYlghQsqINkMwDJD0L HzMGYg0ai5ZkBJYgO+JZAYCJEEETuMIqI01hIMhOxCl+QktFvB5UaDbE0wQgxQ2oj6wq0SDIxAOY g/Ro8lEkXxKp7wrBRwrxOqh8dmE/03sT/OVDV3Q/163711hmTK8DKbFHqL2IL2PKFWTLcsIZ2rwW YNjba6y0AKSQCMUgweQgfs1ipnj/op3W0kQgeMrktZaktDiqjGm37acIE0CAa0UVWC/l6P2Lo+8D 15T0QP7UigauWScbnRum39VD06gPzPufcFAgn1Q9A4QyexBbfqHvDv1jrtyMbUEt9gasX09oHSmz YokwNGgfJeZYJAgJAJEjFiRYBBjYKSRPohjBDWmAioomiMk/FszRpeEF+91PUEOwLFj9hqCzANaU NP6U5g42yaANcdy6XmGQ6kkYHFBig/XxaMcCl/h3IZ3ooFxyCpsoNxB9sWEGQkWRVO9H31X33+7c mCKDERkYMNWWLEH9eymyaakhjAJEkZH2xOOEic3otew/4T/rIyx4BxVN5CuVicTyaWwhs66VxFMh zHaQAuGZcA2jY0sObH8a93Z8DHRSVvlLYwKcaxqWMtXrmffL4/umj9rH/fVVFEYp+ctfYbYJEDkJ P1hYU/vIFkqpUfAKQPaH04uM2/q3yR07kP1PvBObgyHiKHrJCRnj3eVuwhgQhiEKvPOAXmZzFB7F Ovm6eTDhG/0Z+gAPf7fsC3qSBGCMBRkEEREWBD8QCTkPzUVzNqae64AZMFzqUCVwULUGJCDPxqgq AUy1NfWNRFCKJEMCBBYu7N0obEnH7sKfdzvPcO/SJ/82v2eu3/1L3vb/4jxTCTwpDyzDD7z0xTsN NpU4HZTScXUphTjYQw+NypIG3b2nC/vsn9zAAHlDvuB4aA7+EUPngCAftUO100P7Nin7gVTOg/g9 w/iaQQ/eA4gGkP0wfObYmlBZOArCBaBjEsxHH/wpbEvhc95ngrc9pH9MUsZFIhCMK4CWlA7gkPm3 KIk0whWQoa8r1PI2A6dY2mJjE4Ti9GJQszMuI+DCjlo+W97l0o2yiQPIprK8F0ZpkmaGkRMB/y60 5IQW0ttGjDgSuUaROM1o1iaM0wmCn7d2RTF0WWWcgCYL5IBo2WBZA2yBq5rQzLjE+Z0hhWnG6ynW tGpWHjZjxuELh5JjHjqZwOTWTDjC6YVJqZTJolimhcr271xs7M526IYcSTRk0zKBqox1mXKBMYQr bm5ZkiczEoSTVYQTJQxSKyfu9Y70+X8Kf302rs0t9py5iAhkMQ2gOThfHsEytsAF+USW7TouYb3S u3Rd4iZ7hMnlL8Q6ODKnPChNB9kzRwgkIo8BoH9dOHP57j4EGXIP7+fAc1+KX+i05aF8CPi54YOw KjvxmdgmtpWefRZltY8bMwYo+77P73H19SuKDUMFikHDS52ALoEAiEA1pb8ikDVAMEMpQzqASSAD 5nLgEhDM2Z1YZqgG2VGG2kKIpDz3Dxrj39cbIgcRuBtchzcmOSZXC4wDLMMbLaQgMkkVVixVFFii iiIsWKIxRRRREFFFiIKKCqqiirFFFFWKosVQURVQWKsVVFiiqoqxVBVFUUEQUUUVYoooqxRRRVFi iIoKoosVYoiCI+ylVFFBVBYqMUVYsRBRVm0qqqoKoqxRRRRRYiCiiqsFFFVRQVYoosVRYqrEQWIg jFFBViqKIxRViRBViiiixViiqoLEYsRUFiIosWLFWKqxRRVixVUUUUFUUWKKxkWIltYqsUUFFFgo KKKCneZixREFijlqsVYqxRVMLRREFEYKqixVFFiirFVYqxRVFBVWKsUVQVRRRYoosVRRUYsRHNGt GkDxukxAqoFLG93FwC2zDjODSq6KMw2IQ7uY19x1fgVL/H40b+cZjJctWeJlfl/GNvYvZbTqVupG NjVUUKFXr/aBfa4OHTBVjEH+OrkZcynqKT1+HRpSfYOVaOzxFMq4p/q2snkwcTWycnjcnX9w9g+S pV4WGR9bl5RIj6Ov7kUzwN7DTYHlTBsnAsZsfJBTM1HhPc0qYwrBKxUiDgxAmyZdMvXpUmGslAw5 SdCqV4wyZ6FFV4525GsrJJGcugRqSv8hEz7A6dTBBNZP8snZNFJmZVrQkbOjoIW2HR1AvArMcPKr aNiU2MwZ+Nq4c0Kwcu58LXbq07acONj2s2wGzhBYk5cubKSojRYcsb6Sa05vXcbhsX09omfRa2Np UEbTibkkvAtQ1PvFTasVLGyBkyP1qVs4N3I4K2NtHFk0MKkEBc2pdMGko3EmFTL9LIYU+SxrRqva yYTBuxiSGPJjkeOtDmEuW3Q0pd9h1M+a2z6L917z4NmH2KbfXzljXNIUMRkp9qcUumP3zqPKONGd EdsMNeFrU2f4SRP2ie4IWQn4SyjFLJ14fIITXxMwTeeGLJBNnU07HdaoxGXC8MpckUKRkbKfcNHi nwr9pgbmORQL02nWODoF51kv5eKGdaTNBUsdYLlyznEzJoqY5wLEEpZy3HYyX3i0tc50/XHPn8Vq cNnhkHGNYTVzpZdyG6OrvKJqxJVrS5BwxY+RglN8+Tx0fTmnFv7yXR7o/jN73MyQT0+bHw6Gg2+9 Y3iwdce4fbTMCp46iiIhpjxw6cymN9RiXHMG+jnYDxQ5fcWFIyqPBicozzB09Vi4NZH2qkwhjFJ5 QYuOtHGr4exixmOecYzuKTgnKivVDDkVOOwX2RInBzicXET6ICJvJXqPRbhYNQLbhhGqPUkEzlyx ghN5d5G5NKR/5WHjan7BSbmSdfwJ1G9P8R/BxwZAXLHud+cz/v+krLSNRdGezYuTbiBU5Q3S9yul iPGImJ4rtG4Rw2dFAYqXMpXT+hQhoLj9vL6ZY5rs3fLJ40cOnxotYkzxLFepOZk2xo96eOavg1ZL qcPVc2aNjESHxa53v1UyXt06ZqEyivkpSlUsElXKJ19gNGLHxSZgPuYtXj7R5K4M/3FYg0lg8R8Q Ma8fGBU8agufC/IdUUaxglYYlq1yRVipOgPAb/QAh8gA7ATJAF6FjgbVlhF8eArZIdPmagO0WQXi dVLkCpQwQUdiYOLkHHZAcM2Ox99GkqjMZR8h5sW300lHCKoUz3RAuUwSGDBwk2+C3vERh5svOmC4 Nt7miO6Y39O/62YL0HQcPH6fygw6R9oKJNXtzSfQeJukW/aYpJNEWN7k4nTpqjZhkullHvvByxR0 cfhX7Hxo2OFHPR+SURJwQlzKaEkefx1tSisXHb5DCowZOOmRJ5rmBtMFiVcBk/QEcVKtgyagYIws V5BMTyZTIyu01sMQHYtUhUulOgu9QjYvrhAkGOY2ks5c9BXxdw4wQeF4etHEsqPwgxWxJPrJHJwW VvsBCSSW5K1LlZIsXTozRrCVbRRu1z3eH7KZFDUTV8kYmTrdNIx9+TR0eVznc7OlQvIWvr9+wKpq duHVzpg22uPHmtE3x2EEWxY40XqdlQ7uYFMZnQ1gaJuFSlk2m/UyWKbyopsntldF1wrb+gIRRXYz BXGg6wfu8+hcuymDZFywfbJJDRRz5NHDhKXMljFz6UgSSSmGN2LsZ5eVsjuZlxahvHY4W0zJu881 +NcB6/FzVxcbyXFN/iUVOZf7pCOVdk1vZeEwWSDmh9kSKR/0LiZAQ/X1oOHX84iIKZNftJw1pVUg cltxb9KbF4HlX8aHRTjwwuNm4RRyDydGbcpdhIeBmJxWNFjo+X4XNUQYo7CmuEIGC4Q3iuHbTex9 KjTJjTtA0X59sgGL2G5O63KLI47EQcK2SMcXxZHTlihkynqbfsGgizsC3+OlGLDuSZznfD7xjMCw 0BdpHLmmmidqkiZtf8AbE9EgZmN4UvUaZcvdGdEdhGT5z2OMhlLVN8IZi09HRFgjginNGzDECqVn 9NloSMm1fs6TZwymDkavGtIQnfn2YJ5mxkGS9icHwTczrqS5ENjRlBtBw2KScLGiEc2frBQZXd70 niT42b+CRWGUmqOM7uW0kR5eaON2UzOjSC38VLDzhufFjr/eRHJ0DiO+LnZUemDzAyB7KLZBV+BP yeYHwlo/oycavFk/FAkOL6i3VuX7nb0mUu7ViXYVe8Swgieq9lK6jM9uOBncHE0qYSLuSqUToi6S pMZKA0xTvMC1kTkaklZmP+EE8wrSwxKBomgkZFmgkGGAGQVGgJmVUbDf9CWFmy/SCUzSaobAnM7s IQvzTEoxLkqzlPerenWmFOHJtDsyKOzp53pJ1b8ZzNO+MF6h9gQrCRb7KtpxRy5cUsr/vY+u2MlL nDSkkrnWPgU0IiFGqPTGrC5/zCMdgynsMT3a2yQo2+NnBAoTI8TeaOo8hrIwMPMmMjsPR3LWelsV NmAumXGEgKlV3rJQgbNkFMD31NHvF+TeRUZM9NhMzex9ohCidOY6eOoJIikh10J3NEn3F1Y7QCsN pDlr6IpUynME4zWTysJMXYyXLFtbrtBSlmcoXkXR/laEnB/L6Pz+6kMfsuYSReMIwgYPAFuoPqGk Lj1hyh2hiBcHJvhT2+rVb90pNf3zi8Ywim0VwuRB7O1h2ePK9NjA651GBV+w7dAYMdBgZmLyd93Q KlPQeDHZB6UT6n3DIxFKXL5xEUxgkOJRo8ua0Noyc3k00mC4ePHNe3Y3xC5dNkFrU41jX4jsjuK6 L0CzhisbFaOrkrEgQYoOHn7j9E8Knj1ubO6lRzzx5MX6JuMy7KHQ56Ut0UsTp3Lxxfha3PKyQFJ7 hUM4hNbaMsnOywQ5KvETP7jZCbJTFg8X2GLB0dKMU1zxspPBuwZ7WviMnR8lzixEGfea0EGyjI9r 6mhzknfHqUU0mOSM0JqiBiQ2XHjFeMpnzd6fdG6Wwk4Ckh7JO6R3C+pJQIfxxS7zhIzziKRnPSOS T2M8gUylJ+7ksO6ZTZdoUFcV13vGeBRMWNMfv1jx0wkIu6TvkxwsOQkpCGg0VHv0JucCoNZxY6fF euLPAHshh7w959S+9GBWhJV71hlW4mA8uSYO3eC718WLSIinczy8EX5rIllxNLmjZrAPcudiM9b2 hiwtB0wZ8oPlIudREkgY5GCve75mRwrzcZ9myQ/uPsEJL8M/dUpV2Lg7WC1Mq/HKdTYpHQdkqMGh gxm4cLE8WlslBP2glTJM6qagOtXpOGd2STdJXRcJvDBMc+x1gmZNluIhqzjbHkQtKNcj8HKQWtp5 7bVoeCjENGy+0SgkMBsbBNoY0SJAISB9AIh8t/KNCqCsGCr4deZq7jJgrIbQ3dn3bsD4w4DAGZFc qhptQMGkQiESt15fc5jt8I8etES9Hu2fu+BW+B6RD2L+opb2KFUrUvCZfDOXZdhsaHFR5pUlUZUF UpOqaePF60RwokzCaC4w5gXPi/DGHFwTfPVyXxGSbcFmxgVSxY0ZSztPTBChOqWaZA7/Re154QRG SAXTwUNcH5U4/cE1zxOiw/wAfx/iD/RZ/UxwzJLaCFWFK2gxi22oyJcTCKCuUlHIwxwwzMTEuNEy kwykKBmZkRkiINrY0saUWtWAlYLSZcf8TNMirgyUQFikEzQ4VmkNCYxGAW2FjioNoiIikaVGjRBM uJXExhWDEhhgNMZEcElGFgjmnNSWatSK2yopKmERhUWUVLDKZhdXRmnWjWRYOZDRo0mRpWDRRTBK ogqqAjCUEhRwswyVG2LKKiMVYVKAiogkZEIiIiXC//3ZTDdm2BRhr7M2rmOnCzQhWbAQKiICogUy FxDEoY0HUsCiCMmiJYhRlUUQ3IhcEXYzLVCkFi4bbMie/y9GeXtPhPqMDHm67cWB0SwWOhXo8sLu CRIVhRpvWw0Ylsw7GtuAdBRa5k7urQ9Bj6cLodjwkmwIW5+FTOK3OvWajKjh2Go2nvy32P+xtZGI Eikf6mcKk/+oPAJor3CSTvR96R9zcJQjcO7tZIVVTupwe3hIB+EkPsMzYKIB8KX2nurPne37KQ0h AsrC0BqCQYtEBbQEnh9kMpzYCPomBsmJUOMZwATkCGoNZYaCwqtBZQdEfp4dmn3lj4nh63zxeTPN 9T6Hq0ZGpx9e49ZW3QezLBNF0sR0aSGMBXBA0EoouWD31B5B2co7f9w6h5MGB6Npvoqdc9dXCvrk yY6Gij78n6ixBjSpxvh+0htGJuYnpLqWYNkhkjciXiLTUyD870jJL/vr4laS7NJx8lGiy/ibVz99 Jaz6PjZodep1bMTSarG37h0BGNyyfT63ufkCfpHsT9aaw1DknZ1kDa0oAdj2KCqtx8FYvZcMggp3 X7yHlkHvcF4Q1b+kq0CUmN8Gw4GBNbTmffQgbLRVNMtMJKYXQe8DH1vXAwbWB1kL7t+7RoeDmHre sBTMTXLnVA6kiWt+jPDCSIff7+FshmGtDsIB/EEgYm0S/CyaajKfJxOv68hrXzwGXCz6mBmiIVPq YKWD+z4JTikiSCSfDK11OdTB5xs8Y/V6HFxYxjHRmFLIhi6N6IcatK2UO8Dw9wfn29w6BfWYHmD5 aSRjFU4w/bW8dAG7MPoHYJ6Bl70QsG5AkPftuooGKO0I+fOD+5Au4O7nSWAhSz63ed8AMzpDefYa 8EOpuhh9hPGI2UgQOYOBbFw+776beuqjkUey5Xt0tQI90kkcU/X6C/mB2KPGnzBD/kJf0BDk+o9w HrA6ToDWfRgEJFJ6FFMP9jUhQw4zi8OgwF63jckE0eWWIXgmChjzVPZJO5jZ/JIFOjET7cMLQU5p SJ7eoNqEHefkAFDihqGkdQBFwIIuuA12HEUQ8SHjidYnCDk7lu5nGB7XeA8G8PpuDhsVEZPH8ZJJ I2dyDNX/uRPVGQsH4pmHuzvzCa96H58hxBlgEn3RtWPlX1MZlzWh36Cidk/OCVrfnfa6MWiu0oSU 0lNJT2xwiZg3HijLpLYrG+ru9N0lIP5p7vd7FBJIEk7Y1Bog+wavw9dUfY6aQswPwGyUMMbLFQiq Uxg2EuhqrfoWRNzQoCxMEKBgqkHERjCB/2ACiJrg2XsUAJjFeJGc1qJG4xPkgicMawVupIo5UrJa SVxJKxR7YqYk8f5CQXoTNC+ykiKYC6+7aUmLB2JYNEASSS7tINk0u4asgtZWCuwWCuWJW7GmFFK3 CG8isyWpVSXickk0wBiISSkrlaPWSwTnu6iUklCmHEkG8v1zmB2GMo+HYik/wtrYvJyU+pl0lvSe J0yUvaFqaqNbFyKZP+lxqOgutjTuWV6pyRx3dT8e1wuW1/k361kUNoiaYZER0EU9PK4aW3n26LzB NGGpGzMLkIQN2vTOOubkVBJYSU+bTwZ2YTkMTzY1sZWaZUom6WgTW+CAA8Ev1eUERMYyQ6NFti+c qq4qMP4/Ru+NCL8EDEQo7ioifXvGMSihnDJhwuIYIyQ2LwpYEg6+g4bfyY8B8QZ4mIJIBeriM7tQ hpmPuMYznFxR3xFhaJsy/1gveWxtERQaCM4RY21IiZ3WiSkzbfoREpPUegjmD8j/1LHy+nedL8F8 oibTNcHNH13Avl2/7cTtoN1qCxqyuXVialdmWxXbEUx37rK44Bl9NkuxK85vacdoBNZN5une0sSl Unf+MBe6ScZjoz0yl93P6rF7/0XVAGzduKOS0K0rbhaQiKbUGVXRQHixgKpqcTH1t8ufu/T79U4a bGTPiFLUKlo9UgfjBJUiTmdjPr4szhHs7axC2GSGSfoWXsxb1GyIgdq8Tm6A0/c2rwLTzmxgmbRR mNm9rsnTF1dfEopi3KjchG0bkgssJSxYSLf4WqJoFYZpBrEAwNQ7smpNXYSCiZR73vQIJpkNzMGl 9OOJVNUl9OsZvjf/LfacZFVcrWtV4LnAlHkrAoxdZLKEl0GNhaCh+726hMMV9ky1MPXchASQTV/K xH5XJ4JdHURF7GIWrw6OnXwihxY0SwNBgmEw0u6SkHBoLBn2uY6LpyVjF9WCGoSWjqcyoQHT8uTy 0nLKJLXtaMq0taXK9eQcLq5IlETZR5YAPxB+CJ7rTRJtIYfh8CnKKicFl/+thZ1iY4eiqPwnFAou VX6WP1/jv5flfcufCgh+GFr1elBs5tZ1Tqlo85a5QGK5jpA1uIFEsqQExWC4sCgLIMKAyrCylQCY UV82gzFKbhaNDTk2ac83FDJuFKZuNAwYFVeSRxg4GypNWYVNODDnarijY4CaVU6En0qSkFBplAos 2heS7p/EhzrnTxI7EzKLc0HRbIszUXypLhQYFx6VQCkLCspqzhQAmLYwxs2qCGgFUAtY4DVR95/K jiMaGowISqMzgcia1VFWuGdK/D7e3sseR+ZkW87t/TFwMSZeo/RpNEx72ySRtbRS+2hkf1kSz82W utxl9DNt/6J2OcPd73MHO0YKBVLbwYNbgyyXa4ZNQb2nB0/1g9E3aAxSpmaUprJgKwm4kL8gxOXG Io/dzhKIpJui1F/yx+LvSLwU1YkZTqKEIwSOUSa0DucwkSRI3FKEHyRkZ38hslyBy8uUN6DBlK3e /UbE5Qk/gpI+v9Qgk8AX3HqhlzzSW5hiZX9OMXGzjZ4Xhgc1JiEcn8/8fBb174hYODSYaTU21Efz C3vcwSbIOHZg332hRcklFi9LBc8OdGR1KtRBgt0XD4Zi3Ym14Vl5OdM2NOXzy5N86Jz6tCxVto1J y+STZdMcnX2/GSr9b/tdPW4lzd2MQFGdDJwnviSKJA2XaJwq80bMK5+DZYbOYFtPBzt0pNj7CFkg 30YkMl89aqI3+RRdDYOBiR98lOV53IG+8EHhbGTp1MgyMdYtscyTSc6Wo0fGrc2awnNkqak4W6mk Ym9E/iInqTmfGWqVbs3nspEwcjMhUI9FYwGoT4bw9Rxx4PZyZIEDotA7fBXTHGksGOHxIpJTFzN0 bUKdLXOE80DpvZwrl46TwVy6Ol+SQnLu+i5fiS4vm4QvTimBTqZ4YzY2LfJR3JhdjHybrJnnMDsl G7t4P9VBCTWwo/QGxXCPFuyPgkaj5yXN7SrY12sH5TxcmXMbRUCsyqlH374bvUweO3SDFD8gqmyu DWtpXRuZsHEnJnVKaK2UspFVMRN8N+LQbLucNaPjnDfh25BlWQmSXMyi+LyEeyT/f9c2fbtbB7VH iZRjJ/AkoISk6eIPi0pR4sWCE/GTllDx9bZelLScf9J4VMEZYorgvM62awYH4W4bQFcob19pZViG SU/Giq4Wl3EatvI8zowyYznBeHmgYNETGjI1z8aJdRzNtBQpgl0+k0WT5v8CIepOjEbhOnDkiWLK +xmJqcZj5XJu6vxG3qSFOORYjJUtXR85Y8+h/Hk+GO9TXQ+3Li2L40knX33PLn1BGKS0axglc/f7 /nGf9nxj2l/f93uot4s+DUj8nNL+yzz8KEZjZn8J/pSZLDgfhyJGY+6U2qz+UkVKeHH3x5sV2VPl J/WQ/5Tjj7zZjS1+2Z78vm5B1rv3zQqVp/KWJOsqyPxinpnMtfjKd8wbb/HtOuRwcd4q7FI+9/N3 ev0q24XjdcPeqKOe4j0z3Qc7iujiFfymT/Jpx2r6lllLj5yLwc4WvpukYx21iq+1NzeVkz/RwMY4 5hS6zuxEg90JqwsYRc/6au5D3g1JTV1atzOd8lOvitn3qlJutnKzf/FFTlU4QRz+9/uVcVRSl/z5 IdWIXZ68ZiWXON/EIPe5oXm+kIttw1Z9OvAnnfHe9I6+eQyUm6WcEoxRuKjOmVdRw/utFbFOYJhi kI/P5RPRaNTKvKXqPfdS/cHGIjmYaLDPI8dCJFGhdiWFgSWbeb94ZokPs8evSjeer+U4R+I4549J 9azk+TDzWJ4gw4sUkSUYn2ZL2qoNPEjrM7fVSKQjDDZ07JetJzbPl9YfKvPWlVvbN8QVbEGH9sDK h7tR13en8Hp9a1cfbG7PVYkWda3q+JH6OcOYl8/njuEfxFxLc3XX4WdPvc1WMvoxD1byU83lvnPH m+00X3YgqjmbTQy2ITdKL2d5uf8n/eLfZYua3TF/k1rydyjnbeZv5QJVWjfEoVoK2VevimvDQ7M/ Xq5CFbQfL18sygoWn4p8QPJSU2mYeSeQUVSFPKb4r9miaV8/hvRXPtKF4/W/l8QJRPG8EYrAeWbD mS6t1VxGM23DvD37xOiTc3yUl5xcouNNT2XWkv9Yh6R9HW8s02+B41F951JTWChEerUkvHWn4c75 UGWr/i34cZ8ZZXEc/lB83+jq2Vvoo0WNr+TqOb0Xyc5/cKuabRc5hvZ7Q9eMeIe9vnVxL7OhXtxW mHQXkPN35WYVT6LKou7NaXdn/JcVtmtJwKKOncXjx7266nO8Puo1WGWbvd77/SHK+i6k0ITfxWU9 PtHrMOqj6faJK0buLLqTUx64HUg6Cn3h84/SGSc3EAQx9Keyf31+ucHwuf7/354mbfksUfeWRUr7 5kkT84HHjHdWPFmH7rd7evyq98mPw7Lhln8czCEF9+5fS34j59MFatF3u5HzbauUb0lmEE6Wnqz1 8tSu+xOzt9M+resvG2isAVN+z3zlR2Pp9nuJfOOlR82Ah9qurxoIqX6yqOyvqHZkePnP7ak3q/1K r/6XHSF2o8Q83OOQfy9HSasUWfhYflAu/1WflZt7n4+rEDncfaHFirXY68oWvBbVcmKHs7ELOz7v 1iAfXbfVby9vrjP0+nx14+3j28vDe0e4fL4q/3HR+vrc9vR1Pl9suh7X+fnr2u3xO2XPhsXyl3Zj 5zpLnhrQl37NN8fb6uPKO/IePZ0l5z0fL6qkSDSgMfhcMsIPIKWSH32zoLSLp8d5d0jSMXUZl91t 8MkZdZpAH/JhsWxHWlHjS7fajz1Xz8mfT8aHiqm7tmTPV62U9Ffiv4nB3ULPl5yjB3UY4o5zLiVR 8opFTD1gLMr4/XWz772x+tu/jLAXwvnV778fb+T+hxLzU+Q36vc2kLsvlZwj+AqsemZhR9T8VPzf rPyOH9P+EfpPoFvr95k+kWHzSYsxT7wPwND9JyPg/NiZSbi8TAtFyOkYMblIY4bLjpk/y3vc9wtI YOo/95ollOJZPuMOcPcMmSMufCvwlMnDwpfwprR0rCdHO80ip3GijJs8HhjuydfJV6G2UW2FoHgn GU1lMqbThuCBr6sHDp1NGz7KY6aFU7owAhrJYzgw49NvLoqc78Tc5r2fnTFjR2lEKi7uSG3ggWRz h5mu5R31aUkrtJhetCqKU5PMwmpgr/HjghUKpkREOkXKX0jhwt9O7ykiJH9oeQSmTgHDoGUc4vs2 sDwdUbFUjYqZrsfOY4J7edQv0bqaR5EfRDE0dqpQzXRmps96lecLTLOmaGOfgQENkCWhSLi9J62Q n0mzs+KMbMQ5OiST+FEgx0vtNpeEqiUZKKJyMfaID+T3Ke8PgREIKPgx9Rx67d0hdUj4vXOhCjkO LT9S5pGLcLuozkmnJXOUfaYNlw2adpUw2hSqwK2QSqffZdMtar6MLTeAj7h3XwbbeppYkaohyTMQ kfsW4LtFH5k3a7asUWv8muBXT8EkihcbV0yQMfvnHFuksJvQqWdtG7uOmfbLWBsgpush6jw5u4td DaPGY6e/0hIn49mix3elTJQ+LD6P3q30xS/l2nQ/SQnsGNnshJrquWv1FRbFzFhwgzYekVkZhE1e A0sqlIXTl77TAeEQSV45nc3AaoXMrwxmFThRxPT3k5XszCyH2Yml8Hr0jzcZdW/KmjY6WlOFhZ/J WfGCZvPkxrVG9JgcYc8lpApJIOvBLil7h+w5mZOFzJOpOW8XLKGCab1MIpeKMWuroC1wTYkMDTMk yBnIp0TM6M7LC/qFGNv437SUdNUkWsdPElU+A7wYsMPouMpjZvSXK4GLlhhtl+3NIZJPgbML/HDS YfIIjjY0FDQ4buYxF5g30QCydSbkwbWJe0ZMJ++L11sQkjgyN/jD+hh8mqDo+SWco8cTYeVzRWWw f1lHSoxReWFM9HcW9y6fwoYY7XNvgkzvnTJvf47corxSSkkJ4/GK6peU5Raxk1pM4+MrlLFttbZI 58X5m0LxLnx8UdssV93vpkWTfufZo0lJCo/EV06M3xwOlOXpB8vS1FuXb0BKbHkVssWx8eyxnpDO 9yFjkmuTxNczckM3T8gNyggaQwY5JQ8m673V0pvemTUzMMDMMCmuMNIIIpEZDuDJJUkFPDIF8Xx+ hejTZsyhhfCyB7+afnZvZH05kEixRUMwLCHn/G0VMyYbFY7TVoNWQJgCIREQzwKL05aTzVQUAiaI u2eDMBYc6AA9EEFQd+09uznyk0QOgHQnZkJQMC7YKEMJQoGoCpUtBjESkgW2aYvClxkRRcKX6Bla sCuBc5UkWAdCgQLCbYzBd5mEzIalMsqMvlJTJlLqq7E0MRVUCTJTYdmanGgymGBkJJhDedTwTeDA IxXdBHNsGxYGSXRCg0BoAi2TRl+WbhsWK4UVkcGwPFEi6SyAbKSRxkkKg4LEIgyJe5YxTeruTUFz BytAzMtCCJkFFxGgyCk2giquWFkumNs6Uu3DO9lS2lF2g8IRtLpoIIZolbJJIEIMRjFkJG2TvwLd na89HScB13Ou+Jw8ZMuHzmqn2jCq/UgOG+paofU+0vuEUejQyWiVHUT7o+1yhCRXI+8GtDOCb9JQ qxR+TWUgVoKWXCRxe0EYnAsLCmG2cpDItQum0iYGzZKFKG1mjC9Ri5NumCeUOdtuaucNjEHToeM0 NFhopKWyyWTbvgMGLZIykTM/UPl5InwqAyKIjKj/YMJSlIk2iIXre/keg7LyejmeBZGDBgkBgnLk UGwvE/FiEkIMihAgIioktAxCyYhYGbjCVgEz2+7xPPvbxNcd+MouZFjfRnY4n7dgf7epShYqD2hD gFh4+FHUftYEJAFgpXXw6CwPcsKTVqUTwsALyXejcrFTtOHoxL0TtOft3c3Tbtxz6TSDEZyFSilv qMOUl88XL4yOJD7H7YDh5ITEQ+h90VIUMEmTU2g9XkiEOEZFeOfVaz46UiNAccHJjH6CYMPpLjzE 7DrwLp/IRD9EqTtxxfd7pAcYMhF4LkmYJPCRTZMjQHngwYenKJ48TslqEUwo5HkSGyAqIYi40Mj8 EH5MknHaQYD76wP9iIEERV6F82BIAQhIQjIRQCBBkhIo+Si+HqhhGpnG6Ta7A5jUfh3BdjggdCnc vOZMmU7r5pAoPvFI+UElbmSI/2pFHGpCkB0iyrWcnaLGSGHxiYKY90VKG8HU5clPlrKPXDkmxS0j knPi1HiTVYWcHTZqwt4rMJEzRpfD4KJ8FggMODh+VjI5E5XRrW/0noh0If4KeZ33jaZgZvsgkoTJ IeWqb6K+SMkLRYdErUwTKAx5C5FlYfp9k4HsoiE5KlkqG4uatRsdm0tl/05UdadYKwOuPCdT6oBw vKmFRZFgQA+xJ6FL7SqK9tJaKSXCkCkmWSxhRCsnnNxWGsyAaNQUEzAMFMCKPV/3j4hDQKBkFyKY ZCXNMF9qEkj350xjB19fOZagfnQ4NlespEqwJkCbGCYAE0hYKOycqyKjLbX9XGGZoxEVH8NMdklY /cTJZzOZ7kl/EpIcrJKFmMG1cTJkipALflpVaP7rOATYCXZGcmDkXHlDClPZQP2Xn+kzd2Zd4AJc b9q1msBqhRSSkxjsxTc6wuXV1dLVqkpih8Wj74jWIrECb51E2o8yJ2ceyIUMoqwisdUo+6xMK5b9 TC/SdIQ8ts5OsfyyHDdTkYwwLhlkhaIR3WDjfoksSJocHKPePgeHhwFHP5Hn3zN8k9D229XZxFsX XWzQZH4ZCx4gQSG2zdNrOoWgMFXTJBuRAsWIWLyTBFHr+4mfvDHXISITNJzP0fWk1slPEx2i0vHG jO61fMvp23SVLGw1ATGjwg3kHl9PRy/HqSjbLDEHE6nqTJIazQXY0drnTTDlOeHKa+Lovynuj/T0 HGA+wlAYCRdJ+iSHHq4c8Fyvr7GkslCgUyS+FLX9QPoF5nbF1YyTPNGLl8YFKVHnyLHgklIGwThF /HRwiEREEAOC+SRO2TISNumZrlQt+qLSWv+v2PefAOqwHxGTBHsFFKRZsFPpFWYUSK0rQK0A6nlx DWcYbjoY9Tpi5KCep5nnGHpNb3kXPSGXGUlKwetyQXRitXHN2OlhcFYCiwRT2PMdJ5m/U/0M7IuT fo54ZVMqKzKqbUe+4sHyMk4WHnRU4dJCmB0uCIg/VWmPoX/f7hsuk52DtLgtCqbIIy/yCshRw82S gbVPI3Irwy53XhEBTdSaVaSHUHRSwyY6nlNkernKUNUsMMX2WwfVEaWcS1cpBbpdG6Mkkf+oGvrE hAFZyXcPJfekjZnJ/HHk4w3W3HCXNRw4HJ0v/j2GhuCvB4AeH/mlViJ/vIpL2yXAuhLiBeX7LsWr 4LT4OqmClyCgfRVEicw+O/keZ/eIex64p72tMs6Rl5tODKLipIakoCx6CoLOcP2W0McD4sGsmtFj JnW3JKx5JDJ7nbsZkP27h3vB7jDKZa6IiF7Z2eLUWTpD+CAltTqDr7yb6OqGxwsoudUbARTKUvSy cfJOBAqKPIhN7ZVHpM2CEDHEmlKFnbJJ+i1Y8GLVKBvXubgHhtiJHJ1RcOUyEeD/R/SccV+R1ohq Ta8gAFfFOMLgllbiRU7ONff1gkDs8g/RZ+KuRn6Yj0K4tw+02lm10D4jrD4zQntYhkOXAsSkVaAp 7k0hoPoj7tGhQ4/PLfHSOp+PSrX0gjrDZicJO8DUGh6NVjf5g+nB8wkPr2FG+4UPzdtX4v+07jQD zIgYHuAzONjDrOySAMSC6tKegTL763tPRrQNkHQHp/eNBbw39QPnwpd6nyHhVaD88hQ0hqT9J+9/ bY4y8JAkA8wTWdp7j8rDykAgkCIxJKlThEp9xcApIiXpB4jj3hwaklwGEwKE1YMhBCkiFQMhQgS4 lhPgA0GTHDtGCwZIpmv+at2lTawSg9xp7IbeebAu1WUChqUDRY1sRlF+o/RjgaLyYTNMkapPKJ1G TdBeC0QEk1nFpvi4A1hcuo3PPbhZUhIRSYRHPYhRIJMCs/DxS/jHrddU3/nLixLAf9xbrUAL0tyH 5EAoYgbf+KKcMDkQXgDWdTxJ+6SMJH00DpBkuAe5QgqcbkCuzFDk6uQlEqPSWTGYGGFjnmULJkML UlB3nGsvIamCahtkIbM+sH4BwBgbCyattcyZlClyzONOSRGwYYTHigBRkjEnoWTRGdugNtiWkCwR C7QK0F6SwWnAhmZy1JfTsqwCZcHQRCQYw/f7v8j1VdduNIFEJ/OBIDTeJqeGjRAyed3YK69lhrao KqwMv3L8OEgQ5Q3BQogH6BRAPWA/o53+XuBNq58AGCE9hvAK+o68LXiR/SR4LUA5QEYwUgkgkkWA x5AxDJLQOtSEUzBD9F+Rm3+g+oPP1gfoTfoDIKqICMBiEEgQkQJEipFGIEIocYi2O9XaNJ0tTgPC 1lvdt9dteRha/AbrhfB7a4cDKGcyqYdbDRC8HHFRRC6jVSA/hiYYP9zz1ZDjCIRI+E80KLDqBJFa 2ntRZJz4wUpDKGElSiaSYBfMpmqbVNhUasYTFYmQKG8l4mhWUk0x0s5tWKxtM3EUzE6vEHf8s8S4 WAUljPXqwIuCYIanECJgPAwEuOS04th5CyeUxh0U54Dpgb1OMnaMTZu4YIbGlKIi8HLJFWYrNcWg VAKGMSSxdNiMUgVkkn2hUmKbB9WFFERF4vKJHUEiUT6gtstRBI2whSWFi1RKynRMMIklBDnIQMEW 3op006rGSNoECKntSqbriGYZ6DexD7RjL7dBQ+BLIvUjdpjyJpSTdubH8IG4wUoaMUCRVbbQ4Npd XkXSrmcbflDyA6jdrQKQyPP0sJDxaRyhJ/dH9wQ/wNQoh57W+TFJIct7h+alXKePo5od1VxE4+K9 CZMQ8TW9bMD4hDjQJHEn0yKISG0gbA6BqpA+rDKEcOZPq6yQPwQiCxZAIpAkRepMfbIBgdXecYWy q2V6OUG2jSFw493JRNa/JvrncwSceia0U1/zwUyT0xWrIiMw+qfC7IrQVUEjeMsZSBjCKrNBb0au Ok1mgGc+DUh7qWAfqOTiHNZyFqp4FbOq5gsltegOcbUpcXYGgU9TkAQClfB6jqeoCI0xChGRSQDR FDRxPyUJmaRWAO8CARhJMKoiQgBAkBbKxf6BagkWC8ECl3HKyPLBKoRsRthT+clJVYAsgwkwJSQl YRZFAoxqJYCVBASM6VJiLELxGEU3G0C3LkUjgMThUlYLS0F4ozIwghCBsU19rAemaSNimS2Bza2/ qYY5j/zGGkBmJOEURKIT7A5hDYampkCTMMlv0BMMyJQSiU5wTClk5BDWBYCSYBW2Trx1JNJjvfxI DEhbeipSjwcx+Hj/BDLSPChrgvdA1B7mA0LrKNqh/AdCUcZuMRDfEIMJEwP4OCdWl2/vx/UAc5Wt IzgDpl84mBIOHr6KA6ZkmcBAJA/UCCQsIGs3r1uhXtVA8uxkA93f2hspPPV563nF3JU6j2nsD7zo f0RTwVcVfcZnXa04t/GV+f62Z2cJj9/EvJbFVU502B0Bic5E3RVOKWiHgQJBG0V5kMKR/EdLr04w SEQgMVfmAQOINoaeBofEOQaIyRUu++nYn3UGcDx76mMkookZI2jkp6Nkz++GtIHzSPI68DAdHm1i RCGdJRnmjYBEMersf9sYjawyN3uDzB6+sRIP80pTtwCrrPcB5tK/yA8JPgOJzoiahWCBFCKEigsI BGCHMeV4WUL72whGT1nFGophIKuB/KirA01BoALWAiUnAlQh84/6e7ogMjllEABSiVKjUY6/l/wP B0mu8+AfKE8eQkOMFCjBJ5mg4ehFmGBTGE4Pp+/xwwkNNj/pcRA4hhdqJKxuHWg2u+KnMJEs0lAF CqffbUcnPh0febv2dJnjfilQy4uYp6kC4RDoQLlC9SBk1PohNKjmjBAkLgYXDq0P8U5DQUOGnQrS kSL4jlaGDmn0SG9zNpcY79zbm7YmkeTL5ceesGzQwrdzHfZ9olK2NLePk1whyfjfWFNkFDdOrWe/ 6mnDOKBkkSeNGjKPVJcSGx7psaLclCeGg8wSJUtc3vaXpSyjdcoJ6vf5ggRdfJC9HP3ttsO64v4k vBTyeDh34E7iTKSo+Xa1r4ccfc8GCfkSKmcYjHc35XbtmzQ4xpjD709qtxmxjjPmZGS/YviN1Yrn BwU857aknDOQcuaPD3wKc9l1tD43kt2pKhV8u72zm7Lf1XVPDF9fDXCbFm8eS1vg2XvmB793vu4F t028D7TPOpgnm2Tb8dJHFMjBVX0mz69hwkYh++7iSxgwHjBfUlzRBJcZDfiO9G0WKnmCOpKPGLjC mRzxHMLJsn6edJE3B9zMGZ0Z+JOhjib9iix1ytW90X2S97zwyYNWMkiCJYQ/6P2IaaodFTopmG4a vGNFoZivlB/DFxemjJnOsWJ+Th1dwGjIMqRaCNftF77Op1IR6TIvhv1+7OS/r78ikbHI1WVyDVw2 R3fz2sZqSj2HFIDJj1kUPdTlp4PCXuKfQasGeRWp3syYS5PDnyQG9+4UUcPrMHDR0sZHMig5GChj J1bn+AKJuNTDkpY3L3EBDh1fbimrll6IDoSiXKUR7EF6v6TBcxbOjT2MDN+UMJAtDujhnPbfbNmk sdOgpOpShYniCYJ4XCPHDhrj6Dq8R5tFP0ieBUoobhkdV/fYuod+5R98w0kFkwhA4uPFY10JuQub fMc/bGoFrZSvYrMRXDVjR6SCSjrGffdO3CS2tkbdjI/w1GQ6d7Gnq6cS+8XNFJpLoxpOfEyfWGOH py404YoosYW37UqJGDNzElLJaoUuWpwQaFxyucGVV8yy2MRNj7GWYTiKmR0KVTJlr2pkWpROZWSb qs525kw5PND9ecSxlEb7CX3sOEFvZTl+zUZ2Lrg9jNjjmi5m6nkf4pK9K+2GNJ0cfJdPQlJ4sN2E qslumcZovtX2SZ/5AnxiWyfHAdnHvvAx9Bsq5s6SRc2x36TR8kHuQMYHm1ho8+FZMLwoWqxRN4Il xRg3mBkVOJ6p5oI+0JHcx2jebTmo8zWsAwOTRxNlkWxyc0ZyXRBE6cNGOL/WpMX2fGG3I57XBcKV PiTurJAnTBRqB4NDGCxw+JJsfHtb4eQghL6PjKcT491K+c0EDHnHiIs5raC8GPjJYcF+GRzZdD+i C81HOqHB+x2ZHJGnHaJMyK80NR1xmcUOh11yaOdF7LN7syKQJEE4WRUhl90JRWpJRsjrm0BE9ERx qhtEEiXzpyauLro2pGcylr0SCSHmy3JXkUIFWKRmV5CA9OWMnlW9TV02mzevwfS+PDnnITBVGT2t JelRhj0lsGMYw6pc+SxTFtH5GKgbyePJ00bo8Z63BjYQaMbGOmMgxk0JWjFbC8HuE0P/bxambmU7 0N/Rw4bTqP5w8XIFtm9rttLbvpNMMfpOFHCzdN4KGLF0lMmbMcjWwA4SNn8ex8eYnTJRocjG37En BxY+xrudJ9VzM8M7MkayUcxzjog1/G2CydTdvhsazv4fJBJ/LvX40PRpIEvoIDqzOTqRM4pm993T IxN6VJTL32X46ySvp/QMPwW8SVzHx9WdlcTBnIOFDISaRs3CD6EB5uNcJIbnEwZuT0yX1ZGLxJ5r tc74bEycoYT09gzd+QtILDERouXTSLPc0yBowNxjrq4ckZgWiI/MWzdOqGXDzqhIsOSk8E4RDXC9 HhnHUun68xRa4ObS/ejunfJw2X3c28SN7E3dapbReBFGdIkzWJDEFNCfKNy6b6tvWiJ0iYdLaY1B qQvzo1Ik6MJE61pLjOIozpnXCJXAt8p3g61mPMcIRTPScoamWFeSGcQERkLRTpIdclP+eqQgTlpL HQo1ms4k5NSHp2sTSilCnAERjbx8lFuz+LU6PRuk8epj1klOG8xBcpPhEQVO71zbGJ18Amp2Wyas UnTP107oh51Bfpfo3vj3x1rI50iuQbKCBicOag1e5b2DgxckYkMqkHym5k40QYg3xOwG+GjZRpUN rElvGakGanWNx9EglFL4I+lCPgl8w+1rbIRhR0Ug27/+KPaHFdMIDwIEObcG+PPvr1ernD9iYzx7 54KX1cmQrRdVvFVgPJqvvm9Hud6WSyXonqWRhipUwTdlYpOVXNUuilLPTNZDVFPJdJ718QaOa0aN B7t5vo0UeJg3YdaRidGTSYMlxqo4btoahQv1V8tzm6uXzjyz60geWqOyYhCNEfc243uJkfUzGtRx gybjqPzT0PoiCF+5pslpbp+1I3JPxozQej31B1jUR4VL1HhuaNBnuOiEIgnmhFPkVX1gRC6R/nY9 z2S5s4nWD1iZibOHhox67ZJe7Fg8qUheJJ6+Zgiw89zRWVCqSyl0uVrW5qejWMJVKhA1u0KmN3KJ cloZJT8qpkulOFltVxlFMqm2zgzvmYGeaMU2QUsEaUGNGoY+yJIjbhRixWpx2ksM20iT8RifXto8 jHK27sWJS5f8Rsm/vftBYbMpLIRJJDJVxogOxBM6LLMeRLYvdJsY9xLfshvMbjzGbW0UHfK8E5WR uSWCXC4thyFkSlJg9LpJkwZlboxQxYpLKWwTOsJJVHEBxUhbRc1Aoe5pRa50c6DGjAkzpTAUcRj5 +F8JfoYqlcFlUcO7UglJPOFJjUo36omJmuIwo604DL7f9SRomhRSXYUPujJJ+LybopG3dLk+h3Em lhrpKUZEp8sO6s6B0VzIViSYgciZM+/9wIJ1FwTV2HX2H2SxGrL0n3UMiFvrQ3IlwZxv93no1rPK 4V3jOzHK8BQryY0uaEtVWLWlNWkr8fDyWY8Rt43k4+XiOY5ektDry6ssrWOw1ix9Nqqq3uowfSpX M4NKWpF1xgZimjA3axckfQdVNGZFsFy5NCc70tEqUQpMzgaV3lq5NX0bEhJHNPtIzmjtCyT3Us+l 39oIbGB/42g6Lk9FgV3hzHiI7JoiSYfkmQDg5hpGklTaQttrKSdTHihpJZGq0+vJHuR7kJwS4PEt jFz7CKPTdjnWnevreJ+EECyIIgGzl0jVZdXKjOCwMeWZ08k8isbUcwWG7Tyn2TLxotzBYt4KmjJg 3OThGxgoZvarRzmZ8WvizpihnTUNDY2IbGwQ2httITadu0zC7azc1fqly07szEDZA802c0lQeYCD i1MFzkiLXtSCafUvF2534rrGC/O64SBJJLKSZ48Ktye5vkOJ4NjVPWpUHMdV0twuczg6NLR8eQCr sGFMJYWxItYkpdQ6GN6FLkSmTJCxC6ZvzZIkblEa9g4DAkjYwsc8DBEHlg30gTBg13oEOLyyHBDz +WrPbtuPQ+0VTgOKGnl03OEtxWsXJqszXHvZpunF8G8Qp5ThM9JwCKcPWFi/mMaImVKmrNhTGEay KPqOfCdihkUgnrhOWyaMEGZjd9ZnO5OJpFKHDU4kqxr6gBZxzA0uGppCBgvjCMkknDqX6OLfN3dz Gy9GE6VwV5GNjZo/sgD76m562E+1yk4coguY7B/RgmvMUjEIxVULG+ClYWjfuhJGCDykCSSVSx3n RbnYOPSWBP9yUjjF+5iRsUINdiW/e3uygPSR+jGwISSRPkOhEP+HEIZjMzSBXYzmOYRZyoPYd5Dy lj4iKm1FbD+ARhpohB/xREICtQkkjYZQEgh5/WgOxTlRDEaWPMJypYLNmmNvuVUVbpiJ7vh8IlEs IKcEOFEvezZQZ9Ckh+MA9jcPcRoVz4So22CrKiXmiP0jwJDiEPgBimRZF/6kKR/y2k9U66n8twPk TQElwSge76jYC3CfqD2e7u9Dy/H1h63ZsesNrVcUs2qEYdefjff8RbSil+pD7m9hTc4t7/MZO/EP aHyhsVTwHnQ4FzfDb/L5dnAdkgwyCevCy60HtRP4j1o+kX5fblzJFd28klHnJEkVkJEPRJYJABRj ICIqMEZ8g4QhdIlzoKBKdKSk2G1XtVxwWMIQcHqgnSPGbeSoXpKSEinSPmBa/wHjF2C/R0gOzYMA yMV4Bwyb/bsKAONTpgcH3XTdOuBIe7nV5OU5UHARD7npKNs9YHt/xFt948oFn1d0elDBAcQOCsYg Pcxa4BkCgDEgoyOQAgwBAiqIihgFkJ8LDyzk4AH+b8rJQAQtiSn9AsIdiBFxsE+wkPn+0PAPQA+A Hdr0grwj6BpAC6q4fCjf/3y3gdGA3YnP/jcvch/urxmqGr4QKfYPXzD8eN+79CZHcHqD386IUPgf rP1A9a7mgHvEfYiiHd7QOULfMfh9E9on1T7h+bqDgto3RJEYxYQD9lLCItLCxREd/rlMhD2FuSlh WiM9UCBUkEBRBQSblKxUQImpYAUEWEIskiIZ11qOQcosXNSURZHNaNDFgpFFiwURYgoa2ZczLzms zVupkxjlMzEzGqC0Uwar3j9XTpbCAqAcNkwQxSGhZBveikoDDUNQ0RCsyIE7lgWYyVm9m0hpkPkh OEFeBODJmSqJZtC5q5DCQpRy6llMV4NTDqSa8/P7vtYCRhALxwlBhEmFVXcJynGnF8UXYmr4Dko4 dekA6R0p0PKrrt1Lgh0MsAawDsTDHpN6hBK6t6lff4CTU7+W+B1J+b948YOI7l1gdeXWJQSECpT2 EpkSSESdJ11aIPFFhRkwASEFRRAhWI7kZCfaQKuDAihem6LRAkyhaDY4Rdrt0vQdqvj9zPEfR5xN YdAdAc7se3XvQwB7RoMy9O6K+xoyLaBVrRiKiCSMChBDH7f4fw/H9lV9BKUv91D8WLs08pSMKNFs nP3pdLLY5a3VA1yklUCKq0SB424B8+wE9XTmHF7pJ4J2j25M2iAkYyMSDDXoG2WKASIWG5RlhhXU 2Gxqt832/LL5kh8sKmIF9yfZXclmtzxFDwBwiHCMTqHzHmQeJ9z3ah5vROpxdTq5wxxnkvWG1CwJ q0r94G1uZxV4wQ8NL3bN54mfH7A08K8V2tdIl3lXjQ2hcdz3+iCcA+nF7wOnV8QUO1uHIoax3L7J zERvy2bHaCRD9cJCMgmx7tn3J8kK69I794w0uAJuQOjuEDqDB3oRi+4Xted7x2PNdXkHw7lNTtHU imheMfeNjg0mOQ2KXz5LGKH6DadSGZvQRV72yExb2NIQH4PyOJPFDJTBTIZw3S4HKpggeB6B3pwb OVA6UXRKUJ604gF4V0hzRknAnAB8hHrHtAaUmxENnzWFAKZj5AqntBD3B6yAT7SCHysIBkjMGRQG z6smLmXAFiXtYQugqK1ctRTQl4K0xVkEfc/G/y9yrlrz1AOEIBKyBBIc4tBkGBaNaEOUInsRYCyE ixQFUCLAIqrEVUiKyKqqKqMIKopBYosFVYsBFVBRVWKQUkUIKKRYRQIsh7QkdK9AGl1HkBmHKmgO dAHMMgO3m6hPJ27x3iIKcZQHAPK9HuwV3gcYhoODtu6fQ6Q6FMuvRp43mMeo4tjzIexRfd2vrcXj RDk399gA1c4B0BuIQDvUXmLFqIBQCxtLBAkQIhaVFQBAv3eOHMCY8cbh65zkoiRi4n6YsgBjZpUA /jqiyyp/fDrDqT3/PVdw2CO6erougno8L5qQO4Ey8hD228R9R5AgmIcb7ti81808YQOJd/2FPSC4 oGQBCEACMQIsBEP4QgRUoYsitMkltgiEhWLAolYQohURjFABA8gU9kUQ9sJAaihICVGwXiwCKxhI kCCD4+qahdJ+P6dkKvsB9bjYuQgRk/OUw++NwxCjqjS+WzBH3+u0ixgEJGSMYBEIEj0IMEODpdAG sIHp9qyEhBI0uIhriZJ5h/XCphAoRLuAEGF7XgVJ0xpcHVGi83g4lJzqdrihxK/VeM+B61t3gdof DwPUAvtT1AYPIIdwC4hlt+TYEO7jecs9K1vyUMFeUNp0TUwZEh9KAoiiqqRJIwBkYJlmPVA+zpeD jDa9JGQhAI29F9yfYdPAe3aKaE40eJ5lePuvFPw5nlOH4AU9r6k0WZpDWDp8A7MVQ+11pmes4FfV inCh87wiRgx5qqE7WjAgYCp9lFgHnKfQ7doJpD617s31Arqd/29bEMA9RAiRA3E8DyDoSwdr2vCh YQuIHInqJtPIMhX0OtzEOIEvwgmjnP3xK1LPYwn/0rd+kI2K7T9Pe5t4CGfaFC0nrkoVsZMyxjCu g42TCfCegQ2IcwOJ55DqeT09AQ6PjqW4+97Pb5DRsK9qnb9uh7n6bE94HtA5Mw5wz+CHkPtG3MIe o/eKoKnWJ3kJ2E/2ktufVX4fHRp+JCW/O9r2lXve3faN2mFa3DjC/0jFF04KnJICCn234n5PNuUX 5Ah9flwLkteb5dLY7w1eBiCGXkIcix5dbzqnemCcUwd/Gp6HgHYBQqnUhkBkIxcnzS4gnIgwATrA 9HCx1iG4T2HVH8h3h1di/URV6ND3u4Eo4CLPEP7jaHuV3Ac6jnwRTngcGpKRoiFuim+9z7K4Xixc TpdAgYvlzTECzeIpUWD74AQyC7ic2KmBjBIcB6T5lvkp8yNookiWQyNcSgoKhqIlkj94vrgWIK/1 grBe1x1mfoak1Ohoe4LDUWRZFnCt2x9bphCwEiV/bhj1GaFrOhXwV8hEpiQgqU6/u2U4F3ChojLR UKwWWUQpEtixhApSV79bJmqBUKiNK0JYwFINAHeEYrXa3QQQQqRnqEgKCkgi+/qKS7DUIIkKT+qA UCGiGs4IBQgX2DBZDyc+uiASUJLq/kLh61zcWIkGguqqRHx36wD1icqe08POSMhCMkIQkkJIRFFV QVVRIsRFFVYoIqjFgqiiqiKqqooiIorBVFVEVVirEVEFVUURVRVYxVkRERRRRFYKoLFiiIqxRVFU ViKjERRYiRFQUVGP62xEFVFVUFRVFFBFFFYqIrGKigoqiqiqoqqrFFYiqoiqqKIqqxRUZEVERRVU RFVViKrFEViiqqqjGKJISQjxOCqCgHam/hVp3sA4b3BEPfcr+/NcC0EhEZAXb7s1dAInEQV/Y/w/ yj/YqKSJstSCgZap/ndOLRoumXTdapUxixBEFYChghUUtBsK4hTGmCDxAOCBPIjCEwPwYB/WQfij P44HQooGYKqr1GYsQh9DMVTFB0q2F92nzvoV4zRA/QHO/PkpoGMiokBqgRoHEBP8EIb+jp7gT6Go V/vmT9msU4H7Bhzw3ChfX4nOWfqCedh/B9q234ofmB6dCcexFe5Xq+7ZjtCEOQIP1EVYu73jFgSR iQYpBhDwf7UMCgo2SgljAJIwYSiFSUhESCIJIMGKsCACqsQkCRAjAiALdUfrJEptARkEWQkgRYO+ hV+xgFiLCIYHvDAO0N8A+PmIftm/QITE0qWA5tgUgkRQ3UFIfK+0hxB97pR/gRuEYsaQJShSRKEM oNmAthnSDfnA5yAc54dfcKeodnHdLg6Agv2kEhB3wGxPwj+uFggB0wFvO0IHCRH0xdAwLQHQMDUH VBA0Bb8u+aXG4fZ9dP7Jno3PJ2FdIFlxHx+wVRVo/l+lCuMYg+HMavKHxkrZHAEVVk4grAcn6uiE KGoUff+dizcphKJUITUy36KV8uh6ylTSIEcuquUZchai3Nhh5wGxBjSsxDE3wOHFQzCNoxT920Nh Hj3WTozvIba9wdNc3qflZyhbOQxqxJfbQaMty6xLoPyS5o4FiLjQdMNup1l4tfzA2RsIVcsn3rYk VvaPgTU/y5swKihkfn4ChhI8fWMDX05+7pkL4DO5QkX+djhskhmBRWEyLBCnEpEsQyyT/2XOc8Zo 2qXqBgp1NjUj/N9so+JQzbq/84122tRRrl6LMboOpRxDhWBSZd5HlYRZSaqeW+JOuYQmHcEdMQoT q4Raj7VkF3mCVLr3wN0VBMCgJhzAMEilLcP8R0GnqITpDwk8vvYHT4SWaHWOKHOHMqBtBEUA30SG eUyeqdgPZiG1Zk9QnxoWh7kaPMi/CxGkLEUtKCSiixP12a/9P/HMk2USjBDhMmBYVtjYlMEzFSky yiWIWCJxbqW2UbRiMIUEgSMgQh163wW7GMC85nc7hPZzijCErk6YBgfdQl7AL0WPD8i4+SF8jigj dEAkCmf3AnGCc6LpHo8TvykOM9KwOesWFVC3KJ2DmG4MsgqzwYKKB6k+i6P556Js6rXNDssVJbYu IBACCdHVKOkgvAxi+CHiPAo9O5YJAGAEIkYpIEhCISKwkghEiJIyCkVjIMWKkjILIiwgBEESCMAY KsYAVALq5gK1XyheUHzha0XjfjpR/grHzn+QcL6hfm6hMVN/PWZwhV2CUskBG0oYRYlRSSlkOwTk dZRmp2cn9EQ5F/mH7TnCRIixCMhBgz30lQVFkRFiCDIoJBQRGIDAgwgwD6SkJAoRBGKnnwayyl4k IkCCkIQAhC7YliUkYJQAexS6URAgHWHtj2CrY5PhACRYBGBBYwkFkAYxAUBkRIgCARPVsBgKBEgU Hla3iFHR/bQeMzB1yT02nbGd3O8ad8Qs3VgcFB5JSKpoTSRAgJGApAiwBgDARevUffDYTBwQS9pE JMx9QxgQknFQr9H9xey/lBdzweWCZ5QCEboahWAXDKJp4Ns+rGim3dcuAf65hGOLiWCWowoT12Vo ihZTFJrg3xgFaWraE88MSLeJkKVxvirAV4EndFB591Nwxqbzk9bdNX3HWoyKPorAWypc4NGqxCcu Cw1160PZ8TPlSwZ0PZMTs9qL3JGX3RNuFkmWDouFBuPLJLgGDfCVSSgG3OuauQJuAOd5Q6gf4jyb aPcn4HrMOGj+Pns5wMD+B+/MTQPArdOb+yKsImUOeqSyyDIkIlimogskqGhDBkAggIpJN6GgS7EI FkMudENPR+vrCy/r91urRlr3lXkvVWtxy971dZqt1q2n+Hetf2WqrbW6z8jFUr9UNz0J3h1jon2g +AfWyj7+fnO/VX2jqwpdNAaTTMXXwhQb0Q8wPDa7BRR0PeOG/5h/Fv6h9h/Fb86PACqea4ByOzyC 65L5Icul5dG4DAeADSmzAdAHY6vVpkISSSOSA9KRXvOXt0qGj2A9oQdqngHW8goZIdCd/CBzvrHe iF8UNAPWcjy8kkjGuBhs6wdI9fSuXRyr1CB3j7F3BcMO4Pw4/Hqe4CyK7zrFHmTmE5zapsQ6cHe9 jkiqeVw519B4QO8MDQPhl3B2r22QPdegfHw8uIRVzDh4XVyw452dhVpxlBCofq/Sfp1Ofy844wpW 1lLbMuMWFyhj2MKk1aKr9soWKJ+pk8IAshv7OfqfnEtpdUvr9cuZ+XJjjiuYZkOkMZuQ41PP0KgQ XYRgQQ0UN4kjIFgDiUUObnA9q8rlYDsX1IetExfR0qb9AoZ8216h8AO+cQo6kRwNg+s2Ic/D4bRw 9FcDQCEHUCAefDsjzSQJGTgO2q7ZL2kelIUpQHXVSbQge6bDeSGIYMn/SUCWLOAQKcInNRcU6vYJ 5h6k9zY4ENAa/YAWEKQdAa2QgxMCVFSKQRyU1CaxLhV9WKXDGAZQO6F9/IOnSmAXA+uKIcxOIWQ9 GeUCiAdAe9BsvzdtAkuxPfP55QqHrP1wh/nb9JemXCjGijFIOlXjBBNfoupB3D2od/wUe/5j2/Mc nzuvns6n9HBsQsCIoB7rcQIqrOhvqI8FlC6ZqCD93aDGFCNghYNghYNAZLAbIkpGwQsGxKNhEJQj YljQGSgNghYNGjYCBYDYljYljYljQjQSlg0soI0FVFUIKjQqMEEggkEgkYxjBCCEQiECBGMAICCQ EQioBIrBCIkFixRijAYDBVIKpFFGKKMIwhEQUiIKQICQRikRBSICkJFQSCkESIEUCJFgRQgwEYEE kIQWQEMB+CigRRxgnKD3/HaUB8vhv9NCboA9b7+dsIcukfJB6V+Y9WI+x5zWozYPA6UTjUxdYHdo +Q4KJyezbgJ2DyVzCj7gOPh04HbAPHoS9k4FGI25kabongg+8Oz3fL5hRyhoVMlOuCWiHsHuGNJ/ ItefyO6i/Hn4RVAHgqoidsOwDeXU+6F3sn2mEzbr0vyw2qSQYk6KJAoRLVSwkLfIoUcE3md6J1oK KGWaHI1ujC4jRFsJPspxk8iPV4wBiCYXTd55f5o2KucTTJBVJMhNd8fA08fGZmOW/jC+hvaM5IPo bdvk+IZDQaCaAwmiG5gZEggh6hs1qpaWozBlRotZwi8cA1tRpEentPd76P1cm3EC9iEoCpEmH0C0 qn5WA/YuwjbBtbMkM27IcScMzgc56l97Z8EbzQJwhvUUDmEOsA5BQRXpD20gB3jq8Ox8uYO4U1L5 odgY9wdgPn36PHiom3kowdNCbIEKAL1cLCOImHjElQAVDvNLAqDFOSxYVporYCegAA/ztK5m/wVg IdpoTeoH7CIkIhoMC/6NxtTedyck8hIAUn8p8/5KrcMFi4qo/+xwwqqZrWAHEhxWjAzjqBTREQ5U 1ACcyZAZPxPg0Dkee/mZCAkmy9Nosj/qhVEKq1lhCku7VUuXFsAok6wTw7rIqYZiYhZ3BzusDBLi ZBtBsFw5nAXRET3LDUkIRQxkcqKgWhDYrTeHbHNRsKC2whA0hJNoDrGZICIIsLSSgwQZCZKNJGKx pYBYxQkkAIxCKkCMWJCMRjFAkknzH4fn+ae9y1FBK44qOFasz5B3yCztgdgwUXImAUKS22kxmEtA sWQBfq+wZlwK/4LAIEIjAgEisEIQgxPE3ThEXQhyk00ka1FrAsVxWEMyirDLIFNe0/uaNmzZD/Wv YUC4lzv5qr66Yd5cDTi/MbD9jnlLAGSWoJlp+dsD3GIpzQGx1EPSNlV5HMNPGkikbirTSU71s0mi SeEoCqA5xZ1RTk3gSYRCmMUjHWLv2B7w8QuHaIJijkG4HhNqJkbn1NBsT5LgFnhVh4MH5mSurhL8 QcIBYPlyrx5m7B7BAOIDgANSCGkLKx8IoQIpGQgyMZIgp22DaOCvMc8IT8fT5ro15uPhEc3dTeHS fdgJbl6BsoWMY6DrHRVskkEsMEKPqRpBkwTWDvrJWg0HhoozbL7Ag3kIPBVBGOGBbyKwxH2WOiRH QgfQr5Ng8+980LP05+BB8rgvzVzbjb6TV61Z/3lrS90CrCpPO1J14WwgheVhIESYFDoh+wLjqQRT ZgBDAYBzkgf6jZpgbCUlhrYTCdogw0zYAw5wqkNajVQnMnC6A6wDWCsQ/EHXjtIl0MQJCEAkZFJE xFFGVHhXkQ07Q9HtA7CB39QbfmV3H+TXsMPLxQ8cD+cMHE8g9X+YkVQ2jrch/SVvtcTyOe1Gpxsb vRMCEEsUF6A9vI0fuiUQPdBTlYYJEtsQIPHSbjEwxSRtYs81720/b+3D/ywdaJpQgJ02dXhlpLlV jbbtCh6koKLgFNBxk7FZSxNCTRduq8qn0IAQhGCSLBgRYYfu/gaxxeyVT1EgY+YfIU9Q+8MENoY0 VIeLVo7A1KhuwbA/uDWH3J977x+H7k1BpWRczQgWD4antd4ltofH4GlXOioFgUICWCwKRSSiEowh WCwYrIWwoIGbgqWiEQuoxT7nl+y2tf1iwXsUfsFNcLg6QSsG+MdbdC6ED5BbPFXBFFViAeGvNC4l iBD9y8ZmdYZ/PtT9PGAcn4nMH3OvgD7+tRyH+DqR/UCo8JahFHu5P2olDXMfTTujiXX0H9U5lvyo oU3asRORFx0HIylUdqM4oll4A4Bcm4meuUHjkBT0luZed6QD2MgfaW1bQG5TC2wpJKlFKz++yFMk PKhiIf1fV92io/Rq6zMzMy6qfhMVJx6EXNNYxxIoGIBVf50F0IjiGLTgMuELVUjGoFdlIcQae3lP AK3CG9wb92HqHXzPA8TQBxesbi4HV5B95E73gBUPamkROJsieYAeSIaR5R5cxVOPwiZuGQZj6B61 7HkesTqATYNPrEM7INjtd+u1K+GxAySajshossB2wFgpNEHAMuEIBFhIregQtPcenStGQH0EgGZY PqSSol0+xgkA6X38Gw+IcYaA2jpCidEX7/5P+P8S635EL/H3H8+JyYZaXClvl/mjIdaF6knxiJRw pBo8j9qtA5GzhAx8fXV6koaiu76cg2TbQlH3OdgV5kQ6ucT4d24OXSb4Sw4ppLJivWDjse4D14Gs nLFJCQVCiUSCVnjCmeuGREVQFAGKk0FGyqUpS0BUQ93tT4+6sQMIKiQBjEjBDWH/4olWOkoeE6x2 Hzx4tHsXjK419Qwyb3e2gwfvb0FmB0FoUB2h6r2XCU9VqLOGErn983xdMQ4flSqYBJCWKsrAbxXj WdQhDKFuMVNYaWJGypTmmC3tSjgcLYTjYdzYZImY8ulrWCCQHYA9fv9NwdaG7kE+T3fV9SfI6g+8 EOB4wDNOMHYCHMrylSn4OroW9iQjuEr+6Wvpfo8hd8zSHR2VvHCiHSkeyMgbYmQ+6A6IHAIbNfsA +27p0HEVRR5dPMCCcX2NnsoXq+C8qIdY9dKIcvSMgdJYPYPMU6wGCLpghhB8FfT4L5o/hwIdY4wM mDsHb7TmDoaOhXBDCDkMHxuT90zwb1SGpxEysODdesO61h8UIsUIkFPUKFDaz8BoAsJ6HuUsW9y8 LSNosih3+aqVkmyQ9OoCGbVwospoINITrZhbBZS4Qu/4qXLiXKzLYBMwftUFVcFOmwYqHeFKEVpZ SH8M11DAMBTAaAMlfyPeCiHmprBOTwU/Jp/IPLz2HxV7qDdvrkXrrCHsj158YTvAokPD085jdlpR VURjIzKGHqLHmooHjzlzTrM+DhfEdS3bpyq/PbmmGMfL7OL7hz4AfH3r54CfVaexDkKAuJv0B5gm 02e4kKJ017Q0nEh6g16971vhCTnt499MYihNWfNVsn4zUKwLMM1S41xm9mtTXkHObZDRKRjSyB1l CPHG+HZqI/hQkiNSFCtDhBwMkKa00qf2/17AvOZfC97NavQd4jgyKRf34cTTTVJE1oEbYmFIlFko IESHVCan5FBilNzdFKZQApNa3hoFKUhjqbdGOUqU1kUXHZQ5y73m4ahRcpoLSGpwhsl0OzkzTxrB 4NOZZJkFCZrVBYPBvRt3Zjd7kwr+90wXSAMkSoCLNJTfBC7MsDITeyZtLzmv9BrmUoRSIJSh6+fX cDjiH12nxTIuZmMKlpQtza6vI4k9DylndOIkFhqauYpdJpEWSd/1b3t4OePduy51iSbTagIjDCBm VBMO6kAiJpgSK4N6zLvXBsklDQiWYGGRut55c/UCvm2vcmIaQ2Mc7UVADfN8uVWUTC4mK3XQOENw nuiBOEhnFUOE0hibSFZKyGBnrLAEQjFikUOt9z4iCdmwRPcvqbI+qjgVTxBA2CBuh5Pz8wO4YrsQ 9QEB4A6diGleIeTk5lNBwoh9vAIni79wHCHSpwocQBEOwUUewHe8eXX030OBSSXjfloOrZ91x2po m0Cjli8SRmpYEIUf3waLgqMlN9jvRNAMh/SwnAIMALNyisbhGwXecCgu3ki4KBT/IM/xGyYPkbOC SjQ9MHSCWzGGeibnHIgT0xPlP+fxrYTVmFaw2mt/Ya42/pL9zmruXeAeEBwOEdb3keE037f8j1OE DhxUzsOZhK1FwqwvVMQsydH8gnGadq/9560514ONZmYqfTrCq136a/yBg6XQFfgMzNFIImstT7CF 4jIdSfrWgi0lH61cTkQtF96J8gD5B8bj0DvRVNB3QJEkCPor80tZgHtQOMshYDy3En3kp5UN4QSM C0pSLphswlDWRA+ivtMEuP0RHi7dKAKrtiEmv7QM/VdcB6OBQAcFbkkp0Gkgn3XpCnahQgrIkTFZ hmq0amVHvd1NszdiJNCaTTpCkuGF6u1elAqwIqr9wFHJLREvDeUmFDCSZPwArAEAyToYEPMYDMTF BQuDYAsiM9mIllLhvMEq8W/BNEDAYJGAGA1hKlRIkZCsg0LIpfju/OEdxgGMGSMCJEz+IKcHu8DI /olKWBwWTMMwdsaV3hx+Uf4j7SEId4QfnfyC6VcSgKay1wNShqUHZQp1oGOKBqRMUFz0LImFF4Uf nNOJTCLqNjRCKQ/96JJBHN9/g/pLvfCJGT305wxvCBCw0aIsJ0nS05k/OinArLkDmJ2IkEVP086n aBB+/0RRDssKOMAQUFkFhBYCMkRUICxYApFIrFED0GLoQGSWgrCD8n06Elk72LhIN0CAeghfkNWH 5K+QfSw+Suh+Oq4fjdtFmeyDhhSymhK2FzgPdZPgz6xqCwVIoREBiCCyGsh65ZJZHQrifih6x1B7 gcxxjnBD6CEFPeoQhP5gwgaDqagSEgB5TEYxFVVFlfchknEF/yDdSZQSJFZBTmnPdTQ8BsBBPkup WwJgIaeFaBHfmzSG2qbRZ1hYE+ekeV5hhGLCLCAEPMGiEVIHxgVIBZIcZBPTCwiClYCQDWHsp6rh gJELDNT1ociHGi3OuCyMiPyYBRFISMWRQyPe2EsHkKw7Gh5XsYsNDqHneQTw6AfUNXQ4TtHDJ06Z i/JcA+P1aESZU+rACiaEpbIHwkZNH+qzaT7QRjhxxcAn5wTPLNXKCsFisZXTcq461MCi4XE2WBAc RswGsFsDjhQ9qAYR0CCCstsJacFLEHARgCxQGtAUGMYk+KBLEkQZCLJnVmSMRgJGS2UFFGMUd6sm QwEComFghSjIEUgWWWAURUYKKBSQZQVGEVkjAEkGRVpjaItoiC2YFZ2EjbzVtSmEsmiMA2iICCuW lVhGSMsHBGAP1SGQJipgSYI0d/WHYlWQyDgWgE5BO9zDAbntJJIhBiSJVkSixIQSIkRURIoopEJB AiMIyIixjEFkDy8iooCRICskFVaVw1jjQP3D8dgerPzNpvjIhGEiBZdRyvLtHWdPoo4OIJdeSQIy SLGC3UYAm8fQPHID3AdOKL4CkHlUXYHAe0CbXgiAQ424OY2Hg8kdbOwRV9Y2dAfVBeENAGQYJQhj 6oJ1hIEIEWXiT/cYVBYIgHyh8JQ1qiCJU+ZrUKkMggfJ1qa+WpJnZzk2JF3uhgOdGEDCK++1nQw4 dnV3NR04FjUbQ3+XjIHDOk+8GTBknJTrA8WzhJDsZt6KFJtdhegeZoJcp8fx+79nUWLmv1b0XWtO tM8z/FIf4DpUVUfKeZ8I+WojvhtC5bZTIsgF0NzB3bdElkW7A2oLpq/u+g6B77hwBkHKmnmQ39af I7RqjMUQD4J4fE1A6+QHcvyBt8w6Ox5VFA4zpR2iiAWTxXjfhnjKCqX4C6OEvS0E7BZbTDYXhfVp e83+QwZY9WlCw3oh23/aJ1OYUZ4g5FaAqwGIaKkigG4kPl8Sfv2QgSHjZ2H+pFEVFWMkEylRJA8k TqCgj//da2EUtw/5hcnmL733D8RD0Q+V7BAMjqXr+GxIw3xHhgkMzIQPh7wrAKKpJQkhuLU2EpyL f2CAoCiKRhkgasBoDD6gPKT2QjqKKCLASD/WMWk6ulY90oi3MItQsNMJBkkYkSleULDkCagdC4AH esHVB0BFYRUiRixkU/w5wkdNviB2ImX46vPsva0wEE3Ze/yX6RM9YPUIPvSKixQqoe4Q2BYfVF/m fpoP1R831VQVAkohHqHWIBxc3eK0K/VfDxgkhHGERgFSIQRJEILIoLBBFEYyARAhBWMCAxESDIAh cItEBhEsczQBSqdCFN1OkDR9Hyfcp4r6/mWfMRByff0+HdPu/0jGAxIw5tK7Ey+WsD9QtuWh9MPU ax4eeSLGH0gfhgfaEMAgpplRVkXBZZgNJ8RLlhN6HeHsAUTIPmd9JOQDlJAkgJoR/vDDg1AL78zo yRAkDFRJQxjAGAFNg8z426nBpRNKIQBSIhIHtgAy++UlYKMRAjIB8PFweJgRIisVkhEjJIcZAFCV WDEVAQH9tIHkZ4P4aIdpIeqCa1Y5MNGcaULBACDAIsAhFSLIJEIRQ0jAulihFSZFCEoUoVthJ9kH AwFCAc+JYY2YEA1CZPzCRArKkpLXTcxCIwVIIRiDEEkVJH2BxMYwAoi/gBm6A05/DrKSSszSkUgE SBFiQCKQMHJDJZDGEPqIFNiAQirBIgiDBgECMgET4UFTqTuOOReF9fp7ETnEExOIwQNYsACd4wF0 AxI4ELBGxQxMBPfWw2BPYHN5JOJCfHlZ90fR6G9BGcO1uYXE9ODWS08pJxJHoyAf4B2T53FwZ/C1 Tcf0zBuHnKikkgYQdoQvE9jDEh/gHG4nvA/0zcAe1W/+J4gckA7/v1icBFa4XU23EjJOYeIYGzeC dXzBGK0r+oT1D6Yh92lXyOs5Z6SRpi3IN7BazY/yotIrBW9YWbftVxLDIGEVWXqc9FrMpDBWK2cC eyqxNmXBWIS5zh9zshsZIQEUBjAPsH+bYA8kgXIkSZBKFVVeRQ6xzNvGfWKGQfHbQHAuAGGkHM5F aT2SVVo2tgFIgaIkSMACH9KQkgYophSreCJ4MBD2CCqAalbglkbYq4GgMP9dFXg7YBICG1SK7UNQ B1wkNQHCB0rAoeJDjIowj7mC3hXxl7DeQKCnSrHXSDkDxkUSEhBCRASN+eyop1fu9/guGEXA9r1E VYRUMxNCPFxHEEgJFhL07kTDH5WUroSi8D9itgT/YnQ+wPixc6bfgRbwSoURjFKiAVGSQ3LFf0v3 jZDLjQ+14ndmfsLGoiSz5q9kTTsQMB+GoHMAB6PxNo7F+KB/1IEQJwgdomggmSteoP1hq6RHtk7K qIEqjkE8fKdEqLlQrz5AGcQiwkAICQYSBBAuobh5yAE8wB1Ha4KwiicDYBwHQS08Bn0Zyt37bn9W FEn3Xr8p+//dKxdgJyBXMG/6qJDavMxBoiGAP+ozAL8Y93SQkkOUopPG0r0+5X5tkw+QG11GgPFk gpJB/ZoaS7/J8gC32BBfqIq938EeXjdAj7EVn3a/mAeeSqYIa7/v4t5xfT57bb8DVL4GLIXP15Wy o04dyWQ5u8IsJX97dFkhS1UbraPcNbN0Kfj4A1ILoujP0dzUsOpgcZmtT5ftWycsmgea08zs1q9/ Z8fn/b7/2++ta1t1rNazWN1MeBU7niHwwDPtZsgvE/KB9zMgZXbJgUwwwKNs4OH+dy+SOtwTpCDd dQBYYuDitPKGTZDFeUcxovWRja1F8ZZtTMyhnFJ0Agc2z2/R78Yf42Kr+ZzWjmCHJapsUe1OwTQn Mic/mnK8x0kGEk3KHCFx3JUcMJYTm3JyjjdTE6U6x/WdDzdZqADhQ+7NcHVxYtO1Xn/mAHu40cOX A6E29Q9AjxAfe9TiCHPwgP7e4DwHvBLHMIHrsJw9AuIdAI6jj4CgyV8bbZgcFV1SSRotXSdpoebE UsGmlU4dRIFIghmmqGISYgEuEiotRgVYmCZ2s3VXALGoqyQCylw8CnZwbwLaAwgHAyFYTjAoYctQ jZmBoxVwm4OvESgA/lGJQd/iP6mJQ7x4A600hc3oTJ/dCbzcmPaCda/4uYcP1/D13REOP+Cgqrqs UbaGoQ2/iSii1NkeMLeAa3geR6m78iKGgy1mso7qo0ptGjgGD3xP2okLfgX36hhiUo/CMvBwlu3R WGbmH+zjRs2o3OChgynFuSw/6/U1c05N8yt/Kirf5WtY/zm1+rRoQ6OMX7UOh+w9w9SJ8jAX3NhB kUD03/UBsp633B/VGntXcGfDDZw9U+ScOAcigqrpEHp9vgg72BuVgYEgRBxILdpoCJ8/bPjX3Mlp a0wcQmMAPX+Ci+tPm8NA8ghtVyyEikA3H18A5Sc5p6BHkDT7jldVg6oIwIpAjIMjQBkG6Ph/KuyQ 4Eh7jxvJQqAVAQ0hDqSY3LEpde/oAPn967CHdEOJ3oHxv0vye7oBVKHuU6+owRDoYpOMTWIbZ9wb T6rxYHKGiGo2nMZrA1wDs62msvOHal16RsQzH+nz79HKi5PAwOo3KHT2e9sB0qego5gGgONQNJEQ 5Bxbbw5mKpdXzb0qdKOwClcw7nJVcczvPxOcyVA0u0A7RE7gDSlB94IevjEORwDvQ757UNh7wQ1K 2EVeHFjCDIT1VQG8OoKDjELi9/C+jgJkEDDwaSiHQ1lvEsHWrvwTFvCwpaSjGrDsdTWEWm5UxQkz XgIif4CzrVicMOwi4rAuqHuQ6V+I9wgHSdWzkTalHnSFRBtgIcl0scwnqsGr/FT760Fx9hF6opSr kFD7IouZaU9S4KolwLClk9a8ryaa5yEAss3FF5GwHlZXnTnIvhyaANegGjT0NVVk8JVXwRmdgBva fgTNn1jNnH7YMiMgKHLNTFKoCEFJEFATms4qe48LYhm+oD2e56eBZOhDrKV3ABmNHoHHvBtoVMAN 8A+H4v+3z6QAwV5kwDLi8WKHEsP0QEfIgrrRDID0urzghYX1E/Z/f/AVGrT8MAfmM98AFJFVGAsS DIjICyEigSCmsTAfo+Ie9DnEXIW+1PiiHMXfoBmrs9gfNxEVbIQQdPDseB3nPHFTPsHSGoa7dCI8 un6rxJgdnE6kPACxYWkX4uB4SWj9V0CNcWGCQg/gJD18alJ7wOZHEesDqHm40DcBtxt5vOQtI619 2946dg4Wy3HWka6t+fVylN/YTkhmpOxY32gQLD0CdQBiBx4N04Ig9LodfgiG0AOh8QFwBXEdC9Bt HhBpsiHU4c1/HcBq9iuajwbV4sXWHk9wDwrQK9gGYIQTw15PKPM7DJcnuH4Xgfc9O9uUPaOoDuA3 PSCvJ0Jjyjxd3Gdp7NaHKg9YcIYhomaKpAfUwAUj/v8R28p86aKw+EnxB+DZob+n3K+jGEBGRWII IIQggCkigEFCIJrTqj2PuxTxQfQOgPgBzdnR7XqNYi+nmh6wQ7xeHL7j2B3+XtQz1cBjUfdDgVtJ FAtpWxVaFsViMUYLYRCg0n5zDMEShtMmw0BopUQFGZCwGINkohNJJKwBBJloWYC92m93Po1RVlKi prEYG90FYIyThB0XEgaSUVVirBNYCBMMWSMyihdCFls1gWKIiEko1GYywRi2wqY4YVihiSSwywS1 gjBMpTUkZ+zJrNMd6EyFFlSqKaKBYiZQCjMzAySSsvBTTDEhbc1DCYnIkJAsxJwjQlGeykoVNgk/ ThSajzugfy96dmnBhVlN5Om6osxlNlMTZk0MMKnXzfr/Sxtafvz5vfzESHwfRPavnYQ81cW2CLGE ZEIMilMRaYg0xSIQKCBQRSkCIMfRhURjloxVICwVGRtIKymDAki3hTZlEQi3IKPAJY+Cbni2JlxL ny3K3ah6zpEQU+Qneps6gRguUOME7WuYDtQhQK7clH3bkA4kMtGWwOEuhsewcw6XhDE5eNks1CQC i1QpChkByAgkRJFDGBIWDAlZPpyVFD7ErNjVaQsJL9ReAQmH50LIIKyCQGMZzLVkSTTK74syfwSF MDZZTFbrSHSNCXey6WU0gQMsHEwQouI6f8NT2uYqqrpyGw5IDhQrCKwNSZ+z3jXJ8q95uDITbJAp X2ta9wdFFlACyuetLhwkgYIUg8iGgT7vhn/hP0z6w1jze0OZdMH1KB38zuV3nSJp4ZAAuMV6QQKY YRExwsXXENPvwXJQiuAEGiAVFoPIlAryEpTugDKbYYQEtrHHBkmSRE+y6TJdEcqYf10KZXVHetaN S9USEUsMKnv4KG5EV9fiPj53zYmlXKlRWQE0wABLda6QHlaSj09GUnWXJRT9ldkUqYdv4nmXW8E9 TRnAkFLWftV9YW6EfQah/OAxEJEYKxIEIQlLrPOtMgPuq5+mqklUbbYRia04CKR7Eo1mApZOUPa2 MNBT9kwY/rOMKgSY159QiFbNjUaP1/vX+83O0g6FCFDmWyxKf1HgNiIqR/fj7iFYdqtfFkaAOolm AF0FwYCZchwEpQZUQm/PMvzZAORDZB3iDSeUc4Cp+CCaSKVBxARC9miFxuQ3q0I8eEhH0XEBbXsZ EIbIFMdbD9ntafsJwoPQhIEIM6KEWEQiIhuKKhFBVWyPU4fwhyvdvOj1tbDPxXi3M0b9pDFIgyGv qLu4mW6mEE6BgKLHefVG5LPxqyfgJ7YPMDYFgkWhprid7ngD2ZOQml5222C5vHkIoQDpIEg4omfY r0mYBxG1X3QkVMRDIXTtyRLX67BnyH8+YfGFYXCQJZuQJLDHElhlkrIiYihhjMyZMSgwhffdX+Bm ftseOpKRVOCHcn6eZ8S4w0B9w9aGCfsD6A/UeVAAED0YCdrSn4/ua9az7gzfzA2Ose45Q+0DW2Av ooQKDmO/x4i+HlOGBEGDEgqiMpaGE9hJM4Pw8uB0Nlqaqs1ZS1lkkEfsPejskQ0kIpzqdP6QIf9Q qKsERZBZBkEFGCIkTTpkQyQPaGt4AVT8MW2BX2ijHiQZmimwzd4Z2C4/mxQox/Y84CV8RICNzhZJ 4E1zICUQrEkG1ggRZCVIUKUP5BYcVLtAOmUgGpKUoQurV1yDIkIpYOvv7U6NC8JzwPr/nTYkYyEZ Eik9Dd7FqEgyvUaMFXEAGH9v3BiidCKH4iQYB2j3nnodENPIAK9OXgQwRAfHy3RAnIryKJsX7QiG QBicLtVspw3Q6xIcQHtOX7u5D1bj9h4KU3Vnm+vo6PgLgHrWAdYcAhuWxpnoIpAX3gqn6mhH/IYM SMYAQUgKCCpIZsl2nsBjhb3ZKgMUWIzTYs0jCIdoQpfo0NyQmEbhzFXA8SsxPXoBRtAADIfoNIWB DRFQ9+gC4fv9maGKQgxvQMLCFbbStrCyUCoslWioJJ+e1iZZSnzWVhgsqMh2NmDBaNLtstCFtAqx 3LR0vIxyQXKAGj9o+SFgP10B5gB1D874oeR4VpFDnUIKvBwfNEpB3CXT0XUvpf6neHDpzo0FQqEQ AjITCwpUo0pIULQhZ7BrAxS4OtQqCIRFEBSRYsBQSMQYpCNP4AZAw3LKAshBEYyQ0MKkCohgxuRv Viw3bAohrC5dOzkHoB+RoJ9oQ+vfz6MdfXKvhy4X4gpX9atg1W4dho5FMoioe8UMeza+7WV7MyKt dWxtffJSz1rjJ89SPlETkp1Xgnsbq/TnrOip7ZTzHP6cxe0utmHG0yhMYwEgd7T5slEJ+PdCYWUp Pm9k5chTdwvx+B5YHmn7MvJS9pk6E+dl98koCzvUeqY8WpRbsXuwjKgFOjYcZJ73M3lkVXSrTkSS 2ekNCtWb5Qhje97mZcLN9KspSWy8wH/c1sajaVpbUMToUNMkMIGSR74mwRXKF5uzDifRJGSXVg7f fS6mXjjnemCR1JJf44Uds1LNjUxpEUg7ZjzRJRVUVbPxYmVWB1VER/LFM/7j7L70qkHvzPuxuLVZ B0ZWslPqG4iZYrahT4mpc4KyjTJx9HaUzTozyP+u8YIUJzMjKkG1VrBHOIQ5PxLxDJSbB7Fe6BNg CEl9xbW4r8hQ/lnBmWrm0Yq4lWyCPvj5GLCTglfsUEO/mgixafa/+GZ8SSDIQpIYtw6sL4Qw6j+G zPl3NTZyFfQlpJxpEKIgOAWDW3V/a/fDjJxDz1Zjj04aTl6BWuKUr69nzSaSXt8xy2p9VIO3feLR Mne7s6HawWFuiFBGCztZzkwKgbAUEw0DRQSokFwkqNlc1wGl5RxcAs3TELuhcl1BTbXmWs9Sfjs4 iHvNjvNj3RHLUViqCKxy1geonFMxnlacCaMNuKOhKpjVQThMcYKGM4QwUHSNoDGYnr52GoyKMVFB R4aLOUsVBQWHFmnBEE87KqZ5u8zRp12FGm4HadWvDxis8UlibNygVKwyIFwOjQWCOEn02AUPXJky IQK/OSEXIMjxzDOsZBCxi5Aa154gdFTdalYsTFA0ugOw4Pm/EwPt07gRsnNb4j8giUvwH5ALd414 RTDNDzDFHE1pzfPqVujgKF6dL8kMEXkI9wet9/2fB6fYHR9f3GtBrFZsxHD7dlMczes1+ICH0A0C S/aCBHzWJjNY+eNqPMbWnaTfhkFPvgpMgbfMiM1ciiSfCAif3wUlRYn8Wf7N8dEECQwkiqNAYJ8f rwKRkwkQgpq6gkk0FvwFEthZC6kN4zM1II/xIxi0nCCpCCM2XdibKAy2NyK42twn7/VIEgyiqPx1 bIB/rg2xDR+82Am0e3iA9pkfh7yRnxtTP90fbGxD1CijzewAIr6j2pt6Dph0pzmoDjOY2GI0lHq5 fHWGPY4hzKPiu3BTan8sf5ffwWO+H9U6ryiQhX7X/TP/taVKw3DS/s/7ZBnMHAl7ABY3O7pbuTR7 heHu6+VxhN/LYqBj6K0TD13CjAk35q03virLpcvIl1btWyUg5wXKBTVZhiVkkTXXWc9QLw88LxLI jIbgXWyAuw/Ief9P8/7tXfchN+O54rJNiVl2CyauSGjKUILAgFoAUEAOJ4v3m6xATy/2j/OaZgPD AOZJCAYldTjsiecCR250VNsAqzy29aXNWmArytzDEIrkmDrUD1U9RNgbAoPjIcA0UwyhXDTtI+8H 3BrEt9nEO/fSlUUgx97SFAQCEQYwBsAVQJEObGgB3AdsRkXYLckN47oWCwNPNRvsryLExmQmiHFx cuo00hAkT3UyNkqUJbcP6bJtcsN4hCJFIIGn9HAdwAYPCxj/x/4/AsLfrlbOEA+ziXvgkIEIAeLB OMcFqPY/p8IJzhcT7B8AL3LnUEpCc6gqr0AiHB13dSBIYHVhLhhYVPmcYUmh/wKCk/jEIQH3iEB4 4nds1BZZHt3ArBoA0GI+EupH/w8XFDGBOLzxJ7KYGuzUl7FFVmvM+vhw1kzgubNmtmGzTFwE5PvP goU0OEVdhQaUsgUpCkVSBT8XZsEMcHwQskyHXt/cDD8QzJ8WgvohZxumO0wMn7D/WFP2u9U7ZhOx qCrGPyoQgUP9pH/DjohB9ZMlkgSQh98APZwn9OcOiSBCQgiJgRB/rioUHGp0qJhdUo9aoKrEOgMA LZxCQ68zFfqrYfeBa4c3DWHzadado/d6KfvDvOHErecV1nGpwfsxUInX2HtEh94+7jhO0qqz+73c hImo4ZJIwlBrOwSHqsobSLq7F7Qf4vFgK9QcOreXDl+8QT3buiGG7iDgBLhTa6v0HL+KZoYi/yDW K5Bp7F8ws8cQ8fE+2jG5RmIWRD1PZmfufn/R0E/wEBUA2q+YCiZgd2I2EVE5ifggvxLBP9dkC6N3 vy4ezRiIHxGhO7kGigpIoIwWB8yAUFg2ysEVh+QTX9MwZJhRYQZJoTbN5TQIRGCF1gE3EUsB74oU DMIFomAXg1ShqUTS7Rh2Ldc3h6FAzCAm1iDXkpqIvPBJzo6NaCayu21rCFKVyQNk0YhTRpgF3m/O b4ZgkCYJYBjtNaJcMo8F4t1vfFDabjHejg41D8qTS/3HeDUpRUh0cUJZEDEAEGEQdShZEQWKCMkQ UQFkVD260a0ikWHKUe5ajKHutkiHARA0hQalaIOcLQbmVjnTGDg2YPAwRxRNOio8Ecn0+36Nz8o/ H9mevPDxgHIdrCNYLgxS+N/8Yah37Wwj7RP3WI1l9RsxFFYWwVS0fpstLcgdAT3oaBYDd5F764Qh yHDpPvWBcqgNpYtNkDiDVxuhvSEA7BqDtHcR6YvS4h++BIH1/50jaISCBIj+M+mwOL2GkdL+POJY 8Z8xHcIUpNRSlN4U79K95ZHSAXCh+1MmytkzE6gRVWI+NhNAHK9j+vLr7ftERk6PUBWIqgilLIFD 57WMCX8yjphdIw7XSBrC9C3iwIx2pay2iQIJGCee4xSyyCR7TGyBIG5sZ+bJDpBYIzIyFSKALARg IeQtcyvD5+ByGttHFz5X2OwoXUJGKakOLkwy4+8G3W8Afo7ATARQ0iu55Y70gbw06v0G7dbSchvn Xdzqj1RqipQFQuneYo7NyFyEYwjAnIlCFWRTRZT10AesTRRpmHBEHmC3WT5QBwHTttIHdDmUTfRz B4p5h7j0/A0jzgoh+/MNCA+AQNvH8Q67klpEqiVS0pU/RafRdfp0XKHT+75i/RoGVLFHhq4IsUaV FFSKosiy/j0c5C/q+eZp6K0aJW4cfR9odipUQwE4YOgYus4NsaC0hGIcBKIQJ25gGSnCX5uT2PUp lY+1XwEOscT4Ifd4HIo5p4n0NpuCHSWuKWOl2gHybQQmseNokIkIR4QOMA/ShtRpJ6/go0j/J5kf ZFPdJvs++xOWaOoXIUhgQUt+t/V3/Ls5MNz30MJ3vN9YSWbpsm0mtF70czy2HAzD2ZhUtnUqMZzt wMAZosoxJq8QqJqKBepSh3rrxAszCk8UJv6pSUkMFi+9pynnEPB2NLz46x5ptPR5MC6DKeiSe2aP a4GBwUYOUk5cfKmR6TiSOQJfwMf7BV145Ba2BGmURKdoW0in8czBa0Zm1QqGoqzIrkIAi7Rivi6+ BHlERmVDQJmBktSh5UYFEiicXi5sXWZT4GBkuWSWwpE3NZU7ICauRUEzNNTK3HCuNLSStDZNMux3 knlWolMRVZIk00rCvWgRUyShlKoxiqSakGWRgCE6wZuQrQZuTVakBlsZdstBDo40YxbeNPRPhJQE sTwFdp1xC3yRN2xJgkqIQw3DF1axdGGvcR2HLQOqShwO1FYBshZwYneKzQWgHhqxIVkxXBYU1a7F YUZiAXNcrekuajWhWl1TemJVxy2ikemQikRNIySC/7NoXMEkwXdESH4xlZJ3bLAEUKE3ltlCP/K6 svSJHN46ikBSNGgxNYtHgdNc8oPJzeTm8O7hsp5HrQ4wVN/EOJfnDDBoA4Ek3wEwmBbYBqwCSaLt CZl2KjkDgcZPwvqapB0CSMFa5sgkBAxIggggm+QW43bxSpIBlyqcSBxCrm5kNgT8DfQ4u7DDIO8Z UFivlmIj+0f6Pv9r/N/nP9j6fvDnIYLd5sz25Jmau8y8V1sP7xkEwGDJgTz7YcQhoNkEnmGvfUow dpkJDd93w105dAcsXcmwwFgZJQQEDEaFLAQDgG402AzbBYLjk2C7dJzMChwBZVmoyGiwJOLvemG1 mWiwPg8uMNWkEEmtZXBTRzTAZmthqugOBrZood9RTTWInw8GmbOU393pagyKBIAkgoccLRbcQ8KR D7RDs0B61FA+3aD6/0JiDhcE8v1oPehgP5ppeMH9YIB0BpPs5hEFOPa6hCyO83galdHXm497zK9m 7r3ncOsDaIF+0e5bh6gA79vYF8J5b+++9n3eBup7Nhlz4p86F6qhrONFMsmCV18Zb7DtK82CxYcs oqvbCiQVpAKDOuzCgDqiYIQGMMsswS53ws4KeAu00qM8U2RDC6JhmNs5SQUDIX8jCZnnHgyAcCpc yYS0D1sqBgWEsSUBAayD2BTMOrNBmoebBi3QaJosRJs0Zm/x3jWjcNOVQEBIwmWq9guKIYBpBta4 4NFagRCgVrGJYEQstDZdSYwMY0QGQQZIDBBf2p4NINosCAZbdPqXQW/1uphGEHNw4X78dnkOFsUV NQtjXwwIxCRIEC66VU1phrssYxhIwIBEkYFxgKURVIDCIsk4tQZBhCMEIMCIDKIipUhEIhAiCcDn EXbZvBCMSQGDFxUjHAToIlnuRMUSjB/cpiO7+N8HaFQB6lpDnL8jlia5dftO5O4Y+Om59/66TJyQ 5qQU+WvMdaajXiocT0roudwzr6RbJRy2BZImMChchkUBMo21WI1nEkZW1wxywEajCoBahY1BtkWC xEBBNMogskUFhFGECRFgREkViQBzC3IgQ2gbSEz3UIsUP7ocwDZGBFESApwliQCcFkhSRalBBBhK gWYWTOdWsTocVDJNrfq2laa3zcrjcJYNXSKiIVO8XzERsj+hKgwHGJDwkM+VCKhCKwzl1b4FmgTQ xgxFXZm0fPNYMBl+0gflE8xZDBcGikzmsZ5kEsOt8BNYWHcX3+VxmmmwcFLjDfGK1ezlk52ZJHXg tnZGX1yzHI2q7dhASAy6sBgBsIBzmWmtokIrJAqLxhZL2vC2hA4Xcx+x+84x+5DKC1EmVAFSBFSR 33TgN7uEcgEQxaAdi4ohy5iHjahgGYHQWT2dYBwjY0cTz+oojHSCVaqiIWQuERLVQJLIhaCyIpVV SRjECIHyDsLl1l6SmBQpwKtUGyygA/p5Cg8PyqqvZTFDqV2mxWrjYpKeRLhvLecT+widMECzNdUS VQU7ngdQia0hpAY4auudaJbEPoIaBDsGyHMcGSDmCdesAukCAxzEdZBO1DFDA0uDMuyKXcCeiVrM Q24/WgJN9qNTanv/q/q99VVVVVXLhkM7HgnzIWaJGQi7ANqnGcu70hynFhcbMjfKrGJcv6lmFG6g HJEgYMWDKxghn8dm5wTAjNNJEBIgVLFL0Upw6xcKFARIlhR5NFzQ5CGYUySMbbZLGDGBaqWsKoVC S2yRqAghE9JgFmAWSMKlC3ppG0NrbO7U8kQxQ+gz7wz9j636KP0d/+mHCDMtvDFO6J+KjybAsHJ6 3h4DlfBwUKAI8kAPU+gh09kE+9WwJ1fij0ohm8YSPQiqUOYj2xPtYCnmxQTjipIJy9WtuX9Yc347 tL/3GJ7HSB2HUmpeHEHcaF4FhgGAaDuUs+jb7ZE+tD7csYSulmFhQAAA/mFBFgjFIxiiyRACMSAE CESCpFUSAxCKQBWMVYqgFkbpdg0paCmoEgpSEUSJQJRtVFOnWGuFT/5qiv2y1irfaW8vIDVSH4BB ecE2CUIL4m9oOqADaIdsKSCB8yIHbj+g0gHF3Op2AcwcxUlMIGmUFxOA2PLccAZEZBJFipEYLBWC MiyQnYYP9SC2BMoIoZfgbAMkniMkeeIAoBwHZuMVQZEIiFhSYE9gQQcekgBrIzQZGi9AqQgjIBis UUkU/cWoIRvAvv6+LC1+1XD837Qry42pr+UiYiJgVB6Y/KpdUCjGFDasUYpuv6EMdHkbA4BIgycw NDDgmtQGQxwqm+dsQqEsXyzBK0DkoKq5ro/RpxRwCBn/uxP3kIxkk1GilDSU8PtmGxUP9AMYSKAQ AAyTM+odezwsDgv495vFXrDJEdxvfYFGECGeDZVAoQO4LUP0Lggn6l6+QsZrBA7+4FetfQMrDMDr /z7w2fcvXaOuile5WLaAh9gag1D5kPxIHs8aGR/HjJbElXLBDgG4FM6sGf1fgh1mPsD4i8DyCefS An+U88aqmSpCSqrEhPtHRTs7zsfJdnn7DBfoDrL9Y5oZezPUHgdED+LmhZ+oZB7j9AJwA8/7z35J p53zXepoFEA/ERNK/ANqv6AHgOACJya/qrYPeBocF05iN7qL2R6QpX5f7gzXeHxyDk8AdL96FxEu BcT8Yrg/7UUiAY4YsDIZr3AZ9Zf5eS6QA7xB6Q3IoqvxNQ/H3XTrCEMqowKGkg2IlKEHaGrr8Zjw RIkWBMY1ki25XgedFUuh0iiAcYcI2sXBuEf/YYAKQIwZIJIBBIo9yf8OVEhBhFWLFIQZETnlJD4n AQQYcqdJATpWwGS+tbMR/3o9IwMkD8U0N2MixIkUjBgRYERgQSESEWHNqeQYih7kjpTh2c3DzD5O SCKvG834L/XQeEAutiswURRNdcpVgUPdH1rpFUO0/h+H8ZKr+r7SS9/7dCHYr6B8Q9YGwcHYO9/4 p9ETqFIHZxdiA86QPeK94wX9pGQB/YifaGgAD+XUNCVSUo/j86e1B/2HoJwRykZ8ClNEUiMxgBH+ hsH8EiyN13hv+dBJ8eHQHlvP+6JMUOQS5wDDAsCn/jZA/mT2f4WLfwx+lkPpzq/ToC4hmT5aYWJL R0sKkfz4x+1uXwiWj6BxPORLPGkMJ9OKRo1M4hRJEAgf3HiHR2CfljtCDl+3ute9sQbYT794AYNj 5B8cnN6tgB8fMDnV3qhuU7Vdo/MAPggfAANi+Y7Mc/jAGC5DQAzzDVnYqqkSzELKJxWP1Hx9xx5G c01RQlm/jUqqCVKI+SeI6Q7scHxC47HQAQBHMYKXIgWH+jAgxACETeR94ORgN2MAI5xDZEa5Dx2F tpAPraoJBUQFUn5/bTY/m/GWCMGZVC/g6g9gcZZvvCJwCcmtMgyz6kt/WCbugNhX8ytWY8vW7jms oms95CMIdvS+idDisVk4ChCgi76ogST/c/uEKB/cIgp9iPNYcgdhSJodCAUj11PUurmBA/YkR6TJ TitWr3jqOd/YvQfmh7dvDoVNR/I5HmQcwH+CdG18roh2hzgdq3BRDShECz2j693Vkau9+f6fMGjU 9IH0EYB+3arZADWCKqNRfB0EHSo6nPnHaHcnSCCZG74E9WhSC7nsOcEOwfoGYGcDJ5bhCMFCBBQG KokjFFZSCBhT6IH7gPb5zsgQwT+PGH9evJ6+0J+k5Ta87wV4gcy2E9bvCD07eE7Q3Q0hpkAxrb7H t9A9OvhG6ih5B2j4oJq+0fTbsVOYE9HaCnP8PO3K1VzzDmTu0nIPtx0TMnf3npD8iQKhH/M2T1/u GUpbS713TA6w/sLGRHwg/6sn7Ptb6xmL4+VsqDhfvKAPjbaevM6Xgf32H3B5HVQHWUOlcg6JsJrb ha0LSrQgAQKpoDwb9AJIuAXZhKOH4tiw50iSU4erNW8VYsROokIyMimgBJkjEkkIhkP109h1VccC EAxsF4Ac/SFQgJ1a1dSd0zw9ofF+b9j6nwX4L7gVTvfgIXReJQ27gT2uGWAq8gBgAcf2dQYhwocR 94DUED7XmuiqawyOUTgRVLLo7wDbwhZcQ3P2viH710h9AR2J9j1Lxfegne8jYqMGCJD++yxTBEEf i5FRRdkbIlLVEYsExogDEcDDMTUIZJD7TIB+3X7dYYPC7fX7wUQ/D56QQ+1efo4H1hQcqd6bR6gD YHreoPuN3H9g86H0ORdvcA3FHw5IavAekL8ovEAvzDDimKEYKkgyEjGUpRtO8GS/QQD9F0+XPqqr bVra3nvpZUlMqpVSpM7Bbpz0ParrzZNq8AQfNTgRDWiQdz2nbvF3eYCcXGriN3pcVU+jv4uoe7ed 91dofg6nfxp0UHuEToRc2C3Xs6vafwh1Nxues/Cv9Z7W0CXKufBnCffAkEkACESBEkAGKAhIqrEg QRAhCQQHwQfV3gr8sQT383NLTBfevb4IOPwA5Bzi/ghTsExAfREfr4Bn7D93vOpOvUKbRe5D3pq4 Kkt4BmnhZbQenQ26DcEeFPLIfWhhiBtzXwgfCJ4n2QlIetnWHvdD3JngocAcDkxRhasT1iXTuxU7 kyRH/nAXx5eYTr8w5RQ+OhfeB6dAIBpQ6xDlA5R1D2J5HYfcCHyHoUD1CJPrHtm8DMHV9efpnU9d BhJD5hsAORReNDiDo5kPsHas+vKvC8wcB4Ybp70PzoIwhTV/nGgnxmmkw3vARYqPrJk4hiWGRDm1 JpVpF+Lxl24h9oHevm8vivC8XvTkfRfenwADcdvWCAdYGpuukB+Kuo5leJ8x7hwdgHkIcwHOKaxR RwHFzAMHWlkfR7l9ceuBQRKlFUrRD4P7sC+5n4f+1vKKRjEHTJ9/8vt/RjK5hmZmYV0rZeCCGIbu SArCIj01SMhUZCQUo1G2siqCiqqlaigpQgEIiSSEiSFSliF/gHk/Dj2+A8Q7Sg9Xz53yAD3PgKPK dwnopaz4I3R4vR5XnDaWQ8B6ADxHVgiqZaR3gh0G4B2CIKYhxIeiu9FdwvEmgDhu7vfDunN64IXi BzhQak9T7JkH5maId2IfIDrNviOnD/ENOmMgSDD0Q3L1lwoXj2h3GzoQ2ANMg9kFD+RCH7WaQ0yG kIYJAigoVCWJIloSAtRGRSRaifI/PzH5DoRX1/KwGiO5OETlNvqUXZwAcfgI88ABeH1ahxXmVeeB w+9z5iw59TwL60Tx9TQvtrl9ATEOQNqpcFUxKd0V1AZiFLaLIF+J2J5+SKpsDvA5D8OzampzXtDj d5yo2cE0cmkigJpOcFEMOOKD7IlQBUOOKkIjSHKUHWictA6hPjyofD28PCHO9w+oB7kOkSl+IYHU CZImcT2ru1pmBgjqDhBOxe9HzDkfgr4q1b1RdZD0wqogl3n8uqw3JIQ5jUePlhgjGSLOzZ01wl6p 6STJ2MkGVDnOZUf3qtAZdn35r8ctlCYTY4tCG0MMSgyCIMqKXiEgWDmod5W8kRYQnaIneTKTlkAZ MSVNJKvDmrJKySteVMTIGUtNfTvRxHz3wd3ck8OoYeXk5pOlYkPK0Q4Q7TPB3kh2vmVtklY8MoCJ JpFERE658QwE4cca2LGDCMRBhwfp2cqftr7aVOoacyZqamjTmpKlmlCFxDjJynX3F2DlBDiMDCZI IFu3EgyEGGRfRmFLWoFiGFuDlQoM8tNKWKBMKHboDEFUsHB6wwdoGpB3vUicwfF3qOetsBgGoXQB 7EfiHOooZiJsA532PbuB6gwdfQCRHY7RD0QyGzzJ0QrqoKqFdBXSKwsyBLK9NWTr6YFOd2j0IMrk 8B8+ZIm59kOzKeN4UNDyJuGpTAQpoOM9oi4+CK8R4IZgHYna7u5NSaEe3udoKIc4Hpqe5epesbCe fBfgBOvY84bg38BC0aajW0U49wG5N4bvY9g9GzzU8V63lzS6nglK6XgfJLryqaRFXQPcHbse8NYK 8Yoo4BycQp5APM6/FXwE++BIAQjCB5oET1D3qLwjp8w4LPb2ApYLW0PeEJ195A/0sIkQSIiixBRY AiRCEiu12AHSAdj1jmcNgoV2dmQpyHNXJByCVJBIEAweNLjkv928JBegeMjhscfh69QHEGI9iKIe CB3IWXaBrw5cAQoDELJ0AHYUHmdycqGxeAIhh0+R6+U8NlF9XE3rM0OZX7PsgjEkyCHvgSJ9PNtt srhjaxCFrEJQRMaDeZ9WAHs9O4J5iiaeoXMA4kOsRV9iHKuxSwcgHULijiIex7AE7eod2kbhtHmD YiqewFU5XgfQd3rBAPb5geXWqY83hdVOUcXebgOPhVxQ8QO8bJkr27RfaaAoBeDNHkE8gsYghgFw OfSgLxMh3x6LKCPFA2K99hLAOYiz2/r/0/oDwdQ+z2cAOnyAKB7NwIch0emS7xDJ9nQFg6U7++4J zewb9Cbh4V1oPT1CcIuldiHidoYcaX1CcwnfxDtEOaDfUgegh6JFe+PA7daIT1DELAjzKNtPkHnj ToQ5wd9niOc2o48x1I2eceh6XT1CHqE4Ud4iCnUhxorvXqTBg9t0OUQ7X9R+BF9RAEkBJFEjIqVE EKQiGuf+aWaQP+ZDmIWT/5i5ApafcB/Wy4OEVJERu4S4mH52X78VfwsjiY0f43mP9WQGBpoqGn9l pIL4THEqW//8xQVkmU1nPTLdfBAzpX4BgEFD///d////Av///8GGZPpzwAAXb6HFSqJUwsKhQAAB IkKSNmlAIAzT3OBQADQBq6kUFSnsFAAAAAAe8AAH0oBoPtwAAoqlA3wlV7oB6uPFPi0DKzFVFUCh Ue0A6HvoAWue+gAPuPjccAPbPbYnvvfX0AONjqg973PTj1N0HHX3Bi5sCGrAsvuB3VnxBxdAwsyq KBEAg4D4976g3nh5zoUABvnuADdmQACtmHrTpNumi5sgD07mLM2sGk1U1DalYVIpY2YkiCqSVvC8 uPgze3pkdBfMBotjpq4YapmxaVYQ2zKrVBsxizSxbZVVCFKkClwd6++gc33x9I6EqiO1lNpYbR9n LqWaS1MA2ystUd3OpsZQFNjSgLeH3z0D3PvcAW2TUarNayZm2mzEtpLa00221Zb1wdd3daFAaBUR FBL4PvffQc+8+7Hyp5LNswzS+7rptmU3hs41tMMM20rYo22RSiSISIkpN8L13wdd975w6ulWZTbG om2RtiW1sU0NAlUFBKKJKjQ0BLcTeBvvvXfZnU2ahstma1ZW+sUdsqqitGqFVUG2RAobYoKkbwXu gPh7vsd8PQ8mmNaW2l9OouWBhrOwZ20UkUJW2CgQhVJKt8H330Dz6+XodWtRtDbUsmottWyzNNjN MNotgwattsJEKCSFFODofKAUARIpKQiBNZkvWSp1kNAA53gsagFEiS2aSqIUhG2pbDc7OnWq61Ny ig9NDynqFSEhCSBUR0MWsqiUBSooFuByPt4KoVEe2QQkUKKbGNje124dhpB21tt2dM6APput9uUD 5aMFUGxqkWxhQV5Gm7uhVVVvs6HkxgB7u776fM7e+oCkpRASURVFCqN3qvPPatWTT3OdGgEjXnb6 3D6S9jnVkA33X0dsNDCKFEqAIlUmxooCQpKKzwA8g0BggNDQAAFAFACgIBDZgKAANsCgASA1QNBo AAaABbAAFGmgMKgDQAWfWuGtSIg2bQKbkYAOgAAAAFAAAAxABtgAAASggBoRJCaCAICkaeoaHqGg DQACUQMICSlKbUeoNNNKen6iQNAaAAAAGmmQKRBEiaaGmiAaAAAAAAAhKgFSTIIE2VP00TE1PUaA AAAAAClKII0AACaZACCBCNTxJ6Q1NNGh6gikAICEQBAFPJqJmkg0NNqAAA6J29ddp2Hb/v3GzZV/ u1hGz/V5/8em7ix/+vdUERD/2QvP/j/8f/D/969//re//rv/y/8J1/0Po4f/Q4OQfRM+jR0//J// CD8n/9PwWP/wXJH/4Jlz0//RsoUKn/+NlRSD//Hw/l+LO/zJfz/vso/skfubozUrC0P4lhm3lrXt 5cTc61jPdvXPXWMboFY2LIYhg8Q3/MIEeCE68jcBKUqBEGnEgDxOh3G7OTRJUQoHLGYDbCYMOTQ6 BOYOCeCPwcbh/Gx1cxxJRRAbZdwcPA8QGogNCEEqclwUUUcM4ggTsscSZXBYJXWlNsobYE42TrBh DnRwHA8CQ8To2rcHFuAmYOdjkNpJXMZl52SnlshctmHQ7l2aYDQbiMOczOEeLQFIBwkZJc5zUTwl hIdjA1EjxXDuZOORmAyvLALrjgcHA8WBNuIDgTlqy0RywZqA2wPHOTgtyGeAuINHFpTbAOCMErNh nDc8WdrgXiSrFEGW/EmY6MB1wphJgmkZ0YQLrbWaXhya4gwPDniOJJFJhQwWCCZorEaa1zw6JiXm u9wZskJQMB1suQZKXyx12fj1OnW14dpEnxPq4suTJX93+r++R+iiAIAHwQIQ5sqS0yZg48tMFVzY NmXJiH0D+d+cnsv5knUIAcE8R8d7qU7gFGsOYtDKBoXpOLTvKgQcVrQAHbeN6uoe/X8c45D8XPJz wdx3jDQEE9TpQ6I/VA8nbc9HIhoeONzAbnkuUOukOJ4fyw+k8yMTrlJe7qDgLnHvB3wXLx2Z003L 33lwT+r7e473ODiOevLh57w8EyekC0BBhoKJ4jQb6m9KsagEzAkhc4HKCO3tGZgkLezox5MGKVaC JEURBIRwwjWVDA2KgS8xjYNQRCmjGoSwJDaDe96+PzcMnuZ8wUHEpN0R9sO47eI0EDgMrFVVIeiW F2jmIonZjoOmH0UX90nJPfPRxrsOshmGYeennh7lOLvLk3ln2HedfQcnHfvH3Z5ceR1znw5c8VPZ iaUahfI1GHYagXsiNRmMGgPovQFIGScRoZ9N6ce1h3lQdHTc5OJus+vLzuzCDQIDwGFnORgGRmk4 JjNyG44ERiD6zHBHpHb8ceHfXf3Xhzug9uA++yPsHr8vT54646XZz1B1D1dVcP3149X3fz48cv3Q dvAzkI+sHnvHCdHl70/dIdO09POFFjaGu9LogKYnJkXMkTCbAYZGAYkxHsCDCVyAgFgM+GXNeBKC BJFyOLvxkOqZ8PxweRyXL5rh4nh5DAecdPne62DYxeCBD8HPExZAyLMaqzwi6qBohJWjPB+PuXrp 6I4jpk6nh5Y5hioOYxAaX8CL6puLAUMVB9GIDS/5KigvKgip8xQVDPHGG8bO8pOpyLmzJ/dtRzRs 4cwxho0b2ukXS8mG7d5dOGzJmw5cuXDdu5cOctWrQhqxdkYoOLl2jYuwFws3k1tVJFjNGTVs4KUv Uc1auDrrvt8fA8DOc9R498PPzvnpn3078DsKcUBai4kRcTFbGR1AKwoHYcKkGMGvY2H0dJGAXA3J iJApjYYpCZjYqKA6RbtVw5EXlbGgbGgdGgbN3DsOLhIIbcXHR2XrXdVULqNiR3RW4w6Iq4qC4kYM oPgHPdH3h30cdbwx1w7k96Pj3gHz9QhFEFKEwYCzULPDxDYPSoT8hVQE4QZgnjXSSnz9YPoY+nH0 e+2O4Tzuw+eRjR2T3BE9M9ndZru+89uB+KjuOubGg5anvmz5fT43MdeWPe9SXx7HAHvsY3vlw/VG vTywe+xgp9+sfedXDbNPZRkT7jRijNQ0IdszL82CDQqJFQpmwQt24CNjv2zRvdRj3fq9saPvysaD 8fixvtQ++WDeeXBo88sEbH4/Fg19Fzl++nJRvvrh+7saPvrBvtR9X1n1+sGj5+sGj76wRG+1J79b 32wRG99uH32z9ew33Fwa4++uGvfrGj36wRG53kP31jR91Z88t55YN59cPntn72waPqvfLBvfLh99 s++2CNjMe3duPuKS4+uHr6yffGN9qU9fLGg8e7Gu47rjHXvtw+dWTz6x9B75Z98sEXvln2C+jOPv bhPvbPntjqA76tz1Z99sHkHd57Zp+9sbz24NPs0e+WffbBGx79Y00+kzey0Hns578MaPvLG9vs9+ 8HnvHm5PDg+5saO/bGjqoOu91fT1U83NzJy1Bzd84o5rrB1ddYo6rjJ76WTz53nlg+ng93pHv0YK ++xQfeO9+N97YPvT64cEN79cJOwwfagPn3ce48jw53N4d28us4+u5+PcXmYnyiD27jog66nG9M+z 2e2NB292N0Y5mI+9t1U0J6fW+h8O5zj7y4ae5PD6cun09sfee3Aewe+2Xz2d9fHtk27OA6OcfQfd WTF9HpHRHBxuY9MecPeMb25LzzpfXqMPf0CQKghmKFlKoIhUWksDcCQDEwhahCVFsBzhozLhpYwx NKF0ckQeUaw3MnC6nffc+xvc+9xje7vrjg0HsUx59xw7Hr7hiD0PMXuKDyGg+D7Meh7wnsx7j3Y0 d+OCn72xvDHkU9fZ8PMxccI4kgZcgmzafHQusBBiYw0eN9IXSzHFkKpHGzO4okEPJ4izAs0RR067 xjbH32PjvO2Pn7B8SRfH2dfRfZj7F9i+3t5sa9vbj3B43l5vfLrg56K643F9e3XW6k6DY6ury88f OA8CA8YLze+5883l4QX1g3vvAZ2bn37mm++4Ayx8R7enCMubMaecxUGqkbsrJ04eI2hQ4HKJ4nF7 PU+6PDg7fsHfc4fvcfG3LPHzkuqx9c4zvPt9yV98Zu99Hn2H2Prc2eiBILc3M0aqZI48hMO5jM1W pFm9l9OqRpCMbsxuzxBvVGgwLu5Gxdi0WRWUppIb3B6d76+nue/saN55wG8PuPry6mO93JN9L93u ybvPbB4F33n4vPN59jbPt7B4XX2+g5+jHPmOOcfXl95up+nu9/IVA+tbWjU29HLpm0IdVKkMF7NZ NsUawzMNWTAoDpFGF3MDmNXGLjhMdDGgZ2wDghRTB4OR3BsdUibcTNYBuGonaw51Ya4KF8d9g+r3 BSUUGF78+7874uz3zs+76eL4YFjBZQ6GSK7bwIGhJx3GcUWdzs3lt3koUfAAIIkHyPPMyRXZAVVS 8A2BcXlqun3Pb5x33vw81evvFjg5fj3Pm988KKLzQOaCM6Qxeo6MFkY8neFwrBooIMq5vmrCx+AR B4gVXkCdqNOmSLwOeFCaM+PaD2RfcOY2xMVabuueSSwNsWH5ELH0Ied3iqvAPOGyDR3uAdxIusFs OVOHA9sVdEWKuWLQdMzSPIDtHQZhDe2M0ICjFSB3UjYQ3rBaQsHQYBjZ0EMKQr1DfBskFeESoHQR 52nErsZY4hCwj4L7QHYu9vD4rZoSMvZ0KYoVgw8JqRe7G4LwJBEe95O+LHF5+LHHJzwfexnR8/WT u9+MG99uH3yz9Ee2D0j08sHt31Z56nJ15Z9+jB9Bxe/WNHt9e3158ZyPfKd7ddcPx3vccfEdGbde xw5g++jB58Z3mXzyz2R4EHden1wHl2d2cwfHkYNG73l34Z87s+X1SwSe+2fvbP16R8T8T97Z+I8u +7PkdhB3feWeu7PRHN1zZ68s+keXndnu97saPjqzo7PrB97BkxP4EX+1//RFv3/w/s4//o56x1Rc x++P/f/Vz15/q/058bo+7rdqGr6/wzX6/pjP982pILcS5rKu35dVDriwjMFRE+8Kqjisb8Til57x FcChW5SBlEcTsTnnxYuPirSbgOfhTA9UAORNhqJ6hQAfsRAUFlOte7UrqwYnCVvSsucgqAtf7W8F SoKiLnmsjEeJ8B//UMDtvWnPPEHAioC4tA9m/nnHdqI3F0u+3ZE/9kuvuajLKQ8f/OR9v+lP5/0P 5jb+P93J/Z/KxF2c8n93hnn+3XB34eHvhFx2d27L+70+jq4O74uvbspvfvixvvD6+5IxweY3g6rB QUaHuBZuVgJywbDYInhgMi4uUGZDNizITsdvC43g7i3YQQRoh4EUF2AxdCwc0YDVioWiuGaOi8CI McyFgpBZYuNI6RskbFoaaFRUUcGcLmxXC7FxcblBaLodxHbmhAzQYOWRx0KxJBwTQzhkUKWgg3o6 xeCpHCxcjiFo7CMyRt8Km7xuDvunvgjzvniLfHLFelx4XPBe+Hlt8LCLG8KBO1lMUZyakWUKxDqI 24vBYtmQcHOhWzwPYLNBuN4KbCoIScoXvdloVWiwZmx3VFhxRB5Bg1wt3gVCeQ0MVdWLjBgrnQLo GDeg0QtDQWjoYQwkYMnhIwzzD7hoa4E9LJJIrokG1tg4D2tUeREjhJYVnTOXuYUKYUTXTWIdVm7C JWUOM3OcNN9QRtdQ4zwV1V6RJnYu8mUYvNzNudU6L15nJ4qrkOUZM10VmUpVFBsHswEjhJ4HJwYT QYw8UJzbfPcsW2LF3Qsutoizdgk6w+2OfDt2ntRrvuNaL7JtkVfDVZwWVvZdh4Swg6wIkkiuC0TN jFJFa7GBbR02N22l1bI62wrprKkt9MbIoWLp1UpYRdjexZM7uYjWdWPmHPCt0UbDkHsmpqlyo2Md t4Bzpze2rec/t+X/5P+z+Of3/fv9V8/5f/s8/b/H/NJJz7fF+pfj8M0nb8V3OROtj6sagukJMhA7 gVkOwtGm5CsPUNkZGjHg7AiCb49wnByCDgixwTDGDLEsKhYMrgZHRgMjGKkTyEwnWYJQw87UitG2 KIquuMQmxsjCNQyNkTZClkM1C0W4sNSt7TlJlHTv6dXhmfOd5DYpkjx2SGsrszIuLJuLt0dmVutK XXhniTgpsuSeVG02yLJGaeTSzbO8l2kzmF7UmqN6VZRk3CqqZEm7jCaJlchJMjiVxDdWS7Zc7x0k WT0uGTtyjr0qZJui74zk8WXx1c/H1XBzXG4ua9+Kt7XXd3zXNRVETK0zvHu6hPNqb47x3mK4tkPL rTVm7G3O9968ue++c66NXfp9XZ7fda6/f/8iPydB+HZuuhhchULJpKBRhSGskkMBaJNXt85U7AgM whnp6DhegngYTkjx2CRhhMMkm2DDQKs2GGrJk4CQWCzNs7NBq2bMpBlmNQqzvZqwBdbkgKvJ0+Ju Q5YHoMbWtQwkEM5yJ2F08na8BglOnBcMPbyHMMB65+GHtPBwYfd6+OhiyHLz108BL5NkoOSpcapR sOJt4bDhLXZk2dEKBCJByGHgeQwPrehgx4F567iTgOnkOOQgOmAw9vacvTc+9Hofa++Dv5eTgeOH tJ8XBwnPPwZ4Z4CerKeueWaTxOsnSZz4HiZ6gO5XtIDx74HweTtIuxxPK+scpyfEngfPjBwdhMJQ sqXCi3MWZJdoJlIS4TDI2DIZegPH0zQPQM9B6GMMnRhydJ0jDKIBhKyEomQq4Sg0CEtgZuGi2SEG oSEkhkMWEm5IW4EDUhFsknQEEwdDK8rdr8BhTofQz6mEkkLdcthqlhgLBYaJIKRNs4chJLNULOWT VyEgtSRmjdyFKOMDlm3SrutBhu1htYtaytt9U7cpjAjMhKKGhUpaIgaUpWgoKWhiCkKiRCkpqiP5 9oiBKYlIapKGaCJUpQoIlQmkqKmF/lBSukKSqWkKKWgBkkP6Y0UjS0IlI5mMkwwxlVZMIZRmGFmU FBQlCBpB0rSUUjSDSlBREMzTQaAMRS0lDSFVVUBQpEhRQ0DREroQ0UlAxNSRK0NVLSBSUFDVBQgU rSE0SnFhgothDQolUKlSVVBMzEERUxR/VQmsNPye1P52hoYj/GNfqtFVzjfns0FESfrjRVRUVEVN MTFQdyFFFGeMcnGutrqDvnHE0UOg46xz04jmxBRVN0bEdbJEFEw3edNxtztEVRBRBERUUUlURUHV qgo62q2N2Wqrrd1wY66xwVxa563Xeeo5LbUcW1jRzypRruN0WdcTp6jnZdBRpO+OeD9kHMdQtJ3A eXnWzoNU6DQFFsm1GxQeZNxGKtnTrXFoiYkoI4wbbRbYmIGI1iNtsZKONxwFqsbY1E7Go2baaDQa OeLi47uCKYIk51xbq21z5xmirqDdYxbONYsRTuixEVca2aJmuZ4jgiOuM8UUHkauLVR2xuLXc6Oc bRzHHOTTTQXNgnbXOxBRFVRazU3NjiK022OY4nnk4uKqpK2tjiDJBHeDTcTgttHffBxRFVxa72Dz huNFB1HNxd3EnHW4udzwYSqrvY4257MeXMU11jNFsaY1HPHBQbaa474OCu911uWKq4I44NXFg5xm rbFzG52KiqqoqOI1NXNxxuYOOOLiK4jNzOOLHdmppIjrncBda24itaNVNVc3HDxcXGxG2Cq62TrF jc5O7iYuJtqig0aoqSPOrjiQqZfI1dbqDiiKq1nifIeCJiqDqV09bng0BVLEkRVsnF1zuIc87RxG opaCgKFpryo1QdyaooNsI8yuqCJGg1ofMGop8BsVVVQUVVIR+zcChvR851V+85/0+7forflqu7l/ cXkq2V3YdfytpNO6teYoUxP0m6U0Jknzy1KW35bo4iSfSlEm7kkIuZ3G3J8kfrOPqS6hOz538fys G7IM5iR99SN/yTjn90o5lN5C4yG0BMkkmVzm3NNR8Gtl3Gz9EeUMKvpWJEyZJKFGakM38UweyxhF USpmqrz1SuSfAZPxUok+TN908Kr7xAkKtn25/Z1t/DelkGi6S+q93MzIJqk22RMzJkTcoEzT34+P e5s/IX2ZTPnjmW/q+1572yVI2ppzW99599OH2pUySPPHqVUTNe0zzkXap4hVS7Stmm/SSBmfLaC+ nVV0ztMVVTM5d+5m7vqr2c9tV9rBlSqhevU26XwWUWPuV8fHm0MCLoFXVKNXiimxJJzKDcz6n2bu e+Mqqp2d8u7s3eXa9H0bOD4lkeVOVbdnuyn9/s1snMzXPiVVTbbbwfGXe2Srk5NHaVuZnZnPci8z 15Plrp7pDbpjsFIfNS/hLHaTn8oNVMzUkpmfv48wfO3vh9X5XclPuueqXNvZW7KxIpKZJxvXx5tL 8fioquJJN/ua8/TLH5O2JmfKHx8eV9Vt2rvfr6+ukuqnCnk7U/mac1Cu3Z1vPfr3vSiqquY1Sk5a Xc1mC1uNERdq1JuRVE8ZNDjO6lRr5e1RSlH2xKH13VM+V/byUZNzJPKzJ/U/dOvmvq7v5619KbLr 827qY6lORGflR2pL2+nFt0K1zmiqMuoq38xjcXwurktSqpVUjPeZmzVunu1VU3N1S/NSiSS0Myec NumJBKI5ZTXNu3WJ3dX9fh2N2Y+D+m/3DXni9eeX27N3PuUZKUuZlcvko/FelL/C368We8ty72d+ ez3t81M/Pp88m/t+s8VHVPlOmST0zZ/GZl1ZttE78PV6Kd33umz8e/xXry8km31/Fz45EzMa9NsN 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 sWI0NtbFSb6Nqlom1LSrjuJFvkt0cvlj5Ocdce1eel/O3+OPn6vx+Plkv8Oftflhqb026e29JOTl LT+ZWpBDLi1J34Q/gIfL7e6fV/I9w+kBY/b4y8RtT574ne14vSsyUP285m9sSRTQ44/41vf0qD0e tbMzJeZ8vJ9G77sHeqHp+HbnPF6L95eMT7Otg75PQzUFWzUr1NUfSsb7rTQn2ffVRn0ka7q91syK ydIoq0VHGiF3e1Nb3oT5ImdS/mMuQxKlCSm5UhyzLkMS3LSX3+ypImTIkyQhH0O8xPzzMpZd5mVV Xd3k3VVmfftCZJkb/PGzamB7Ku/eNuqLphuU5CLTQTn4lokGrHsQJgUQ/xHBwSTBNzIF9Mz+9FP/ s6LmlVSqqqqv0/XflG2daOD/T+Mb9WKOueOeNxa5OCxxuVIJCaalMsTD/d+smtJYoRoEkkg+GpSN HvYQIUqbubSSNGrCtW6F1X7e/T7YbbaNlOmzJp1SLKdOZVYANHkQXnrn+WSSqn1mCPcsORLJ/CDY MhJkGUG4c2aqv60d54aoygtwwuVQVPuCssm0w4fVp0tlaytS31KyvDs5ZHmPlw8at/yzNz/TOost /69e3P9r09MWRflha4pLfv/22p758Xbr35L57uafN6njWa2brP151o17W+XJ/KVbNb3k/7K979Kk 4tN8wz3lHfqssf7PW/r0xJec87T/o+LrOfn6bx2HWf19sfUc7WKXkr1+x+J5oXWGpRq/KW1/0h8W orquNPb2n6SGXTcvEy7n0sLX8KfaTVo34UrZijfO/OY9tdeP9L8daT+TmY9+1KpvavSdb4nL8evj xW4ZK+T3+KPesLGJu/6ak9GS34rjEuT7OWufpm1uLVZWs2pwYJ7tN97Z358/Skr/h4vx6YkvOd7S /1JrrOfn6bx2HWf3/GPqOdrFLklev3PxPNC6w1KNX5S2vxD4tRXVcae3tP0kMum5eJl1+pUw0lXN Z57h718prM5tiv4+biV9l1mNbHWu1Wnvwi0u41m/zEvqzLZidGss2etd589G3xfNGw61z5W7N+u+ +bXFmmnL1rRSnqZVlVc0/KlSZSnnsL1tr9/783b9ZU/9/A/hj6/PZeVoV765o3RtLowm2hjM2Hm8 VfDS8NL4pG1tU3uJjC/6PP3fc+d8fq+OjmOqOLOtxtGjUcFx/XGvbjce88UxcWIqPF/YPh+E/IOk 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 cy67zKax8au1Hwv/+LuSKcKEhr8ILEg=