This is the historical archive of the now-inactive 'grubstreet' list.
Discussion on OpenGuides development has now moved to OpenGuides-Dev. Discussion on The Open Guide to London now takes place on OpenGuides-London.

[grubstreet] Search script

[prev] [thread] [next] [lurker] [Date index for 2002/12/6]

From: Ivor Williams
Subject: [grubstreet] Search script
Date: 16:14 on 06 Dec 2002
------ =_NextPart_000_01C29D42.A3564EA0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

As discussed with Earle yesterday, here is the latest search script. This fixes 
a few bugs:

1. >40 matches problem (used to only give you the first 40 matches - clicking 
'More' on the 21-40 list gave you the 21-40 list again)

2. Spurious matches occurring on the home page

3. Digits are allowed in words

4. Page titles are included in the search text

 

I have supplied the complete source as an attachment, as I am not sure what the 
patch level is.

Ivor.

------ =_NextPart_000_01C29D42.A3564EA0
Content-Type: application/x-perl; name="supersearch.pl"
Content-Transfer-Encoding: base64

IyFwZXJsIC1UCiMKIyBVc2Vtb2QgV2lraSBzZWFyY2ggZmFjaWxpdHkKIwojIEl2b3IgV2lsbGlh
bXM6IE9jdG9iZXIgMjAwMgojCiMgQ2hhbmdlIHRoZSB2YXJpYWJsZSAkd2lraXJvb3QgYW5kICR3
aWtpbWFpbiBiZWxvdyBmb3IgeW91ciBzaXRlIHNwZWNpZmljCiMgZGF0YWRpciBwYXRoIGFuZCB3
aWtpIHVybC4KIwojIFRoZSBwcm9nIHVzZXMgYm9nLXN0YW5kYXJkIENHSS5wbSBzdHVmZi4gVGhl
IG1haW4gcHJvZ3JhbSBjYW4gYmUgdGFpbG9yZWQgZm9yIGxvb2sgYW5kIGZlZWwuCgp1c2Ugc3Ry
aWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgQ0dJIHF3KDpzdGFuZGFyZCAqb2wpOwp1c2UgQ0dJOjpD
YXJwIHF3KGZhdGFsc1RvQnJvd3Nlcik7CSNSZW1vdmUgZmF0YWxzVG9Ccm93c2VyIGlmIHBhcmFu
b2lkCgp1c2UgUGFyc2U6OlJlY0Rlc2NlbnQ7CnVzZSBEYXRhOjpEdW1wZXI7CnVzZSBGaWxlOjpT
cGVjOjpGdW5jdGlvbnMgcXcoOkFMTCk7Cgp1c2UgdmFycyBxdygkd2lraXJvb3QgJHdpa2ltYWlu
ICV3aWtpdGV4dCk7Cgokd2lraXJvb3QgPSAiYzpcXHByb2dyYW1zd2lraWRiIjsKJHdpa2ltYWlu
ID0gIndpa2kucGwiOwoKIyBzdWIgbWF0Y2hlZF9pdGVtcyBpcyBjYWxsZWQgd2l0aCBwYXJzZSB0
cmVlLiBVc2VzIGhvcnJpYmxlIHN1Ym5hbWUgY29uY2F0ZW5hdGlvbiAtIHRoaXMKIyBjb3VsZCBi
ZSByZXdyaXR0ZW4gdG8gdXMgT08gaW5zdGVhZCBhbmQgYmUgbXVjaCBuZWF0ZXIuIFRoaXMgd291
bGQgYmUgYSBtYWpvciByZWZhY3RvcjoKIyBuZWVkIHRvIGFkZHJlc3MgZGVzaWduIGlzc3VlcyAt
IHBldHRlcm5zPwoKc3ViIG1hdGNoZWRfaXRlbXMgewoJbXkgJG9wID0gc2hpZnQ7CgkKCW5vIHN0
cmljdCAnc3Vicyc7Cglnb3RvICZ7bWF0Y2hlZF8uJG9wfTsKfQoKbXkgJGZzID0gJ1x4YjMnOwoK
IyBzdWIgcmVhZHBhZ2UgaXMgdXNlZCB0byByZWFkIGluIGEgVXNlbW9kIFdpa2kgcGFnZSwgYW5k
IGludGVycHJldCB0aGUgZGVsaW1pdGVycy4gVGhpcyBmb3JtcwojIGEgaGFzaC4gVGhlIG91dHB1
dCBnb2VzIGludG8gdGhlIGdsb2JhbCBoYXNoICV3aWtpdGV4dCwgYXMgdGhpcyBpcyB3aGF0IGlz
IHVzZWQgZm9yIHNlYXJjaGluZyAKIyBvbi4gVGhlIHBhZ2UgdGl0bGUgaXMgcHJlcGVuZGVkLCBl
bmFibGluZyB0aGUgdGl0bGUgdG8gYmUgaW5jbHVkZWQgaW4gbWF0Y2hlcy4KCnN1YiByZWFkcGFn
ZSB7CglteSAoJHRlcm0sJGZpbGUpID0gQF87CglteSAkdGV4dCA9IGRvIHsgbG9jYWwgKEBBUkdW
LCAkLykgPSAkZmlsZTsgPD4gfTsgIyBzbHVycCBlbnRpcmUgZmlsZQoKIyBBZGQgc2luZ2xlIHF1
b3RlcyBhcm91bmQgdGV4dCBzdHJpbmdzCgoJJHRleHQgPX4gcy8oJGZzXGR8XikoW14kZnNdKj9b
XiRmc1xkXS4qPykoPz0oJGZzXGR8JCkpLyQxJyQyJy9nczsKCSR0ZXh0ID1+IC8kZnNcZC8gb3Ig
cmV0dXJuOwoKIyBSZXBsYWNlIHNlcGFyYXRvcnMgd2l0aCAnLCcgYW5kIGFkZCBicmFjZXMgdG8g
c3Vycm91bmQgc3RyaW5nLiBUaGlzIGlzIHRvIHByZXBhcmUKIyB0aGUgc3RyaW5nIGZvciBhbiBl
dmFsIGFzIGFuIGFub255bW91cyBoYXNoCgoJbXkgJHN0cnVuZyA9ICZyZXBsYWNlX3NlcGFyYXRv
cnMoJHRleHQsJCYsJ3snLCd9Jyk7CgoJbXkgJG91dCA9IGV2YWwoJHN0cnVuZyk7CSMgY29uc3Ry
dWN0cyBuZXN0ZWQgaGFzaCBvZiBkaWZmZXJlbnQgZGF0YSBpdGVtcy4KCW15ICR0aXRsZSA9ICR0
ZXJtOwoJJHRpdGxlID1+IHMvXy8gL2c7Cgkkd2lraXRleHR7JHRlcm19ID0gJyAnIC4gJHRpdGxl
IC4gJzogJyAuICRvdXQtPnt0ZXh0X2RlZmF1bHR9e2RhdGF9e3RleHR9IAoJCQlpZiAhJEA7Cn0K
CiMgc3ViIHJlcGxhY2Vfc2VwYXJhdG9ycyAtIHJlY3Vyc2l2ZSBwcm9jIHRvIG11bmdlIHNlcGFy
YXRvcnMgaW50byBjb21tYXMsIGFuZCByZXNvbHZlCiMgbmVzdGluZy4KCnN1YiByZXBsYWNlX3Nl
cGFyYXRvcnMgewoJbXkgKCR0ZXh0LCRkZWxpbSwkb3BlbmluZywkY2xvc2luZykgPSBAXzsKCQoJ
bXkgQGNodW54ID0gc3BsaXQgLyRkZWxpbS8sJHRleHQ7CgkKCWZvciAoQGNodW54KSB7CgkJJF8g
PSAndW5kZWYnIGlmICRfIGVxICcnOwoJCSRfID0gcmVwbGFjZV9zZXBhcmF0b3JzKCRfLCQmLCd7
JywnfScpIGlmIC8kZnNcZC87CgkJJF8gPSAvXihcJ1teJ10rXCd8W1xbXF1ce1x9LFxkXXx1bmRl
ZikrJC8gPyAkJiA6ICcnOwoJfQoJCgkkb3BlbmluZyAuIChqb2luICcsJyxAY2h1bngpIC4gJGNs
b3Npbmc7Cn0KCgojIHN1YiBsb2FkX3dpa2lfdGV4dCBpcyB1c2VkIHRvIGxvYWQgdGhlIGVudGly
ZSB3aWtpIGludG8gZ2xvYmFsIGhhc2ggJXdpa2l0ZXh0LiBUaGlzIGlzIGEgCiMgcGVyZm9ybWFu
Y2UgaGl0IGV2ZXJ5dGltZSB0aGUgc2VhcmNoIGlzIHVzZWQuIExvb2tzIE9LIGZvciBzbWFsbCB3
aWtpcy4gQ291bGQgcmVwbGFjZSAKIyB0aGlzIHN1YiB3aXRoIHNvbWV0aGluZyB0aGF0IG1ha2Vz
ICV3aWtpdGV4dCBwZXJzaXN0ZW50LCB1c2luZyBhIHRpZWQgaGFzaCAtIGlzc3VlIG9mIHdoZW4K
IyB0byByZWxvYWQgY29tZXMgdXAuCiMKIyBOb3RlOiB1c2VzIEZpbGU6OlNwZWMgcm91dGluZXMg
c28gYXMgdG8gYmUgZnVsbHkgcG9ydGFibGUuIFdvcmtzIG9uIFdpbmRvemUsIHNob3VsZCB3b3Jr
IG9uCiMgVW5peCBqdXN0IGFzIHdlbGwuIFVzZXMgdGhlIHBhdGVudCBQZXJsbW9ua3Mgc3VwZXJz
bHVycGVyIHRyaWNrLgoKc3ViIGxvYWRfd2lraV90ZXh0IHsKCiMgZ2xvYiBmb3IgdG9waWNzCgoJ
bXkgJHdpa2lnbG9iID0gY2F0ZGlyKCR3aWtpcm9vdCwncGFnZScsJyonLCcqLmRiJyk7CgkKCWZv
ciAoZ2xvYiAkd2lraWdsb2IpIHsKCQlteSAoJGRldiwkZGlyLCR0ZXJtKSA9IHNwbGl0cGF0aCgk
Xyk7CgkJCgkJJHRlcm0gPX4gcy9cLmRiLy87CgkJcmVhZHBhZ2UoJHRlcm0sJF8pOwoJfQoKIyBn
bG9iIGZvciBzdWJ0b3BpY3MKCgkkd2lraWdsb2IgPSBjYXRkaXIoJHdpa2lyb290LCdwYWdlJywn
KicsJyonLCcqLmRiJyk7CgkJCglmb3IgKGdsb2IgJHdpa2lnbG9iKSB7CgkJbXkgKCRkZXYsJGRp
ciwkdGVybSkgPSBzcGxpdHBhdGgoJF8pOwoJCW15IEBzZCA9IHNwbGl0ZGlyKCRkaXIpOwoKCQkk
dGVybSA9fiBzL1wuZGIvLzsKCQkkdGVybSA9ICRzZFstMl0uJy8nLiR0ZXJtOwoJCXJlYWRwYWdl
KCR0ZXJtLCRfKTsKCX0KfQoKIyBPdXRwdXQgSFRNTCBzZWFyY2ggZm9ybSB3aXRoIGFwcHJvcHJp
YXRlIGhlYWRlcnMuCgpwcmludCBoZWFkZXIsc3RhcnRfaHRtbCgiVXNlbW9kIFNlYXJjaCIpLAoJ
CQkJCWgxKCJVc2Vtb2QgU2VhcmNoIiksIlxuIjsKcHJpbnQgc3RhcnRfZm9ybSwgdGV4dGZpZWxk
KAoJCQkJCS1uYW1lPT4nc2VhcmNoJywKCQkJCQktc2l6ZT0+NTAsCgkJCQkJLW1heGxlbmd0aD0+
ODApLGVuZF9mb3JtLCJcbiI7CgojIERvIHdlIGhhdmUgYW4gZXhpc3Rpbmcgc2VhcmNoPyBpZiBz
bywgZG8gaXQuCgpteSAkcSA9IENHSS0+bmV3OwpteSAkc3JoID0gJHEtPnBhcmFtKCdzZWFyY2gn
KTsKClJFU1VMVFM6CnsKCWlmICgkc3JoKSB7CgkJCiMgQ2hlY2sgZm9yIG9ubHkgdmFsaWQgY2hh
cmFjdGVycyBpbiB0YWludGVkIHNlYXJjaCBwYXJhbQojIChxdW90ZWQgbGl0ZXJhbHMgYXJlIE9L
LCBhcyB0aGV5IGFyZSBlc2NhcGVkKQoKCQlpZiAoJHNyaCAhfiAvXigiW14iXSoifFthLXogX1wt
JyZ8KCkhKiVdKSskL2kpIHsgIyIKCQkJcHJpbnQgaDEoIlNlYXJjaCBleHByZXNzaW9uIGNvbnRh
aW5zIGludmFsaWQgY2hhcmFjdGVyIik7CgkJCWxhc3QgUkVTVUxUUzsKCQl9CgoJCWxvYWRfd2lr
aV90ZXh0KCk7CgojIEJ1aWxkIFJlY0Rlc2NlbnQgZ3JhbW1hciBmb3Igc2VhcmNoIHN5bnRheC4K
IyBOb3RlOiAnJicgYW5kICd8JyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBvdGhlciBub24tYWxwaGEu
IFRoaXMgbWF5IGJlIG5lZWRlZCBpZgojIHlvdSBuZWVkIHRvIGNhbGwgdGhlIHNjcmlwdCBmcm9t
IE1FVEhPRD1HRVQgKGFzICYgaXMgYSBzZXBhcmF0b3IpCiMgQWxzbywgd29yZDogcGF0dGVybiBj
b3VsZCBiZSBjaGFuZ2VkIHRvIGluY2x1ZGUgbnVtYmVycyBhbmQgaGFuZGxlIGxvY2FsZXMgcHJv
cGVybHkuCiMgSG93ZXZlciwgcXVvdGVkIGxpdGVyYWxzIGFyZSB1c3VhbGx5IGdvb2QgZW5vdWdo
IGZvciBtb3N0IG9kZCBjaGFyYWN0ZXJzLgoJCgkJbXkgJHBhcnNlID0gUGFyc2U6OlJlY0Rlc2Nl
bnQtPm5ldyhxewoKCQkJc2VhcmNoOiBsaXN0IGVvc3RyaW5nIHskcmV0dXJuID0gJGl0ZW1bMV19
CgoJCQlsaXN0OiA8bGVmdG9wOiBjb21ieSAnfCcgY29tYnk+IAoJCQkJeyRyZXR1cm4gPSAoQHsk
aXRlbVsxXX0+MSkgPyBbJ09SJywgQHskaXRlbVsxXX1dIDogJGl0ZW1bMV1bMF19CgoJCQljb21i
eTogPGxlZnRvcDogdGVybSAnJicgdGVybT4gCgkJCQl7JHJldHVybiA9IChAeyRpdGVtWzFdfT4x
KSA/IFsnQU5EJywgQHskaXRlbVsxXX1dIDogJGl0ZW1bMV1bMF19CgoJCQl0ZXJtOiAnKCcgbGlz
dCAnKScgeyRyZXR1cm4gPSAkaXRlbVsyXX0KCQkJfAkJJyEnIHRlcm0geyRyZXR1cm4gPSBbJ05P
VCcsIEB7JGl0ZW1bMl19XX0KCQkJfAkJJyInIC9bXiJdKi8gJyInIHskcmV0dXJuID0gWydsaXRl
cmFsJywgJGl0ZW1bMl1dfQoJCQl8CQl3b3JkKHMpIHskcmV0dXJuID0gWyd3b3JkJywgQHskaXRl
bVsxXX1dfQoKCQkJd29yZDogL1tcdycqJV0rLyB7JHJldHVybiA9ICRpdGVtWzFdfQoJCQkKCQkJ
ZW9zdHJpbmc6IC9eXFovCgoJCX0pIG9yIGRpZSAkQDsgIAoKIyBUdXJuIHNlYXJjaCBzdHJpbmcg
aW50byBwYXJzZSB0cmVlCgkKCQlteSAkdHJlZSA9ICRwYXJzZS0+c2VhcmNoKCRzcmgpIG9yIChw
cmludCBoMSgiU2VhcmNoIHN5bnRheCBlcnJvciIpKSxsYXN0IFJFU1VMVFM7CiMJCXByaW50IHBy
ZShEdW1wZXIoJHRyZWUpKTsKCgkJbXkgJHN0YXJ0cG9zID0gJHEtPnBhcmFtKCduZXh0JykgfHwg
MDsKCQlwcmludCBocixoMignU2VhcmNoIFJlc3VsdHMnKSxzdGFydF9vbCh7c3RhcnQ9PiRzdGFy
dHBvcysxfSksIlxuIjsKCiMgQXBwbHkgc2VhcmNoIGFuZCBkaXNwbGF5IHJlc3VsdHMKCQoJCW15
ICVyZXN1bHRzID0gbWF0Y2hlZF9pdGVtcyhAJHRyZWUpOwoJCW15IEByZXNfc2VsZWN0ZWQgPSBz
b3J0IHtAeyRyZXN1bHRzeyRifX0gPD0+IEB7JHJlc3VsdHN7JGF9fX0ga2V5cyAlcmVzdWx0czsK
CQlteSAkdG90X3Jlc3VsdHMgPSBAcmVzX3NlbGVjdGVkOwoJCXNwbGljZSBAcmVzX3NlbGVjdGVk
LDAsJHN0YXJ0cG9zOwoJCWZvciAoQHJlc19zZWxlY3RlZFswLi4xOV0pIHsKCQkJKHByaW50IGVu
ZF9vbCwiXG4iKSxsYXN0IFJFU1VMVFMgaWYgISRfOwoJCQkKCQkJcHJpbnQgcChsaShhKHtocmVm
PT4kd2lraW1haW4uIj8kXyJ9LGIoJF8pKSxicixAeyRyZXN1bHRzeyRffX1bMC4uNV0pKTsKCQl9
CgkJcHJpbnQgZW5kX29sLHAoJHN0YXJ0cG9zKzIwLCcvJywkdG90X3Jlc3VsdHMsIm1hdGNoZXMi
KSwiXG4iOwoKCQlpZiAoJHRvdF9yZXN1bHRzID4gJHN0YXJ0cG9zICsgMjApIHsKCQkJbXkgJG5x
ID0gQ0dJLT5uZXcoJycpOwoJCQlwcmludCBzdGFydF9mb3JtLAoJCQkJJG5xLT5oaWRkZW4oIC1u
YW1lPT4nc2VhcmNoJywKCQkJCQktdmFsdWU9PiRzcmgpLAoJCQkJJG5xLT5oaWRkZW4oIC1uYW1l
PT4nbmV4dCcsCgkJCQkJLXZhbHVlPT4oJHN0YXJ0cG9zICsgMjApKSwKCQkJCXN1Ym1pdCggJ01v
cmUnKSwKCQkJCWVuZF9mb3JtOwoJCX0KCX0KfQoKcHJpbnQgZW5kX2h0bWwsIlxuIjsKCiMjIyMj
IyMjIyBFbmQgb2YgbWFpbiBwcm9ncmFtLgoKIyBVdGlsaXR5IHJvdXRpbmVzIHRvIGFjdHVhbGx5
IGRvIHRoZSBzZWFyY2gKCnN1YiBkb19zZWFyY2ggewoJbXkgJHdtYXRjaCA9IHNoaWZ0OwoKIyBC
dWlsZCByZWdleHAgZnJvbSBwYXJhbWV0ZXIuIEdvYmJsZSB1cHRvIDYwIGNoYXJhY3RlcnMgb2Yg
Y29udGV4dCBlaXRoZXIgc2lkZS4KCglteSAkd2V4cCA9IHFyLyg/OlxXfF4pLnswLDYwfVxXJHdt
YXRjaFxXLnswLDYwfS9pczsKCW15ICVyZXM7CgkKCXdoaWxlIChteSAoJGssJHYpID0gZWFjaCAl
d2lraXRleHQpIHsKCQlteSBAb3V0OwoJCWZvciAoJHYgPX4gLyR3ZXhwL2cpIHsKCQkJbXkgJG1h
dGNoIC49ICIuLi4kXy4uLiI7CgkJCSRtYXRjaCA9fiBzLyYvJmFtcDsvZzsKCQkJJG1hdGNoID1+
IHMvPC8mbHQ7L2c7CgkJCSRtYXRjaCA9fiBzLz4vJmd0Oy9nOwoJCQkkbWF0Y2ggPX4gcyEoXFcp
KCR3bWF0Y2gpKD89XFcpISQxPGI+JDI8L2I+IWk7CgkJCXB1c2ggQG91dCwkbWF0Y2g7CgkJfQoJ
CQoJCSRyZXN7JGt9ID0gXEBvdXQgaWYgQG91dDsKCX0KCQoJJXJlczsKfQoKc3ViIGludGVyc3Bl
cnNlIHsKCW15ICRwYWduYW0gPSBzaGlmdDsKCQoJbXkgQG1peGVkOyAgIAoJCglmb3IgbXkgJGog
KEBfKSB7CgkJaWYgKGV4aXN0cyAkai0+eyRwYWduYW19KSB7CgkJCXB1c2ggQG1peGVkLFskXywk
ai0+eyRwYWduYW19WyRfXV0gZm9yIDAuLiQjeyRqLT57JHBhZ25hbX19OwoJCX0KCX0KCQoJbXkg
QGludGVyc3BlcnNlZCA9IG1hcCAkXy0+WzFdLCBzb3J0IHskYS0+WzBdIDw9PiAkYi0+WzBdfSBA
bWl4ZWQ7CgkKCVxAaW50ZXJzcGVyc2VkOwp9CgojIG1hdGNoZWRfd29yZCAtIHdlIGhhdmUgYSBs
aXN0IG9mIGFkamFjZW50IHdvcmRzLiBXb3JkcyBhcmUgYWxsb3dlZCB0byBjb250YWluCiMgd2ls
ZGNhcmRzICogYW5kICUKCnN1YiBtYXRjaGVkX3dvcmQgewoKCW15ICR3bWF0Y2ggPSBqb2luICdc
VysnLEBfOwoJJHdtYXRjaCA9fiBzLyUvXFx3L2c7Cgkkd21hdGNoID1+IHMvXCovXFx3Ki9nOwoK
CWRvX3NlYXJjaCgkd21hdGNoKTsKfQoKIyBtYXRjaGVkX2xpdGVyYWwgLSB3ZSBoYXZlIGEgbGl0
ZXJhbC4KCnN1YiBtYXRjaGVkX2xpdGVyYWwgewoJbXkgJGxpdCA9IHNoaWZ0OwoJCglkb19zZWFy
Y2gocXVvdGVtZXRhICRsaXQpOwp9CgojIG1hdGNoZWRfQU5EIC0gd2UgaGF2ZSBhIGNvbWJpbmF0
aW9uIG9mIHN1YnNlYXJjaGVzLgoKc3ViIG1hdGNoZWRfQU5EIHsKCiMgRG8gYWxsIHRoZSBzZWFy
Y2hlcwoKCW15IEBjb21ieV9yZXMgPSBtYXAge215ICVtYXRjaF9oYXNoID0gbWF0Y2hlZF9pdGVt
cyhAJF8pO1wlbWF0Y2hfaGFzaH0gQF87CgojIFVzZSB0aGUgZmlyc3Qgb25lJ3MgcmVzdWx0cyBh
cyBhIGJhc2lzIGZvciB0aGUgb3V0cHV0IGhhc2gKCQoJbXkgQG91dD0ga2V5cyAleyRjb21ieV9y
ZXNbMF19OwoJbXkgJW91dDsKCiMgWmFwIG91dCBhbnkgZW50cmllcyB3aGljaCBkbyBub3QgYXBw
ZWFyIGluIG9uZSBvZiB0aGUgb3RoZXIgc2VhcmNoZXMuCgkKCVBBR0U6Cglmb3IgbXkgJHBhZ2Ug
KEBvdXQpIHsKCQlmb3IgKEBjb21ieV9yZXNbMS4uJCNjb21ieV9yZXNdKSB7CgkJCShkZWxldGUg
JG91dHskcGFnZX0pLG5leHQgUEFHRSBpZiAhZXhpc3RzICRfLT57JHBhZ2V9OwoJCX0KCQkKCQkk
b3V0eyRwYWdlfSA9IGludGVyc3BlcnNlKCRwYWdlLEBjb21ieV9yZXMpOwoJfQoJCgklb3V0Owp9
CgojIG1hdGNoZWRfT1IgLSB3ZSBoYXZlIGEgbGlzdCBvZiBzdWJzZWFyY2hlcwoKc3ViIG1hdGNo
ZWRfT1IgewoKIyBEbyBhbGwgdGhlIHNlYXJjaGVzCgoJbXkgQGxpc3RfcmVzID0gbWFwIHtteSAl
bWF0Y2hfaGFzaCA9IG1hdGNoZWRfaXRlbXMoQCRfKTtcJW1hdGNoX2hhc2h9IEBfOwoJCglteSAl
dW5pb247CgojIEFwcGx5IHVuaW9uIG9mIGhhc2hlcywgbWVyZ2luZyBhbnkgZHVwbGljYXRlcy4K
CQoJZm9yIChAbGlzdF9yZXMpIHsKCQl3aGlsZSAobXkgKCRrLCR2KSA9IGVhY2ggJSRfKSB7CgkJ
CSR1bmlvbnska30rKzsKCQl9Cgl9CgkKCW15ICVvdXQ7CgkKCSRvdXR7JF99ID0gaW50ZXJzcGVy
c2UoJF8sQGxpc3RfcmVzKSBmb3Iga2V5cyAldW5pb247CgkKCSVvdXQ7Cn0KCiMgbWF0Y2hlZF9O
T1QgLSBGb3JtIGNvbXBsZW1lbnQgb2YgaGFzaCBhZ2FpbnN0ICV3aWtpdGV4dAoKc3ViIG1hdGNo
ZWRfTk9UIHsKCglteSAlZXhjbHVkZXMgPSBtYXRjaGVkX2l0ZW1zKEBfKTsKCW15ICVvdXQgPSBt
YXAgeyRfPT5bXX0ga2V5cyAld2lraXRleHQ7CgoJZGVsZXRlICRvdXR7JF99IGZvciBrZXlzICVl
eGNsdWRlczsKCSVvdXQ7Cn0KCj1oZWFkMSBOQU1FCgpzZWFyY2gucGwgLSBFbmhhbmNlbWVudCB0
byBVc2Vtb2QgV2lraSBmb3Igc2VhcmNoZXMKCj1oZWFkMSBTWU5PUFNJUwoKSW52b2tlZCBhcyBh
IENHSSBzY3JpcHQuCgpFeGFtcGxlcyBvZiBzZWFyY2ggc3RyaW5nczoKCmtpbmcncyBoZWFkCmtp
bmcncyBoZWFkJmZ1bGxlcnMKY29hY2ggYW5kIGhvcnNlc3xjcm93biBhbmQgYW5jaG9yCih2ZWdl
dGFyaWFufHZlZ2FuKSZ0YWtlYXdheQpjYXRlZ29yeSByZXN0YXVyYW50cyYhZXhwZW5zaXZlCgo9
aGVhZDEgREVTQ1JJUFRJT04KClRoaXMgc2NyaXB0IHByZXNlbnRzIGEgc2luZ2xlIHNlYXJjaCBm
b3JtIHdoZW4gY2FsbGVkLiBUaGUgc2VhcmNoIHN0cmluZyBpcyBwYXJzZWQgd2l0aCBhIGZ1bGwK
UmVjRGVzY2VudCBncmFtbWFyLCBhbmQgdGhlIHdpa2kgcGFnZXMgYXJlIHNlYXJjaGVkIGZvciBt
YXRjaGVzLgoKQm9ycm93aW5nIGZyb20gUGVybCAob3IgQykgJiByZXByZXNlbnRzIEFORCwgfCBy
ZXByZXNlbnRzIE9SLCBhbmQgISByZXByZXNlbnRzIE5PVC4KCkZvciBub3RlcyBhYm91dCBob3cg
dG8gdGFpbG9yIHRoaXMgc2NyaXB0LCBwbGVhc2UgcmVhZCB0aGUgc2NyaXB0IGNvbW1lbnRzLgoK
PWhlYWQxIEFVVEhPUgoKSS4gV2lsbGlhbXMsIEU8bHQ+aXZvci53aWxsaWFtc0B0aXNjYWxpLmNv
LnVrRTxndD4KCj1oZWFkMSBTRUUgQUxTTwoKTDx1c2Vtb2Q+LgoK

------ =_NextPart_000_01C29D42.A3564EA0--


-- 
grubstreet mailing list
http://london.openguides.org/old-list-archives/