Thread overview
Latest urllib?
Aug 17, 2005
pragma
Aug 17, 2005
Burton Radons
Aug 17, 2005
a.c.edwards
Aug 17, 2005
Burton Radons
August 17, 2005
I downloaded urllib from http://www.opend.org/urllib.zip just recently. I'd give a version number, but I don't see one in the files off hand.

When I try to compile it, I get some error messages and what I'm really
wondering before I dig into the source:
- Did I get the latest version?
- Does someone already have this working with the latest D?

The errors aren't even that bad, but they make me think that I have an old version:

C:\D\packages\urllib>\d\dmd\bin\dmd -g -debug -unittest socket.d urlget.d
urllib.d urllib_dict.d urllib_ftp.d urllib_gopher.d
urllib_file.d urllib_http.d urllib_nntp.d
socket.d(92): '!==' is deprecated, use '!is' instead
socket.d(235): C style cast illegal, use cast(SOCKET)(~0)
socket.d(299): C style cast illegal, use cast(char)(102)
socket.d(299): C style cast illegal, use cast(int)(IOC_IN | (uint).size &
IOCPARM_MASK << 16 | cast(char)(102) << 8 | 126)
socket.d(381): C style cast illegal, use cast(int)(addr.sa_data[1])
socket.d(381): C style cast illegal, use cast(int)(addr.sa_data[0])
socket.d(452): '!==' is deprecated, use '!is' instead
socket.d(456): C style cast illegal, use cast(char[])(address.value[0..12])
socket.d(555): C style cast illegal, use cast(void**)(#winbind)
socket.d(556): C style cast illegal, use cast(void**)(#winconnect)
etc.

-Chuck


August 17, 2005
Chuck.Esterbrook /at/ gmail /dot/ com wrote:
> I downloaded urllib from http://www.opend.org/urllib.zip just recently. I'd give
> a version number, but I don't see one in the files off hand.
> 
> When I try to compile it, I get some error messages and what I'm really
> wondering before I dig into the source:
> - Did I get the latest version?
> - Does someone already have this working with the latest D?
> 
> The errors aren't even that bad, but they make me think that I have an old
> version:
> 
> C:\D\packages\urllib>\d\dmd\bin\dmd -g -debug -unittest socket.d urlget.d
> urllib.d urllib_dict.d urllib_ftp.d urllib_gopher.d
> urllib_file.d urllib_http.d urllib_nntp.d
> socket.d(92): '!==' is deprecated, use '!is' instead
> socket.d(235): C style cast illegal, use cast(SOCKET)(~0)
> socket.d(299): C style cast illegal, use cast(char)(102)
> socket.d(299): C style cast illegal, use cast(int)(IOC_IN | (uint).size &
> IOCPARM_MASK << 16 | cast(char)(102) << 8 | 126)
> socket.d(381): C style cast illegal, use cast(int)(addr.sa_data[1])
> socket.d(381): C style cast illegal, use cast(int)(addr.sa_data[0])
> socket.d(452): '!==' is deprecated, use '!is' instead
> socket.d(456): C style cast illegal, use cast(char[])(address.value[0..12])
> socket.d(555): C style cast illegal, use cast(void**)(#winbind)
> socket.d(556): C style cast illegal, use cast(void**)(#winconnect)
> etc.
> 
> -Chuck
> 
> 

Wow, it looks like that lib hasn't been touched in ages:

> What's New for D 0.88
> May 5, 2004
> New/Changed Features
>
>     * C style casts deprecated (use -d to compile them for now).

> What's New for D 0.126
> Jun 7, 2005
> New/Changed Features
>
>    * === now deprecated, replaced with is.
>    * !== now deprecated, replaced with !is.

I'd argue that the site itself (opend.org) is languishing pretty badly.  I think you have the latest version of that library.

If you're interested in working with sockets and URLs, I strongly reccomend you give Mango a go.  Its not only up-to-date, but has a *lot* of other widgets that are useful for all kinds of things.
August 17, 2005
I've attached an updated version which uses std.socket (which didn't exist at the time that I wrote it) and which works with the latest DMD.


August 17, 2005
Mind updating your site so I can download it? I cannot pull it form the web interface to this newsgroup. Yes, I know I can get it via a newreader but I am not in a position where I can use one. By the way I have been keeping my own copy of urllib updated but I would like to return to using yours since you are the original architech and the only changes I've made were those required to comply with depricated features of DMD. Thanks.

Andrew

In article <dduenj$1omp$1@digitaldaemon.com>, Burton Radons says...
>
>This is a multi-part message in MIME format.
>--------------040000060803040707060801
>Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit
>
>I've attached an updated version which uses std.socket (which didn't exist at the time that I wrote it) and which works with the latest DMD.
>
>--------------040000060803040707060801
>Content-Type: application/octet-stream;
> name="urllib.rar"
>Content-Transfer-Encoding: base64
>Content-Disposition: attachment;
> filename="urllib.rar"
>
>UmFyIRoHADvQcwgADQAAAAAAAADKOXSAkCgAIwAAABQAAAACECC8GIuNSzIdNQYAIAAAAGdv LmJhdADApxhcCmaWdFoljJWGLsqWGq+7y6zRCXcDQbAAAL+IZ/ap/9Q64XSQkCoAUAYAAOUe AAACY4OpLYuNSzIdNQgAIAAAAERveHlmaWxlAMCHTTyIyjsHE+8LzmLrKznnhmh5+PoUWzZN B3HbnLGjeuuHTkhtIPu1lHT/xmqleYajx9UNE/bb9NQd+3X/hZlhbMZHN+T/Q8FecE6o0DGk NTX4lYKyYjMrtq9wa1Zrp4PjlQrhDy93aS3q+cY3w/Q8NNixQyo3bIv4DjBW2Pkuzw6bZzPl QY2sclz+KaWg8nKvy4YQpJkyDKcJsQ2vZ/2YvUqoV0tgJL2KpdCCM7sBC76tWHR4FJAciEMe RccNQ5SZwHGoauJdfg8Py+0n3SKl72Moy3hKc76APbyM5IBC83NXubMyKt0PUBuW2LCEYRBi wxLnlRi6X0Sijphoyo+panpiy7124awPC0uH7vWstvXJfEJebDvz1CyX7M4GTEHrzgsIR6h0 wuAxMsoq7PSyYsleT61+zsfHZPqDNzgmDiGXkw/ejinaVscEethuypmeR/evwmJCwco7n6NO 3Cd9uoBEv5vNqv1KrWZEekHD44oLCTc2SDT/bcQidrde54hMpr8zTSdeh9/a882vqMWSj28P R8YXg8l2+fB7VfS/8efA/va6cpjBEsK8Y+AtnwdGYHAoEMxcramd2bBzPIi8ngRIEppgbJ/C 2d2W2Zsxi8ovofUgw3BvAr+jA+/VaU8Bl3BtQ3/m5J/LMoshAaiJBciLb1CHZFzeeizSqSOJ fSEVCS8r01FQJFx80f6ohqYdMSxXesvlZiNtd4JKpZ87qEKbJY0FXAYKePmXCKcGlqYKmSuY 5f+C64s1R8l2X5QTXCGuHzHgWhfrbkdJkgODmJ+Y5Z7OBc9wm/1hi0DKlbwChtVvvZAaeKXP khiUvdGEkL32SiSY1ggUA1Fvf8euLEOcDk5Ol9t4I3zt5aBdLY2PwMdR0OdP8RwfoBU3tbVj SfEgVwYfrVbUc75rSOTDQK7plG0Wi/bw1pDc6Xf9KY+wSEdMMAScWwyu3F7XU+CCJUAnfwV7 q7pqsBwYxBQOkWT6WZSkBLSm3UpF35w8uanrJvfKgHRllHoN30g+bD/6qbzR/pRgy+rCDzBg QCN206J5y36yVPdB9OGY0H5eeA5JrI7p2KpBhac4ARBjK1y1QMtetneUz0HeiqYK+Y6Ex9VL IZGSqfJpUDI3Alipo0Z0VpANZ2BMXwpelnVD3+rATuFjzOTMhl3MsmAzmqj+htmZZq+A9qfw byXLYUhEp/CZEVPxY12W78owIMgGg7XXEjbqTrExUxWFPa/1jBpHPD3pR8n/stJEzwoDS1af iOEkXQbvFQ14HI7M3DP1JcibOgDDQPxXNy5rUL327Vn64zPow411HFByuqHUz4Ave9+aT0Nn iSttok2l2eb7qQNh9ljIb4LT6PfDtrkc5u0pjAXuWmui0N3lbohetMDcLBoKKod9/O3zX/eD bYRXpzHDo2hxZsk8/pVqW9x8Ak45pf2mFq0JdnSbMJcSZeN5hNbhH98C0gMs0UOajOcRoN6K Z65CjOOkfMhmPruceGPN+fcKLb8XOTO4CfUFDY8tkoPC5kqfkuYmtA56OCi6LDxkLAUJfC5e g2G4DzcgMjjILf7zm5x7o2uD0W+mfekMQ/YMPUKcBqOgqPcOIy1G6kN9hBVY7rxmEKJrZKfk BSY+ZTEJ2SjwZRwVDU9C7LhCRyAQa+6Cza4p6EL0Liz+XLq/1L8/s7n1kbmdbHqh0Zy7Eg5K SC9ZPmnyDz4DoLmArtNhY3N9duoWzJMHq0Lcour9lz3KgZvZYxpql9hyh9A9gl3ySi+7taqf eLCHFahL4xRxWz7p2SvwweAAfYp1eaZFJEUWDj5ZPLWf7n9sFKpi7zAzN6ZPSD1a0i0vuWLH rZxj9fW7HFg9MFhRnhvOsqEypuV9n47KlMGc894lyrPa1Nwm7RS+P5wDYtFP52cET/eJBwrI d5Yq+aEA3nzO2nlXm0DaxP+8wSHGEGvm/EanFjY/FH2dsUfRY69/sAEjwyrmSRtGdI5tmCIQ 48YfTkT+ivE64Km9jP/84+JMmW++rJpONqSEcW1lcFOF9839PEChfohFKrMKEXtmdDS3P7/T CID8lyF0RkdIe43jAogzxgSMd4cW32MejLKxy+Bocia8pazR/WBWGTuvFYkQzcUkXMF5KqYe 9ED+lVD5ExdvLJyE8gULAAAAv4hn9qn/1ECXdJCQLQDnAAAAegIAAALUzkPxXasQMx01CAAg AAAAbWFrZWZpbGUAsGrAYYf0M6y0LAVEzr3MESlWW1xmO1UHjLVx5CYXc9kQjqMtd5nEB9Pm lXI22C/Et1SpQo7+h2RtOSCQkzHK2P8bRzaY07d4dahvpfEdcbRJmfwrr7TxbXw85iyJWP3u AVEijwbsD2XkLgiTYzQ9jc10S2MVvxnu9IgGvtbiwL3unGNuWRNmIhQWPPKWQQzOyeb3Vd3w 3KwsVZKLCr5KtbQQ3flytHIDqcYugHK3EQZc43fgbUyOn7L6AqDfQViahgWoCN3N81O7Nd7e 6VpDOobDN54sZG7lock16qdln5BitAAAv4hn9qn/1DjrdJCQNAApBQAAEBEAAAJDJ8LEi41L Mh01EgAgAAAAY2xpZW50U2VydmVyVGVzdC5kAMCH7hFRu++3xCsp0yGeDahS+raktaQhzjVO YMyRVOKxR1UK5spP1jWqh2m0lhb67JIvV6v2afSqCRJIUi+jqpVIiw4rNPmjUamEFi9dWqXb 3N9Ug4HrOch9osISuTP01LPbmYQMTBqbNpodkwonLwp+GRbX1nW0QCYGbQcZ0iz50Zk0FUJP Vsr/6EDM28ZQsrYFd/pPyHuo5UEmj0WSBVAiDBpFSghTTg/XwmXmSEbRQpUNwjBG48dY5EFH UIOIkAjGSoqcKodADBFX7idpdld7tnHcD9SaPaTTEx2fOYJlh9wP6utf/kw3nfFznTDRUoxj vbmWp4XaEW9qCjEUPS9jPmilk+l4OnYS1soh7lkltnCI2/h7YixTFqueF+qItM2oUVpQuKdu g21P1wR5J6HPXpJS1P4kTId3xHpRumpcY+qcvMduPFa5KXdS3i9wOY74zYJTrNEPk+BH60iZ 6H1w9LWkD4HvRAA3qWlw5K4ULmP298lF/0XitwDEoDhLWLQ/25hwOPI8axN15rIkDpUPW/Ze bNm1M2DE4d1qVvuGAqAxyDl5/QI5vArtyaS7GkHz6yrhXQBDIGri3TTMrsNYji/7BC9ZucCV eUlrk+5YieQcBIIQfkFDuNtulpToEfZ5UFuR9MiJUKGg/INw8CVslYzn+JGN70wDJ/RDLpUS fwaw8kHfhXh5GDZ3+3jr9L10ngS/AL3z5XPUJFpRUSDnM8R12+BTORcfVLb5mM5giPBhKtH/ 5DK5pE0V325k6lwUczw0xXV/mczG51Dr3UZpo8+w1hMYzIxAnntvm5RX0AzbllWToF1l+SdS P67muDduC4um/Zj7Uca0QiH8miuf/m1DSfqfmrpt05kNnjBlC0msthf4PngvKN/n+iXEcseG D1UWKnbcPcJgF6d5uykApjZywepApReCcoM/7TFvk0FXzaRJkmhWKkOx+2LZY2d36I5r9JAb 3CeR3n8eoJ9xy5HroYk0di+RabYsKy/BvyiyyNfI0HC2aoj//ehl96R/wMpGoomY9nS03PmI H+wnF5N66IhGimMZm7hQtXF7XRT18g7y/6Cd40PEPaIdJrZlZ836CVqT5Hm4n+UbfhLUd0We xeEiYGAjauvfq+VCOzcc/kwaAQOgPZRkNtoJ0cX7QOXWZB98ZrGRGTMzmDLENYJoRF7/BjFG 1k/kgOHlGD933p9gey/VFjkSBZYxbU/8Zdfu9M9LJDBWKp9pg7wnArxxaNsv0jnU+dmyFLHV wg6Jw13HrOMkZ2pBd/58TCMUoneWlvNz1Y+FdFdKmYDbCIsZ0UcJ4gu0WAXmClpNlqAPOb/V HdZw3jEBETwTRi8oyneqylWtZzyoZjRtPR6mHAnV0DeorglfLBO1B6mmTR71KbX8dQsKTjoM 5Xj+XFJUp89F/JUfn+W7AszMMZL4245KfBG7fXUIRsb1Z6VtgKXCEMF6lBaNKNwfXooCi7+Q DgeTpn5TRstZhxFrQwpdgWtqe2kJD4AMoQhjTq0/aVEO9X2W9+u0xaF9IuOdrdy4m2PxmhYn D1138WLpV7O6zu+ZlE7DKk97bqW6tfuH2ZH/pC2/8sPrXcSgfAtaKq9a3WtwRsNIqd/TmOyp oLPcZTyBlvMvvJvd0sUg+UfkT+8oby7oycsT5yQ86ZBfd5GvXYlc/f0hAglJJ16kC7L6XP5q E/3So5TEC2crCxdFWOpf+1X5MMH8+ZZdAeNC2/N1FwdvFTztxVxIRP7L0ByAAAC/iGf2qf/U hAh0kJAtAH8AAABsAQAAAgzYdxNoqxAzHTUIACAAAAB1cmxnZXQuZADwfl9AhzSDXh3quo16 mJVnwgt/l73Vxik9flDlcMELuwWg3Amsi1MprPn9OFYD94WNASj/d5QLt0lRg3kjG1fZefVi XY13XdLR83anv5Ovve7fak+6b2KfTFb2rZDGZ3HKFSkbwnJWoYhIvB6199FbRGFf5d/cVjac 3wAAv4hn9qn/1NhBdJCQLQACDgAAeEAAAALT60y4eqkQMx01CAAgAAAAdXJsbGliLmQA8A4n B4f+IfRw52sHt3EKyIS3d8bYjJILrX4uNOZv4HpUDRFzt3OAEbZJlTVByTHa2A3WJsTx++MI nIYN5M1oJQmYOGifQX6cQzCPdUEPfniOMypmC3OMhC8q/Yi+WJcF8bm9G/UoGpxa+bxIgcwr 2iYbJ5rOoua9/1X3UW1WubiELhqGdB51zdgBaShcYgLCr0kpuBODmuNe+7hs2R+4teb08Q+0 jVUZoB75nJanprWlH//D5zHH8MPtYaKw3nRiM7y64oHQ/a+jWH/8EHNJHgmyMDAxbWMqQbxI sVGFpBcPDUzBv452UfwzFK+EG2lOrznsxKIO9x0r49Pm2WwBdch1U48jlt3z/39dMpziPbqb ZtlTTmPPz4OegDx/W2F0zhbURVP9CYV+rD/ZolsIvN+lGytSmcucq4fuLZV9t/QxN+8Tej2m NNF9qtyuzTOPB0ggWBsrBTvV4qNjsCkHUADbg3D11dGLTHUkYNLHYCeol3xTyWVT+3kbzbvh Mq62WKLUNiVYkDPrvKwJriykRVnStPLklX27t0l8fD77hhUJU/uz2Fupr3d6Y61ftqpdG70Z 1dSEX9poBZFXCZuTqeMWtWKQIEhVsnzBPTJztwFsALjFkfER+DENQTa6HIflnXKX7G22hGYz 2a3dhC4OBNIqiGjeyLZDa0MEtW4UB9z7wS7xJ7pdWOiXkND0geCOil4g1whdr8zp8FLkpdK0 o2ra7OaJDEbnrnRcyORO6eIRfZila25UQgMu7i5kVec5x6Of5wWPov3uok4Q3/EbjE+BmiMs 7FqJ8z6h5PibiU8P2hyr3q4MJqQPgDh4mEYRG4OMB4Ejxkms62mO1gF4ZGrRKjfVHC4+DmOH ZrULK9OMnb0NZfoucyDEyP615ZiqU8gHOkA6Dh3d2t9rcj58dgWc8GWL5Vr9weDjOJkDsVZg fy4PavhrvYMEUsuM2H775VNqooM5pqRTh5pRc3EcmprXwjrLw83v3RCpI92aOnJ2nvxTqcD+ AofJkzNbMtQ+pIgv3O3OzRNw7AdNSFJ0r3uRNnPnbx9XAVpypA4nkZ1SkG+jlO/nCDiCxTgm kjYtDVCsRO9WIyKf1iM3bEvIpwwDFzr9LY4fHC6SU8jPJd1voCmaQTNndOhutneXDNyJ6Q8Z NuFgXN4R1QlqSWRAEgODBP41YpY+oxRO/vuskJPBy3+8g+MFdo2caBxMD/tVu9ucpIqrRnve WuEWy/kIpVgyPzzi3eiRZu9mGz2D+AvkLL/uPEZubhyLdtw/6uPfnQy6jiYdCB8J/51ksSJS MuC/tl27AjlXjQX0vRva10PLAMsExfz7o1t7JPknkgnEzqDwj+U/UXuAdC53nu5pH2SHKvFr Y7hwEdwDxIYfHwtF8aE0+YNy7cAZSpQKNuqgR61OaZSXOdl3Hzol2cYfFk0fxLeYnb8cyb2n uR1TNeGlNBa7VKemV5UOTeicq51CrVyLBArV5+TLxA9QSwQFZEizmEJ6ABNmAOr05fL8agB1 hxZ3FgN+LAuOAGhgLUC8cu2LmOBsBYCJzyfCDgpJyQ/gELnOGE+gxsrEGPuBd2BvIoGk+00O F4ZMoj67S8w2t9vQfcI5ywOtnHAmxAznQClJ2qy39EbPj35RBmimEsObqLu0pDgRpZxktj4Y zs1Smjqc92WUwE98rIdszZVk0U10GIfoy1QJRWMZCVT09aFXSNeo894jmi5qdvyiWW+lyYIu m5cbztCGOoqV8s7IyGpSWMciOm1moJ3Oshrkw9grPnGEwjzi7zXIyjxiS1SxOnbxkfjPplk9 VTXqp/skLUmsQZmp7/bquw6DpqGWpCU0pS3Xh3lP0Mc6WJ5IsRodaZ6IJWtvAysRrPIoUnHS 9BrNclzwvVh1NReuuwRjdi1k/yLTN93TvTXo2EahPZxUz5PsHiBtFW+uYIqAitOeByDDe5Lj 0A5HdOh4YbW+kVnRQiBLFeIwQ1L6fKSeXm+FdI0xjoNFvDi8DWXlYSbTxLNxJyHPiYDIYpQH WKO+VUawbfbEsUggI9GIsAtc7vgZuu+jj8sxr8ipx/VJZdpuB1BHdQXOCGStKQK2qsmliUdA BAmsQJ9rynm+nw4syOkt5mwANsTvu/MDmzuSAnKAXajx5XnzPKzZvq69xD44wTGwlw3yCe8s Zx0kYjawaZ5MtR5UsJVOur+TRA7ONXYtGkhCDAYrk8VK+WzZPIoSK4SdtM8ce1OB721CdRZe 0lJ9SBttgVV2t8/ahBvyEXsX0HCSe01QS01n4yAC8PTVzNff1+LZL5TZ9dBp5IJOLGrh9b24 nSBYe/upO64J+DrPdlEX3IcNM5XwMLYPCjtkprkbE0CYeN5lQvrUB2dNCgzmqYiZrxhTbOWV lxIOSYJj7B81EEsnwGAc3isap3a699Ruh1zTaIe1PvH5LZH9TptPpfv75RvOvP/3lHzacl2s wA4N2elILHoI+oVlVxEC7VMjz+T53K+si8aB/kea4/9rdVqZkXzhucxdkrHxsHZ3Xwr/qXoe pbLJpYmOy/wC5Ih2RbVaTgvttPcO7/bupHC01oZmsJkegoX19ShYaCuQJidXY6XO/6KcInK+ LeqeTnqJfaE9ChEql/5kQxs3gPMf7ec3J+Z95MaulxVbkOrsclK4FRwKCe9XcObGButnGPPW GxzpfNkKUwulf0Ah3hzgm9Tms3oo8FwN4Af6/YlQ/P1A3BCQtEOqOk9+WEUg4N9pGeJwSp+9 YUf/4m9AFYLzL5W6JNPuTEAhWRHteoWrpuGrmvaRFJrWz0lwZpwy9ZZLClrvOD1NoDlIZsLo E4wNX63QcV1R/q3kbJ7wWnbDGsQ+m5lqojOb8Ax7Wo5/tZgiz3t8B4ui5BvDyG/q56Ac4AEI rYkuLi8GkcluXjpG0S7mBDb/E8Z33HM6xtr0NQubgcUp9KSZKAW9e7scJGm3JDNjXZqUR2SF 8i9T/xzcw4rgntfHdKVByjSypI8J+oeHR+RaGGTVfTozUma4/G13haL1BZ10zok6GR01LNvW 75S7JVjEvhlqiYctLiogahsQOgL+IBEZ1ZMnL1cC3483tvsvqhhoPbZvtS556B1oQf2/Pw7m l/psLc6QIDK2hy9Jm2mIN//85/HG2l2BiXD+Qu0e97IcXaSXJ/xKsndsC/EO3IPvhp8uf6U2 mAdKGNjtgSrTzd9F03nHZB1w1eisX6vezizQgTOiE3u/owF/OYCEZeiInW7efd8YtexQK++1 6FCqwkDWDpUd5dgZS5mDrtUVl7Agmdb6Xyv1q/CurR65X/D4L9fWSHCYFmFF3RYsCtHwLyOY 9/1Kj7xlvtsixoEbF6CEbH0ayoFmf6kci+6vLMFKi54PQL7TAl/p2k4oicWBJiYAqdz9B1My El/NRkknntpvCpG7EN8ohj8Kpt50UO6Yxi+0/pIXiZL+fw7bBDOzxY9JTTG7KlRxMzrj2yIT lZtan6TFJuV49Lo/vmycLpAqUQsYFP2pYd0bri54UCrk0vTDZ9UNR5mSDNV9LVTkUFP7yHjY +b6Aq96L2WJ+9VzFb8SgnAuEO5F4omJtzotcLahAq1WLr/+H+9Ms5acirzCmAGHcZp2W0yBk 7/1kjFo4Df0eRIec2YfUXJPyfchO29CIVyTxOhrgMUNvOXf6OQee3/S/tvnOkabXxMxMxtSG 3KsY1U00QR/p/NmD9zU/PB1b9sZqI4TnbTNlq7KOZZ7n+aDiQndfTAhmN0fFIqjztRr9wf45 H9vpiXjyomeglMaCgUNB+uknY1/01TUIuJlNwG3DYCNOVUiKDFBTudBowsBofCec1cGXTVvL c5BD3bcLnu9SUvHnR91UCkhEb4OlUqcVfQgqx/xEWq5aw4AlnbM/g9PDWyREeZ2vNsx/sNnP iH6FvkECGUjSn/7izIPWk3o+fKLiwtuVdMnoa4ka9MsX6Mc5isNrpdphAOLVj+jjFhQrfU3J uCnyEpPQz1rIvcEBVYfgXC33TkvygnvePsVpLrRIklPTFQIDLWTt2nZbU2hy+qrplJSd805W aK51B0Kzp26ZW0bL1KoKVi3DfkjYzHQ3RiZxlRWdURyvmvw0DgHnmofm+WgF1DKc297zJ8SN UdpSBacUd5TlJoykLygcLWn6ogZsCKNpHpU2Ri0Wxopfd5lMj6feC9zNf2n0AW1zXRMMk3pp 8dqoGoJY8vAEtn0Ms7OtxXEBPcCYiA42UJRqU6BAqDm8WLcI/urAzj4S0BVgQzHibxjZB2gK 24iyc9IaeY6z23TE8Y9jxTD1BabwEk4Hm1PoBTN/9VXChRbMaQyb4NUCc8ZLk/QRncXU96qw nhtxmk7ZsNmmf+dgy2lAd4VtG2JzLFU0wQqt/1TtXeX5KEWtKnjo1oboFLfXFIPcVvmvrVx3 46Ha/xCjMLnV2f548jVJRydvsVDFBJ9VCsiv0/03nxCFCGdzqwW8Mm5yQfehxTN2uxOjwtw7 2nzrS+2GsT8e/qHFfGGo7VpzywOetu2DDJyqIzixJR8KW/l2iaSggrRn3IadNQLeNcUOH/Gr NNjVqZpJbfUSOx54sD7Tx9MuOpCD/+LTcUeKGEyYssAd4qYQTwKxNauPtw2lGtuPZy4VCMuB VIKIkSM2WltLxXkyZjyFh/A7qEwZlzQ1pGwofUoVSxlA2naPSuJuwXhSKG8bvpTML64U4WHo IkxyzsdqFNBcXzvSVbnip+dzrFevAL+qw5MG9I9hPPEwXeoUx4ipjrmbn+OqtfviRUz+Ib9s x9tdip4IZu+AwAUn2AAAAL+IZ/ap/9QAt3SQkDIAuA0AAI9WAAACRAwgdwWrEDMdNQ0AIAAA AHVybGxpYl9kaWN0LmQAsOboSYcz249aMGxAzxlndZl4iKjg5Eq+2Tm6xL3E0OSiDxM6euV4 tTvRfUxYDoNpzKsZWc+a7iM3q/k4nVIhtWLbq1I1YOEGyF2UOe+XMztsryEUHA6QouHxVQu+ X1ccMCUmW8Kcc4TCl3je9+ZmnCfoFO2lKPUgnl7ITlqy0zyw9ZuFc9Yr3Ji8yJixp3ITFyfF eUqwQ4nml50COZfiCrcyP8gcMHnUYgWwwJkH2dB9pt9K4VRGhM30yCwJXlonHlTH7q/Z6ohZ 8rf+dt7hUfQjRQp/BeaxLg9axkBdyyxU3DNc+Budhg2ddYLebTiIuWYk251gkVDBRIyBgu/c eXfOlRi5oIsrp122Ofkmu0s+zrMZku2ySSW1ti+w/hze/jBsC6UYwj2upkYi0KRXz9N0vCxE 6X56Rl/RhiqcQUQR2dIzqIn+bXlsU3C+EWQUt/wbMbkNtcw9idVqYZKGjgO0NjnviZ+PU+9q qRzobygaiSjvPGFkJZ6rtLh8PRgRWnMvgik3BL9dag5WoN53mPHQxdKix/Bp02/UCvEyIKsV b84PuqfFWtpl6qDCk5Tc6+p4n4s2m4SJtuH4mB2BbCA5v1QA9kw6EVQ63aKj3ypIXPQ7h+y2 EVW4DIIOhWeZtOvVgDiILx9OS/Ar/LVcmKVhyxsiImRaj69tf7uKmmNXpeHNtJyIKOpKnC4k UR+j50M+bn8bskQJvosS1aPmsV09egGSFgv/cFoMsgcs8GqGpN5+f/lJUFN2sOFEpEDAbOqQ A4eM8FKZsbAvD5jfmN4BE1jX3Rdht7VV8iQZudDiSCaI9u2zw4MGZ4IvspHQO+c67qrGQERF t8nABZJjplX9WKJ3L3gFCgIEOLELbBOrj/zVXjJqYg+uvdBbVoJ2bN1di5HYrmNTjH9zWRA5 zsIynoMzE4BzumKigVpZzPr15TmpiJLo/PRBNIlKTOF0gVQs8V9eKwb3TCwI4CLuzEJnb7iy hg/OEnefeviK7ts3wVbbO/QVsVQpIVkujo/O81OQkAhYdoUxzi5X9B5jqcnGvy8o+tzBwt5+ avr+/07mE6ndBPybLEnI594zZRq3spno5jpPGEpoxfaIlHWGmeqSCdrtVnShffOZ1F5oJrGg No8PGSV7K6sInMaY83AeXWSuicj8E7Ql84g3YG3pwaWI9JzUFtOs4iP4XZbLh3G1NYBxLKke a/cz0tWWGLLBlcaPPXh/ihSVbDuuPmpllFINLZ0/P5XTUg8UOSZz9td/2zWhZcRb3WLzRYO6 u8Dqn0vpWKX97YhvIKtqxgP0eAslRsKzuoT5evK5vnev0WmU6LXeCCjbCzoXwY8EqjDGSk1n 6mPqAOnAq+3y1qecaAjFZZ2tBY0ylcfQq65AWf3yKNbBmyvlVjEl5CK0qT5jSe+3picXw7JJ 7/o4xOaDYcVBFzSWCmixHNlV9KRkn6GSK1lnhg52Gj+DUsEp96OCwhon6uBGdeHKlUywN6Zs 1wd0/hkVYa5o/7YxU9zfvbEi5phZ1NZYFlQdVpYHglN1d8mEU0GO7JjVXq1dzgTqvMGWeS1s 5fK3+rae/EtpPw/SBmLX2tTfhTploNr0xjHAOet4l2ZymOu4FlKdzOpCi08heo6niPLFPfMV I9g2Mfgplkbz1bQt/MF1FGa/YOHKDYtAg9hYbSdxKnYBxtqXQPErWZFZekyVR5EU0Qyp8c1a KAlpX+Vtu/Xy7NBZIwLnXiUWIvfFuHe86bJxLqzdbvTpzBzeiXjEK35xuURLepU8Zi4y8zRU CJK35LrNzdNgIt5TIJYcNudkINIa6hiCvFy17r7ynFHyfICpTKfRwhVN/HPaOVyDJUcq+xbo udX08hOEkcgVgdrOA4KjCS5mjQ2uyskd70jjI4jV6kqoQNYDkitSZ16cD6Dw6lFZK8+NDQ1q pOwHjIf/yIQjkp3OIknYuYD0D1kkmQNWcYp55C/e/8HDkVJbFkFJxosPEREJpRjktnPp/3Ra h6U9hzBTy9i9sXdloVm/k+FyPFOdUAYcgz1YtiDIP0uT4kvGYWj/DpF3Lc5fMRWvKf1H6eU+ aQ8kDlciNrSJrXydZFbxMDff0K7IQqocPe/3fmP3zmZjRT13/3yMbqYCBrDd4wD2w317RDde scgI8MunZ29X3vWL//139K7ur33+fZjlBc6OH1uAy9ln2gUjleV9lpLyx4WmybM1fIk2y0Dj E9vVcV76d07DRDqkf4dt6Xtd9NCYfMDdVeriACqLg+gG67tAxmHbSObxSjRMoEDooGl4JzLZ B5/BUrE6nFTb1+QDfDU7qhHGnZ2eqhdr/wVOvvihgTzIzpwoZ4/vZGnP49L/nXSpzcR2kk0H Ypq/RTAz5vGUa7rwwykcjNSMsRV5uEbtIq3LhcMZg0ku/OjungS5cxdHn86FeHzqPI1YaNDD 3wKdzaIZ9C3kVSQi4aFz+nMQMLbMEUnQzOOnWu2ptwBpqRDxAEGmYM0ixWD8wgj3oOgFukjC gr+JxYNwlc5RH16T+HzGmKyQYroBv5B7sOwuT76pH6TFG3Tul4foJuRc1ys7xwBj1Gnr9CQY J6js6SYNQoh8ho04bs+Ae0HbK45J4s98glJ1HNWGvAD8kTfK/hXQzVD/n4IvBW5wHho3Hxi1 VZ3O1ynDlDsX9jgQOKgHZjYe68CEfEuYFLBUuG5N+crJQVI1tpUJTDn6aXf1CFuWzFw1ULrV 8afMXlzSgPKZ9uLBPSVSp8INnciMMXg8bbll3qAj/DibaeWv8DBozAUnUv5Xv8E4qMGEDvvN ED0gIOy0Dd2jflGDdI9ql8/dnQSelrn07ZR72lbNWBYbVZzI58cd4DGjvZCnXpZajTsC2fKQ PRS/dG7qiCUBhs+b2xPDJ0P3OuNaj0aLtK31ii+Z+WON0ahhYas2xeebEL+G7PVo4BwSUrD3 KisTUgn+6GcNwa/bqNXC5QbsQIXH541fwizaQDsXhmtg5NZwn7xv0ofilAMN5thYvrk7df0l 4yFjZGWF6nTogvnpqNn68wzNdx+6oYUx4gT1tlYed2zzmeN+GgrmT9tFFaPm2jvYmpWGpqxN eDOBcTJaVJrylBtnrqMau4+WdfS/sI07kp8ipW4iFPFqXMaS92AgHHG0M8hgmOFMN9+d0LHZ ZSeyKc1VpnAeiziH8+3KCAigpunXg4dNtCYg8lsZmFhZBni/pXNH372e8SVTJ2NvlS+c6wps o/y0Fp9lRmY+nSSgFzpMfmX2LsyW3VPjQHOcQJiPK4p+6aANXUl3HK7+4EX6//7+Q+5mXT0y 605OTypzcXrHq6OzWSolZVboWf3PWu3dNlxXpTo0dEUZuv0HTS2hCvsw5TwP7LmE1JAXYEFP 223SQesuE9R6rUqe/FFLiWfXqRWOPaM5bzHgY28kf10uLoCJfbRXs32uD2yYO1UEJNc/7TGe iSKgBughwDTKJfDmy0Sa3GqJmAV4g0MSLVjJgqwmUkx/q1qrpP12YCSARIXOWqBGURmj7JRe cdLXgDKRq6UK0hLcKf6aU7x5SSJ0iLJQaMFXhcUaxK3nXaNKWtUYU9frpFRio1YlYzs48zo5 WPmKNdc6oN2FKjgbFZpSQePHmhOvapG56hBBJw3ZtIeUMTjZ5ONfl0aXvXhyzglzgaXFmFTw hEINeLJ66VX9OdlUYFsI0IziJgepvtkJ82E1Ys//gi+a2cPlQeDUQ3yBjAAK0+DXmsYO4Lq6 ZWwq4zlhJkje4fYJldzMBqEqT1xUvu/V4fAYMy1E4QVdSrNPQvcTiyex5uiBIubJKO4d2FDz 6rltbj5F9ewb2Ifysm2V7FTZMvqKMGkxZ8RdcOW8og8FmfRvJhjGk77DQqfl6o4aZqKLJZ8p cMne28lmBonJAKXviPmLZ0m10Q/WMcOm6pMP7DbyCfB47ME5EMEWuWWTCjMh3VtReLyj0HRz VHGcSlpK5Oz0H+DltA/oCWGxCUcqXDKEpfyHOM2XW7hQqJgxE68c5+PsQaRbHu/CLCJA9RjX EziGX9jGTNcXKNXNYIrTxM3vHyZEDJ79TCtbzAntyyPnw6tGfkIyOj9yAh404EzodGmTmVtr BH9xDrX5n1YU1Dj2hFR8Og1P8txqtaoTiNSyuPCO5/Vv5chzxkDDMSnFtCc/FoykBv3wIEHB I7xy6DKEt2pmu0G6jBEgozASInCyntVxaJzMDDAdzY6ReYpPAv16FNEyVMXzWMSm8AoT3xce UfgtgU2HN9s1Z5XNK+1WYKIV2nQyaJMyB8lFu4eNJBH7osUOtt1wRMlPvzikTmSMNA59j04B qmZcsQ65WioKPMJDwAygYBNu/aIPm3+eNbNIiV4YROkuiCk+jO8/Wl/p73Tb2NBgvCvZ+uRw nS21vvo966EVk/d12Kuqi3TmbFkFCbI/i+AVkwsSR45QzFMf/a9Kjd5AVHeVFZhXv+pfUvQZ YM9V6StMPN3KAH1fiyANpID5MvyUY1TBGUDvmSR3fbJgguyyge6VpHGYpuZS5MOqodqbL1TL 5GevirMn9X9u0imEZvF/Tcdwr79ys8Y/rNXgIpA7X4t4Liptf7Ul6HtRVNMfL2vfOqlo+MQ/ 0qFp7Cg0dzY6FBOw64+xVUNOgu2J4WXTuPabdixtJRUlaQ2YSih6j2YZsLdJEjmItglW1MB2 knLdCmpqo9OcUeveAAC/iGf2qf/Ut0d0kIAtAF4BAACBBgAAAuAymfWMjUsyHTUNACAAAAB1 cmxsaWJfZmlsZS5khwMQww8UR18kqEB6nxR4g0b1ptk5TKEed0CvLPOv+Kax/9wSHR6qsklW OVNXeISsbXCwvrrw7fwd5c57jNBWXq20FF60bsM9+1iDd9NeKBu3oU1/T2ck/oJHfPzc8NHv +t6rTWi1ARznX5kLeM1nrokOvLn0PKyfmWUdjZyLaH8jLEdSccJpOrc0c65QpJQCKs8eCcj9 DRBHJHYmHejwjHWJmM3ydN3Gv9HA4REWq2cf4/XNGLIGqmHPTSZwDrIPCl3n5rmFqzCSgRbA LBGJjzJuu4q2Wx8v/v8RtCVe2DBhVgN1M5Y7nA2mx9bGt9VsRL7Om99zkVh723qmGpZrVZcV 1XyHzqFdTvON2qPu7J4Lz5i8ZoVcCHHhqWiFNw7cOmKRanxZo8rE6UPyQ1L6ffNLdrvxUTsw E56CJZPLbQBasqUjXpc/9cPPifmTgT9NtkCg7R0AAL+IZ/ap/9T1YnSQkDEAIgQAAPMaAAAC jVsQ6oOpEDMdNQwAIAAAAHVybGxpYl9mdHAuZADwVOoqhwnCfKYERzmx+dKEf8fsaepVP++J wIqrbyE2VrF3LoPn2CafKjyI+5ni/vvwB124PPZP+npGlV4pVkoVfqaz31s8s0TZKJNK7r8R 9PCpKaiRrVJqSFax9OfZ1Q8cNa90zs1I8dBaZG9YTsFSJQ84ekBvLJpcZun+UMT1wBZ9Jd11 4GIT+Vb2pEi4S4v3HZwSBGIRlzB/KDEQ/OdwOfBQIFQfk1stVy46UwgTGX8IoaMDciBYaoUo +a0EucPyFbmL0CTnmGtYgmGdbCBk+8NHKCStydZAQm4UlWGLq9UJ5zMYq+WkzIrR6QYbT2Y8 DgZUzLx/GFYOHBFqIdTduBIIr/jSd8YRKDoEfiOBpRyOurekAI1YFGsaOGW4qKDgcMD3WFPz SZytsNBSgg9ViwHePQkyFfmAPDNEwUaekVYUbB5qRu4OFPsY9xiEtFfSAzCoTpFpEBD2QLAf ud9zUymS+Pbp1M5XMj0/G1/1or8pd7MOEewo8ndpc/sax0ODP37uAJ5+ddW3Z6w18ckzMmoj JmiwT8bl+huCmJGJT/7N//yNVLRLPSFhnWU2p7vk7y+5GQnnHHx2yifTwY5kc5EAQS+Wckds 8cN0e6roqWSdnuop8wc/+IMGwHna311BL5WrhLNzypqvb0m2ausbcnrxMzu0erXiy6gDcwo6 qZrhAQqlh5n+YijiGEUijRtlsZC6x4i2AjJ4OOmVWyHrTC7QNuzbPcrqtsOpuPowj0OjG41e Cyhqjg5M8ut9Npxb6Y6gndC7Fuo/KjY5lS0xw45LqTlTErcaiARJI4agtM1Qj3dCsEapH6BE 7mdNq9mgHtfqgbj2lI+jOtWkH3q9Knm8e+CZUkELpkqz/3jGyKJOkaiTq1ylK80TAlPGrFxy SAWh9aWl75isfgcvuhTTnwY09dvKYgLRrm1wKLVpLK1jCPNV1MUVkWqkrinwP1b31RnHNfAl QCWosbTo5I43wxJjvYR9aceErz29Xouujw1IJx5uLapul66tnWCIPhqLD9BxBjGwUszLWZsH VGt5P+d66WdQu1HdKa3QFv4bvIAHRsGg5U6gdszvCRgG4c6eUWr6rvT//vuBi4fz7tO913C3 eSeYSX4JWPBmf/KXrogTv1FC14CJKTYdZq+4WbMlIqvx68YbuYmCdgEcRjkNq2vKygYF9599 h6qO08JGPLLUeAgcMuMm1VGQ8f3iAq2md/mwpE2mhqN1Si8gxzSnLehygbtSLKLGTN0iZK3/ H5ZK8jBuOeedgWoIeeMAwCz5nLB9cVSXOYW+p97kliXPJnr8tBe22H/8N90/VCjySFkvgFip aAqIkm1tygzh3p62+4IlqJNRpotG1319vpjUYSMUDac+DG+rjD3xJ9W0SnZ9xEOrwoOCUHEJ zjAAAL+IZ/ap/9TDynSQkDQAiwQAADgcAAAChcbVi4ipEDMdNQ8AIAAAAHVybGxpYl9nb3Bo ZXIuZADwCK8vhwyHcMGfC/uLAmRMtjKP+3Jqm8z2ImC13DdMfoHfaJB3+ScaobyP92HZh4z5 ZQvMv3l4OIq8afVp4P+gw2DKzeJtavcjkw8Z8dORac6mfdcw4WZQt2xgJkmsO4W0tz5iWMhF EzjWAoJnfbTN1HAq5ogiFn7tc/qoeeCL8BsFjE8vZLXkE6pk7ovlM/SnFt5f7YA9l1esZwQ7 50ftPPR5hw+cJ9UtBTyfLDBAK1vZ7x3OxZG2DqRCl5lbsNiK9McNhigfNr+AlDSJT4cl1OB1 Xq/dZ8XxI+hdZYQz7uyRaxV4G7IO8oWIK9611By0zCnPomaPfpxVeuFuu1LVf7qEy+6ZUyRF dmJcP185qx/GtS66J6qZc/nFeCUZV73GNO2nbMuPrAPcHWfzO3vexqzk92zo8aAqixH9t3Wy KDuroOMbEOmFY6WPgfrBwEnvShm7cElI2gM9BCJ2PX31Vb20Tso8R874I6nn8TswhfPmGuao +2VTHiNqVuJIMDMCnR3v9LOlv7w9K0zhgwhf7e23/SWaT4i5lGQYDbMpr0bvBtUIUumh5jkK SeOnC0CZug1OLTX94IxGxurx2Mva/I7WG7ENswo43cgrUxCzwkdGGosgwmN/eof9Su69U86p LnR0Mbt8GfJ+fs/90rz4bXLx2K/UsGcw6jgJtDnw3Of4GnTX5yQjFnhAZ3vHUrLcphltvcqd EtyYd2Sn4LW2823YXzQYfh7ovczAq1cqIKeOpcaK9QLAtNEjEyZr7eZaa/g5WBenWN/buvh9 ZPMYy4nmP3Nxim33gBWN7SWxR7xhMFlBMKabpOisOQY+2FKHaechC6EK4boCns+5Karok27n snrwZgq6VdJ5Ik3PaXoxFyrl4qDZgJcM55Wi3dFFhS9FNMPs8wo0BXZNp9xL0bvhYBHqp2AN ajM5j2fNaG6hPzZHkFCgwS7VQGKYIAp8V5Q/Hx1T3mWYfhmGrjk9zwsc8GAh6P2upgcz81HC s/Z3BxGCDPq+J8GJ8XjahyOLM4M4eGS/B0DBX397qdLdwdsk9pD2sN919vhpCeRFgi5CFCH/ 7LBhi3gMk/9AiDyMFAQJtJW3/L0QjpehGDIx6cIr+bpmnOsStTFM3wZp4aqV50Utw9NyIt4B 2tzkOFpfvMPcbq8A/ZmXy3yvcnp1P9goWsygSUb3hWjwppWqxxv4MFTCNL8rAw0y8Vy6y+Iz ycwfXdeKeEXmU27ItCQCGmTZ2GIGKf2tnp1ic7lIAOYcFu8P0CKCDqJWIHlLBXkhtTbXsJbD jbHblQpVZYpZsxz68/sv6q2dHNG/zWpwq8Vwk36kqbVIx4tk2gkVz8xYPrpYk/P5Qych48MB SbbesgHwbVxain4dgUfSZZbpo1+QLKcFZ9DIFlTCI4Ts4RwBBKKYW17XHzWNBrI1TZkZtSMo Lyt9CfQLk0JFbzDqfTZAHA2YfV7P7Rk85uyOtsRF7gYjn1Y+XxkWF0sCRL3xMiUWVOhkxzVj sh+Yy/SuJDJKiWgx7MRximvN3IV1umbfsNVtSPQAAL+IZ/ap/9QUhnSQgC0AagcAAOcqAAAC JoQ3o4yNSzIdNQ0AIAAAAHVybGxpYl9odHRwLmSHFRd7V/exvJ5h9wMpKB53gbP/3em5URnw EcL36JPnvqEtCUBfh1eml7uxJqNjb9rMEKWvQDYIPhQLtMUPa4E+hjQu2bmhRX3rhsgV5XoA 5oFOe9CVHSmxHml1+/yQuoUo560VrrgjwzJRAULsUPXxUlX3KEtFHdGDhOiSFBz5v5uUsqyc +OmRYH6SKgMD8wTCTpum/oDGxF9TS8cm2FquiSGBzp1Zhy02eeHD295bNMNtvLnEsqAb7gw1 5rh2BEKvS0t34Y9LdSEQMmX7Zs3kT5WeGV6gBMMIbA6q+2mCZvrESbie4TkFiYQAp8Z2cPUE 1kFLW7nA3t24sXKLkZ7OfXLQfWfq7KhPIfpH0C9QUCqJL4fmS2GKAf1xBz1iSNhgMY/xiU3W /tqeN3zJmVYWA2HNtvW+DwlkDzQTdqonmEtaQ+h6EssvRgowvOUJpCSCKmnSBFfkF4gQ98ZU 1OL4jsz+kE+A0rXRdr6++SnJBODhB37RrCTfUQEeOffJxVaC6C3b5kwhWUU22bQbg5qFvRej P5QscIrDlqtnkbskzzxho7KxD5or5jkrehSnKKtgc+jxlkToiQm5QJQmCtjiJN3C79nd7dT9 00gN0PmsxnxsXvdKO9ypqUwN0W5+w2z90QwlcDmKTHlQ9rloM9fjrl5yIPqz/l+Qz/542RNL blRfR5DZFmef01OdDoSPAN9PzmWdILnfUjlqufx2yJEA27LPs09ydUuZ8qk7s0QPymVUle/z IftIpuenAv2mnqfH5SDaWfiH3BbQUyPTJJ6q1SRZC1FtLY+MERcy3eDS2p0TrP6ckMPS5BIn WeeeuPGpEIT3N7suNIEaKJg9wR4Q2m0e5wt46jlcphhGDBI+LVlHDjH07dw7q7d8e9FPt5p7 DLSVwaN3cBTVeO7Vf+9C4b4TZd6GM5ITRpG9bJgxVA1hlHDoPHEa///1hhl5Khax49CdBzvS LEFzfsxsYiOoCZTimgtkK4zOsDdQucm0djEEHGYKrt3MFGP6pI6p9bivHRQEU+64db/syjM5 BEALD6HBbDOSvcg8Cf2oJDShD9t/i/B6ZyjaTuYNEIeQ923KgVG9z6InE/KGGWS9D2u+sHaJ rS5kacBA8ex387rZh3VssZU+u/Xs7rBbeE8nNnfZ6DgJwu+NdBuvH6d/A6IqyiC2D+Y4NHpH ktY6M6u/aId/mMWEI8LLUs+4p/zqpCSe5/soF4MuenhXEUKD4G3TtPayYS+4jKNg0gJlP+8G W10MZzlkYVi7DrCVU11bHv1nV0Jisd1yMGmwew9d/C4axvGgcXp1WU/OJa6j3w0xWab0Zu+g JjoIgJw7Oct4f9TDhzhAg3VOgqA4Kdh1AscMcDJOJUGzlDIUrJ9x+hnh+vMgLWhJPaPugF/Q U87530RqS2SfT6IYf9c6VgeRNIxa4oiXmdWiJcGmJHl76uv0xVl8RPqXzI0HTP4Gfd13jadC gGbVtbJqHNPFIzVwcjUWnTqV0Kj5MCfyjvWczRrdOi7oHAeyzEgVo7I109Ua6zM0GAtuQCyG INU6xI+l8FaL5sHYa/9Uyt1cLxEwuq1Il6EaSHIV3kiQv7iQFuph93CrO7Bi8QIhTo26XxVZ 71uQtl2/Qu2qxtBtvSGjHSf+Vq36q75Y4cGp5RTqAoymtJe71awc47af8N7MAxoCnwqgDjrY cdOcuSzLc/0PGkNRbmzaUcruIbZVb5CIKoD9Ml30qeP3qmNgKoWgT06usmswDfgrMDqqKzxO Xoc98IyFkDOwv6Gu+kNaUIl2vLNYUaADpuZXQiYmuJN7wjVKGQvwt8NmxDkfSsO+llmsTaLh FemdT7rfrkrbUfEnQUgG68CHaePxNXb8Bnxe81e34RJP6lCUL/CjWKJbUscwNe8cj1NTPAK+ FXD6heJWxeJElvryVcHttaM62VVnD/fY1MGjqVBHf1WjwlpnMbGNp8Lu0oecmHgojddRuiE2 zI4DW9F7I/BOWkBI1iesa0ZeWTaXS7BXaPP2dQuy3LvNz52xOfQPOu/Prh86sz5ucZdkHgc1 qhf2the8SPZPoOsQujggzpbzKP+ogKpnL+dq+oMPRoz4SCfNWRhnQ4820cZS6ARi9KtfDnj7 FkB/ggN0OCL2QdeuIQLfyvtHrwySeCk0gfm03CO7a32bBKrzFIkvNLpA83iYZwGqCtkEfNU0 u1cVewhw2hhgGJ/evJAbBrgjvwSplpJBObpw7dGmuRCnXSI2GdG0Q+EvcPwXn9tlVzXfxq93 cD40g2Eco4wEyhgNEHtqY0GrrzKF878P7g/Ud/a/U3sTOih7IWetnulyxA9ZM3YMaVurT9Wa EyDn+sCymlUz+ziBSUADhanbHY6V/bb6RwU2odqcMjT75oYuuh86dgPkLejzYsIVzs3WIY9Z NZ7rO3RsurN+0deYENgtlW0xQLEiPlPa7kmAn4S5Jr3xE15gBZWIObKlC/b8IqXOaQ3N/CFk eySEK87aozkMUGv4hlUpxbVXPVQ/jmYIP5rHJSsAv4hn9qn/1PuRdJCQMgAGAwAAGhcAAAKl mFy/jKkQMx01DQAgAAAAdXJsbGliX25udHAuZACwsIOFhxMGaV8/U7WHAIioD+H/CRAHC+r4 vzxPCHwpG0hSbz9AvH39DiAoSNq8lFbiAXob7Bp29KELvdZlI4TqcnN02p+TXS/6c5OcWwut GFfq5v+DgdoSUjoQpHHrlIFOpult49NEivedbGTr3ttRW/c9XL2+8GLehjjV5IqgJYh4C60G eKOBedEDmfAxekiYTE7ip5F3uxq+mgCBF8fprTvLVYOPFDQ2KHcN2Ze1F4szPN/AUFk3Zb/q XLmbqqEwz8Bo7dEHffxllTDY7CaeD6mwOTsm2EpVMEJoOM6qGoPwQ9EPQix7D0XLhut5wlxg aizCZRbfRt1GP0LBvCaVyjcugXvStamgSCkA0zEyqQLq5ILfG2OhxyeH+Gq1dlTalH3AXduC muMm412OtBMRwHsz1UmuYMcWzf/oaqIG+U6SVRRvyvndk0ddViM4n+YMBmEIzdoi+YozKrS6 rMPcREFNNgd/W68cW7wMTpAuT5ElYFEnQmRWGI3769Jexl7YMUT8tMqyaU//l+hKCKFUR8Tm eroSfgJ05oJ65uemjRTGklH/qe2EiZx2jyyE6121pSR/vXZT5fugVezKFqAqCjuaVj5abSyh 2fKWeFEHUwor8+o4AYC3Z91MQ/PeU9NidPhk0KHeaX+Y67EhiC8yBvcFxrHfqipAaLAfyygn vPieMQ5ce0p18btnRKC9c7iIIajoFdkSl770sjYgVhFZCdcmqsVpHRWmHLgCsMBIubUAalrd bRc5jBds+Iub3Si+2RbS5eTLw9vD0O896saH0hVNbcFNHLJLCXzbQgnLmThnU7EiXp6JFqXY 5doEvqM8IsnClFnWHPP0bVEKs4q7cKBLPj0GQcQKrXnxd/mdtfRCUuLY6ybBK4NaNOslirMD NMmFYS7jA6H/RnPmuxKrdQl4aTd2St43hkQzDvxYv4+0RyEnyKbfm1g5LNvdnoBgGwsqMUov /+HiXh/NA3d2xqY1nH/lsQlEU9KQGvPGtueAb0B4nvHPwAeSmvF0K2W4AAC/iGf2qf/U5yJ0 kJAwABwBAAAAAwAAAhayyTh8qxAzHTULACAAAAB1cmxsaWIuZHByagCwQEtMh/Pr3TsTW/Jp hOxpA7yEr0mSraOjHEhGkLQM8Lw/NgeXv6zbWpBRb/wWtUQO8JVZ+X8xZPcmSHN3cMpiqqWm HO8DUx7Opye4Cpu3ZuB/UZpnL7tVtvdR7ok4iGXmdLtc67kixAPajwxpDeVoF/vYzKI/skRz uk3DPK9s7ggaY6GRbk12NwJNpQT0Y5u0iZl/Q3Y3EypBiwCT8xwGSiz+CDitlUP/EIcvMMDt JZSxGj+OaDVUKIQfqHD7skyD/XeB0D96YTiF8vz3YhQDD8pu3jDeEXWpH2DKnBAUTLY6vaR2 PG8Iu/kbrDmlIBgQPJAXwbKiJ9S6821kfeP5lY++0ircd+2bqDkavpkIdwc7YbNak9jFAL+I Z/ap/9TEPXsAQAcA
>--------------040000060803040707060801--


August 17, 2005
a.c.edwards wrote:
> Mind updating your site so I can download it? I cannot pull it form the web
> interface to this newsgroup. Yes, I know I can get it via a newreader but I am
> not in a position where I can use one. By the way I have been keeping my own
> copy of urllib updated but I would like to return to using yours since you are
> the original architech and the only changes I've made were those required to
> comply with depricated features of DMD. Thanks.

opend.org isn't my site, and I've long forgotten the password.  Here though:

http://www.smocky.com/arc/urllib.rar

I've only been updating it to keep it compiling as well.  There is one bugfix for handling www.python.org, which has weird socket behaviour that was screwing up the block-reading algorithm.