Re: [MERGE] Config cleanups

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Thu, 11 Sep 2008 14:52:14 +1200 (NZST)

> You have the WCCPv2 stuff around the wrong way.
>
> the redirection has nothing to do with the assignment method.
>
> You can and do have L2 redirection with hash assignment. You probably
> won't have GRE redirection with mask assignment though, but I think
> its entirely possible.

Oh beep, that doubles the patch size. Oh well, fixed version coming soon.

>
> Keep the options separate, and named whatever they are in the wccp2 draft.
>
> I'd also suggest committing each chunk thats "different" seperately -
> ie, the wccp stuff seperate, the ACL tidyup seperate, the default
> storage stuff seperate, etc. That makes backing out patches easier if
> needed.

Yeah, I bungled the merge bundle.

Amos

>
> 2c,
>
>
>
> Adrian
>
> 2008/9/10 Amos Jeffries <squid3_at_treenet.co.nz>:
>> This update removes several magic number options in the WCCPv2
>> configuration. Replacing them with user-freindly text options.
>>
>> This should help with a lot of config confusion where these are needed
>> until
>> they are obsoleted properly.
>>
>> # Bazaar merge directive format 2 (Bazaar 0.90)
>> # revision_id: squid3_at_treenet.co.nz-20080910154736-tthy86pnrddzmsiu
>> # target_branch: file:///src/squid/bzr/trunk/
>> # testament_sha1: 7b319238106ae2926697f85b2ec58c3476abc121
>> # timestamp: 2008-09-11 03:50:49 +1200
>> # base_revision_id: squid3_at_treenet.co.nz-20080909121659-\
>> # q5rnfdpug13p94fl
>> #
>> # Begin patch
>> === modified file 'src/cf.data.depend'
>> --- src/cf.data.depend 2008-04-03 05:31:29 +0000
>> +++ src/cf.data.depend 2008-09-10 15:22:08 +0000
>> @@ -47,6 +47,7 @@
>> tristate
>> uri_whitespace
>> ushort
>> +wccp2_method
>> wccp2_service
>> wccp2_service_info
>> wordlist
>>
>> === modified file 'src/cf.data.pre'
>> --- src/cf.data.pre 2008-08-09 06:24:33 +0000
>> +++ src/cf.data.pre 2008-09-10 15:47:36 +0000
>> @@ -831,8 +831,8 @@
>>
>> NOCOMMENT_START
>> #Allow ICP queries from local networks only
>> -icp_access allow localnet
>> -icp_access deny all
>> +#icp_access allow localnet
>> +#icp_access deny all
>> NOCOMMENT_END
>> DOC_END
>>
>> @@ -856,8 +856,8 @@
>>
>> NOCOMMENT_START
>> #Allow HTCP queries from local networks only
>> -htcp_access allow localnet
>> -htcp_access deny all
>> +#htcp_access allow localnet
>> +#htcp_access deny all
>> NOCOMMENT_END
>> DOC_END
>>
>> @@ -883,7 +883,7 @@
>> NAME: miss_access
>> TYPE: acl_access
>> LOC: Config.accessList.miss
>> -DEFAULT: none
>> +DEFAULT: allow all
>> DOC_START
>> Use to force your neighbors to use you as a sibling instead of
>> a parent. For example:
>> @@ -897,11 +897,6 @@
>>
>> By default, allow all clients who passed the http_access rules
>> to fetch MISSES from us.
>> -
>> -NOCOMMENT_START
>> -#Default setting:
>> -# miss_access allow all
>> -NOCOMMENT_END
>> DOC_END
>>
>> NAME: ident_lookup_access
>> @@ -1555,9 +1550,7 @@
>>
>> icp-port: Used for querying neighbor caches about
>> objects. To have a non-ICP neighbor
>> - specify '7' for the ICP port and make sure the
>> - neighbor machine has the UDP echo port
>> - enabled in its /etc/inetd.conf file.
>> + specify '0' for the ICP port.
>> NOTE: Also requires icp_port option enabled to
>> send/receive
>> requests via this method.
>>
>> @@ -1955,7 +1948,7 @@
>> NAME: maximum_object_size_in_memory
>> COMMENT: (bytes)
>> TYPE: b_size_t
>> -DEFAULT: 8 KB
>> +DEFAULT: 512 KB
>> LOC: Config.Store.maxInMemObjSize
>> DOC_START
>> Objects greater than this size will not be attempted to kept in
>> @@ -2124,7 +2117,7 @@
>> which can be changed with the --with-coss-membuf-size=N configure
>> option.
>> NOCOMMENT_START
>> -cache_dir ufs @DEFAULT_SWAP_DIR@ 100 16 256
>> +# cache_dir ufs @DEFAULT_SWAP_DIR@ 100 16 256
>> NOCOMMENT_END
>> DOC_END
>>
>> @@ -2291,7 +2284,7 @@
>> NAME: access_log cache_access_log
>> TYPE: access_log
>> LOC: Config.Log.accesslogs
>> -DEFAULT: none
>> +DEFAULT: @DEFAULT_ACCESS_LOG@ squid
>> DOC_START
>> These files log client request activities. Has a line every HTTP
>> or
>> ICP request. The format is:
>> @@ -2314,9 +2307,9 @@
>>
>> And priority could be any of:
>> err, warning, notice, info, debug.
>> -NOCOMMENT_START
>> -access_log @DEFAULT_ACCESS_LOG@ squid
>> -NOCOMMENT_END
>> +
>> + Default:
>> + access_log @DEFAULT_ACCESS_LOG@ squid
>> DOC_END
>>
>> NAME: log_access
>> @@ -2342,14 +2335,17 @@
>>
>> NAME: cache_store_log
>> TYPE: string
>> -DEFAULT: @DEFAULT_STORE_LOG@
>> +DEFAULT: none
>> LOC: Config.Log.store
>> DOC_START
>> Logs the activities of the storage manager. Shows which
>> objects are ejected from the cache, and which objects are
>> - saved and for how long. To disable, enter "none". There are
>> - not really utilities to analyze this data, so you can safely
>> + saved and for how long. To disable, enter "none" or remove the
>> line.
>> + There are not really utilities to analyze this data, so you can
>> safely
>> disable it.
>> +NOCOMMENT_START
>> +# cache_store_log @DEFAULT_STORE_LOG@
>> +NOCOMMENT_END
>> DOC_END
>>
>> NAME: cache_swap_state cache_swap_log
>> @@ -3085,7 +3081,7 @@
>> NAME: request_header_max_size
>> COMMENT: (KB)
>> TYPE: b_size_t
>> -DEFAULT: 20 KB
>> +DEFAULT: 64 KB
>> LOC: Config.maxRequestHeaderSize
>> DOC_START
>> This specifies the maximum size for HTTP headers in a request.
>> @@ -3098,7 +3094,7 @@
>> NAME: reply_header_max_size
>> COMMENT: (KB)
>> TYPE: b_size_t
>> -DEFAULT: 20 KB
>> +DEFAULT: 64 KB
>> LOC: Config.maxReplyHeaderSize
>> DOC_START
>> This specifies the maximum size for HTTP headers in a reply.
>> @@ -3961,7 +3957,18 @@
>> LOC: Config.Wccp.router
>> DEFAULT: 0.0.0.0
>> IFDEF: USE_WCCP
>> -DOC_NONE
>> +DOC_START
>> + Use this option to define your WCCP ``home'' router for
>> + Squid.
>> +
>> + wccp_router supports a single WCCP(v1) router
>> +
>> + wccp2_router supports multiple WCCPv2 routers
>> +
>> + only one of the two may be used at the same time and defines
>> + which version of WCCP to use.
>> +DOC_END
>> +
>> NAME: wccp2_router
>> TYPE: IPAddress_list
>> LOC: Config.Wccp2.router
>> @@ -4008,33 +4015,33 @@
>> DOC_END
>>
>> NAME: wccp2_forwarding_method
>> -TYPE: int
>> +TYPE: wccp2_method
>> LOC: Config.Wccp2.forwarding_method
>> -DEFAULT: 1
>> +DEFAULT: gre_hash
>> IFDEF: USE_WCCPv2
>> DOC_START
>> WCCP2 allows the setting of forwarding methods between the
>> router/switch and the cache. Valid values are as follows:
>>
>> - 1 - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
>> - 2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
>> + gre_hash - GRE encapsulation (forward the packet in a GRE/WCCP
>> tunnel)
>> + l2_mask - L2 redirect (forward the packet using Layer 2/MAC
>> rewriting)
>>
>> Currently (as of IOS 12.4) cisco routers only support GRE.
>> Cisco switches only support the L2 redirect assignment method.
>> DOC_END
>>
>> NAME: wccp2_return_method
>> -TYPE: int
>> +TYPE: wccp2_method
>> LOC: Config.Wccp2.return_method
>> -DEFAULT: 1
>> +DEFAULT: gre_hash
>> IFDEF: USE_WCCPv2
>> DOC_START
>> WCCP2 allows the setting of return methods between the
>> router/switch and the cache for packets that the cache
>> decides not to handle. Valid values are as follows:
>>
>> - 1 - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
>> - 2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
>> + gre_hash - GRE encapsulation (forward the packet in a GRE/WCCP
>> tunnel)
>> + l2_mask - L2 redirect (forward the packet using Layer 2/MAC
>> rewriting)
>>
>> Currently (as of IOS 12.4) cisco routers only support GRE.
>> Cisco switches only support the L2 redirect assignment.
>> @@ -4046,16 +4053,16 @@
>> DOC_END
>>
>> NAME: wccp2_assignment_method
>> -TYPE: int
>> +TYPE: wccp2_method
>> LOC: Config.Wccp2.assignment_method
>> -DEFAULT: 1
>> +DEFAULT: gre_hash
>> IFDEF: USE_WCCPv2
>> DOC_START
>> WCCP2 allows the setting of methods to assign the WCCP hash
>> Valid values are as follows:
>>
>> - 1 - Hash assignment
>> - 2 - Mask assignment
>> + gre_hash - Hash assignment
>> + l2_mask - Mask assignment
>>
>> As a general rule, cisco routers support the hash assignment
>> method
>> and cisco switches support the mask assignment method.
>> @@ -4087,7 +4094,6 @@
>> wccp2_service dynamic 80 # a dynamic service type which
>> will
>> be
>> # fleshed out with subsequent
>> options.
>> wccp2_service standard 0 password=foo
>> -
>> DOC_END
>>
>> NAME: wccp2_service_info
>> @@ -4138,6 +4144,7 @@
>> DEFAULT: 0.0.0.0
>> IFDEF: USE_WCCP
>> DOC_NONE
>> +
>> NAME: wccp2_address
>> TYPE: address
>> LOC: Config.Wccp2.address
>> @@ -4315,13 +4322,14 @@
>> DEFAULT: 0.0.0.0
>> IFDEF: SQUID_SNMP
>> DOC_NONE
>> +
>> NAME: snmp_outgoing_address
>> TYPE: address
>> LOC: Config.Addrs.snmp_outgoing
>> DEFAULT: 255.255.255.255
>> IFDEF: SQUID_SNMP
>> DOC_START
>> - Just like 'udp_incoming_address' above, but for the SNMP port.
>> + Just like 'udp_incoming_address', but for the SNMP port.
>>
>> snmp_incoming_address is used for the SNMP socket receiving
>> messages from SNMP agents.
>> @@ -4354,7 +4362,7 @@
>> and from neighbor caches. The standard UDP port for ICP is 3130.
>> Default is disabled (0).
>> NOCOMMENT_START
>> -icp_port @DEFAULT_ICP_PORT@
>> +#icp_port @DEFAULT_ICP_PORT@
>> NOCOMMENT_END
>> DOC_END
>>
>>
>> === modified file 'src/protos.h'
>> --- src/protos.h 2008-09-03 04:40:31 +0000
>> +++ src/protos.h 2008-09-10 15:22:08 +0000
>> @@ -813,10 +813,13 @@
>> SQUIDCEXTERN char *strtokFile(void);
>>
>> #if USE_WCCPv2
>> +
>> +SQUIDCEXTERN void parse_wccp2_method(int *v);
>> +SQUIDCEXTERN void free_wccp2_method(int *v);
>> +SQUIDCEXTERN void dump_wccp2_method(StoreEntry * e, const char *label,
>> int
>> v);
>> +
>> SQUIDCEXTERN void parse_wccp2_service(void *v);
>> -
>> SQUIDCEXTERN void free_wccp2_service(void *v);
>> -
>> SQUIDCEXTERN void dump_wccp2_service(StoreEntry * e, const char *label,
>> void *v);
>>
>> SQUIDCEXTERN int check_null_wccp2_service(void *v);
>>
>> === modified file 'src/wccp2.cc'
>> --- src/wccp2.cc 2008-08-13 03:24:57 +0000
>> +++ src/wccp2.cc 2008-09-10 15:47:36 +0000
>> @@ -109,14 +109,17 @@
>> #define WCCP2_CAPABILITY_ASSIGNMENT_METHOD 0x02
>> #define WCCP2_CAPABILITY_RETURN_METHOD 0x03
>>
>> -#define WCCP2_FORWARDING_METHOD_GRE 0x00000001
>> -#define WCCP2_FORWARDING_METHOD_L2 0x00000002
>> -
>> -#define WCCP2_ASSIGNMENT_METHOD_HASH 0x00000001
>> -#define WCCP2_ASSIGNMENT_METHOD_MASK 0x00000002
>> -
>> -#define WCCP2_PACKET_RETURN_METHOD_GRE 0x00000001
>> -#define WCCP2_PACKET_RETURN_METHOD_L2 0x00000002
>> +#define WCCP2_METHOD_GRE 0x00000001
>> +#define WCCP2_METHOD_L2 0x00000002
>> +
>> +#define WCCP2_FORWARDING_METHOD_GRE WCCP2_METHOD_GRE
>> +#define WCCP2_FORWARDING_METHOD_L2 WCCP2_METHOD_L2
>> +
>> +#define WCCP2_ASSIGNMENT_METHOD_HASH WCCP2_METHOD_GRE
>> +#define WCCP2_ASSIGNMENT_METHOD_MASK WCCP2_METHOD_L2
>> +
>> +#define WCCP2_PACKET_RETURN_METHOD_GRE WCCP2_METHOD_GRE
>> +#define WCCP2_PACKET_RETURN_METHOD_L2 WCCP2_METHOD_L2
>>
>> #define WCCP2_HASH_ASSIGNMENT 0x00
>> #define WCCP2_MASK_ASSIGNMENT 0x01
>> @@ -1989,6 +1992,54 @@
>> * Configuration option parsing code
>> */
>>
>> +/**
>> + * Parse wccp2_return_method and wccp2_forwarding_method options
>> + * they can be '1' aka 'gre_hash' or '2' aka 'l2_mask'
>> + * repesenting the integer numeric of the same.
>> + */
>> +void
>> +parse_wccp2_method(int *method)
>> +{
>> + char *t;
>> +
>> + /* Snarf the method */
>> + if ((t = strtok(NULL, w_space)) == NULL) {
>> + debugs(80, DBG_CRITICAL, "wccp2_*_method: missing setting.");
>> + self_destruct();
>> + }
>> +
>> + /* update configuration if its valid */
>> + if (strcmp(t, "gre_hash") == 0 || strcmp(t, "1") == 0) {
>> + *method = WCCP2_METHOD_GRE;
>> + } else if (strcmp(t, "l2_mask") == 0 || strcmp(t, "2") == 0) {
>> + *method = WCCP2_METHOD_L2;
>> + } else {
>> + debugs(80, DBG_CRITICAL, "wccp2_*_method: unknown setting, got
>> " <<
>> t );
>> + self_destruct();
>> + }
>> +}
>> +
>> +void
>> +dump_wccp2_method(StoreEntry * e, const char *label, int v)
>> +{
>> + switch(v)
>> + {
>> + case 1:
>> + storeAppendPrintf(e, "%s gre_hash\n", label);
>> + break;
>> + case 2:
>> + storeAppendPrintf(e, "%s l2_mask\n", label);
>> + break;
>> + default:
>> + debugs(80, DBG_CRITICAL, "FATAL: WCCPv2 configured method (" <<
>> v
>> << ") is not valid.");
>> + self_destruct();
>> + }
>> +}
>> +
>> +void
>> +free_wccp2_method(int *v)
>> +{ }
>> +
>> /*
>> * Format:
>> *
>>
>> # Begin bundle
>> IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWbkA02sAC9dfgGwwW/f//3//
>> /uT////+YBK9QegPR97YvazSVKBSgUqSlaW0CNttVaJTYbGYitba2JUKUQ0khp6IAAAAZNAAAAAA
>> AABzRo0NMIBpgTTQBkNDEAaMRoYIyADVR6m1HqMgAyDQAAGhoaNNAAAAACREECaBMTQQaVPTGyTK
>> nij0aQA0A9E9I9I8oIpQk8hqnpPU9RtNMU3qGKeiMhtExoJoaaGTTIAAVKIAQE2pkKeSYyFPU9Te
>> oTKfqmaYoeSAZAMaalhBxGkHLD58YaaPfJT4OtUl2+yI/h1+66OgfjeWOsUxz/kyUCBylndSZS46
>> 9BBFRYkGVBtIagkSVMWkavdVIGSrXp/vMyS5jtqbPlWf3rT8ePA/IjYfkUnnEdY7n3mh+fa39Zee
>> VBQDGe3JSohv5eHtno/LT5m5Ijb3N0+ztBUmGAwVgaPKaDPdzK34UkqkaOPG/AzqmhHk0JYMUjVX
>> kwD1bNjthBS8uetvdek9uUYGEzkGOc2jEyvE2rNW6S28cSMLUcmTZnbJmZ1vvXcZVUayBkhQyH2d
>> K6Zg32BK0BgDZ2CyfMI4n8P/AzDHhQJ25DVx6FG1ie9d2xs+wF/0l3JNNptJDaG0k22mw+8Dabv4
>> ggrv8fH1et23Z4YMYR7fdYvbHdE+WNM6mjKZTW+FgjjuzQY27AvdmERi6uyHlMJklKUs4ZQtFdIv
>> NZu09KV000u6Rg8GZPydraSoaUFYMyCIZTOEVdXD0yKTgxsvhb6ccaElK0LBaKTLU2jCY9DhyDqE
>> e5Bp/GX6+oe0/qD2g+2odNxQMAfb6Xfq7/Kgqts2ksmuUA6rAFHtscLJkQznUYBx4cIrggtRAg1A
>> MY8jcFQKQiOR6L5BbBLnbjpu9QbgrfDiGrTyobrZBcpiHqO3AxLBe/NcMieNdhhqGxKbUM9ffS9c
>> t5QxnCQJSntM9AtyslvGMY2H9wcc77dB+Lfr5eZ+geraebckqxz38h1VdS2YDXfr/Ohdp2Me23Q7
>> N6rSgj7SeOGRJJmgEDKgWjQaKpqcy3PSRYrDMLQFQBMCuiDh4+P0EbUvyxu7Nuu5jpHlBWXWd1Lc
>> Mf5+HALa4+m+G6z6VelfI90uUFFJDK/dv3mheYKBSKQKH9kk9x+ZYXZblGOm/5q+OMTxlUy6Owuh
>> UpHh+Qz9/pPgdfflVqO6jXkf72cr679Fd8qrKHvr97Qxr+QM/cDRiHQMxhpA+rF1quOpqG7RYE4i
>> dgh2MiyDeN8JQ0zdq8GjIAOddqkpZjeeEGNx75hJ4bjOc0uXiiLOGmSrQsT2aKa90a6I7uuDpOJu
>> biI6MyGq+48moDSHCF4fv+0Ahh6bZiG4CIgo+Ry7Oz6gffC2CWjR0eEwkibQiGi1IQdzuwwZQYrN
>> LC7D3SLNPBK2rmBV+buWDShEz2sHj9Vb/pYYUWoB0UHuNxK91kpCbORqDccJkcIW+CUNNBipOe9W
>> m8GIsFTBfFLkU8h1YZmQPHEVApoWKqOPHygt3boKwVpIKaZWV0uewuvSZqENkbmNV0jGj1avtdG0
>> sUaLG3o+7scuX3nejbt1CUp/zgR0NYSKNFmED4M1aLa8SQupit41W6G54PnyyxwrlqutBq0WTbPx
>> +SuU4Ue5c0O4oYcDiTXPbnfVO3ANxGJYDHuMst++js8azLoHaZHDdkIslIaea2bUp4pEVGueNsY4
>> KuRUBpdVVipv5Xyxfy7bl2LS9hlb8cpuXc1HB+7g2sstNI3Yo3pNgPF6JGByOhoYjKFTnAzmdCxu
>> KHrFy+pbBPwfF6G8x5XXZPWTA2Z/ErBMDh+AaA+3ZsMY5YRl1HD8R/0i1Cm7XoswroDYkJpIzY0B
>> wK3lXqb0sKatKhUOyLzbGMEA1F0sUjqQFhDMEHezkNFALl44vFVKbTESll0BRVTTSuKtQfh3ljel
>> ezPnNyUVNgq5GbTgkwDss6+s+IUqlCczFR1TwZOPf7ZLp4acjsvODe7fHDpgq3mEpFXI6czJNNrG
>> 8COZJR4SDeCA8ItsiyqUViTAGzuOyuBVBI8MB4r0uFtVq89CxN1M1J8ljaluyIlzRc2NT18Sy0NV
>> OGe1mW0u64YRhnW8O1DZWbgYoUTAGIxcBlUjM2xQZQyKk3wAqbwZozeYVWro2OXHC2RlYMzmX3G4
>> DJKb327t1SShhwSOhvKG02GgzevilrvX0mgjXaZZslReuMb5tezJqT2AbJVwWd8jiWM8eNfKs5Kr
>> AXgLUYtdlUr1DIks7gOxURMjUWLF6HYctojtNDLcY5GnWy2MW7CyWM2bAuUbnFsaLm9dB/VH5z0f
>> qiZfPHlBthU2552pSBweh9hiFQKFdX2EJbyApSkEybzOUuBTmWvqeByoI54lcqDDU6FqEma7NyVq
>> 2kxUWs3evLmrBRg9P1MxdhhXSzUxtnSXsirm5QlK2FLFwqKQIDMlGJIbLkrB39+rq1Yjbaoxd04W
>> I3KN6zXg3tG7dwasl7CSWKrVXNRc5o4jh1Y7q21v1zVjhTW1aIqljeiAmv3C1KSwQrjyNw6PNrol
>> aFzIO0wk0Qy6l2KbCIOgGtpg4CMSlMS5kUyKreLeX2zk6NFjJVe49fWlx4X8G7dnruq52brMJKp5
>> JK7FuMC5HsokBRci5wNhpp1VRamhocjOa8fFYmpYh4lyGkxmwqaUikMCTmWudw8FJNikLnRYozbW
>> bFVq6mjnPVSeDbh+89qk2DTGz61qFmHFrMObaRsSXZRpGYkq/s2OYDdIbFmaVawGZdOfz4t4CYIC
>> pYVOgIQ4wJG1sVQfiBmBBA31CIBvm01BEL4NJgxjQQMug9i/aJsPnDUIkLBIpZcICUJgv9n3grpc
>> 2uHVRH6hzG8e8LJ+mDr0NA7hN5wP4Sh3ilFKUFKKT+B4/9H/ZRtJNyqk/7JqxIbRoEn/BzCqySPw
>> R1LyXAP8vmqSc5S7aGDU5zcqF7ksleTe1ahk275xWJeKfE5P5WbwuoUr/OWuM3FxrbWcH6+hTJLS
>> ljJWUCw9ZZ17VKhwWXcds6nU9Lf0WmH3YMnJ4B1Tk6+7wWOVEjk/KU6WbvaVjqmtzWSYOd5rOxet
>> lMVM+cqvYly7t6OjWRTFe/KZBvLKtJg7KUWKVZ6flLWYdF2Wxg+QolExprvYZq6/0/V7PrRQZ2h4
>> z1oesCWljtIpffAWczASzCDBr6g+X3rS7EvRC+SUFmAfB1EVvAvwC1ETbhSfjiDbGg/5yqMOX6cw
>> hFkLArqewhSDqQgjM7xznKQUnGTlclOQ5ThOY6edMnS1+D6D3cHZvlIejuv/FxzxUzcmyH9wXu46
>> L8IFO09dxpHgEquANWRvDsqHgt3BBewkrGKQnJxzw9TnhoaZJIA4he8FquOm28M+YOS9hKmxk711
>> FFX+LxaLVrisZKLlz7/9L1zJVezXGwXxoqJHrXoCkO0sjXyLsLxiAYtQvrAeJuab9HJ+h1sHvWrX
>> Y5v0o5l2LtXuxY7ObsUmMO02B6hpTKA7R4SV7445S2S6xqJezwEMNc8PhwK8XHdNtLSgt5HoHUkT
>> G2PsKRukjTEbjINyZmNAYFTkDTTYS25luVJGYLW7pyzwkuYHY9N2OGPc9KrGIlzwd7QlzJ8rFpJL
>> Fx3NrFwbzbIl5rzJ8Opmza6ijqeSdO7+Q2GyYec63i3yNlvIx9XV3908cendjaMLnUanyk9D5j5r
>> gP0rhKX23Lqt2QI+n31xpnN3lGCgOjhu/l/eG41kVRYWxzxV0nzMz1j57qWfcdhrKtS3+OFluHl6
>> va9rvYPmXN65ubnadZSdcjuHQ2Q0a5A1K5tBvSsARPS4+h9BSqujL5w6m4Xn8PUcT+bIGkHhtpQ4
>> jDvIy7yF1KVBJfts7n5hImvRfC0P0da067V47RKFxdvxojYwF8J1nsXQbJI4xTg/YU9NFvqqZ/Xl
>> pndTeGvCJXobqYE2S9zFEiWImZeiPpg0Q2rjSPfTWMLGuBtJ9DvPQu7XFY8ni9jyet5eV6x7Jz5T
>> a3tFj3HFi7ZweuRw6SMS4V/jJ8JPKS5G2X2IXmB8LTkD9MOQZ+BkC8ZCAsognUBXgU0aKYOEgvd0
>> gSssstgf6GRAobAYlu+mQkkIDZQPQNVaaBSG6hhHGASt07OaYzQC8tzfMYTAbJUiMlw80YQnbxU5
>> YZCQhEbijoJQh8ZtntkeXXSOkpMM6ViMUYRl5hbC+nDFMIeelnz+w0mwr7zItMjApSlIFGMa2qV9
>> aEGZ110C9AxSVPMR+PcqpVDsbB9PNLzO/9VZCKWA6gE2Lb9i7fMR5nnw82SpmcEl9Ij6xbVgqh/a
>> dPIKW9m9L4tLaNLsRZclmUhLEGpOQ+MvlzzLCqx187cek7ZM04w02X30J78pps/ceJiaGc6ytaUo
>> laFhpa7z4yWH+RpqN5tfNI+QZ9kmuZtjFVKetX8yh9eklROlIvziP3bQkMvWQpUgDRaAG22HaEdx
>> 9tUIWUvF0SlE3myWemVL8tvj+qsoy9Y1MHxmkquCIIAiICEY6SRUotpMDwIExbRHHtn191f0eiIn
>> TXYdjzRLd8seaZW40vrHAkZY0+UoBj6WkwQFzaxtMjIAxaW6iDoJoJQsQQ4DQbtDnIG/PZ0W3QTA
>> WlTc4DfakrBWDchV26Q/YUk8zzP0yT6rc8ZGO2Q9U7TmFdnyWwNyyTu2FLhQthbAgMsRrpaMYmk7
>> Lgy5FxnRebQhY9GPNMNzlOYgZzgj1QEAHvC11PYMRgKX+wxsq6SiiWpVFMnZoaKntaRE7ottzSSm
>> tvYfKWydpSJZFC/Zv6JxKsv+Nxa/edC/GG/uOONM+sPlpPXwWqZ8JTSUBhCgCF/Wk9qoggaFT6KQ
>> GlAr3D7YP0CZVop3isuZusFgGFovrIDPPae8/fujnA/8FnyxDFFZHXI0mBRdsMqQPeL5MZL90kwt
>> /Or7v5Bp9DPaQDhQyCFBBCTCAZAMaW0S0m1v7lLTAOJt2H2nlW+dCrDT7tF7ufOYWl9c+nNvyK4Z
>> Y2lixlMRbbirETF2Ps8CpmMJPoSVibDX9b1YrqSLzcqY6UpO8pxSbC0qRuRLhx28BjfDC0vNkas7
>> 5jwIeY8Q1YGikDwQhTCLwXwekgQ0lAe0G8vKUuFrLjVPsbkYo3p24z7cfsppjPNM4ScDoaPGnHa2
>> jNzLYrjOPZK3Wpb+O36FkW8VBrxjxbI+CO/p6JYblguKU5HHgCmsIDuQg+SmWmp6Szz0h7XuUS0x
>> 9qV+DbTu2O7+2TeeP4Ot1/h9q+QdJh6tVexwvWm0uVj++T4ztFxaYGr1SY5xE2fWvuk5e8fLB96P
>> aOJvWvPwbyf5hCJkaP/xdyRThQkLkA02sA==
>>
>>
>
Received on Thu Sep 11 2008 - 02:52:17 MDT

This archive was generated by hypermail 2.2.0 : Thu Sep 11 2008 - 12:00:12 MDT